vsftpd 服务器如何工作以及如何配置它?

ysa*_*sap 6 ubuntu ftp vsftpd

我被要求根据vsftpd包配置一个 FTP 服务器。服务器在我有超级用户权限访问的远程机器上运行。

由于不熟悉 FTP 服务器的机制,我试图弄清楚用户 ftp 帐户是如何配置的。之前的维护者使用了一个 shell 脚本,它在我们维护的一个列表上工作,以跟踪用户帐户和密码,来配置 ftp 帐户。通过阅读脚本,我看到他生成了一个用户名和密码列表,并且实际上在 Linux 机器上创建了一个用户帐户。这意味着对于我们在列表中配置的每个用户,adduser命令都会添加一个新用户帐户:

adduser --home /home/ftp --no-create-home $user
Run Code Online (Sandbox Code Playgroud)

(但没有私人/home/username目录 - 使用/home/ftpinstaed)。

这些用户中的每一个都可以使用该ssh命令登录他的帐户。这个事实对我来说似乎有点奇怪,因为我认为 ftp 帐户应该与 Ubuntu 用户帐户分离。

另一个副作用是,当用户使用 Web 浏览器连接时,他会连接到/home/ftp目录。但是,他可以使用“ Up to a higher level directory”链接上去并有效地访问我们所有的系统。

所以,问题是:

  1. 这真的是 FTP 服务器在配置 ftp 帐户方面应该如何工作吗?

  2. 如果没有,我该如何配置vsftpd服务器,让我在那台机器上只有超级用户 Ubuntu 帐户,并且所有 ftp 帐户都是...只是 FTP 用户帐户?此外,应根据允许访问的方式和内容来配置这些 ftp 帐户。

gol*_*lja 3

肯定是前任管理员做得不好。

因此,首先,如果您在 vsftpd.conf 中添加以下行,您将在用户的主目录中 chroot 用户。

chroot_list_enable=YES
chroot_local_user=YES

# a list of users which are NOT to be placed in a chroot() jail
chroot_list_file=/etc/vsftpd/chroot_list
Run Code Online (Sandbox Code Playgroud)

为了管理用户,您可以创建虚拟用户(请看这里),但如果您认为该解决方案太复杂,只需使用pam_listfile.so模块来拒绝 ftp 用户的 ssh 访问或使用pam_shells.so。哪个对你来说更容易。只是要小心,不要阻止 ssh 服务器访问有效用户:)