Linux sudo 免密设置

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. 字段1不以%号开头的表示将要授权的用户,以%号开头的表示将要授权的组
  2. 字段2表示允许登录的主机ALL表示所有从任意地方登录过来都可以
    如果该字段不为ALL,表示授权用户只能从指定的机器上登录到本服务器来执行sudo 命令
  3. 字段3如果省略,相当于(root:root),表示可以通过sudo只能提权到(root 用户:root 组)
    注意是只能,别的用户或组都不行;如果为(ALL)或者(ALL:ALL), 表示能提权到(任意用户:任意用户组)
    请注意,字段3如果没省略,必须使用( )双括号包含起来,这样才能区分是省略了字段3还是省略了字段4
  4. 字段4可取值是NOPASSWD:,请注意NOPASSWD:后面带有冒号:,且只对后面字段5命令1起作用
    即在执行sudo 命令1时可以不需要密码,但是执行sudo 其他非命令1时还是需要输入密码的
  5. 字段5是用逗号,隔开的一系列授权用户可用的命令,如果为ALL则表示允许使用所有命令
    具体命令都是使用绝对路径,这是为了避免目录下有同名命令被执行,从而造成不可预估的安全隐患
  6. 另外,字段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》,非常不错的文章

参考资料

Linux 详解sudoers

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值