排障与安全50 条

免密提权与提权配置

免密提权的关键是四要素收口:授权身份、主机范围、目标用户与命令清单;命令按绝对路径精确授权、避免通配、限定目标身份,并开启会话日志以便事后追溯,改配置前先留存可用会话。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​‌​‌‌​​‌​​​‌‌​‌‌‌‌​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​‌‌​​‌‌​​‌‌​‌​​‌​‌‌​​‌‌‌​​‌​‌‌​‌​‌‌‌​​​​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌‌​​‌‌​‌‌‌​‌‌‌​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​​​‌‌​‌‌​​​‌‌​​‌​‌​‌‌‌​​‌‌​‌‌‌​​‌‌​​‌​‌‌​‌​‌‌​​‌​‌​‌‌‌​​‌‌​‌‌​​​‌‌​‌‌​​​​‌​‌‌​‌‌​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

免密提权的本质是授权范围问题

免密提权让自动化流程不必交互输入口令即可获得特权,代价是把「知道口令」这层门槛去掉了。因此配置的重点不是「要不要免密」,而是「允许哪个身份、在哪些主机、以哪个目标用户、执行哪些命令」四要素是否收得很紧。四要素中任何一个放宽到通配,免密就等于把该范围内的特权直接交给了持有该账号的所有人。

基本信息

适用对象Linux 与类 Unix 系统的提权工具
配置位置集中配置文件与包含目录,语法以官方文档为准
四要素授权身份、主机范围、目标用户、可执行命令
校验方式编辑工具自带语法检查,改前务必备份
审计能力可记录命令输入输出与会话内容,用于事后追溯

配置要点

  • 命令写绝对路径:按路径精确授权,避免同名命令被替换后获得特权执行
  • 避免通配授权:命令参数可被解释器或编辑器二次执行时,通配等于放开任意命令
  • 限定目标用户:默认切到最高权限用户是最危险的做法,应按需要指定目标身份
  • 按组授权而非按个人:人员变动时只需调整组成员,规则不会随人员流动残留
  • 保留非交互语义:自动化场景要求不带终端执行,需确认规则与相关默认项允许该方式
  • 开日志留痕:记录执行的命令与会话内容,是事后复盘的唯一依据

规则写法示例

规则写法示例
# 按组授权,仅允许以指定身份执行少数命令
%deployops ALL=(root) NOPASSWD: /usr/bin/systemctl restart myapp, /usr/bin/systemctl status myapp
# 单独定义命令别名,便于统一维护
Cmnd_Alias WEBREL = /usr/bin/systemctl reload nginx
%webops ALL=(root) NOPASSWD: WEBREL
# 记录输入输出,供事后审计
Defaults log_input, log_output
Defaults iolog_dir="/var/log/sudo-io"

验证与使用

验证与使用
visudo -c                         # 语法检查,改完必须执行
sudo -l -U deployuser             # 查看该账号实际可用规则
sudo -n /usr/bin/systemctl status myapp   # 非交互执行,验证免密是否生效
sudo -K                           # 清除缓存的时间戳,重新验证行为

授权粒度与风险

写法效果风险
指定命令加绝对路径只能执行该命令风险可控,推荐
命令后带通配参数不受限可通过参数调用其他程序
放开全部命令等于完整特权账号失窃即全盘失守
授权给通配目标用户可切换任意身份横向移动范围被放大
免密规则只解决「不用输口令」,不解决「谁能用这个账号」。真正的边界在账号本身:自动化账号应只允许从指定来源、用指定密钥登录,并禁止交互式登录,这样免密规则的影响面才被收窄。
提权配置写错会把所有人挡在门外,包括你自己。修改前保留一个已提权的会话,改完先做语法检查再验证;确认可正常提权后才退出原会话。

易错点

  • 命令用通配授权:编辑器与解释器类命令可通过参数执行任意内容,等同于放开全部特权
  • 直接授权完整特权:账号一旦失窃,攻击者可覆盖全部主机,横向移动不需要任何额外条件
  • 改配置不做语法检查:语法错误会导致提权整体不可用,可能直接失去运维入口
  • 免密账号同时允许口令与交互登录:免密规则被任意人复用的风险大幅上升
  • 不开会话日志:出事之后无法还原谁执行了什么,审计链条在此断裂

数据来源与参考

  • sudo 官方文档:sudoers 手册与命令别名
  • sudo 官方文档:日志与会话记录选项
  • CIS 基准:特权访问控制建议

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/sudo-config-passwordless-escalation.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​‌​‌‌​​‌​​​‌‌​‌‌‌‌​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​‌‌​​‌‌​​‌‌​‌​​‌​‌‌​​‌‌‌​​‌​‌‌​‌​‌‌‌​​​​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌‌​​‌‌​‌‌‌​‌‌‌​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​​​‌‌​‌‌​​​‌‌​​‌​‌​‌‌‌​​‌‌​‌‌‌​​‌‌​​‌​‌‌​‌​‌‌​​‌​‌​‌‌‌​​‌‌​‌‌​​​‌‌​‌‌​​​​‌​‌‌​‌‌​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​