我试图用虚拟用户设置一个vsftp服务器,据我所知,这些虚拟用户只是用户ftp的“子账户”,那么由虚拟用户上传的这些文件将归用户ftp所有(如果我我错了)
这些虚拟用户的目的只是上传和修改一个网页,那么该目录应该说/ var / www / html由用户ftp拥有,然后在这个目录中chroot一个虚拟用户,或者是否意味着任何安全风险? 那些虚拟用户可以使用rsa密钥而不是密码login吗,还是只能用于ssh和真实用户?
你在这个问题上遇到麻烦的原因是你没有充分考虑你想要的每个帐户将促进什么的意图。 你需要问自己的问题是;
我的意思是, 虚拟用户A和虚拟用户B有相同的访问需求吗?
如果答案是肯定的,那么您的要求是提供对多个帐户的唯一身份validation ,但所有用户都具有相同的授权关系。
如果是这样,你在做什么工作。
如果答案是否定的,这意味着您要为所述帐户提供唯一的身份validation 和唯一的授权 。
在这种forms下,devise从根本上是有缺陷的,因为系统级授权不可能识别一个虚拟用户而不是另一个虚拟用户。
VSFTP提供了一个chrootfunction。 您的虚拟用户具有文档根目录,可以使用以下命令将其插入到该目录中:
write_enable=YES chroot_local_user=YES local_root=/var/www/html/$USER user_sub_token=$USER
就所有权而言,只要确保FTP用户可以将文件操作到每个主目录。 /var/www/html
不需要由它拥有(虽然它需要执行权限)。 如果您想使用其他帐户作为所有者,也可以使用FTP帐户的组。 也许你可以在/var/www/html
的子目录下做一些像www-data:ftp
或ftp:www-data
(这是我最常说的)?
rwxr-x--- ftp www-data /var/www/html rwxr-x--- ftp www-data /var/www/html/myvirtualuser rwxrwx--- ftp www-data /var/www/html/myvirtualuser/someuploaddirectory
UNIX权限是一个相当强大的机制。 只要您花时间思考谁需要什么,就不会有任何安全风险。
编辑RSA密钥 :RSA密钥用于SSH连接,而不是FTP。 谈到FTP,无密码身份validation通常意味着匿名连接 ,在公共FTP服务器(如ftp.kernel.org
。 您可以通过VSFTP连接来设置SSLencryption:请参阅http://wiki.vpslink.com/Configuring_vsftpd_for_secure_connections_(TLS/SSL/SFTP) 。