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

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 定义脚本在用户登录时运行
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