![在 ubuntu 上设置 FTP 服务器,以便用户 XXXX 只能访问 /var/www/](https://linux22.com/image/503030/%E5%9C%A8%20ubuntu%20%E4%B8%8A%E8%AE%BE%E7%BD%AE%20FTP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E4%BB%A5%E4%BE%BF%E7%94%A8%E6%88%B7%20XXXX%20%E5%8F%AA%E8%83%BD%E8%AE%BF%E9%97%AE%20%2Fvar%2Fwww%2F.png)
我尝试使用 vsftpd,但结果是我的用户可以访问整个文件系统。
我创建了一个组 www,将 /var/www 更改为属于该组,然后将新用户“ftpuser”添加到该组。
但是当我登录时,用户可以访问文件系统中的所有内容。
你们有推荐一款好用又简单的 Linux FTP 服务器吗?我需要能够轻松管理权限,比如哪个用户访问哪个目录。
谢谢,
—塞尔吉奥
答案1
您需要确保将 VSFTPd 配置为 chroot 该用户。查看 chroot_local_user 设置。这样他们就只能访问他们的文件夹。
答案2
您做错了。您最好在 Apache 中创建一个 vhost,而不是使用默认的 /var/www。这样,您可以在 /home/user/public_html 中创建 vhost 文件系统根目录。所有(大多数?)ftp 服务器在用户登录时默认为其主目录提供服务,因此您无需进行任何配置。
还要考虑 ftp 是否真的是最佳选择。FTP 不安全,因为它默认没有加密 - 考虑改用 scp/sftp。同样,您不需要进行任何额外的配置,因为默认情况下您将为用户的主目录提供服务。而且您可能已经有一个正在运行的 ssh 服务器,它将为您提供 scp。
适用于 Windows 的优秀 sftp/scp 客户端是 Winscp。
答案3
我不知道如何使用 VSFTPd 来做到这一点;事实上,我尝试过,但放弃了(我还有其他项目要做)。
但我确实遇到过类似的问题,我解决这个问题的方法是强制他们使用 SFTP。这可以通过仔细修改 OpenSSH 服务器配置 (/etc/ssh/sshd_config) 来实现。搜索 SFTP 和“ChrootDirectory”,您会找到几个教程。
一些陷阱:您的 chroot jail 目录的整个路径必须由 root 拥有,并且必须由您的 SFTP 用户只读。
如果您想让某些用户访问某些网站,但仍希望以系统管理员的身份在一个地方管理所有网站,请考虑创建一个单独的 SFTP jail(我将我的网站命名为 /var/www/ftp,而我的网站位于 /var/www/html),然后使用“mount --bind”将目录硬链接到新目录中。请注意,您必须首先创建单独的挂载目录,并且必须指定目标目录和挂载点目录的完整路径。
最后说明:我意识到这是一个老问题,但如果本周早些时候我查找的时候这个答案就在这里,它就可以节省我整整两天的研究时间。