chroot的sftp用户,具有对/ var / www的写权限


10

我对尝试部署的此设置感到困惑。我希望你们中的某人可以帮我忙:非常感谢。

背景资料

服务器是Debian 6.0,ext3,前端有Apache2 / SSL和Nginx作为反向代理。我需要提供对Apache根目录(/ var / www)的sftp访问,确保sftp用户被chroot到具有RWX权限的路径。

所有这些都无需修改/ var / www中的任何默认权限。

drwxr-xr-x  9 root root  4096 Nov  4 22:46 www

内部/ var / www

-rw-r----- 1 www-data www-data     177 Mar 11  2012 file1
drwxr-x--- 6 www-data www-data    4096 Sep 10  2012 dir1
drwxr-xr-x 7 www-data www-data    4096 Sep 28  2012 dir2
-rw------- 1 root     root          19 Apr  6  2012 file2
-rw------- 1 root     root     3548528 Sep 28  2012 file3
drwxr-x--- 6 www-data www-data    4096 Aug 22 00:11 dir3
drwxr-x--- 5 www-data www-data    4096 Jul 15  2012 dir4
drwxr-x--- 2 www-data www-data  536576 Nov 24  2012 dir5
drwxr-x--- 2 www-data www-data    4096 Nov  5 00:00 dir6
drwxr-x--- 2 www-data www-data    4096 Nov  4 13:24 dir7

我尝试过的

  1. 创建了一个新的组secureftp
  2. 创建了一个新的sftp用户,并使用nologin shell 加入了secureftpwww-data组。Homedir是/
  3. 用以下命令编辑了sshd_config
Subsystem sftp internal-sftp 
AllowTcpForwarding no 
Match Group <secureftp> 
      ChrootDirectory /var/www 
      ForceCommand internal-sftp

我可以使用sftp用户登录,列出文件,但不允许执行写操作。Sftp用户位于www-data组中,但是/ var / www中的权限是该组位的read / read + x,因此...不起作用。

我也尝试过ACL,但是当我将sftp用户的ACL RWX权限应用于/ var / www(递归的目录和文件)时,它也会更改unix权限,这也是我所不希望的。

我在这里可以做什么?

我当时想我可以使用户www-data以sftp身份登录,以便它能够修改www-data在/ var / www中拥有的文件/目录。但是出于某种原因,我认为这在安全方面是愚蠢的举动。


我认为不更改许可就不可能。
Unnikrishnan

Answers:


15

我要做的是将用户chroot到其主目录,然后用于mount --bind在其主目录中创建指向该用户的链接。

然后setfacl,我用来确保www-datamaintans对目录中的新文件具有写权限。此效果将递归到/var/www,这是您想要执行的操作。

通过g+s在目录上进行设置,其中创建的所有新文件和目录都将从其父级继承组所有权。

useradd someuser
mkdir -p /home/someuser/www
mount --bind /var/www /home/someuser/www
chmod g+s /home/someuser/www
chown -R someuser:www-data /home/someuser/www
setfacl -d -m g::rwx /home/someuser/www

这应该够了吧。

使坐骑持久

显然,当您重新引导服务器时,您希望挂载仍然存在。就像将安装架添加到您的一样简单/etc/fstab。并非所有提供商都能让您触摸此文件,但大多数提供商都可以。

只需添加如下代码:

/var/www        /home/someuser/www        none        bind        0        0

您可能需要重新启动以确保其正常工作。


1
事实是,当您chmod g + s / home / someuser / www并chown someuser:www-data / home / someuser / www时,它还会将相同的权限和owner:group转移到/ var / www。这是由于安装--bind。非常感谢!
bashintosh

2
我在哪里可以付啤酒给您?看起来一切都很好,Apache似乎没有抱怨sftp-user是/ var / www的所有者。当我采用ACL方式时,我与您的解决方案非常接近,但我忽略了suid部分:您太神奇了,谢谢!
bashintosh 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.