我们通常使用公钥登录我们的服务器,但新的订阅服务需要用户名和密码才能通过 SCP 访问用户帐户(这是 Vaultpress - Wordpress 的远程备份实用程序)。我们在 /home/usera/public_html 下有一个以 UserA 身份运行的博客。Vaultpress 需要用户名和密码才能通过 SCP 访问,但我们不想向他们提供 UserA 的凭据。
所以问题是:我们如何创建只能通过 SCP 访问且只能访问用户 A 主目录的用户 B?我们如何确保用户 B 编写的任何文件都可以由用户 A 编辑/拥有?
答案1
你可以简单地使用 POSIX acl 来实现这一点。创建用户乙其默认组为A(我假设默认用户组A是组A)
$ useradd -g A B # 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
根据上述设置,乙可以在 public_html 目录中读取和写入。据我所知,Vaultpress 需要写入权限才能恢复备份。如果您不打算使用 Vaultpress 的自动恢复功能,您可以删除写入权限。除此之外,所有文件都可以由原始用户编辑A。
由以下程序创建的任何文件/目录乙将归集团所有A默认情况下。这将在用户 A 和 B 之间共享这些文件的所有权。
如果您希望我澄清任何内容,请添加评论。
答案2
您可能希望研究具有 chrooted 环境的 sftp。基本上,您将在不同的端口上运行两个 ssh 服务。
一个是专门用于您设置的特定目录上的 sftp(用户/密码)chroot,另一个是用于通过公钥认证进行服务器维护的常规 ssh 连接。
看看这个: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/