全面评估linux权限安全需围绕“谁在系统里、谁在运行什么、谁能访问什么”三主线:清点用户账户、核查关键文件目录权限、分析进程身份与服务权限、验证组成员关系及最小权限落地。

要全面评估 Linux 系统当前的用户与权限安全状态,关键不是逐条检查命令,而是围绕“谁在系统里、谁在运行什么、谁能访问什么”这三根主线系统性排查。核心目标是发现越权、冗余、暴露和异常——比如不该存在的用户、本不该有写权限的敏感文件、以高权限运行的非必要服务。
一、清点所有用户账户:查“谁有钥匙”
先确认系统中有哪些用户,尤其关注 UID ≤ 1000 的系统用户和长期未登录的普通用户:
- 执行 sudo cat /etc/passwd 查看完整用户列表,重点关注字段 3(UID)和字段 7(shell)。UID=0 只应有 root;/sbin/nologin 或 /bin/false 的用户通常是合法系统服务账户;/bin/bash 或 /bin/sh 的非 root 用户需逐一核实用途。
- 用 last -n 20 和 sudo journalctl --since "1 month ago" -u sshd | grep "Accepted" 检查近期登录记录,识别陌生 IP 或非工作时间登录行为。
- 运行 sudo find /home -maxdepth 1 -type d ! -name "." -exec ls -ld {} \; 2>/dev/null | grep -v "drwx------" 快速筛查 home 目录权限过松(如 755)的账户——正常应为 700。
二、核查关键文件与目录权限:查“门锁是否牢靠”
敏感配置和凭证文件一旦权限失控,极易导致横向渗透:
- /etc/passwd 应为 644(root 可读写,其他只读);/etc/shadow 必须是 000 或 400(仅 root 可读);用 ls -l /etc/passwd /etc/shadow 验证。
- 检查是否存在被误设为全局可写的危险路径:find /etc /var/log /home -type f -perm -2 -o -type d -perm -3 -xdev 2>/dev/null | head -20。特别警惕 /etc/crontab、/etc/sudoers、用户 .bash_history 等文件被设为 666 或 777。
- 扫描特殊权限文件:find / -perm -4000 -o -perm -2000 -type f 2>/dev/null。除 /usr/bin/sudo、/usr/bin/passwd、/bin/mount 等标准系统二进制外,任何出现在 /tmp、/home 或非 /usr/bin 路径下的 SUID/SGID 文件都需立即调查。
三、分析进程身份与服务权限:查“谁在替你干活”
很多 Permission denied 实际源于服务进程以错误用户身份运行,而非文件本身权限问题:
- 用 ps auxf 或 systemctl status --all 查看主要服务(如 nginx、mysql、redis)的 USER 列。Web 服务不应以 root 运行;数据库进程属主应为专用系统用户(如 mysql),而非 nobody 或 daemon。
- 对关键服务,验证其配置中指定的运行用户是否与实际一致。例如 nginx.conf 中的 user www-data;,再执行 grep "user" /etc/nginx/nginx.conf 并比对 ps 结果。
- 检查服务监听端口对应进程权限:sudo ss -tulpn | grep ":80\|:443\|:22",确认 nginx/apache 不是以 root 启动后降权失败,SSH 是否仍允许 root 登录(sudo grep "PermitRootLogin" /etc/ssh/sshd_config)。
四、验证组成员关系与最小权限落地:查“协作是否过度”
组是权限复用的关键,但也是越权入口。重点看高权限组是否被滥加:
- 列出所有含特权的组:getent group sudo adm wheel docker(根据发行版调整)。检查每个组内成员:getent group sudo,剔除临时测试账号或已离职人员。
- 确认无用户意外获得多组高权限。例如某开发账号同时属于 sudo 和 docker 组,可能通过 docker run --privileged 提权,这违反最小权限原则。
- 检查共享目录权限模型是否合理。例如项目代码目录 /opt/myapp 若属组 dev,应设为 2775(SGID + 组可读写执行),确保新文件自动继承 dev 组,而非依赖 chmod 777 补救。
不复杂但容易忽略:一次完整评估不需要跑完所有命令,而是按“账户→文件→进程→组”顺序,每步聚焦一个风险维度,用输出反推设计意图是否被破坏。真正的安全状态,是每个用户、每个文件、每个进程的存在都有明确理由,且权限刚好够用。











