操作系统:Ubuntu 14.04
我设置了 pam_mysql,它运行正常。我可以通过常规 ssh/sftp 顺利登录 sql 用户。当我尝试使用 CHROOT sql 用户进行 sftp 时,问题就出现了。每次输入 ls 时,它都会挂起。
- sshd 日志:https://gist.github.com/anonymous/7e4728909608a4177abd3de46178bbca
- 身份验证日志:https://gist.github.com/anonymous/1e161ab51981629e6061ba315d936571
- sshd 配置:https://gist.github.com/anonymous/0cf6cfceddcd6f53631dd1c8bed84b56
- nsswitch:https://gist.github.com/anonymous/7ace0709cf2011c4fa2abeb20a4d6e43
停止于:
root@default-ubuntu-1404:~# sftp test@localhost
Ubuntu 14.04.5 LTS
test@localhost's password:
Connected to localhost.
sftp> ls
... just hangs
其他命令有效,(cd、pwd)
这似乎是一个类似的问题:https://unix.stackexchange.com/questions/32882/sftp-server-on-rhel6-disconnects-on-ls
“这最终成为了 Likewise Open 的一个问题。在 sftp 过程中,“ls” 是唯一尝试解析 UID/GID 的命令,在这样做时,它会转到 Likewise 进行解析,而一旦解析完成,它就会崩溃。”
我无法理解这一点,但我猜测,一旦用户进入 chroot 环境,它就无法获取 uid/gid 信息。
答案1
因此它并没有像我希望的那样得到“解决”,但我找到了解决方法。
在用户的 chroot 文件夹内创建/etc/passwd
和文件可以解决问题。/etc/group
虽然不是一个很好的解决方法,但是它可以起作用,我需要用pam_mysql 用户的值填充文件/etc/passwd
。/etc/group
getent passwd
我正在努力编写一个脚本,以便在用户登录时使用 pam_exec 创建这些。
root 和用户的 uid/gid 应该是每个用户的 chroot 所需要的全部内容。