LShell或Limited Shell是用Python编写用于限制用户对特定命令集和目录。您可以创建具有有限访问用户环境中,您还可以启用通过SSH进行访问禁用命令。
安装Limited Shell
使用下面的命令到你的基于Debian的系统上安装LShell包。对于其他操作系统,你需要google程序包lshell为您的版本。
$ sudo apt-get install lshell
切换用户到LShell
现在设置LShell作为默认的shell你都需要哪些用户。例如更改用户sarah的shell。
$ sudo chsh sarah
Changing the login shell for sarah
Enter the new value, or press ENTER for the default
Login Shell [/bin/lshell]: /usr/bin/lshell
如下您也可以设置创建用户帐户的过程中lshell为用户默认的shell。
$ sudo adduser --shell /usr/bin/lshell raj
配置LShell
现在,随着lshell的配置启动。编辑lshell配置文件
/etc/lshell.conf。有配置文件4个基本部分。
- [global]:在本节中,我们定义了适用于全球的设置。例如日志。
- [default]:在本节中,我们设置了适用所有用户和组的默认值。这一部分的设置可以与用户和组特定的设置所覆盖。
- [USERNAME] :在本节中,我们指定用户特定的设置。适用于用户本节只设置
- [grp:GROUPNAME]:在本节中,我们指定组特定的设置。适用于组的所有用户这部分设置
[default] 配置文件适用于使用lshell所有用户。 您可以创建
[username]或一组
[grp:groupname]部分,自定义的用户和组特定的偏好。 优先顺序是
User >>
Group >>
Default 。用户部分具有最高优先级,默认优先级最低。
[global]
logpath : /var/log/lshell/
loglevel : 2
[default]
allowed : ['ls','pwd','cd','cat','cp']
forbidden : [';', '&', '|','`','>','[grp:wheel]
warning_counter : 5
overssh : - ['ls']
[raj]
allowed : 'all' - ['su','rm','mv']
path : ['/etc', '/usr'] - ['/usr/local']
home_path : '/home/raj'
[sarah]
allowed : + ['ping'] - ['ls']
path : - ['/usr/local']
strict : 1
scpforce : '/home/sarah/uploads/'
例如用户‘rja’和用户‘sarah’都属于‘wheel’UNIX组:
组 wheel :
- wheel组的用户已经警告计数器设置为5
- wheel组的用户是不允许'ls'命令。
用户 raj:
- 可以访问 /etc 和 /var,但不可以访问 /usr/local
- 可以访问所有的命令,在他的路径的execpt命令 su、rm、vm
- 已经警告计数器设置为5 [default]
- 有他 home 路径设置为“/home/raj”
用户sarah:
- 可以访问的/home和/usr,而不可以 /usr/local
- 是允许的默认命令 'ping',但允许 'ls'
- 严格设置为1(他不允许输入一个未知命令)
选项名称 |
说明 |
logpath |
log目录(默认的/var/log/lshell/) |
loglevel |
集日志级别为0,1,2,3或4(0:无日志,1:至少冗长,4:记录所有命令) |
logfilename |
配置日志文件名(默认为%u 即username.log) |
allowed |
允许的命令或“all”的名单,允许在用户的PATH中的所有命令 |
forbidden |
禁止字符或命令的列表 - 拒绝vim中,因为它允许escape lshell |
sudo_commands |
允许命令的列表,sudo(8) |
warning_counter |
警告数时,用户从lshell得到退出前禁止使用的值,设置为 -1 以禁用。 |
aliases |
命令别名列表(类似于bash的别名指令) |
intro |
介绍文字打印(当进入lshell) |
prompt |
使用 %u 或 %h 配置PROMT(默认用户名) |
prompt_short |
设置排序提示当前目录更新(默认值:0) |
timer |
为会话计时器以秒为单位 |
path |
路径的列表来限制对用户“geographicaly” |
home_path |
设置你的用户的主文件夹 |
env_path |
设置用户环境变量 $PATH |
allowed_cmd_path |
路径的列表; 这些路径下的所有可执行文件将被允许 |
env_vars |
加环境变量 |
scp |
允许或禁止使用 scp (设置为1或0) |
scp_upload |
禁止 scp 上传 |
scp_download |
禁止 scp 下载 |
sftp |
允许禁止使用 sftp (设置为1或0) |
overssh |
命令列表允许执行通过ssh |
strict |
登录限制。 1任何未知的命令被视为禁止和0未知 |
scpforce |
通过 scp 发送到特定的目录文件生效 |
history_size |
历史文件最大尺寸 |
history_file |
设置历史文件名(默认为/home/%u/.lhistory) |
login_script |
定义脚本在用户登录时运行 |