在编写一些自动化脚本的时候,需要以root权限执行某些命令,这时候通过修改/etc/sudoers来实现免密执行sudo命令是一个比较好的办法。
查看用户所在组
lab@testlink:~$ groups
lab adm cdrom sudo dip plugdev lxd
可以看到用户lab
在lab,sudo...等等组里
配置sudoers
lab@testlink:~$ sudo vim /etc/sudoers
...
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
%lab ALL=(ALL:ALL) NOPASSWD:ALL
...
关键部分如上,在/etc/sudoers
中加入一行%lab ALL=(ALL:ALL) NOPASSWD:ALL
这表示lab这个组下的用户可以免密以sudo
执行命令
注:
为什么不直接加入lab
这个用户免密而是要加入组呢?这是由于用户lab
还在sudo
这个组里面,%sudo
组的配置会覆盖用户的配置,即使配置了用户免密,依然要输入密码
部分命令免密
如果不希望lab
用户能以sudo
免密执行所有命令,如何操作?比如只希望免密执行sudo apt update
,操作如下:
lab@testlink:~$ sudo vim /etc/sudoers
...
# Cmnd alias specification
Cmnd_Alias SCMD=/usr/bin/apt update
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
%lab ALL=(ALL:ALL) NOPASSWD:SCMD
...
- 添加
Cmnd_Alias SCMD=/usr/bin/apt update
- 修改
%lab ALL=(ALL:ALL) NOPASSWD:ALL
中的ALL
为SCMD
(对应上面的Cmnd_Alias中的命名)
这样lab就只能免密执行sudo apt update
,其他的命令因为lab还处在sudo
组里面,所以也还是能执行的,只是需要密码,匹配%sudo ALL=(ALL:ALL) ALL
这条规则
版权属于:木 白
本文链接:https://www.moehz.com/archives/ubuntu_nopasswd_sudo.html
版权声明:本站所有文章采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。
问:如何免密?
答:用 root 账户
赞一个 感谢分享
写的很好,但是我用cent