linux创建只读用户

最近运维考虑到生产服务器安全性,要将所有用户权限都收回去,但是开发这边希望能够拥有只读权限的用户,这样遇到一些问题还可以自己登录上去看一下,减少不必要的沟通成本。运维那边一直说创建一个只读权限的用户很麻烦,要目录逐个改什么的,总之不太愿意做,然后我尝试了一下如何在linux上创建只读用户,以此来打运维的脸,我这里基于centos7系统。
创建用户 【linux创建只读用户】第一步肯定是要创建一个用户,这步非常简单执行以下命令即可

useradd -s /bin/bash test

这里还是要说明一下,该命令就是说创建一个用户test,指定登录后使用的shell,也就是可执行的一些命令。
然后给新建的用户设置一下密码
passwd test

shell环境准备 第二步就是要给新建的用户准备好可执行的shell环境引用,目的就是限制用户可以使用的命令,比如ls、less这些常用的命令本来可以直接使用,通过这一步就可以进行限制。
创建一个shell的引用目录
mkdir /home/test/.bin

修改目录权限
chown root. /home/test/.bash_profile chmod 755 /home/test/.bash_profile

修改bash配置文件,这一步就是为了让新建用户引用新的shell脚本目录,这样用户可以使用哪些命令就往里面加哪些,可以自己控制。如下图圈出来的地方,把原来的PATH路径注释掉,使用新的PATH路径。
linux创建只读用户
文章图片

使环境变量生效
su - test source /home/test/.bash_profile

加入可以执行的命令 将允许执行的命令链接到$HOME/.bin目录下,也就是我们上一步建的/home/test/.bin。
ln -s /usr/bin/wc /home/test/.bin/wc ln -s /usr/bin/tail /home/test/.bin/tail ln -s /bin/more /home/test/.bin/more ln -s /bin/cat /home/test/.bin/cat ln -s /bin/grep /home/test/.bin/grep ln -s /bin/find /home/test/.bin/find ln -s /bin/pwd /home/test/.bin/pwd ln -s /bin/ls /home/test/.bin/ls ln -s /bin/less /home/test/.bin/less ln -s /bin/tar /home/test/.bin/tar

这里加了很多常用的命令只是举例,可以根据自己的需求增减。
总结 通过上面3步就完成了只读用户的创建,但实际上该用户并不是实际意义上的只读。我们知道linux下有三种权限,r(读)、w(写)、x(执行),在第一步我们创建一个新用户的时候,新用户本身对于现有目录就没有修改的权限,只是拥有执行和读的权限,第二、三步的目的就是为了尽量限制执行的权限,但实际上我们会发现并没有限制住,只不过是对于linux新人,他们不知道linux命令的真正源端在哪,需要别人给一步一步加可执行命令,实际上我们使用新用户直接cd 到/bin目录下也是可以执行所有命令的,只是麻烦一些而已。

    推荐阅读