千家信息网

Linux中怎么使用Jailkit管理用户

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇文章给大家分享的是有关Linux中怎么使用Jailkit管理用户,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。安装jailkit代码
千家信息网最后更新 2026年11月04日Linux中怎么使用Jailkit管理用户

本篇文章给大家分享的是有关Linux中怎么使用Jailkit管理用户,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

安装jailkit

代码如下:


cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz
tar xzf jailkit-2.16.tar.gz
cd jailkit-2.16
./configure
make
make install
cp extra/jailkit /etc/init.d/jailkit
chmod u+x /etc/init.d/jailkit
chkconfig jailkit on


初始化chroot环境

代码如下:


jk_init -v -j /home/chroot sftp scp jk_lsh netutils extendedshell
service jailkit start

配置Jailed Shell

配置受限环境:

我们需要建立一个目录来存放所有受限环境的配置。目录随便放在什么地方,比如我们可以创建个/opt/jail的目录。

代码如下:


$ sudo mkdir /opt/jail


这个目录应为Root所有。用chown改变属主。

代码如下:


$ sudo chown root:root /opt/jail


设置在受限环境中可用的程序

任何程序想要在受限环境中执行则必须用jk_init命令拷贝到目录中。

例如:

代码如下:


$ sudo jk_init -v /jail basicshell
$ sudo jk_init -v /jail editors
$ sudo jk_init -v /jail extendedshell
$ sudo jk_init -v /jail netutils
$ sudo jk_init -v /jail ssh
$ sudo jk_init -v /jail sftp
$ sudo jk_init -v /jail jk_lsh


或一次性解决:

代码如下:


$ sudo jk_init -v /opt/jail netutils basicshell jk_lsh openvpn ssh sftp


像basicshell, editors, netutils是一些组名,其中包含多个程序。复制到jail shell中的每个组都是可执行文件、库文件等的集合。比如basicshell就在jail提供有bash, ls, cat, chmod, mkdir, cp, cpio, date, dd, echo, egrep等程序。

完整的程序列表设置,你可以在/etc/jailkit/jk_init.ini中查看。

代码如下:


jk_lsh (Jailkit limited shell) - 这是一个重要的部分,必须添加到受限环境中。


创建将被监禁的用户

需要将一个用户放入jail里。可以先创建一个

代码如下:


