需要帮助 – 限制访问sftp用户到其他用户home->子文件夹

我已经能够find很多帮助,将用户关在自己的home文件夹中,并将其限制为sftp,但是我正在研究更高级的解决scheme。

我正在尝试做什么,找不到任何文档是我想限制用户的SFTP访问,但让他们访问另一个用户的主文件夹内的站点文件夹。

两个用户 – u1和u2两个主文件夹 – / home / u1&/ home / u2 u1在子文件夹中有一个网站 – / home / u1 / public_html / site1 /我想把u2上传到用户u1的site1文件夹。 可以使用一些帮助来做到这一点。

注意: – 我不能使用像vsftpd这样的东西,因为我的系统locking非常好。 – 用户u1的site1文件夹的chown是u1:www-data,我希望能够保持这种方式,如果可能的话。 我读到,为了chroot文件夹必须由root:root拥有,但是这会把web服务器端的东西搞砸了。 – 如果我需要使用vsftpd,我只需要帮助理解如何保持系统安全的同时。

在此先感谢您的帮助。

UPDATE1:

添加了一个用户u2

设置私人ssh密钥

将/ home / u2所有权更改为root:root

修改了/ etc / ssh / sshd_config文件:

#Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp -u 0002 Match User u2 ChrootDirectory /home/u2 X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp 

将u2添加到www-data组

添加一个文件夹/ home / u2 / site1

绑定u1文件夹我需要u2有权访问与此命令:

 sudo mount --bind /home/u1/public_html/site1/public /home/u2/site1 

更改了/ home / u2 / site1中所有文件/文件夹的所有权限,以包括对该组的写入权限:

 chmod -R 775 /home/u2/site1 

使所有未来的文件/文件夹属于万维网数据:

 chmod g+s /home/u2/site1/ 

切换到两个用户,并使新的文件/文件夹具有组写入权限:

 umask 002 

进入了u2 /home/u2/.bashrc和/home/u2/.profile,并在每个文件的末尾添加了umask 002

一切正常 – u2不能在ssh中,但可以在sftp中,只能看到/ home / u2及以上。 但是,我仍然无法获得任何新的文件/文件夹自动拥有组写入权限。 任何帮助将是伟大的。 谢谢。

UPDATE2:

好的,做了一些testing。 奇怪的结果:

用u2创build了一个名为test的文件夹,它具有权限rwxr-sr-x(755对吧?),并能够以u1的forms进入,并能够进入该文件夹,但不能上传文件,但能够删除该文件夹。

作为u1我能够上传一个文件,它的权限变成rw-rw-r–(664)就像我们一直在试图做的那样。 也作为u1我创build了一个名为test2的文件夹,它给了我们想要的rwxrwsr-x(775)的权限。

作为U2我能够进入文件夹2并上传文件,但权限仍rw-r – r–(644),但可以用u1 sftp删除它。

我觉得监狱里面有什么事情呢,或者是u2账号不让某个服务运行,或者是让umask正常运行的东西。 思考?

UPDATE3

好吧,试了一下,它的工作。 混乱无疑! 希望有人能解释为什么它的工作。

在/ etc / ssh / sshd_config文件中,我注释掉了ForceCommand internal-sftp这一行,然后重新启动了ssh,它就起作用了。 快乐但困惑。 谢谢。

 Match User u2 ChrootDirectory /home/u2 X11Forwarding no AllowTcpForwarding no #ForceCommand internal-sftp 

如果用户u2只需要通过SFTP访问/home/u1/public_html/site1 ,并且不允许以任何其他方式访问系统:您可以将该目录作为主目录,并遵循正常的chroot程序。


或者:

Linux bind挂载允许您将现有文件系统的一部分映射到目录树中的第二个位置。 绑定挂载不会更改底层的文件系统权限。

 mkdir /home/u2/site1 mount -t bind /home/u1/public_html/site1 /home/u2/site1 

用户u2仍然可以被chroot,如果文件系统权限允许他在/ home / u1 / public_html / site1中写入,他现在可以从他的chroot中访问/ home / u2 / site1上的那个位置。