插件窝 干货文章 linux chmod权限更改权限要求

linux chmod权限更改权限要求

权限 chmod 文件 file 36    来源:    2025-05-14

Linux chmod 权限更改详解

chmod 是 Linux/Unix 系统中用于更改文件或目录权限的重要命令。以下是关于 chmod 命令的全面说明:

基本权限概念

Linux 文件系统中有三种基本权限: - r (read):读取权限 - w (write):写入权限 - x (execute):执行权限

这些权限分别针对三类用户: 1. 所有者 (owner/u):文件创建者 2. 所属组 (group/g):文件所属的用户组 3. 其他用户 (others/o):系统上的其他用户

chmod 命令语法

chmod [选项] 模式 文件...

权限表示方法

1. 符号模式 (Symbolic Mode)

格式:[ugoa...][[+-=][rwxXst]...][,...]

  • 用户类别

    • u:所有者
    • g:所属组
    • o:其他用户
    • a:所有用户(默认)
  • 操作符

    • +:添加权限
    • -:移除权限
    • =:设置确切权限

示例

chmod u+x file.txt      # 给所有者添加执行权限
chmod g-w file.txt      # 从所属组移除写入权限
chmod o=r file.txt      # 设置其他用户只有读取权限
chmod a+x file.txt      # 给所有用户添加执行权限
chmod u=rwx,g=rx,o=r file.txt  # 设置不同用户的不同权限

2. 数字模式 (Octal Mode)

用三位或四位八进制数表示权限: - 第一位(可选):特殊权限(setuid, setgid, sticky bit) - 第二位:所有者权限 - 第三位:所属组权限 - 第四位:其他用户权限

每位数字是以下值的和: - 4 (r):读取 - 2 (w):写入 - 1 (x):执行

常见权限组合: - 7 (4+2+1):rwx - 6 (4+2):rw- - 5 (4+1):r-x - 4 (4):r-- - 0:无权限

示例

chmod 755 file.txt      # rwxr-xr-x
chmod 644 file.txt      # rw-r--r--
chmod 600 file.txt      # rw-------
chmod 777 file.txt      # rwxrwxrwx (不推荐)

特殊权限

  1. setuid (4):以文件所有者身份执行

    chmod u+s file       # 符号模式
    chmod 4755 file      # 数字模式
    
  2. setgid (2):以文件所属组身份执行(文件)或继承父目录组(目录)

    chmod g+s file       # 符号模式
    chmod 2755 file      # 数字模式
    
  3. sticky bit (1):只有所有者才能删除/重命名文件(常用于/tmp目录)

    chmod +t dir         # 符号模式
    chmod 1777 dir       # 数字模式
    

常用选项

  • -R--recursive:递归更改目录及其内容权限
  • -v--verbose:显示权限变更信息
  • -c:类似 verbose,但只在有变更时显示
  • --reference=RFILE:使用参考文件的权限

实用示例

  1. 使脚本可执行:

    chmod +x script.sh
    
  2. 保护私密文件:

    chmod 600 ~/.ssh/id_rsa
    
  3. 设置共享目录(组成员可读写):

    chmod 775 /shared/directory
    
  4. 递归更改目录权限:

    chmod -R 755 /web/root
    
  5. 复制其他文件的权限:

    chmod --reference=source.txt target.txt
    

最佳实践

  1. 遵循最小权限原则,只授予必要的权限
  2. 对于可执行文件,通常使用 755 权限
  3. 对于配置文件,通常使用 644 权限
  4. 对于敏感文件(如SSH密钥),使用 600 权限
  5. 谨慎使用 777 权限,这会带来安全风险

查看权限

使用 ls -l 命令可以查看文件权限:

ls -l file.txt
# 输出示例:-rw-r--r-- 1 user group 0 Jan 1 00:00 file.txt

第一个字段 -rw-r--r-- 显示权限: - 第一个字符:文件类型(- 普通文件,d 目录) - 接下来三组:所有者、组、其他用户的权限