不足之处,尽请谅解。
用openssh改变用户根目录:一个简单的方式约束用户在他们的家目录
1,确保你安装的openssh版本为4.9p1或高于该版本
2,编辑/etc/ssh/sshd_config
添加以下内容
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
确保“match”指令在文件末尾,这会告诉openssh,所有处于sftp组的用户,限制他们的家目录。
3,添加你想限制的用户到sftp组
usermod -G sftp joe
usermod -s /bin/false joe
chown root:root /home/joe
chmod 0755 /home/joe
改组用户没有shell权限,可用chown和chmod设置目录权限,当设置这些权限的时候,用户可以上传或下载
文件,但不能创建目录或文件在根目录,换句话说,如果这些用于web集群,确保子目录在根下,如/home/joe/public_html/ 用户有效且拥有所有权,这种方式用户可以在/home/joe/public_html下写和创建目录,但是不能自己改变根目录(/home/joe)
在chroot里创建一个基本的系统
# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe
用户joe可以远程受限的目录,通常的情况下,这种作法不常见,但给了你一个思路,你可以安装库和二进制文件在受限目录中。