上一篇                     
               
			  Linux如何设置root权限控制?
- Linux
- 2025-06-24
- 2888
 在Linux中通过配置sudoers文件授权特定用户/组执行root命令,限制直接root登录(如禁用SSH root登录),并遵循最小权限原则管理超级用户权限。
 
核心原则:避免直接使用root
- 使用sudo替代su
 通过sudo授权普通用户执行特定命令,而非直接登录root:- 安装sudo(部分发行版默认安装): apt install sudo # Debian/Ubuntu yum install sudo # CentOS/RHEL 
- 将用户加入sudo组: usermod -aG sudo username # Debian/Ubuntu usermod -aG wheel username # CentOS/RHEL 
- 配置sudo权限文件(/etc/sudoers):
 使用visudo命令编辑(避免语法错误):# 允许wheel组用户使用sudo %wheel ALL=(ALL) ALL # 允许特定用户无密码执行命令(谨慎使用) username ALL=(ALL) NOPASSWD: /usr/bin/systemctl 
 
- 安装sudo(部分发行版默认安装): 
禁止root远程登录(SSH加固)
修改SSH配置文件 /etc/ssh/sshd_config: 
- 禁止root通过SSH登录: PermitRootLogin no 
- 限制登录用户(仅允许普通用户): AllowUsers username 
- 重启SSH服务生效: systemctl restart sshd 
️ 注意:先测试普通用户SSH登录权限,再禁用root登录,避免被锁在系统外。
设置强密码策略
- 修改root密码复杂度
 编辑/etc/security/pwquality.conf:minlen = 12 # 最小长度 minclass = 3 # 包含数字、字母、符号等至少3类 
- 设置密码有效期
 修改/etc/login.defs:PASS_MAX_DAYS 90 # 密码最长有效期 PASS_WARN_AGE 7 # 过期前7天提醒 
- 使用命令强制root修改密码: chage -M 90 root 
使用PAM模块精细化控制
通过Pluggable Authentication Modules (PAM) 限制root访问:

- 限制root的TTY终端
 编辑/etc/securetty,仅允许本地tty1登录:tty1 # 注释其他行(如tty2, pts/0等) 
- 禁止普通用户su到root
 编辑/etc/pam.d/su,添加:auth required pam_wheel.so use_uid # 仅允许wheel组成员使用su 
审计与监控root活动
-  启用auditd日志审计 - 安装auditd: apt install auditd # 或 yum install audit 
- 监控root执行的所有命令: auditctl -a always,exit -F arch=b64 -F euid=0 -S execve 
- 查看日志:ausearch -ue 0(0为root的UID)
 
- 安装auditd: 
-  记录sudo操作 
 在/etc/sudoers中添加: Defaults logfile=/var/log/sudo.log 
安全增强建议
- 使用双因素认证(2FA)
 为sudo或SSH登录启用Google Authenticator等2FA工具。
- 定期审查权限 
  - 检查sudoers文件:sudo visudo -c
- 审计特权用户:grep -Po '^sudo.+:K.*$' /etc/group
 
- 检查sudoers文件:
- 内核级防护
 启用SELinux/AppArmor限制root进程行为(如配置enforcing模式)。
控制root权限的关键在于:
 优先使用sudo而非直接root操作
 禁用远程root登录
 强制密码复杂性策略
 通过PAM和审计实现精细化管控
️ 任何配置修改前,务必备份相关文件(如/etc/sudoers),并在测试环境验证。
基于Linux官方文档及安全最佳实践,参考来源: 
- Linux man-pages (
man sudoers,man pam_wheel)- NSA《Linux安全加固指南》
- Ubuntu/CentOS官方安全文档
遵循CC BY-SA 4.0协议,允许署名共享。
 
 
 
			 
			 
			