用户家目录权限必须是700,否则同服务器其他用户可读取敏感文件;/etc/shadow须为600;/var/spool/cron/下文件须为600;/tmp须启用sticky bit(1777);sudoers中应限制nopasswd至具体命令。

用户家目录权限必须是 700
普通用户家目录如果被设成 755 或更宽松,同服务器其他用户就能列出文件、读取 .bash_history、.ssh/id_rsa.pub 甚至 .env 类配置——这不是理论风险,是真实渗透链起点。
实操建议:
- 检查:用
ls -ld /home/username确认输出中权限字段为drwx------ - 修复:执行
chmod 700 /home/username,注意不要加-R,否则会误改内部文件权限 - 新建用户默认行为:修改
/etc/adduser.conf中的DIR_MODE=0700,避免后续用户重蹈覆辙
敏感文件禁止 group/o 可写(尤其是 /etc/shadow 和 cron 任务)
/etc/shadow 被设成 644 或 664 是典型配置失误;同样,用户级定时任务 /var/spool/cron/username 若允许组写,攻击者可通过同组账户注入恶意命令。
实操建议:
- 关键系统文件权限应严格遵循最小权限原则:
/etc/shadow必须是600,/etc/passwd可644(但内容本身不能存密码) - 检查 cron 文件:运行
ls -l /var/spool/cron/,确认每个文件权限为-rw------- - 别依赖 umask 补救:cron 守护进程不读用户
umask,必须靠文件系统权限硬控制
tmp 目录必须启用 sticky bit
多用户共用 /tmp 或 /var/tmp 时,若没设 sticky bit(即权限末位不是 t),任意用户都能删掉别人创建的临时文件,甚至替换为符号链接造成 TOCTOU 漏洞。
1.) 将所有文件解压到php环境中,本程序才用smarty+php+mysql设计。如果运行不了,请修改hhy文件夹下的smarty.php文件改法请看说明2.) 修改configs下的config.inc.php下的连接数据库的密码和用户名3.) 本程序没有做安全页面,人工导入sql.inc到mysql数据库。管理员初始化帐号为admin,密码为hhy。后台地址:http://你的网站地址/h
实操建议:
- 检查:运行
ls -ld /tmp,确认权限显示为drwxrwxrwt(末尾t表示 sticky bit 已启用) - 修复:执行
chmod +t /tmp;若用 systemd,还需检查/usr/lib/tmpfiles.d/tmp.conf中是否含d /tmp 1777 root root - -行 - 注意:
1777≠777,开头的1就是 sticky bit 的八进制表示
sudoers 配置里别滥用 NOPASSWD
给用户或组配 NOPASSWD: ALL 等价于交出 root shell,一旦该账户被横向渗透,攻击者无需爆破即可提权。真实运维中,90% 的 NOPASSWD 都能收敛到具体命令。
实操建议:
- 用
visudo编辑,避免语法错误锁死 sudo - 限制命令路径:写
/usr/bin/systemctl restart nginx,而不是systemctl(防止 PATH 劫持) - 禁用 shell 通配:在命令后加
\或用引号包裹参数,避免sudo /bin/rm -rf /*这类误操作扩散
真正难的是权限边界的持续收敛——比如开发人员需要部署服务,到底是给 systemctl --user 权限,还是限定到某几个 target,得看实际服务生命周期管理方式,不是加一行 NOPASSWD 就算完事。









