sudo命令

sudo命令说明

对比su命令切换需要用户密码,sudo执行则只需要自己的密码即可。有的时候甚至是不需要密码就可以运行sudo,而只有在/etc/sudoers内的用户才可以执行sudo这个命令。同时,如果两次执行sudo的间隔在五分钟内,那么再次执行sudo时就不需要再次输入密码。

sudo [-b] [-u 新用户账号]
参数:
-b	:将后续命令让系统自动执行,而不与前面的shell产生影响。
-u	:后面可以接想要切换的用户,如果没有则默认是root。

sudo命令样例

[root@shadow ~]# sudo -u sshd touch /tmp/mysshd
[root@shadow ~]# ll /tmp/mysshd 
-rw-r--r-- 1 sshd sshd 0 Oct 13 22:02 /tmp/mysshd

这个样例中root使用sudo切换sshd来新建文件,需要注意的是我们本身是无法使用“su - sshd”来切换系统账号(因为系统账号的shell是/sbin/nologin)。

visudo与/etc/sudoers

文件语法

除了root之外的其他账号,如果想要使用sudo执行属于root的权限命令,则root需要先使用visudo去修改/etc/sudoers,让该账号能够使用全部或部分的root命令功能。visudo的实质是使用vi调出/etc/sudoers的文件内容来进行修改。其中需要修改的数据格式如下:

用户账号	登录者的来源主机名=(可切换的身份)	可执行的命令
root 	      ALL=(ALL)				ALL 	<==这是默认值

这几个参数的意义如下:

  • 用户账号:系统的哪个账号可以使用sudo这个命令。默认为root这个账号。

  • 登录者的来源主机名:表明这个账号可能是由哪一台网络主机连接过来的。默认root可以来自任何一台网络主机。

  • 可切换的身份:这个账号可以切换成什么身份来执行后续的命令。默认root可以切换成任何人。

  • 可执行的命令:这个命令务必使用绝对路径编写。默认root可以切换任何身份且进行任何命令。

其中ALL是特殊的关键字,代表任何身份、主机或命令的意思。

用户组设置

[root@shadow ~]# visudo 
...前面省略...
%wheel		ALL=(ALL)		ALL
# 在最左边加上一个%,代表后面接的是一个“用户组”的意思。

以上的设置表明任何加入wheel这个用户组的用户都可以使用sudo切换任何身份来操作任何命令。

免密码输入功能

[root@shadow ~]# visudo 
...前面省略...
%wheel		ALL=(ALL)		NOPASSWD:ALL

其中关键字NOPASSWD就是免除密码输入的意思。

有限制的命令操作

例如,需要设置用户仅能使用passwd这个命令帮助root修改其他用户的密码,可以如下设置:

[root@shadow ~]# visudo 
myuser1		ALL=(root)		/usr/bin/passwd		<==最后命令必须使用绝对路径

这个设置的意思是指myuser1可以切换成root使用passwd这个命令,这里需要注意的是:命令字段必须要填写成绝对路径才可以,否则visudo会出现语法错误。但同时,这种情况下,myuser1同样有权限去修改root的密码,可能这并不是我们所希望的,因此,我们可以进行如下改进:

[root@shadow ~]# visudo 
myuser1		ALL=(root)		!/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, \
					/usr/bin/passwd root

其中的“!”代表不可执行的意思,因此,这一行的含义则变为可以执行“passwd任意字符”,但是“passwd”与“passwd root”这两个命令除外。这样,mysuer1就可以修改其他用户的密码,而不能修改root的密码了。

通过别名设置visudo

visudo的别名可以是命令别名、账户别名、主机别名等。其中User_Alias代表账号别名,Cmnd_Alias代表命令别名,Host_Alias代表来源主机名别名,这些别名都需要使用大写字符命名。例如:

[root@shadow ~]# visudo 
User_Alias ADMPW = pro1, pro2, pro3, myuser1, myuser2
Cmnd_Alias ADMPWCOM = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, \
		      !/usr/bin/passwd root
ADMPW	ALL=(root)	ADMPWCOM

sudo搭配su使用

如果单纯使用su命令,切换root身份的时候需要用到root的密码,而如果用sudo命令搭配su命令使用则只需要自己的密码就可以完成转换了。

posted @ 2020-10-14 10:08  southernEast  阅读(188)  评论(0编辑  收藏  举报