将 Linux 用户限制到目录以进行 FTP 登录

将 Linux 用户限制到目录以进行 FTP 登录

我打算使用vsftpd充当安全的 ftp 服务器,但我很难控制用作 ftp 登录的 linux 用户。

用户需要被“关”在特定的目录(和子目录)中并拥有完全的读/写访问权限。

要求: - 用户帐户“admin_ftp”应被限制在 /var/www 目录中。 - 根据需要为每个站点添加其他帐户...例如: - 用户帐户“picturegallery_ftp”应被限制在 /var/www/picturegallery.com 目录中。

我尝试了以下方法,但无济于事:

# Group to store all ftp accounts in.
groupadd ftp_accounts
# Group for single user, with the same name as the username.
groupadd admin_ftp

useradd -g admin_ftp -G ftp_accounts admin_ftp
chgrp -R ftp_accounts /var/www
chmod -R g+w /var/www

当我使用帐户 admin_ftp 登录 FTP 时,出现错误消息:

500 OOPS:无法更改目录:/home/admin_ftp

但是我不是指定了主目录吗?

额外的互联网指南如何专门为 vsftpd 执行此操作 :)

答案1

我的第一反应很简单:

除非绝对必要,否则不要使用 FTP。 它不安全,而且现在也没有理由使用它。

相反,使用 SSH 和/或 SCP 和/或 SFTP(所有类似和相关的协议)。

至于如何做到这一点,有很多方法。我将链接到一些谷歌搜索结果(不保证其中任何一个):

还有更多,只需搜索一下...

答案2

专门针对 vsftpd,是吗?好的:

在 vsftpd.conf 中,添加:

user_config_dir=/etc/vsftpd/user_conf

然后在 /etc/vsftpd/user_conf/admin_ftp 中输入:

anon_root=/var/www
local_root=/var/www

...其他帐户亦如此。

现在,值得指出的是,在没有其他保障措施的情况下,像这样监禁人们是没有意义的;毕竟,由于它位于 DocRoot 中,他们只需上传一个 PHP 文件,然后通过 Web 浏览器访问该 PHP 文件,此时他们就不再被监禁了。因此,请记住要仔细考虑整个安全环境。

至于 FTP 对话本身的安全性(ircmaxell 的顾虑),只需设置 FTPS。在 vsftpd 中这样做非常简单,如果您使用 FTPES,则可以通过任意方式进行连接。

答案3

如何为这些帐户设置相应的本地主页,然后使用 chroot 和 chroot_local_user 或 chroot_list_enable 配置选项?

答案4

当您创建 admin_ftp 用户时,您并未指定希望此用户的主目录为 /home/admin_ftp 以外的任何目录。因此,ftp 服务器尝试进入 /home/admin_ftp,因为这是它在 passwd 文件中看到的内容。如果您希望在使用该用户进行 FTP 时进入 /var/www/ 目录,则应将 admin_ftp 的主目录更改为 /var/www/:

usermod -d /var/www admin_ftp

我不知道你使用什么发行版,但 Arch Linux 有一个关于设置 vsftp 的很好的 wiki 页面: 非常安全的 FTP 守护进程

相关内容