如何使用LShell(Limited Shell)限制用户的SSH访问

时间:2019-05-19 01:26:25  来源:igfitidea点击:

LShell或Limited Shell是用python编写的,用于限制特定命令和目录集的用户。
我们可以创建具有有限访问权限的用户环境,还可以通过SSH访问启用禁用命令。

安装LShell

使用以下命令在基于Debian的系统上安装LShell包。
对于其他操作系统,我们需要用百度搜索相应版本的lshell包。

$ sudo apt-get install lshell

切换用户到LShell

现在将LShell设置为所需用户的默认shell。
例如改变用户theitroad的外壳。

$ sudo chsh theitroad

Changing the login shell for theitroad
Enter the new value, or press ENTER for the default
	Login Shell [/bin/lshell]: /usr/bin/lshell 

我们还可以在创建用户帐户期间将lshell设置为user的默认shell,如下所示。

$ sudo adduser --shell /usr/bin/lshell Hyman

配置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       : [';', '&', '|','`','>','<', '$(', '${']
sudo_commands   : ['ls', 'more']
warning_counter : 2
aliases         : {'ll':'ls -l', 'vim':'rvim'}
prompt          : "%Hyman@theitroad%h"
timer           : 0
path            : ['/home', '/usr']
env_path        : ':/usr/bin/usr/local/bin'
env_vars        : {'foo':1, 'bar':'helloworld'}
scp             : 1 # or 0
sftp            : 1 # or 0
overssh         : ['rsync','ls']
strict          : 0
history_file    : "/home/%u/.lshell_history"

  [grp:wheel]  
warning_counter : 5
overssh         : - ['ls']

  [Hyman]  
allowed         : 'all' - ['su','rm','mv']
path            : ['/etc', '/usr'] - ['/usr/local']
home_path       : '/home/Hyman'

  [theitroad]  
allowed         : + ['ping'] - ['ls']
path            : - ['/usr/local']
strict          : 1
scpforce        : '/home/theitroad/uploads/'

例如,用户' Hyman '和用户' theitroad '都属于' wheel ' UNIX组:

wheel组:
whell组用户有一个警告计数器设置为5,wheel组用户不允许' ls '命令。
用户Hyman:
execpt命令- su, rm, vmhas a warning counter set to 5 [default]has his home PATH set to ' /home/Hyman ' 用户theitroad:
可以访问/ home / usr但不/usr/localis允许默认命令“ping”