linux文件、目录权限
属主、属组其他用户
在Linux系统中,每个文件和目录都有明确的属主(Owner)和属组(Group),这是权限管理的基础机制,用于控制资源访问权限。
- 属主:文件的创建者默认成为属主,拥有文件的最高控制权
- 属组:文件可归属于一个用户组(如开发组、运维组),组内成员共享文件的组权限
Linux通过属主、属组、其他用户三个角色分配权限。
- 属主权限:文件所有者独立控制的权限(如读写执行rwx)。
- 属组权限:组成员共享的权限。
- 其他用户权限:非属主、非属组成员的权限。
可以通过id
命令查看用户身份信息。
id# uid=0(root) gid=0(root) groups=0(root)
uid-> 用户名
gid-> 属组id
不同linux发行版本针对uid、gid编号是不同的。普通用户的编号从500开始,而Ubuntu编号则从1000开始。
属主信息定义在/etc/password
属组信息定义在/etc/group
文件读取、写入和执行
这里将使用命令ls -l
,查看某个文件的权限来了解其中的各个含义。
drwxr-xr-x 5 root root 4096 May 2 22:28 docker-compose
文件和目录的访问权限按照读、写、执行的顺序来定义。前10个字符是文件的属性,第1个字符是文件的类型。
上述例子中drwxr-xr-x
是文件的属性,其中第1个字符d
代表docker-compsoe
是一个目录。
关于第1个字符的文件类型表如下:
属性 | 文件类型 |
---|---|
- | 普通文件 |
d | 目录 |
l | 符号连接 |
c | 字符设备文件 |
b | 块设备文件 |
文件属性中剩下的9个字符是文件模式,分别代表文件属主、文件属组、其他用户的读取、写入、执行权限。
r、w、x
对文件、目录的效果如下:
对文件的作用(file):
权限属性 | 文件 |
---|---|
r | 允许读取文件内容 (如通过 cat、less 命令查看) |
w | 允许修改文件内容 (如通过 vim 编辑或 echo追加内容)但删除文件由目录权限控制,与文件本身的 、w、 权限无关 |
x | 允许执行文件(如运行脚本或二进制程序)若文件是脚本或程序,必须同时具备 r 和 x 权限才能执行 |
对目录的作用(Directory):
权限属性 | 文件 |
---|---|
r | 允许列出目录内容(如通过 ls 查看文件名)但无法访问文件元数据或内容,需配合 x 权限 |
w | 允许在目录中创建、删除、重命名文件或子目录。 如通过 vim 编辑或 echo追加内容) |
x | 允许进入目录(cd 到目录)无 x 权限时,即使有r 也无法操作目录内文件 |
常见的文件属性示例:
文件属性 | 含义 |
---|---|
-rwx------ | 文件属主,可读、可写、可执行,属组和其他用户没有权限访问 |
-rw------- | 文件属主,可读、可写,属组和其他用户没有权限访问 |
-rw-r--r-- | 文件属主,可读、可写,属组和其他用户有可读权限 |
-rwxr-xr-x | 文件属主,可读、可写、可执行,属组和其他用户有可读、可执行权限 |
-rw-rw---- | 文件属主、属组可读、可写,其它用户没有权限访问 |
lrwxrwxrwx | 符号链接,符号链接的权限都是虚设的。真正的权限是由符号链接指向的文件决定的 |
drwxrwx--- | 目录,属主和属组有进入该目录并有创建、重命名、删除文件的权限 |
drwxr-x--- | 目录,属主有进入该目录并有创建、重命名、删除文件的权限,属组可进入该文件,但是不能创建、删除、重命名文件,其它用户无权限访问。 |
chmod
修改权限
chmod
命令可以修改文件或目录的权。
chmod
支持2种不同的模式来表示权限
- 八进制表示法
- 符号表示法
八进制表示法
使用八进制数0~7
设置需需要的权限,每个八进制数可以描述3个二进制数位,恰巧和文件模式的记录方式对应。
八进制、二进制表示文件模式
八进制 | 二进制 | 文件模式 |
---|---|---|
0 | 000 | --- |
1 | 001 | --x |
2 | 010 | -w- |
3 | 011 | -wx |
4 | 100 | r-- |
5 | 101 | r-x |
6 | 110 | rw- |
7 | 111 | rwx |
x
-对应八进制数1w
-对应八进制数2r
-对应八进制数4
对应的文件模式,只需要把对应的字符转换为八进制数就行,不需把第1个文件类型字符考虑进去,比如-rwxr-x-wx
对应的八进制数为753
。
符号表示法
符号表示法分为3个部分,简单的符号表示法格式:谁受影响-执行操作-设置权限
,设置多组权限的时候,需要用,
逗号进行分割。
- 会影响谁(属主、属组、其他用户)
- 执行什么操作
- 设置什么权限
通过字符u、g、o、a
的组合来指定要修改谁的权限。u、g、o、a
表示含义表如下:
符号 | 含义 |
---|---|
u | user的缩写,表示文件或目录的属主 |
g | group的缩写,表示属组 |
o | ohter的缩写,表示其他用户 |
a | all的缩写,等同于u、g、o 三者的组合 |
操作符+
表示添加权限
操作符-
表示去除权限
操作符=
表示赋予指定权限,同时去除其他的权限
权限符号表示法示例:
表示法 | 含义 |
---|---|
u+x | 属主添加执行权限 |
u-x | 属主去掉执行权限 |
+x | 属主、属组、其他用户添加执行权限 |
o-rw | 其他用户去掉可读、可写权限 |
go=rw | 属组、其他用户赋值可读、可写权限 |
u+x,go=rx | 属主添加可执行权限,属组、其他用户赋值可读、可执行权限 |
为某个文件添加属主、属组:可读、可写、可执行,其他用户:可读权限对应的权限两种表示法示例如下:
八进制表示:chmod 774 temp.file
符号表示:chmod ug=rwx,o=r temp.file
chown
更新文件属主、属组
chown
命令用于修改文件或目录的 所有者(Owner) 和 所属组(Group)。它是文件权限管理的重要工具
- 将文件所有权转移给其他用户
- 调整文件的所属用户组
- 修复因权限问题导致的文件访问错误
只有 root
用户或当前文件所有者,有权修改文件所有权,否则就使用sudo
命令
chown [选项] 新所有者[:新组] 文件或目录
chown
命令参数示例:
参数 | 结果 |
---|---|
bob | 将文件的当前属主修改为用bob |
bob:users | 将文件的当前属主修改为用bob ,将文件属组修改为users 组 |
:admins | 文件属主不变,将文件的属组修改为admins |
bob: | 将文件的属主更改为bob ,将文件的属组修改为用户bob 的登录组 |
设置默认的权限
在linux使用umask
命令设置创建文件和目录时的默认权限掩码。
linux的文件、目录默认创建权限如下:
- 文件默认权限:普通文件通常以 666(
rw-rw-rw-
)为初始权限(无执行权限)。 - 目录默认权限:目录通常以 777(
rwxrwxrwx
)为初始权限。
最终权限 = 默认权限 -
umask
值
例如:umask=022
文件:666 - 022 = 644 → rw-r—r—
目录:777 - 022 = 755 → rwxr-xr-x
核心作用:定义新建文件/目录的“初始权限规则”。
它通过“屏蔽”特定权限位,确保文件或目录在创建时自动拥有合理的权限,避免手动反复修改。
umask # 数字格式(如 0022)umask -S # 符号格式(如 u=rwx,g=rx,o=rx)