我在 AWS 上有一个 ec2 实例,其中已经安装了一些 Wordpress。我想进行设置,让更多人处理自己的项目,如果我仍愿意,我也可以使用终端进入服务器。
我一直在关注以下教程
如何在 Ubuntu 上设置受限的 SFTP 服务器?还有一些其他的。我认为它们都只是教用户如何sftp
进入他们自己的主文件夹,而且步骤一直在说addUser
,但是有些用户已经存在,删除他们可能会导致一些问题。
如何授予现有用户使用 SFTP 进行 Wordpress 项目的权限?
假设我的所有 Wordpress 项目都已在 下,/var/www/
并且已设置好www-data:www-data
。
设置这样的事确实很新颖。
在此先感谢您的帮助。
答案1
更新:最近,我将此答案转换为一个有用的脚本,并开始广泛地将其与 VSCode 及其 SSH 功能一起使用。该脚本现已在 GitHub 上提供:bindfs-到-home-bash。
在这里,我假设您能够成功地通过 ssh/sftp 连接到您的用户的主目录,并且您想要(与您的用户一起)编辑由和-/var/www
拥有的文件和文件夹(不更改其所有权)。user
:group
www-data:www-data
这里我也假设主题在 /var/www 中工作时如何避免使用 sudo?不能满足您的需求。例如,您不想更改 下的权限/var/www
。
我认为解决此任务最简单、最明确的方法是将/var/www
(或其中的某个目录)挂载到用户的主目录中,并将所有者更改为您的用户和 :group。这可以通过以下工具实现bindfs
:
sudo apt update && sudo apt install bindfs
在这里,我们将把整个目录挂载/var/www
到名为 also 的目录中www/
,该目录位于用户的主目录中。
mkdir "$HOME/www"
sudo bindfs -u $(id -u) -g $(id -g) --create-for-user=www-data --create-for-group=www-data /var/www "$HOME/www"
该命令替换
$(id -u)
将$(id -g)
返回当前用户的 UID 和 GID。如果您想要为另一个用户执行上述命令,请使用
$(id -u <user>)
和$(id -g <user>)
。其中<user>
是实际用户名。有关所用参数的更多详细信息,请
bindfs
阅读其手册页 -man bindfs
。如果您想要卸载
~/www
($HOME/www
),请使用以下命令:sudo fusermount -u ~/www
要在系统启动时自动安装,/var/www
请~/www
在底部添加以下行/etc/fstab
:
bindfs#/var/www /home/<user>/www fuse force-user=<uid>,force-group=<gid>,create-for-user=www-data,create-for-group=www-data 0 0
笔记:您应该
<user>
用实际的用户名替换;还应该将<uid>
和替换<gid>
为 的实际 UID 和 GID<user>
,您可以通过以下命令找到它们:id -u <user>
和id -u <user>
。要查看结果,请重新启动系统或执行:
sudo mount -a # maybe you should execute `sudo fusermount -u ~/www` first
以下是动画演示了其工作原理:
我发现这种方法的唯一限制是,当你更改绑定目录的所有权时,这也会更改源目录的所有权。例如,下一个命令不是一个好主意:
chown -R $(id -u):$(id -g) $HOME/www
也许有一个合适的bindfs
命令选项可以防止这种情况发生,但我现在还不能确定。
笔记: