决定完全重新提出这个问题,以便不必再新build一个问题。
我目前有一个使用OpenSSH的SFTPfunction设置的SFTP服务器。 我的所有用户都被chrooted,一切正常。
我现在最需要的是一个用户,它不是root用户(因为这个用户不能拥有任何真正的SSH权力!),可以访问所有其他用户的chrooted dirs。 这个用户的工作是每隔一段时间抓取所有上传的文件。
截至目前的目录结构是:
/ home | _ / home / user1 | _ / home / user2 | _ / home / user3
将ChrootDirectory设置为/ home /%u
用户“adminuser”应该可以访问user1,user2和user3的目录,而不必访问/ home,或者至less不能访问/ home。
奖励积分的人可以告诉我如何让用户在/ home /%u中写入,而不必在自己拥有的目录中创build新的目录,而不是像/ home /%u(openssh chroot先决条件)。
创build一个新的主目录,例如/ chroothome。
让所有的用户在这个chroothome的主目录下生活。
chroot adminuser到/ chroothome。
对于其他所有内容,只需使用文件系统权限。
至于你的“奖金问题”,使用原生function是不可能的。 chroot用户无法写入根目录是一种devise的安全机制。 当然,你可以随时修改源代码。
不过,我怀疑你可以指定用户的主目录为/ user1,并且login时的工作目录是他们可以写入的目录。
在你的/ etc / ssh / sshd_config中添加这些行:
Subsystem sftp internal-sftp Match group SFTP-users ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
然后更改用户主目录的所有者
# chown root.root /home/user # usermod -d / user # adduser user SFTP-users
重新启动ssh服务器守护进程
#/etc/init.d/sshd restart
1°)Sshd检查主目录是否由login的用户所有。2°)如果你使用chroot,sshd会检查每个目录的父目录是否由root拥有( http://www.tenshu.net/archives / 2008/10/09 / openssh-51-chrootdirectory-permissions-issue / )
如果你想chroot一个用户,并让他读取其他用户的chroot,这个用户的家必须是这些用户的chroot的父目录。 正因为如此,你会打破以前的两个规则。
AFAIK,唯一的解决办法是修补sshd 🙂