我无法创建 SFTP chroot。我可以登录,但无论我尝试什么,都会收到“权限被拒绝”的提示。
sftp webadm@<ip>:
webadm@<ip>'s password:
Connected to <ip>.
Changing to: /
sftp> ls
remote readdir("/"): Permission denied
sftp>
这是我做的:
/etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
PermitTunnel no
X11Forwarding no
我创建了用户 webadm
useradd webadm
passwd webadm
groupadd sftponly
gpasswd -a webadm sftponly
usermod -g sftponly webadm
groups webadm
webadm : sftponly
我遵循了这个方法https://wiki.archlinux.org/index.php/SFTP_chroot
ll /home/
drwx------+ 5 root root 4096 May 31 23:49 webadm
ll /home/webadm/
-rw-r--r--. 1 webadm sftponly 5 May 31 23:34 test
getfacl /home/webadm/
getfacl: Removing leading '/' from absolute path names
# file: home/webadm/
# owner: root
# group: root
user::rwx
group::---
mask::---
other::---
有写到 root 必须拥有自己的 chroot 目录,但是 webadm 用户如何访问其目录的内容?我尝试
setfacl -m u:webadm:rwx /home/webadm/
但我甚至无法登录。
我也尝试过在 sshd 中匹配用户,但效果相同
Match User webadm
ChrootDirectory /home/webadm
AllowAgentForwarding no
X11Forwarding no
AllowTcpForwarding no
#PermitTTY no
ForceCommand internal-sftp
PermitTunnel no
Selinux 处于宽容模式。我唯一能看到的错误是在 /var/log/secure 中
Accepted password for webadm from <ip> port 19669 ssh2
pam_unix(sshd:session): session opened for user webadm by (uid=0)
sshd_selinux_copy_context: getcon failed with Permission denied [postauth]
那么我做错了什么?任何帮助都非常感谢。谢谢。
答案1
drwx------+ 5 root root 4096 May 31 23:49 webadm
尝试将此目录的权限设置为 755 (rwxr-xr-x),而不是 700。webadm ID 需要对该目录具有读取和检查权限才能查看其中的文件。
只要目录可读,ssh 服务器就可以了。chroot 功能仅要求目录不可可写。 来自sshd_配置手动的(强调添加):
Chroot目录
指定在认证后 chroot(2) 到的目录路径名。在会话启动时,sshd(8) 检查路径名的所有部分是否都是 root 拥有的目录,并且任何其他用户或组都无法写入. chroot 之后,sshd(8) 将工作目录更改为用户的主目录。
我建议您也从目录中删除 ACL,除非您出于其他原因需要它。我认为 SSHD 在决定目录是否适合作为 chroot 目录时不会考虑 ACL。