SFTP chroot:sshd_selinux_copy_context:getcon 失败,权限被拒绝

SFTP chroot:sshd_selinux_copy_context:getcon 失败,权限被拒绝

我无法创建 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。

相关内容