设置账户以上传到网站子目录

设置账户以上传到网站子目录

我需要在 Ubuntu 18.04 上设置一个满足以下要求的 stfp 帐户:

  • 可以上传到网站的子文件夹,即 example.com/subfolder/
  • 上传的文件属于 www-data 组,因此对 nginx 可见
  • 用户无法查看指定目录之外的内容

我做了一些研究,发现我需要的是 Chroot。

所以我尝试了这个:

adduser --home /var/www/mysite/uploadfolder --no-create-home myusers
usermod -aG www-data myusers
chmod 2770 /var/www/mysite/uploadfolder/
chmod -R g+w /var/www/mysite/uploadfolder/
setfacl -m g:www-data:rwx /var/www/mysite/uploadfolder/

然后我将其添加到 sshd_config:

Match User mvpdocs
  ChrootDirectory /var/www/mysite/uploadfolder/
  ForceCommand internal-sftp
  X11Forwarding no
  AllowTcpForwarding no

但这不起作用。我做了一些研究,OpenSSH 不允许这样做,因为 Chroot 文件夹必须由 root 拥有,并且不能由组写入。如果我将路径切换到 /home 目录中由 root 拥有的文件夹,那么它可以正常工作,但我需要用户上传到子目录。

我该如何解决这个问题?我可以符号链接目录并将符号链接的目录声明为 Chroot 的一部分吗?我看到有人提到这是可能的,但没有例子。

对于我来说,实现将简单的 sftp 帐户上传到网站子目录的最简单方法是什么?

编辑:

我使用过mount --bind /var/www/mysite/uploadfolder/ /home/user/docs/并且它可以工作,但是所有上传的文件都归用户所有并且属于用户组。

我怎样才能让它们拥有组 www-data,以便可以通过 webserver 和 php 进行管理?

相关内容