在一台共享的主机空间里,有时某些低等级用户需要SSH权限来实现一些特殊的操作,比如设置自己web空间的文件权限。这是就需要给该用户分配SSH权限,但是为了安全起见,root用户更希望给该用户一个有限的访问权限,只访问某些命令和目录,这时,就需要用到Jail Shell。

Jail Shell是一组Linux设置,不是额外的软件服务。

首先,禁用root登录ssh。这个操作是用vi命令修改/etc/ssh/sshd_config,修改“PermitRootLogin yes” 为“PermitRootLogin no”。在重新启动sshd服务前,请建立一个一般账户,并设置密码,今后的ssh连接需要首先使用这个一般账户登录,然后再su到root账户。全部设置后以后,再重启sshd服务。

[wp_ad_camp_3]

接下来进行如下jailshell设置:

groupadd clients  #建立jail用户组
mkdir -p /var/jail/{dev,etc,lib,usr,bin}
mkdir -p /var/jail/usr/bin
mknod -m 666 /var/jail/dev/null c 1 3
cd /var/jail/etc
cp /etc/ld.so.cache .
cp /etc/ld.so.conf .
cp /etc/nsswitch.conf .
cp /etc/hosts .
cd /var/jail/bin
cp /bin/ls .
cp /bin/sh .
cp /bin/bash .
cd /sbin
wget -O l2chroot http://www.cyberciti.biz/files/lighttpd/l2chroot.txt  #l2chroot
chmod +x l2chroot

修改l2chroot文件,将里面的BASE=”/webroot”修改为BASE=”/var/jail”

[wp_ad_camp_1]

cd /var/jail/bin
l2chroot ls
l2chroot bash
l2chroot sh

修改/etc/ssh/sshd_config,在文件的末尾加上

Match group clients
          ChrootDirectory /var/jail/
          X11Forwarding no
          AllowTcpForwarding no

其中AllowTcpForwarding 是否允许端口转发

重启ssh服务

/etc/init.d/ssh restart

创建用户

useradd –g clients <user>

可以后续为用户创建home命令有 more, cat, mkdir, rm, vi, cp