我们通常为我们的服务器使用公共密钥login,但新的订阅服务需要用户名和密码让SCP访问用户的帐户(这是Vaultpress – 用于Wordpress的远程备份工具)。 我们有一个运行在/ home / usera / public_html的UserA下的博客。 Vaultpress需要用户名和密码才能访问SCP,但我们不想给他们用户A的凭证。
所以问题是:我们如何创build一个只有SCP能访问UserA的UserB,谁只能访问UserA的主目录呢? 我们如何确保UserB编写的任何文件都可由UserA编辑/拥有?
你可以简单地使用POSIX acl。 创build用户B的默认组为A (我假设用户A的默认组是A组)
$ useradd -g AB # This creates a new user B with default group A
现在你需要设置正确的权限
$ chmod g+x /home/A # The group member needs execute permission to reach public_html directory $ find /home/A/public_html -type d -exec chmod g+rwx {} \; # This will give all directories under public_html rwx group permissions $ find /home/A/public_html -type d -exec chmod g+rw {} \; # This will give all files under public_html rw group permissions $ sudo -u A -i "umask 002 && echo umask 002 > ~/.bashrc" && sudo -u B -i "umask 002 && echo umask 002 > ~/.bashrc" # This will make sure all future permissions are OK for your purpose
基于上述设置, B可以在public_html目录下读写。 AFAIK,Vaultpress需要写入权限才能恢复备份。 如果您不打算使用Vaultpress的自动还原function,则可以删除写入权限。 最重要的是,所有的文件都可以被原始用户A编辑。
由B创build的任何文件/目录在默认情况下将由组A拥有。 这将在用户A和B之间共享这些文件的所有权。
如果你喜欢我澄清什么,请添加评论。
你可能想用chrooted环境来看看sftp。 基本上你会有两个SSH服务在不同的端口上运行。
一个是专门为sftp(用户/密码)chrooted在您设置的特定目录,另一个是为您的正常ssh连接服务器维护通过pub keyauthentication。
看看这个: http : //www.thegeekstuff.com/2012/03/chroot-sftp-setup/