我计划用SFTP替换它,但是我需要一种方法来创建对应于一个UNIX帐户的多个SFTP用户.客户在机器(例如客户)上有一个帐户,其主目录如/ home / customer /.
我们的客户习惯于为他们的域创建任意数量的FTP帐户(向不同的人提供).我们需要与SFTP相同的功能.
我的第一个想法是使用SSH密钥,只是将每个新的“用户”添加到authorized_keys,但这对我们的客户来说很困惑,他们中的许多人不是技术倾向,而是更愿意坚持使用密码.
SSH不是问题,只有SFTP可用.我们如何创建多个SFTP帐户(customer,customer_developer1,customer_developer2等),这些帐户都是等效的并且不会干扰文件权限(理想情况下,所有文件都应该将客户保留为其所有者)?
我最初的想法是某种PAM模块,但我不清楚如何在我们的约束内完成这个.如果OpenSSH不适合我们的情况,我们愿意使用备用SSH守护进程;再次,它只需要支持SFTP而不支持SSH.
目前我们的SSH配置附加了它,以便在自己的目录中监禁用户:
# all customers have group 'customer' Match group customer ChrootDirectory /home/%u # jail in home directories AllowTcpForwarding no X11Forwarding no ForceCommand internal-sftp # force SFTP PasswordAuthentication yes # for non-customer accounts we use keys instead
我们的服务器运行Ubuntu 12.04 LTS.
解决方法
这些帐户中的每一个都在flowershop组中,其中包含/ home / flowershop /的主文件夹. SSH使用它作为chroot目录(/ home /%u,如问题中的配置所示).
然后,我们使用ACL来启用组flowershop中的每个用户来修改所有文件.创建新客户帐户时,我们按如下方式设置ACL:
setfacl -Rm \ d:group:admin:rwx,d:user:www-data:r-x,d:user:$USERNAME:rwx,d:group:$USERNAME:rwx,\ group:admin:rwx,user:www-data:r-x,user:$USERNAME:rwx,group:$USERNAME:rwx \ /home/$USERNAME/
这样做如下:
>给组管理员(对我们来说,托管服务提供商)rwx
>为文件提供用户www-data(Apache)r-x *
>为文件提供用户$USERNAME rwx
>为文件提供组$USERNAME rwx
此设置似乎对我们有效,但我们愿意接受任何更好的建议.
*我们使用suexec作为客户帐户运行的CGI / PHP