Skip to content

权限控制

Linux权限逻辑

在 Linux 权限判断里:系统会先看用户是不是文件所有者,然后看用户是否属于文件所属组,最后才看“其他用户(others)”权限

Linux 权限匹配是按身份优先级判断的,而不是取权限大小。就算g权限比u权限大,也只看u权限。

文件信息

image-20260307180403558

权限信息

第一位字符表示文件类型

字符含义
-普通文件
d目录
l软链接

image-20260307180456341

后面 9 位是权限:

字符含义
rread 读
wwrite 写
xexecute 运行
-没有权限

x权限:对于文件,表示该文件可作为程序执行,对于目录,表示可以使用cd进入

sh
rwx r-x r-x

   └─ 其他用户权限
   └───── 用户组权限(同组用户权限)
└──────── 文件拥有者权限

权限字符的顺序是固定的

sh
r w x
sh
drwxr-xr-x    7 zurichscud  staff    224 Jul 25  2025 Applications

假设当前用户是lai,那么我们可以得到如下信息:

  • Applications是一个目录
  • 对于文件拥有者zurichscud,他的权限是rwx
  • 对于staff用户组,拥有r-x权限
  • 对于其他用户,这里是lai,拥有r-x权限

修改权限

chmod修改文件、文件夹的权限信息。

change mode

警告

只有文件的拥有者或root用户才允许修改

sh
chmod [-R] 权限 文件
  • -R:对文件夹中的全部内容递归操作

符号模式

类型含义
uuser(文件拥有者)
ggroup(所属组)
oothers(其他用户)
aall(所有人)
sh
chmod [who][+|-|=][权限] 文件
符号含义
+添加权限
-移除权限
=重新设置权限
  • 给用户增加执行权限:
sh
chmod u+x file.sh
  • 给组用户增加读权限:
sh
chmod g+r file.txt
  • 移除其他用户写权限:
sh
chmod o-w file.txt
  • 给所有用户执行权限:
sh
chmod a+x script.sh
  • 重置用户权限
sh
chmod u=rwx hello.txt
  • 多个一起写:
sh
chmod u+rwx,g+rx,o+r file
chmod u=rwx,g=rx,o=x hello.txt

数字模式

三种权限正好可以用三位二进制表示:

权限二进制十进制
r1004
w0102
x0011
-0000

推理过程:

sh
rwx ->111 ->7
r-x ->101 ->5
sh
chmod num file

num由三位数字分别表示:

sh
owner group others
sh
chmod 755 file
  • 设置所有权限:
sh
chmod 777 file

修改文件所有者

chown 用来 修改文件或目录的所有者(owner)和所属组(group)

sh
chown [-R] [用户] [:用户组] PATH
  • -R: 递归修改目录及其内部所有文件

警告

只有root用户才允许修改文件拥有者

  • 只改所有者
sh
chown alice hello.txt
  • 只改所属组
sh
chown :staff hello.txt
  • 递归修改
sh
chown -R alice:staff demo