我被要求根据该vsftpd
软件包配置一个 FTP 服务器。该服务器运行在一台我有超级用户权限访问的远程机器上。
由于不熟悉 FTP 服务器的机制,我试图弄清楚如何配置用户 ftp 帐户。前任维护者使用了一个 shell 脚本来配置 ftp 帐户,该脚本在我们维护的用于跟踪用户帐户和密码的列表上运行。通过阅读脚本,我看到他生成了一个用户名和密码列表,并在 Linux 机器上实际创建了一个用户帐户。这意味着对于我们在列表中配置的每个用户,都会通过以下命令添加一个新用户帐户adduser
:
adduser --home /home/ftp --no-create-home $user
(但没有私人/home/username
目录 - 使用/home/ftp
替换)。
每个用户都可以使用该命令登录自己的帐户ssh
。这个事实对我来说似乎有点奇怪,因为我认为 ftp 帐户应该与 Ubuntu 用户帐户分离。
另一个副作用是,当用户使用 Web 浏览器连接时,他连接到的是/home/ftp
目录。但是,他随后可以使用“ Up to a higher level directory
”链接上行并有效地访问我们的整个系统。
因此,问题是:
就配置 FTP 帐户而言,FTP 服务器确实是这样工作的吗?
如果没有,我该如何配置服务器
vsftpd
,使该机器上只有超级用户 Ubuntu 帐户,而所有 ftp 帐户都是......只是 FTP 用户帐户?此外,这些 ftp 帐户应根据允许访问的方式和内容进行配置。
答案1
可以肯定的是,前任管理员并没有做好工作。
因此,首先,如果您在 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
为了管理用户,您可以创建虚拟用户(请查看这里),但如果你认为解决方案太复杂,只需使用pam_列表文件模块拒绝 ftp 用户 ssh 访问或使用pam_shells.so。无论哪种方式对您来说都更容易。只需小心不要阻止有效用户使用 ssh 服务器 :)
答案2
我觉得你需要一个 chroot 的 ftp 服务器,里面有非系统用户这wiki howto 有您需要的答案。
答案3
您应该使用虚拟用户作为 FTP 用户。
关注此帖子:http://howto.gumph.org/content/setup-virtual-users-and-directories-in-vsftpd/