sudo权限的作用:
※ root把本来只能超级用户执行的命令赋予普通用户执行
※ sudo的操作对象是系统命令
------------------------------------------------
我们知道,在Linux目录中,/sbin与/usr/sbin下的命令只有管理员root才有权限使用。比如说一家公司的一个团队来维护一组服务器,团队的负责人负责root权限,剩下团队的其他人只能拿普通用户权限。但是负责人工作内容很多,没有时间去维护服务器的日常工作,这个时候就需要普通用户去维护。但是我们知道,普通用户的限制非常的多,许多的命令都没法使用,那这个时候就需要root把一部分只能超级用户执行的命令赋予普通用户执行。
------------------------------------------------
sudo命令如何赋予普通用户权限呢?
sudo使用前,需要注意,必须是管理员root先赋予权限,然后普通用户才能执行sudo命令。如果超级用户不给普通用户sudo权限,普通用户什么都操作不了。所以,首先第一步是由管理员使用命令"visudo"来赋予普通用户权限(实际修改的是/etc/sudoers文件)
在文件/etc/sudoers的92行,如下图,有4部分需要说明。
第1部分:用户名,你给哪一位用户赋予权限;如果有一个百分号"%",表示的是给某一组用户赋予权限。
第2部分:指的ip地址或者网段。这里的ip或者网段并不是定义允许哪一个ip地址或者网络通过指定的用户访问本机,而是指用户执行的命令在哪个ip地址或者网段,很绕不好理解。如果只有一台计算机,那这里填写ALL或者本机的ip地址。在一些特定的服务中,此处需要填写网段。
第3部分:代表可以转变成哪些的身份,一般情况下写ALL或者不写都可以。
第4部分:代表授权的命令,绝对路径表示。
举个例子,给st1用户赋予重启命令,可这样写:"st1 ALL=/sbin/shutdown -r now"
如果后面赋予的权限"/sbin/shutdown" ,表示对应的普通用户可以使用这条命令的任何参数;如果是"/sbin/shutdown -r now",代表对应的普通用户只能使用指定选项的命令。具体看个人需求。普通用户st1登录后要使用root给的sudo权限,必须在命令前加sudo,如:“sudo /sbin/shutdown -r now”。可使用"sudo -l"查看可用的sudo命令。
另外一点需要注意,普通用户有vim命令的权限,权限的范围已经是预先控制好的。如果在/etc/sudoers中强行给普通用户赋予vim命令的权限,这是一个极其危险的操作。为什么?因为root能管理的文件,赋予sudo权限的普通用户也能管理,比如/etc/passwd、/etc/shadow等文件。所以,一定要注意。
举一个例子:
touch /tmp/test //root用户新建一个文件
cd /tmp
vim test //写入一些数据,比如123
chmod 600 test //文件改变权限
ls -l
visudo //给普通用户st1赋予sudo权限,对应的命令为/usr/bin/vim
su -st1 //切换普通用户st1
sudo -l
sudo /usr/bin/vim /tmp/test //普通用户st1能自由的修改这个文件,所以赋予权限前需要谨慎。
领取专属 10元无门槛券
私享最新 技术干货