Skip to content

Linux 权限核心是通过「所有者 - 组 - 其他用户」三层身份,搭配「读 - 写 - 执行」三种权限,控制文件 / 目录的访问操作,核心规则简单且易落地。

一、身份与权限类型

1.1 三层访问身份(谁能操作)

  • 所有者(u,user):文件 / 目录的创建者,拥有最高控制权。
  • 所属组(g,group):同一组内的用户,可共享部分权限(比如团队协作文件)。
  • 其他用户(o,other):系统中除所有者和所属组外的所有用户(最严格限制)。
  • 所有用户(a,all):包含 u、g、o 三类身份(批量设置权限时用)。

1.2 三种基础权限(能做什么)

  • 无权限:用 - 表示,数字标识为 0。

1.3 权限组合表示(直观查看)

ls -l 命令可查看文件 / 目录的权限,示例输出解析: 例如:

-rwxr-xr-- 1 root root 1234 5月 20 10:00 test.sh
  • 第 1-10 位为权限位:-rwxr-xr--
  • 第 1 位:文件类型(- 是普通文件,d 是目录,l 是软链接)。
  • 第 2-4 位:所有者权限(rwx = 读 + 写 + 执行)。
  • 第 5-7 位:所属组权限(r-x = 读 + 执行,无写权限)。
  • 第 8-10 位:其他用户权限(r-- = 仅读,无写 + 执行权限)。

二、快速设置权限

2.1 数字权限规则

每种身份的权限用「r=4、w=2、x=1」的和表示,三层身份权限组合成三位数(所有者 + 所属组 + 其他)。

  • 示例 1:rwxr-xr-- = 所有者(4+2+1=7)+ 所属组(4+0+1=5)+ 其他(4+0+0=4)→ 数字权限 754。
  • 示例 2:rwxrwxrwx(所有用户都有全部权限)→ 7+7+7= 777(慎用,安全风险高)。
  • 示例 3:rw-r--r--(所有者读 + 写,其他仅读)→ 6+4+4= 644(普通文件常用)。
  • 示例 4:rwxr-xr-x(所有者全权限,其他读 + 执行)→7+5+5= 755(脚本 / 目录常用)

2.2 常用数字权限场景

场景推荐数字权限说明
普通文档(如 txt、md)644自己能改,别人只能看
可执行脚本(如 .sh)755自己能改能执行,别人能看能执行
个人隐私文件(如密钥)600仅自己能读 + 写,其他人无权限
共享目录(团队协作)775组内用户可增删改,其他人只读

三、权限操作命令

3.1 chmod:修改文件/目录权限

语法:chmod [权限设置] 文件名/目录名,支持「数字模式」和「符号模式」。

3.1.1 数字模式

# 给 test.sh 设权限 755(所有者 rwx,组和其他 r-x)

chmod 755 test.sh

# 给 docs 目录及所有子文件设权限 775(-R 递归修改目录内内容)

chmod -R 775 docs/

3.1.2 符号模式

语法:chmod [身份][操作][权限] 目标,比如 u+x(给所有者加执行权限)。
  • 身份:u(所有者)、g(组)、o(其他)、a(所有)。
  • 操作:+(添加权限)、-(移除权限)、=(设置权限,覆盖原有)。
  • 权限:r、w、x。
给所有者添加执行权限(比如脚本刚创建,缺执行权限)

chmod u+x test.sh

# 给所属组添加写权限,移除其他用户的读权限

chmod g+w,o-r file.txt

# 给所有用户设置读+执行权限(覆盖原有)

chmod a=rx script.sh

3.2 修改文/目录的所有者和所属组

语法:chown [所有者]:[所属组] 目标(需 sudo 权限,修改系统级归属)。

示例

# 把 file.txt 的所有者改成 alice,所属组改成 work 组

sudo chown alice:work file.txt

# 只改所有者(所属组不变)

sudo chown bob test.sh

# 只改所属组(所有者不变)

sudo chown :team docs/

# 递归修改目录及子文件的所有者和组

sudo chown -R alice:work project/

3.3 单独修改所属组

注:(少用,chown 已覆盖)

# 把 docs 目录的所属组改成 dev 组

sudo chgrp dev docs/

四、特殊权限与注意事项

4.1 目录权限的关键规则

  • 目录必须有 x 权限才能进入(cd),否则即使有 r 权限也无法查看内容。
  • 目录有 w 权限意味着能增删其内的文件 / 子目录,和文件本身的权限无关(比如你是目录所有者,即使目录内文件是别人的,你也能删除)。

4.2 特殊权限

说明:(了解即可,日常用得少)

  • SUID(4 xxx):普通用户执行文件时,临时获得文件所有者的权限(如 passwd 命令,普通用户能修改自己密码,就是因为有 SUID)。
  • SGID(2 xxx):用户在目录内创建的文件,所属组自动继承该目录的所属组(适合团队共享目录)。
  • Sticky Bit(1 xxx):目录内的文件只有所有者或 root 能删除(如 /tmp 目录,权限 1777,所有人能创建文件,但只能删自己的)。

4.3 安全注意事项

  • 避免给敏感文件 / 目录设 777 权限(所有用户都能修改删除,易被恶意篡改)。
  • 系统关键文件(如 /etc/passwd、/bin 下的命令)权限不要随意修改,否则可能导致系统故障。
  • 给他人授权时,优先用「所属组」控制(而非开放「其他用户」权限),粒度更细更安全。

4.4 chmod 与chown 区别

chmod 和 chown 都是 Linux 中用于修改文件属性的命令,区别如下:

命令英文全称作用示例
chmodchange mode修改文件的权限(读 r、写 w、执行 x)chmod 750 file 或 chmod u+x file
chownchange owner修改文件的所有者(owner)和/或所属组(group)chown alice:developers file

记忆技巧

  • mod → mode(模式/权限) → chmod 管权限。
  • own → owner(所有者) → chown 管归属。

常见组合

# 修改文件权限为 rwxr-x---
chmod 750 script.sh

# 修改文件所有者为 alice,组为 developers
chown alice:developers script.sh

五、权限问题常见场景

  • 无法执行脚本:提示「Permission denied」,给脚本加执行权限 chmod u+x 脚本名。
  • 无法进入目录:提示「Permission denied」,给目录加 x 权限 chmod u+x 目录名。
  • 无法修改文件:确认自己是所有者(ls -l 查看),或有 w 权限,无则用 chmod u+w 文件名。