最小权限原则要求为每个用户、服务、文件分配恰好所需的权限。需精简用户账户、分层权限管理,禁用默认无用低uid系统账户(如daemon、games、ftp),并用cat /etc/passwd | awk -f: '$3

最小权限原则不是一句口号,而是必须落实到每个用户、每个服务、每个文件的具体操作中。核心就一条:只给够用的权限,多一分都不要。
用户账户要精简,权限要分层
系统默认创建的大量低UID账户(如daemon、games、ftp)基本不用,却可能成为攻击入口。
- 先查哪些是系统账户:cat /etc/passwd | awk -F: '$3
- 确认无用后直接删除:sudo userdel -r games(-r 同时清空家目录和邮件)
- 不确定是否能删的,先锁定:sudo passwd -l username
- 日常运维禁止使用 root 登录 SSH,必须创建普通管理账户(如 ops),再通过 sudo 授权必要命令
sudo 权限必须按需分配,不能一揽子放权
别让所有管理员都拥有 ALL=(ALL) NOPASSWD: ALL 这种高危配置。应明确限定可执行命令、是否需要密码、能否切换用户。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 用 visudo 编辑 /etc/sudoers,避免语法错误导致锁死
- 例如只允许重启 Nginx:%webadmin ALL=(root) /bin/systemctl restart nginx
- 启用日志记录:Defaults logfile="/var/log/sudo.log"
- 禁止无密码提权:Defaults requiretty 和 Defaults !nopasswd(除非明确业务需要)
服务进程必须降权运行
Web、数据库、缓存等服务不应以 root 身份长期驻留内存。一旦被攻破,攻击者直接拿到最高权限。
- Nginx/Apache 配置中指定运行用户:user www-data; 或 User www-data(systemd 单元中)
- MySQL 启动时使用专用账户:User=mysql Group=mysql(在 /etc/my.cnf 或 systemd service 文件中设置)
- 新建服务账户时禁用登录 Shell:sudo useradd -r -s /usr/sbin/nologin mysql
- 检查当前服务运行身份:ps aux | grep nginx 或 systemctl show --property=User nginx
文件与目录权限要严格收敛
敏感配置文件、密钥、脚本若权限过宽,极易被篡改或读取,成为横向渗透跳板。
- SSH 私钥必须 600:chmod 600 ~/.ssh/id_rsa
- 系统配置文件如 /etc/shadow、/etc/sudoers 应为 640 或 600,属主 root,组为 root 或特定管理组
- 禁止全局可写(尤其 /tmp 以外):find /opt -type d -perm -o+w -ls 并修复
- 关键目录如 /etc、/var/log 建议设为 750,避免非授权用户遍历










