在CentOS版本6.5(最后)我创build了一个受限用户test1
useradd -s /bin/false test1
并configurationssd_config如下
Subsystem sftp internal-sftp Match User test1 ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no
定义用户test1的主目录
usermod -d /usr/local/tomcat/webapps/ROOT
然后
chown root:root /usr/local/tomcat/webapps/ROOT chown test1:test1 -R /usr/local/tomcat/webapps/ROOT/* chmod 755 -R /usr/local/tomcat/webapps/ROOT/*
重新启动sshd并尝试login到sftp
# sftp test1@localhost Connecting to localhost... test1@localhost's password: sftp> ls -la drwxr-xr-x 9 0 0 4096 Feb 16 08:20 . drwxr-xr-x 9 0 0 4096 Feb 16 08:20 .. drwxr-sr-x 2 500 501 4096 Feb 6 10:37 META-INF drwxr-sr-x 6 500 501 4096 Feb 12 14:07 WEB-INF drwxr-sr-x 2 500 501 4096 Feb 16 08:13 css drwxr-xr-x 2 500 501 4096 Feb 16 08:27 home drwxr-sr-x 3 500 501 4096 Feb 12 14:13 images drwxr-sr-x 2 500 501 4096 Feb 16 00:37 js sftp> mkdir css/test Couldn't create directory: Permission denied
我已经尝试几乎所有的东西,但仍然不知道为什么目录的所有者没有写权限?
我想你需要启用一些selinux布尔,关于一个服务的selinux bools的更多信息,你可以键入你的shell man sftpd_selinux
[root@worktux ~]# getsebool -a | grep sftp sftpd_anon_write --> off sftpd_enable_homedirs --> off sftpd_full_access --> off sftpd_write_ssh_home --> off
确切的必须启用是:
setsebool -P ssh_chroot_rw_homedirs on
我挣扎了2天之前,我得到了!