Linux sudo 权限配置与安全实践

6次阅读

linux sudo权限配置需遵循最小权限原则,用sudo visudo安全编辑并启用日志审计,按用户、命令、参数层层收敛授权,定期审查与及时回收权限。

Linux sudo 权限配置与安全实践

Linux 中 sudo 权限配置不是“给 root 密码”或“全开权限”那么简单,核心是遵循最小权限原则:只赋予用户完成任务所必需的命令和参数范围,同时保留可审计、可追溯的操作痕迹。

用 visudo 安全编辑 sudoers 文件

直接修改 /etc/sudoers 极易因语法错误导致所有用户无法使用 sudo(包括 root),必须用 sudo visudo。它会在保存前自动检查语法,出错时拒绝写入并提示具体行号和问题。多用户协同管理时,还可配合 visudo -f /etc/sudoers.d/xxx 拆分配置,避免主文件冲突。

按需授权:从用户、命令到参数层层收敛

避免写 user ALL=(ALL) ALL 这类宽泛规则。实际应明确限定:

  • 目标用户或用户组(如 %webadmin
  • 允许切换的身份(如 (www-data) 而非 (ALL)
  • 可执行的绝对路径命令(如 /usr/bin/systemctl restart nginx
  • 必要时限制参数(用 SETENVNOEXEC 防止 shell 逃逸;对脚本加 !/bin/bash 排除危险解释器)

例如:允许运维重启 Nginx 但不能停止或查看状态:
%webadmin ALL=(www-data) /usr/bin/systemctl restart nginx

启用日志与行为审计

默认 sudo 日志在 /var/log/auth.logdebian/ubuntu)或 /var/log/secure(RHEL/centos),但内容较简略。建议在 /etc/sudoers 中添加:

  • Defaults logfile="/var/log/sudo.log" —— 记录每次 sudo 命令完整参数
  • Defaults log_input,log_output —— 录制标准输入输出(需配合 /var/log/sudo-io/ 目录)
  • Defaults requiretty —— 禁止后台进程调用 sudo(防自动化提权)

配合 sudo tail -f /var/log/sudo.log 可实时监控提权行为。

定期审查与权限回收

权限不是“一次配置终身有效”。应建立机制:

  • 每季度运行 sudo -l -U username 检查用户实际可用命令
  • grep -v “^#” /etc/sudoers /etc/sudoers.d/* | grep -E “(ALL|NOPASSWD|!” 快速定位高风险规则
  • 员工离职或角色变更后,立即删除对应行或禁用用户,不依赖密码过期

临时提权(如紧急故障处理)应走审批流程,并在事后清除临时规则。

text=ZqhQzanResources