在项目开发中,有时候需要在Linux系统下建立多个用户,并对这些用户的权限加以限制。将普通用户限制在指定目录,只可以执行指定命令。lshell就是实现这样功能的一个神器。
lshell提供了一个针对每个用户可配置的限制性shell,lshell的配置文件非常的简单,可以和ssh
的authorized_keys
或者/etc/shell
、/etc/passwd
耦合使用,lshell可以很容易的严格限制用户可以访问哪些命令。
项目地址: https://github.com/ghantoos/lshell
lshell安装
RHEL、CentOS
1 |
$ yum install lshell #EPEL源
|
这种方法已经失效。
github上有介绍另一种安装方式。下载lshell项目到服务器,解压后执行python命令:
python setup.py install --no-compile --install-scripts=/usr/bin/
1. Install from source # on Linux: python setup.py install --no-compile --install-scripts=/usr/bin/ # on *BSD: python setup.py install --no-compile --install-data=/usr/{pkg,local}/
Debian、Ubuntu
1 |
$ apt-get install lshell
|
- lshell配置
Linux下配置文件为/etc/lshell.conf
lshell实例
为了记录用户日志,首先需要创建相关目录
1 |
$ groupadd --system lshell
|
添加test用户
1
|
$ useradd test -d /home/test -s /usr/bin/lshell
|
然后增加test用户到lshell group,也可以添加已有的用户到这个用户组。
1
|
$ usermod -aG lshell test
|
改变test用户默认shell,使用lshell作为默认shell
1
|
$ chsh -s /usr/bin/lshell test
|
修改配置文件让test用户只能使用受限命令,配置文件加在/etc/lshell.conf文件末尾即可。
1 |
[test]
|
home_path
和path
注释掉则限制用户只能访问自己的家目录及其子目录。如果需要能访问其他目录,则需要在path中加入相应的目录,当前设置下用户可以访问家目录及其子目录,也可以访问/tmp
目录及其子目录,但不能访问这以外的目录,比如/etc
。
allowed
中添加我们限定用户所能使用的命令,这里限定只能使用ls
、echo
、cd
、ll
四个命令
测试登陆
1 |
$ ssh [email protected]
|
命令使用
1 |
test:~$ cd /etc
|