设置sftp以使用文件zilla登录服务器

我在aws上有一个ec2 instance ,它已经安装了一些wordpress 。 我想让更多人处理他们自己的项目,如果我还想,我也可以使用终端进入服务器。

我一直在关注如何在Ubuntu上设置受限SFTP服务器等教程?

和其他一些人。 我认为所有这些都只是教导如何sftp进入他们自己的主文件夹,也是步骤一直说addUser但一些用户已经存在,删除它们可能会导致一些问题。

如何为现有用户授予使用sftp进行wordpress项目的权限。

假设我所有的wordpress项目已经在/var/www/下已经设置了www-data:www-data

设置这样的东西真的很新。

在此先感谢您的帮助。

在这里,我假设您能够成功地ssh / sftp到用户的主目录,并且您想要(在您的用户下)编辑用户所拥有的/var/www下的文件和文件夹,并且:groupwww-data:www-data (不改变其所有权)。

在这里我还假设在/ var / www中工作时如何避免使用sudo? 不满足你的需求。 例如,您不想更改/var/www下的权限。

我认为解决此任务最简单明了的方法是将/var/www (或内部某些目录)挂载到用户的主目录中,并将所有者更改为您的用户和:group。 这可以通过工具bindfs来实现:

 sudo apt update && sudo apt install bindfs 

在这里,我们将整个目录/var/www挂载到名为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 )$(id -g )

  • 有关bindfs rad使用的参数的更多详细信息,请bindfs手册页 – man bindfs

  • 如果要卸载~/www$HOME/www ),请使用以下命令:

     sudo fusermount -u ~/www 

要在系统启动期间自动在/var/www中挂载/var/www ,请将以下行添加到/etc/fstab的底部:

 bindfs#/var/www /home//www fuse force-user=,force-group=,create-for-user=www-data,create-for-group=www-data 0 0 
  • 注意:您应该将替换为实际的用户名; 也应该用 的实际UID和GID替换 ,你可以通过以下命令找到它们: id -u id -u
  • 要查看结果,请重启系统或执行:

     sudo mount -a # maybe you should execute `sudo fusermount -u ~/www` first 

这是动画演示如何工作:

在此处输入图像描述


更新:

我发现这种方法的唯一限制是当您更改绑定目录的所有权时,这将更改源目录的所有权。 例如,下一个命令不是一个好主意:

 chown -R $(id -u):$(id -g) $HOME/www 

也许bindfs命令有一个合适的选项可以防止这种情况发生,但我现在还说不清楚。