centos – sftp只有在chroot时才会被拒绝?

我在我的centos框上配置了sshd_conf,如下所示:
Match group pilots
ChrootDirectory /home/pilots
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no

和目录/ home / pilotots这样:

# ls -al /home/pilots
total 12
drwxr-x---. 3 root pilots 4096 Mar 10 14:20 .
drwxr-xr-x. 7 root root     4096 Mar 10 14:10 ..
drwxrwxr-x. 2 root pilots 4096 Mar 10 15:21 data
-rwxrwxrwx. 1 root root        0 Mar 10 14:20 topLevel
#

如果我作为飞行员组中的用户而没有启用ChrootDirectory指令,我可以cd到/ home / pilots文件夹(或其子目录)并做一个ls或没有困难.但是,如果我启用ChrootDirectory指令,虽然我仍然可以sftp,并且可以cd到数据,我不能做ls或进入任一目录.例如,尝试ls会给出一个远程readdir(“/”):Permission denied错误,并尝试获取topLevel,但未找到File“/ topLevel”.我想也许我不在我期望的目录中,但cd数据的能力似乎表明chroot确实按预期工作.

查看消息日志,当ls被拒绝时,我看到以下内容

type=1400 audit(1394494944.504:50): avc:  denied  { read } for  pid=22758 comm="sshd" name="pilots" dev=dm-0 ino=400504 scontext=unconfined_u:system_r:chroot_user_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:home_root_t:s0 tclass=dir

所以有一个否认的记录.尽管如此,仍然没有告诉我原因.

我可能做错了什么?

几个潜在的重要说明:

>有问题的用户存在于远程LDAP服务器上,可通过sssd访问
>访问控制必须按组,因为许多用户需要对同一文件夹的读访问权限.因此所有权仍然是根.

编辑:进一步调查,它似乎与SELinux有关 – 做一个回声0> / selinux / enforce修复问题,虽然在一个kludgy,用大锤杀死一个蚂蚁的方式.如果可能的话,我想知道“正确”修复.

我在 this page上找到了解决方案.总而言之,按照上面的配置配置sftp后,需要运行以下两个命令以允许在启用SELinux的情况下进行访问:
setsebool -P ssh_chroot_rw_homedirs on
restorecon -R /home/$USERNAME

在这种情况下,第二个命令是restorecon -R / home / pilot.在此之后,sftp按预期工作,即使在chrooted时,也不必完全禁用SELinux.

相关文章

Centos下搭建性能监控Spotlight
CentOS 6.3下Strongswan搭建IPSec VPN
在CentOS6.5上安装Skype与QQ
阿里云基于centos6.5主机VPN配置
CentOS 6.3下配置multipah
CentOS安装、配置APR和tomcat-native