版权声明:本文为黄海兵(haibing.org)原创文章,转载请附上本文链接。
本文永久链接:http://haibing.org/761

概述
在Linux下有时会有这么一种需求:就是用户登录系统后,用户只能看东西,不能创建东西,不能编辑东西,不能删除东西。
要达到上面的需求,不仅要控制一些目录的权限,还要控制很多的命令不能执行。

一般可以通过以下几种方法来进行权限控制:
1、使用chmod/chown控制目录和执行命令的权限。
2、使用setfacl命令设置更详细复杂的权限。
3、使用rbash或者bash -r来开启一个受限的shell环境。
转载本站文章请注明出处:黄海兵haibing.org

通过实践表明,用上面的这三种方法都很难满足我们上面的只读用户的需求。

最终找到了lshell这个工具。
这个工具能创建一个受限的并且可控的shell环境,我们可以设置用户能访问哪个目录,能执行哪几个命令等。

要满足只读用户的需求,我们只需要先安装lshell这个工具,然后限制住命令,只开放一些ls、tail、head、awk等进行查看的命令即可。

一、安装lshell工具
有两种方式进行安装,一种是从git网站下载代码,然后通过python程序来进行安装,一种是直接使用epel源进行安装。

需要先安装一些依赖包:
#yum install ncurses*
#pip install readline (Python3环境下需要)
转载本站文章请注明出处:黄海兵haibing.org

1、python程序来进行安装(CentOS6/CentOS7通用)
用git命令下载lshell程序
#git clone https://github.com/ghantoos/lshell.git
#cd lshell
#python setup.py install

如果没报错,即安装成功。

注意:安装后lshell.conf配置文件一般是在/etc目录下,但是有可能lshell开启时读的配置文件不是这个文件。
先执行一下lshell命令,如果有报错,提示找不到lshell.conf文件,我们就可以根据这个提示的位置做个软链接过去。
#lshell
FileNotFoundError: [Errno 2] No such file or directory: ‘/usr/local/python/etc/lshell.conf’

#mkdir /usr/local/python/etc
#ln -s /etc/lshell.conf /usr/local/python/etc/lshell.conf

如果没报错,那一般就是读的/etc/lshell.conf这个文件,不用做软链接了。
转载本站文章请注明出处:黄海兵haibing.org

2、直接使用epel源来进行安装(CentOS6可以用,CentOS7没有这个软件了)
#yum install lshell
这种方法安装最简单方便,也不用作其它设置。

安装完,直接执行lshell命令,如果没有报错,那说明就安装成功了。

二、添加受限的用户
先查看lshell命令的路径,后面创建用户需要
# which lshell
/usr/bin/lshell

创建一个用户,并且shell指向lshell命令路径
# useradd -s /usr/bin/lshell viewer

切换用户测试:
# su – viewer
You are in a limited shell.
Type ‘?’ or ‘help’ to get the list of allowed commands
viewer:~$

如果出现上面的提示,说明受限用户创建成功。下面需要根据需求进行设置。

三、配置lshell

本文隐藏内容需付费查看, 点击文章最后链接付费查看

前往文库查看全文(文库文章最后有提供lshell的下载地址):
https://max.book118.com/html/2019/0915/8077027026002050.shtm
(只要使用游客身份扫码付款下载即可,不用注册没有其它任何手续)