$ sudo adduser robber
Adding user `robber' ...
Adding new group `robber' (1005) ...
Adding new user `robber' (1006) with group `robber' ...
Creating home directory `/home/robber' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for robber
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y


注意:目前创建的是一个在实际文件系统中的普通用户,并没有添加到受限环境中。

在下一步这个用户会被放到受限环境里。

这时候如果你查看/etc/passwd文件,你会在文件最后看到跟下面差不多的一个条目。

代码如下:


robber:x:1006:1005:,,,:/home/robber:/bin/bash


这是我们新创建的用户,最后部分的/bin/bash指示了这个用户如果登入了那么它可以在系统上正常的Shell访问

限制用户

现在是时候将用户限制

代码如下:


$ sudo jk_jailuser -m -j /opt/jail/ robber


执行上列命令后,用户robber将会被限制。

如果你现在再观察/etc/passwd文件,会发现类似下面的最后条目。

代码如下:


robber:x:1006:1005:,,,:/opt/jail/./home/robber:/usr/sbin/jk_chrootsh


注意:最后两部分表明用户主目录和shell类型已经被改变了。现在用户的主目录在/opt/jail(受限环境)中。用户的Shell是一个名叫jk_chrootsh的特殊程序,会提供Jailed Shell。

jk_chrootsh这是个特殊的shell,每当用户登入系统时,它都会将用户放入受限环境中。

到目前为止受限配置已经几乎完成了。但是如果你试图用ssh连接,那么注定会失败,像这样:

代码如下:


$ ssh robber@localhost
robber@localhost's password:
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-generic x86_64)
* Documentation: https://help.ubuntu.com/
13 packages can be updated.
0 updates are security updates.
*** /dev/sda7 will be checked for errors at next reboot ***
*** /dev/sda8 will be checked for errors at next reboot ***
Last login: Sat Jun 23 12:45:13 2012 from localhost
Connection to localhost closed.
$


连接会立马关闭,这意味着用户已经活动在一个受限制的shell中。

给在jail中的用户Bash Shell

下个重要的事情是给用户在限制环境中的一个正确的bash shell。

打开下面的文件

/opt/jail/etc/passwd
这是个jail中的password文件。类似如下

代码如下:


root:x:0:0:root:/root:/bin/bash
robber:x:1006:1005:,,,:/home/robber:/usr/sbin/jk_lsh


将/usr/sbin/jk_lsh改为/bin/bash

代码如下:


root:x:0:0:root:/root:/bin/bash
robber:x:1006:1005:,,,:/home/robber:/bin/bash


保存文件并退出。

登入限制环境

现在让我们再次登入受限环境

代码如下:


$ ssh robber@localhost
robber@localhost's password:
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-generic x86_64)
* Documentation: https://help.ubuntu.com/
13 packages can be updated.
0 updates are security updates.
*** /dev/sda7 will be checked for errors at next reboot ***
*** /dev/sda8 will be checked for errors at next reboot ***
Last login: Sat Jun 23 12:46:01 2012 from localhost
bash: groups: command not found
I have no name!@desktop:~$


受限环境说'I have no name!',哈哈。现在我们在受限环境中有了个完整功能的bash shell。

现在看看实际的环境。受限环境中的根目录实际就是真实文件系统中的/opt/jail。但这只有我们自己知道,受限用户并不知情。

代码如下:


I have no name!@desktop:~$ cd /
I have no name!@desktop:/$ ls
bin dev etc home lib lib64 run usr var
I have no name!@desktop:/$


也只有我们通过jk_cp拷贝到jail中的命令能使用。

如果登入失败,请检查一下/var/log/auth.log的错误信息。

现在尝试运行一些网络命令,类似wget的命令。

代码如下:


$ wget http://www.google.com/


如果你获得类似的错误提示:

代码如下:


$ wget http://www.google.com/
--2012-06-23 12:56:43-- http://www.google.com/
Resolving www.google.com (www.google.com)... failed: Name or service not known.
wget: unable to resolve host address `www.google.com'


你可以通过运行下列两条命令来解决这个问题:

代码如下:


$ sudo jk_cp -v -j /opt/jail /lib/x86_64-linux-gnu/libnss_files.so.2
$ sudo jk_cp -v -j /opt/jail /lib/x86_64-linux-gnu/libnss_dns.so.2


这样才能正确的定位到libnssfiles.so和libnssdns.so

在限制环境中运行程序或服务

现在配置已经完成了。可以在限制/安全的环境里运行程序或服务。要在限制环境中启动一个程序或守护进程可以用jk_chrootlaunch命令。

代码如下:


$ sudo jk_chrootlaunch -j /opt/jail -u robber -x /some/command/in/jail


jk_chrootlaunch工具可以在限制环境中启动一个特殊的进程同时指定用户特权。如果守护进程启动失败,请检查/var/log/syslog/错误信息。

以上就是Linux中怎么使用Jailkit管理用户,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

环境 用户 代码 限制 文件 程序 命令 目录 配置 系统 这是 部分 运行 特殊 实际 进程 错误 管理 重要 信息 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技和互联网公司 互联网下的科技发展 礼当家互联网科技 安徽鑫晟辉互联网科技 互联网教育科技公司vipkid 阿里互联网科技公司 未来五年的互联网科技 美国互联网科技实力 互联网领先科技宣传片 2021世界互联网领先科技成果发布 上海同邻互联网科技有限公司规模 云鲸互联网络科技有限公司 普陀区互联网教育科技管理办法 求路客互联网科技电话 科技信息时代互联网发展 杭州融税互联网科技有限公司 互联网科技创新创业项目 数字科技和互联网金融哪个好 互联网科技创业计划的风险分析 互联网 科技节活动 微视频大赛 广州为想互联网科技有限公司 伟宏互联网科技 互联网科技金融 南京欣网互联网科技 壕鑫互联网络科技 深圳卡尔迅互联网科技有限公司怎么样 互联网保险科技创业 互联网在线教育科技创业 杭州披云加互联网科技有限公司 南京一网一红互联网科技有限公司
0