![Ubuntu 创建用户时自动创建 FTP 账户](https://linux22.com/image/527535/Ubuntu%20%E5%88%9B%E5%BB%BA%E7%94%A8%E6%88%B7%E6%97%B6%E8%87%AA%E5%8A%A8%E5%88%9B%E5%BB%BA%20FTP%20%E8%B4%A6%E6%88%B7.png)
我会注意到我正在使用 Rails,但这不是 Rails 问题。
我对 Linux 不是很有经验,但我知道我在 Linode 上运行 Ubuntu 10.04 LTS。
用户注册后,系统会在 RAILS_ROOT/public/users/[user_id]/ 中创建一个供用户个人使用的文件夹。此文件夹内有一个相册目录。
我如何在创建此文件夹的同时对其进行密码编码并授予他们 ftp 访问权限。这真的可行吗?这样的事情有什么安全隐患。我想把他们锁在那里,我看到一些人谈论 vsftpd 作为最后一部分的解决方案。
答案1
如果您安装并配置FTPD软件然后您可以使用 AuthUserFile 指令指向备用密码文件。此文件可以由您的应用程序管理。您还可以配置 ProFTPD 以使用您的应用程序可以管理的 sql 数据库后端。
答案2
这些是真正的 Linux 帐户,还是在您的应用程序中创建的帐户?
vsftpd
可以使用真实帐户或虚拟用户(从文件读取),也可以将其帐户“chroot”到特定目录,以便他们无法从那里上移目录,但无论哪种方式都需要一定程度的配置(默认情况下,它似乎只允许匿名访问)。无论您使用的是真实用户还是虚拟用户,您都需要启用“本地”用户。vsftpd 对所有本地用户使用 PAM,因此对于虚拟用户,您需要完全删除并替换 /etc/pam.d/vsftpd,并使用本教程中的信息这里。如果他们是在应用程序中创建的用户,那么您的应用程序将需要对上面的 PAM 配置中指向的虚拟密码文件具有写访问权限,并且每个新用户都有他们的用户名和存储在文件中的密码的适当哈希值。
如果您熟悉 PAM 并安装了适当的软件包,PAM 有任意数量的不同模块可用于此,其中可能有一个模块可以读取您的应用程序用于执行用户名/密码查找的相同数据库表。