文件与目录 / 命令文档
Linux chmod 命令
概述
掌握文件权限,守护系统安全
基本概念
chmod(change mode)是Linux系统中用于修改文件或目录权限的命令。它控制着用户对文件的访问权限。
权限类型:
r (read) - 读取权限 (4)
w (write) - 写入权限 (2)
x (execute) - 执行权限 (1)
用户类型:
u (user) - 文件所有者
g (group) - 同组用户
o (others) - 其他用户
a (all) - 所有用户
八进制模式:
# 设置文件 file_a 权限为 rwxr-xr-x (755) chmod 755 /root/chmod_test/file_a # 设置文件 file_a 权限为 rw-r--r-- (644) chmod 644 /root/chmod_test/file_a # 递归设置目录 /root/chmod_test/ 的权限 chmod -R 755 /root/chmod_test/
符号模式:
# 给所有者添加执行权限 chmod u+x /root/chmod_test/test.sh # 给组用户移除读权限 chmod g-r /root/chmod_test/test.sh # 给其他用户设置只读权限 chmod o+r /root/chmod_test/test.sh # 给所有用户添加执行权限 chmod a+x /root/chmod_test/test.sh
运维实战场景
场景1:Web服务器文件权限
# 设置网站目录权限 chmod -R 755 /data/wwwroot/img.youngsu.top/ chmod -R 644 /data/wwwroot/img.youngsu.top/*.html chmod -R 644 /data/wwwroot/img.youngsu.top/*.css chmod -R 644 /data/wwwroot/img.youngsu.top/*.js # 设置上传目录权限(需要写入) chmod 755 /data/wwwroot/img.youngsu.top/uploads/
目录需要执行权限(x)以便进入,文件不需要执行权限避免安全风险。
场景2:脚本部署权限
# 部署脚本权限设置 chmod 750 /opt/scripts/deploy.sh chmod 640 /opt/scripts/config.conf chmod 600 /opt/scripts/.env # 日志目录权限 chmod 755 /var/log/myapp/ chmod 644 /var/log/myapp/*.log
脚本需要执行权限,配置文件保护敏感信息,日志文件便于查看。
场景3:数据库文件权限
# MySQL数据目录权限 chown -R mysql:mysql /var/lib/mysql/ chmod 750 /var/lib/mysql/ chmod 660 /var/lib/mysql/* # 配置文件权限 chmod 644 /etc/mysql/my.cnf chmod 600 /etc/mysql/debian.cnf # 包含密码的配置
数据库文件需要严格的权限控制,防止数据泄露。
安全注意事项
危险操作警告 chmod 777 - 给予所有用户完全权限,极其危险! chmod -R 777 / - 绝对禁止!会破坏整个系统 chmod 666 重要文件 - 任何人都可以修改
最佳实践 遵循最小权限原则 定期审查文件权限 重要文件使用 644 或更严格权限 可执行文件使用 755 或 750 敏感配置文件使用 600 或 640 使用 umask 设置默认权限
问题1:脚本无法执行
# 检查权限 ls -l script.sh # 添加执行权限 chmod +x script.sh
问题2:网站文件无法访问
# 批量修复网站权限
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;问题3:日志无法写入
# 检查目录权限 ls -ld /var/log/myapp/ # 修复权限 chmod 755 /var/log/myapp/ chmod 644 /var/log/myapp/*.log