李守中
该站已迁往根域名 https://lishouzhong.com
需要注意,迁移后的文章的 url 可能会发生变化。
域名 https://note.lishouzhong.com 下的内容将不再更新,但已有内容会永久保留。

Linux 文件权限管理

Table of Contents

1. 查看文件权限

执行 ls -l 查看目录下所有子目录和文件的权限及属性。输出结果中每列的含义如下:

  1. 第 1 部分: 文件类型和权限。
  2. 第 2 部分: i 节点,硬链接数。
  3. 第 3 部分: 属主,文件所有者。
  4. 第 4 部分: 属组,所有者所在的用户组。
  5. 第 5 部分: 文件的大小。
  6. 第 6 部分: mtime,即最后一次修改时间。
  7. 第 7 部分: 文件或者目录名。

首先,第 1 部分的第 1 个字母表示文件类型,主要有下面几种:

  1. - 普通文件;
  2. d 目录;
  3. l 链接文件;
  4. b 块设备文件,比如硬盘的存储设备等;
  5. c 字符设备文件,比如键盘;
  6. s 套接字文件,跟网络程序有关;
  7. p 管道文件。

之后 9 个字母中,每 3 个一组,分别表示文件所有者 u 权限,同组用户 g 权限和其他用户 o 权限。

属主可以用 a 表示 all users ,即这个文件属于所有用户。

每 3 个字母的组中,各字母依次分别为读 r ,写 w 和执行 x 权限。

权限位出现 - 表示无此权限。例如 rw- 为可读,可写,不可执行。

2. 用 chmod 更改权限

chmod (-R) <pattern> <file-or-dir-name> 命令用来修改权限。

-R 参数为是否为目标文件夹中的所有子项执行此命令 ( 更改文件夹所有子项的权限 )。

主要有两种方法。

2.1. 数字法

  • 4 代表读权限。
  • 2 代表写权限。
  • 1 代表执行权限。

这样的三个数字之可以表示任何一种权限组合。

常用权限组合的有:

  • 7 rwx 4+2+1=7
  • 6 rw- 4+2+0=6
  • 4 r-- 4+0+0=4

比如:

  • sudo chmod 666 <name> 给所有用户读和写的权限;
  • sudo chmod -R 700 <dir-name> 给属主完全权限,其他人不给任何权限。 -R 表示为所有子文件 ( 夹 ) 都配置此权限。

2.2. 参数法

可以操控的颗粒度很细。

基本格式是:

chmod (u|g|o|a)(+|-|=)(r|w|x|s|t) <file-or-dir-name>
  • u 所属用户。
  • g 同组用户。
  • o 其他用户。
  • a 所有用户,相当于 ugo
  • + 原权限基础上,增加权限。
  • - 原权限基础上,减少权限。
  • = 权限修改为这里指定的内容。
  • r 读。
  • w 写。
  • x 执行。
  • s 运行时可置 UID。
  • t 运行时可置 GID。

例子:

  • sudo chmod u+rw <name> 给属主增加读写权限。
  • sudo chmod o-rwx <name> 不允许其他用户读写执行。
  • sudo chmod g=rx <name> 同组用户只能读和执行。

3. 特殊权限

SUID 对应数字 4:

  • 主要作用于可执行文件: 二进制文件以属主的身份执行,同时具有调用者的权限
  • 作用于目录无意义

SGID 对应数字 2:

  • 作用于可执行文件:
    • 二进制文件以 调用者:文件属组 的身份执行,同时具有调用者属组的权限
  • 主要作用于目录 (主要):
    • 目录下属的所有文件与目录的属组都与该目录的属组保持相同

SBIT 对应数字 1:

  • 作用于文件无意义
  • 作用于目录 (主要):
    • 在该目录内,该目录的属主在删除该目录下的文件和目录会有确认 (rm: remove write-protected regular empty file <file-name>?),但依旧可以删除
    • 在该目录内,除该目录属主之外的所有用户只能删除自己创建的文件或目录,但不影响用户编辑其他用户创建的文件或目录

对于文件或目录的属主与属组权限部分:

  • 权限有 x 时,设置特殊权限以后 x 变为 s
  • 权限无 x 时,设置特殊权限以后 x 变为 S

对于文件或目录 others 的权限部分:

  • 权限有 x 时,设置特殊权限 (SBIT) 后 x 变为 t
  • 权限无 x 时,设置特殊权限 (SBIT) 后 x 变为 T


Last Update: 2023-05-18 Thu 08:30

Generated by: Emacs 28.2 (Org mode 9.5.5)   Contact: lsz.sino@outlook.com

若正文中无特殊说明,本站内容遵循: 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议