不能直接用root做日常运维,因其权限过高易致误操作引发故障,且无法审计操作人、违反最小权限原则与合规要求;应禁用root远程登录,全员使用个人账号+sudo提权,并通过sudoers细粒度管控命令白名单、强制日志审计、容器与云环境适配权限策略。

为什么不能直接用 root 做日常运维
root 权限等于系统完全控制权,任何误操作(比如 rm -rf /、删错配置文件、改错 SELinux 上下文)都可能引发服务中断或数据丢失。更关键的是,多人共用 root 无法审计具体是谁执行了哪条命令,违反最小权限原则和等保/合规基本要求。
实操建议:
- 禁用 root 远程 SSH 登录:修改
/etc/ssh/sshd_config中的PermitRootLogin no,然后systemctl restart sshd - 所有运维人员必须使用个人账号登录,再通过
sudo提权执行特定命令 - 不设置 root 密码,或仅在应急恢复盘中保留离线备份
如何用 sudoers 实现细粒度命令白名单
sudoers 不是简单给用户加 ALL=(ALL) ALL,而是按角色定义可运行的命令集合。例如数据库管理员只能重启 MySQL、查看慢日志,但不能 touch 系统配置或杀任意进程。
实操建议:
- 用
visudo编辑,避免语法错误锁死 sudo 功能 - 用
Cmnd_Alias分组命令,例如:Cmnd_Alias MYSQL_CMD = /bin/systemctl restart mysql, /usr/bin/mysqladmin ping, /bin/journalctl -u mysql
- 为角色分配别名:
%dba ALL=(root) NOPASSWD: MYSQL_CMD
(注意NOPASSWD仅对可信高频操作启用) - 禁止 shell 逃逸:显式拒绝
/bin/bash、/bin/sh、/usr/bin/python等交互式环境
哪些场景必须配合 sudo + 日志审计才能闭环
光有权限分级不够,得知道“谁在什么时候干了什么”。默认 sudo 日志只记到 /var/log/secure 或 /var/log/auth.log,但内容简略,且容易被高权限用户清除。
将产品展示、购物管理、资金管理等功能相结合,并提供了简易的操作、丰富的功能和完善的权限管理,为用户提供了一个低成本、高效率的网上商城建设方案包含PowerEasy CMS普及版,主要功能模块:文章频道、下载频道、图片频道、留言频道、采集管理、商城模块、商城日常操作模块500个订单限制(超出限制后只能查看和删除,不能进行其他处理) 无订单处理权限分配功能(只有超级管理员才能处理订单)
实操建议:
- 强制记录命令参数:在
/etc/sudoers加Defaults log_input, log_output,并配置Defaults iolog_dir=/var/log/sudo-io/%{user} - 把日志发到远程 syslog 服务器(如 rsyslog + TLS),防止本地篡改
- 用
sudo -l定期检查各账号实际可用命令,避免 alias 被覆盖或配置漂移 - 对敏感命令(如
/usr/bin/passwd、/sbin/usermod)启用双人复核机制,即需两个授权账号先后输入密码
容器与云环境下的权限分级怎么不踩坑
传统 sudo 方案在容器里失效——容器内通常没 systemd、没完整 sudoers、甚至没 /etc/sudoers。K8s 的 RBAC 也只管 API 层,不管容器内进程权限。
实操建议:
权限分级不是一劳永逸的配置,真正的难点在于持续同步——人员变动、服务迁移、新组件上线都会绕过原有规则。最常被忽略的是日志留存周期和跨系统角色映射,这两处一旦松动,整个分级体系就只剩形式。









