最近维护的Linux需要给特定的用户分配SSH权限,直接使用系统的useradd命令添加的用户权限其实非常高,会给系统带来很大的风险。因此需要借助软件限定这些用户的权限,安装有主机控制面板的Linux服务器都可以很方便的给用户设置安全的SSH帐户,而大部分服务器却只有一个终端字符界面,软件的寻找很容易就完成,我推荐使用jailkit。下面我把我的安装过程和大家分享一下。

下载编译安装(CentOS 5)

cd /usr/local/src
wget http://olivier.sessink.nl/jailkit/jailkit-2.11.tar.gz
tar -zxf jailkit-2.11.tar.gz
cd jailkit-2.11
./configure
make && make install
cp extra/jailkit /etc/init.d/jailkit
chmod 755 /etc/init.d/jailkit
chkconfig jailkit on

指定目录做chroot目录。这里以/var/chroot为例。

mkdir /var/chroot
chown root:root /var/chroot
jk_init -v -j /var/chroot sftp scp jk_lsh extendedshell

jk_init命令中后面几个参数(sftp scp jk_lsh extendedshell)的意思,是将必备的chroot环境需要的二进制文件和库文件复制到chroot环境下,可从/etc/jailkit/jk_init.ini文件中得到更多解释。

添加用户并限制其家目录,添加用户有两种方法:执行/usr/sbin/jk_addjailuser [OPTIONS] chrootdir username建立受限用户,受限用户的组均隶属于users组;另外一种方法也是推荐的方法,先建立系统用户,再转移到chroot环境下。这里介绍后者的步骤:

useradd user1
passwd user1
jk_jailuser -m -n -j /var/chroot --shell=/bin/bash user1

执行后原/home路径下的用户目录会被移到chroot环境下。

tip:如果在/home路径下的用户目录有做其他用途,如apache配置的虚拟主机目录,可临时将chroot环境的用户目录挂载回去。执行命令:

mkdir /home/user1
mount --bind /var/chroot/home/user1 /home/user1