Linux sudo 免密设置
测试系统Ubuntu 14.0.4
免密sudo 设置
谨慎操作‼️若改错只能进安全模式还原😱,编辑**/etc/sudoers**,内容如下:
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
#%sudo ALL=(ALL:ALL) ALL # 注释这一行,添加下面一行
%sudo ALL=(ALL) NOPASSWD: ALL # 注意NOPASSWD 的写法,否则只能从安全模式改了
或者执行以下这句命令
# 效果跟以上一样,sed 自动完成注释和内容添加
sudo sed -i 's/%sudo/#%sudo/; /#%sudo/a%sudo ALL=(ALL) NOPASSWD: ALL' /etc/sudoers
sudoers 配置公式
以前将%sudo ALL=(ALL:ALL) ALL改成了%sudo ALL=NOPASSWD: ALL,出现的现象就是
使用sudo vi /etc/sudoers之类切换成root执行命令没有问题,也不需要输入密码
但如果切换成别的普通用户例如sudo -u user01 whoami即使输入了密码也无法执行
后来看了参考资料里的链接才知道配置有问题,应为%sudo ALL=(ALL) NOPASSWD: ALL
公式定义
对/etc/sudoers文件进行编辑的代码公式可以概括为:
授权用户/组 主机 = [(切换到哪些用户或组)] [是否需要输入密码验证] 命令1,命令2,…
凡是[ ]中的内容, 都能省略; 命令和命令之间用逗号,分隔,
为了方便说明, 将公式的各个部分称呼为字段1 – 字段5,对应关系如下:
授权用户/组 主机 = [(切换到哪些用户或组)] [是否需要输入密码验证] 命令1,命令2,…
字段1 字段2 = [(字段3)] [字段4] 字段5
其中字段3、字段4是可以省略的,这5个字段的取值说明如下:
字段1不以%号开头的表示将要授权的用户,以%号开头的表示将要授权的组字段2表示允许登录的主机,ALL表示所有即从任意地方登录过来都可以
如果该字段不为ALL,表示授权用户只能从指定的机器上登录到本服务器来执行sudo 命令字段3如果省略,相当于(root:root),表示可以通过sudo只能提权到(root 用户:root 组)
注意是只能,别的用户或组都不行;如果为(ALL)或者(ALL:ALL), 表示能提权到(任意用户:任意用户组)
请注意,字段3如果没省略,必须使用( )双括号包含起来,这样才能区分是省略了字段3还是省略了字段4字段4可取值是NOPASSWD:,请注意NOPASSWD:后面带有冒号:,且只对后面字段5的命令1起作用
即在执行sudo 命令1时可以不需要密码,但是执行sudo 其他非命令1时还是需要输入密码的字段5是用逗号,隔开的一系列授权用户可用的命令,如果为ALL则表示允许使用所有命令
具体命令都是使用绝对路径,这是为了避免目录下有同名命令被执行,从而造成不可预估的安全隐患- 另外,
字段3 -- 字段5是可以有多组重复的,以上只是便于理解的简化版完整的sudoers公式如下:
字段1 字段2 = [(字段3)] [字段4] 字段5 [[(字段3)] [字段4] 字段5] …
样例解读
root ALL=(ALL:ALL) ALL
# 用户root 可从任意主机登录本机提权到任何用户或组执行任何命令,但执行前要输入密码
%wheel ALL=(ALL) ALL
# wheel 组的用户可从任意主机登录本机提权到任何用户或组执行任何命令,但执行前要输入密码
%sudo ALL=(ALL:ALL) ALL
# sudo 组的用户可从任意主机登录本机提权到任何用户或组执行任何命令,但执行前要输入密码
%sudo ALL=(ALL) NOPASSWD: ALL
# sudo 组的用户可从任意主机登录本机提权到任何用户或组执行任何命令,且执行前不用输入密码
jack mycomputer=/usr/sbin/reboot,/usr/sbin/shutdown
# 用户jack 可从名为mycomputer 的主机登录本机提权到root 执行reboot 和shutdown,须输入密码
papi ALL=(root) NOPASSWD: /bin/chown,/usr/sbin/useradd
# 用户papi 可从任意主机登录本机提权到root 免密执行chown,但执行useradd 仍需要密码
# 这就对应了以上sudoers "公式定义"中的第4 点,NOPASSWD: 只对命令1 起作用,之后的命令无效
# 还要更多关于sudoers 的设置请详见参考资料《Linux 详解sudoers》,非常不错的文章
1万+

被折叠的 条评论
为什么被折叠?



