我可以将 vsftp 的用户主目录设为 /var/www/html 吗?

我可以将 vsftp 的用户主目录设为 /var/www/html 吗?

我有一个 Ubuntu 16.04 网络服务器。它仅使用 Nginx 托管一个网站。我想让事情变得非常简单,并将 index.html 文件和整个网站存储在 中/var/www/html

我需要能够将文件 FTP 到/var/www/html。我已经安装了 vsftp。我已使用命令创建了一个用户useradd,我将其称为exampleuser。然后我使用了以下命令:

sudo usermod -d /var/www/html exampleuser

... 我认为这会使的主目录exampleuser成为我通过 FTP 登录时的默认目录。

但是,当我尝试通过 FTP 登录时,出现“登录错误”。我反复检查了我的用户名和密码,确信它们是正确的,所以我猜想这是一个权限问题(也是因为我的经验是,在 Linux 中,大多数情况下,当事情没有按预期工作时,都是因为权限问题)。不过,也可能是 vsftpd 配置问题。

我认为我已经设置了html目录/var/www以获得正确的访问权限:

/var/www$ ls -la
total 12
drwxr-xr-x  3 root          root          4096 Nov 10 06:54 .
drwxr-xr-x 14 root          root          4096 Nov 10 06:54 ..
drwxr-xr-x  2 exampleuser exampleuser 4096 Nov 10 08:04 html

我需要做什么才能通过 ftp 连接到/var/www/html

答案1

是的,这是一个权限错误,看看这个教程

当用户被限制在特定目录中时,FTP 通常更安全。vsftpd 使用 chroot jails 来实现这一点。当为本地用户启用 chroot 时,默认情况下他们被限制在其主目录中。但是,由于 vsftpd 保护目录的方式,该目录必须不可由用户写入。对于只应通过 FTP 连接的新用户来说,这很好,但如果现有用户也具有 shell 访问权限,则可能需要写入其主文件夹。

在这个例子中,我们不会从主目录中删除写权限,而是创建一个 ftp 目录作为 chroot 和一个可写文件目录来保存实际文件。

创建 ftp 文件夹,设置其所有权,并确保使用以下命令删除写入权限:

sudo mkdir /home/sammy/ftp
sudo chown nobody:nogroup /home/sammy/ftp
sudo chmod a-w /home/sammy/ftp

如果您尝试连接到 ftp 并且用户可以写入文件夹,那么它将无法连接,您需要向根文件夹添加所有者 nobody:nogroup,因此如果您想让事情简单化,只需将您的服务器指向用户可以写入的文件夹:

sudo usermod -d /var/www exampleuser

这是因为你想在 HTML 文件夹中写入

sudo chown nobody:nogroup /var/www
sudo chmod a-w /var/www

修改服务器配置文件并指向新的位置(HTML 格式),如果你真的想使用 Very Safe FTP,这个解决方案会很有帮助

相关内容