我知道还有其他类似的问题,我已经阅读了其中一些。但这并没有解决我的问题。 我想创建一个用户,该用户只能通过 sftp 访问其主目录,并且不允许查看此目录上方的文件/文件夹。他还应该能够在此目录中运行 shell 命令。(例如启动节点进程)
到目前为止,sftp 访问正常。用户被限制在其主目录中,并且可以编辑/删除文件。
我尝试创建一个符号链接sudo ln -s /bin/bash /bin/rbash
,它显示file already existing
,因此我将用户 shell 设置为 ,sudo usermod -s /bin/rbash user
但如果用户通过 shh 登录,它会显示 Ubuntu 欢迎文本,然后/bin/rbash: No such file or directory
。如果我将 shell 设置为 bash,也会发生同样的情况。
我的 sshd_conf 现在看起来像这样:
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
Match group sftp
ChrootDirectory /home/userdirectory
AllowTcpForwarding no
# ForceCommand internal-sftp
我也尝试创建一个从/bin/bash
到的符号链接/home/userdirectory/bin/bash
,但是当用户通过 ssh 登录时,它显示Too many symbolic links
。
我复制/bin/bash
到了/home/userdirectory/bin/bash
,上面写着no such file or directory
。
答案1
我通过复制/bin/bash
到解决了这个问题/home/userdirectory/bin/bash
。
之后我列出了所需的库
ldd /bin/bash
并将它们全部复制到 chroot 下的相应目录中/home/userdirectory
。
如果您想要在 shell 中拥有更多命令,您还必须将它们从复制/bin
到/home/userdirectory/bin
并添加它们的库。