嘿,
我想使用 chrooted 用户在他的 / 中写入但我不能。
例如:我有/home/sftponly/
ChrootDirectory
里面必须是另一个对该用户具有权限的目录,否则我无法连接。
我希望它是可写的,但连接的用户看不到任何子目录。有什么提示可以告诉我我做错了什么吗?
我的 sshd_config
Match User sftponly
ChrootDirectory /home/sftponly
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
答案1
如果我理解正确的话,您希望您的用户在 chrooted 时能够写入他的主目录。
当您使用启用了 chroot 的 sftp 连接时发生的情况如下:
- 用户被 chroot 到主“chroot”目录(此处为
/home/sftponly
)- 主 chroot 必须由 root 拥有,并且对于用户来说是只读的。
- 然后用户就被 chroot 了再次进入他的主目录,如
/etc/passwd
从主 chroot 开始所述。这主目录对于用户来说是可写的。
因此如果在 /etc/passwd 中有如下一行:
sftponly:x:1002:1002:,,,:/home/sftponly:/bin/bash
sshd 将尝试将您的用户 chroot 到/home/sftponly/home/sftponly
。
所以如果你绝对需要要 chroot 到这个精确的路径,/home/sftponly
你必须将主 chroot 设置sshd_config
为,例如/home
:
ChrootDirectory /home
然后设置主目录sftponly进入:/etc/passwd
/sftponly
sftponly:x:1002:1002::/sftponly:/bin/bash
然后/home/sftponly
sftponly 用户就可以写入了,没问题。