Linux 文件权限777有多危险?别等被黑才后悔
群里总有新人问“为什么我chmod 777就能解决问题”,每次看到都想骂人。今天直接说清楚777到底多要命。
777是什么
rwxrwxrwx
所有者 组 其他用户
7 = 4(r读) + 2(w写) + 1(x执行)
777意味着:任何人都能读、写、执行这个文件/目录。包括你服务器上的恶意脚本、被入侵的web进程、隔壁租户(如果是虚拟主机)。
真实场景:777怎么让你翻车
场景1:上传目录777
# 常见作死操作
chmod 777 /var/www/html/uploads
攻击者上传webshell,执行任意命令。你的服务器变成肉鸡。
场景2:配置文件777
chmod 777 /etc/nginx/nginx.conf
任何进程都能篡改配置,重定向流量、植入恶意模块。
场景3:脚本文件777
chmod 777 /usr/local/bin/backup.sh
普通用户替换为恶意脚本,下次root执行cron时直接提权。
正确的权限设置
基本原则:最小权限
文件:644(所有者读写,其他人只读)
目录:755(所有者读写执行,其他人读执行)
可执行文件:755
# 文件
chmod 644 file.txt
# 目录
chmod 755 /path/to/dir
# 脚本
chmod 755 script.sh
需要写权限怎么办
web上传目录
# 让web用户(www-data)拥有
chown www-data:www-data /var/www/html/uploads
chmod 755 /var/www/html/uploads
# 如果必须写,给目录加sticky bit
chmod 1777 /tmp # 只有文件所有者能删自己的文件
日志目录
chown syslog:adm /var/log/app
chmod 750 /var/log/app # 组用户可读写,其他人无权限
检查当前系统里有多少777
# 找所有777文件
find / -perm 777 -type f 2>/dev/null
# 找所有777目录
find / -perm 777 -type d 2>/dev/null
# 安全审计用这个
find / -perm /o+w -type f 2>/dev/null # 其他人可写
大概率你会看到:
– /tmp 和 /var/tmp (sticky bit保护,正常)
– 一些缓存文件(需要修复)
– 你自己的作死文件(赶紧改)
如果真要用写权限,正确姿势
# 1. 用ACL精确控制
setfacl -m u:www-data:rwx /var/www/data
setfacl -m g:dev-team:rx /var/www/data
# 比777安全100倍
# 2. 用umask控制新建文件权限
umask 0022 # 新建文件默认644,目录755
# 加到.bashrc或profile里
# 3. 临时提权用sudo
sudo -u www-data touch /var/www/data/file
# 别chmod 777了事
一句话总结
777 = 给全世界你家大门的钥匙。别用。永远别用。
真有写需求,用ACL或组权限。觉得麻烦的,想想被挂马后通宵删恶意文件的酸爽。
最后,去检查你的服务器:
find / -xdev -perm 777 -type f | grep -v /proc | grep -v /sys
看到结果别哭。改。现在。
💻 安全运维 / Linux运维 / 渗透测试 技术支持
业务需求可联系博客作者
