文件与目录 / 命令文档

Linux chmod 命令

$ chmod 11 个章节 Linux 命令详解

概述

掌握文件权限,守护系统安全

基本概念

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

同分类 · 其他命令文档