我有一个 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,这个解决方案会很有帮助