我正在使用 Chroot Jail 创建 SFTP 服务器。问题是用户无法登录主目录。我需要将ChrootDirectory
值保留在用户主目录之上的一个目录(在本例中为 /home/jail/home )。我读到该目录需要由 root 拥有。在这种情况下,用户除了登录服务器之外无法执行任何操作。下面是我的 sshd_config 文件中 sftp 特定的部分
Match User ftpuser
ChrootDirectory /home/jail/home/ftpuser
ForceCommand internal-sftp
的输出$id ftpuser
是
uid=1001(ftpuser) gid=1002(ftpuser) groups=1002(ftpuser),0(root)
我特意将其添加到 root 组中,以便 ftpuser 至少可以登录。
的输出$grep ftpuser /etc/passwd
是
ftpuser:x:1001:1002::/home/jail/home/ftpuser:/bin/false
/home/jail/home/ftpuser 的权限已被激活
rwx------+ 3 root root 4096 2011-12-12 12:49 /home/jail/home/ftpuser/
我应该怎么办?
答案1
经过一番谷歌之后我找到了解决方案。虽然这不是一个好的做法,但它确实对我有帮助。
我将 chroot 用户的 UID 更改为 0,即 root 用户的 UID,而没有更改登录 shell。因此,chroot 用户可以按照我需要的方式访问其主目录。而且由于登录 shell 是/bin/false
他无法像其他用户一样登录系统(我实际上su - ftpuser
在登录到我的机器时尝试这样做,因为root
ftpuser 没有获得 shell 访问权限)。
尽管这个解决方案可能不是很好或者不是更好,但它是我能找到的唯一解决方法。