Linux 常用命令: 权限管理

  • 每个文件和文件夹有三种用户许可类型:
    • u 所有者(user)
    • g 所有者群组(group),代表组中的所有成员;
    • o 其他(other)。
  • 三种基本权限类型可组合:
    • r 读取(read);
    • w 写(write);
    • x 执行(eXecute)。
  • 三个控制文件许可权限的命令:
    • chown user file 命令更改文件的所有者;
    • chgrp group file 改变所有群组;
    • chmod rights file 改变文件许可权限。

修改权限

chmod [-cfvR] [--help] [--version] mode file...

参数说明:

  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
  • –help : 显示辅助说明
  • –version : 显示版本

mode 为符号模式,使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,如

who 的符号模式表所示:

who 用户类型 说明
u user 文件所有者
g group 文件所有者所在组
o others 所有其他用户
a all 所有用户, 相当于 ugo

operator 的符号模式表:

Operator 说明
+ 为指定的用户类型增加权限
- 去除指定用户类型的权限
= 设置指定用户权限的设置,即将用户类型的所有权限重新设置

permission 的符号模式表:

模式 名字 说明
r 设置为可读权限
w 设置为可写权限
x 执行权限 设置为可执行权限
X 特殊执行权限 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
s setuid/gid 当文件被执行时,根据 who 参数指定的用户类型设置文件的 setuid 或者 setgid 权限
t 粘贴位 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位

符号表示

符号表示是最易于理解和记忆的。它使用前述的符号链接。可以通过显示的设置(u/g/o),通过设置(=),加(+),或者减(-)定义每种用户的权限类型。

一个 u=rwx,g+rw,o-r 格式的命令会赋予所有者读,写和执行权限,给所有组添加读写权限,移除其他用户的读权限。其他命令中未通过加或者减列出的权限保持不变。

字母 a是指“所有”,涵盖三种类型的用户,因此 a=rx 命令会赋予三种用户相同的权限(读和执行,没有写)。

例如:

1
2
3
4
5
6
7
8
9
# 添加写权限
chmod a+r ./my-file
# 去掉执行权限
chmod a-x ./my-file
# 省略用户类型则是对 用户和组 的权限操作
chmod +w ./my-file
# 等同于
chmod u+w ./my-file
chmod g+w ./my-file

八进制表示

与权限相关的(八进制)数字表示:4是读,2是写,1是执行。各种权限组合通过代表的数字求和得到。通过把每个值置于端到端序列不同位置关联不同的用户类型(所有者,所有组,其他用户)。

权限组合值:

# 权限 rwx
7 读 + 写 + 执行 rwx
6 读 + 写 rw-
5 读 + 执行 r-x
4 只读 r–
3 写 + 执行 -wx
2 只写 -w-
1 只执行 –x
0

一次修改全部用户类型的权限,用八进制表示法更方便。

example:

1
2
3
4
5
6
7
8
9
10
11
chmod a+r file # 给file的所有用户增加读权限
chmod a-x file # 删除file的所有用户的执行权限
chmod a+rw file # 给file的所有用户增加读写权限
chmod +rwx file # 给file的所有用户增加读写执行权限
chmod u=rw,go= file # 对file的所有者设置读写权限,清空该用户组和其他用户对file的所有权限(空格代表无权限)
chmod -R u+r,go-r docs # 对目录docs和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限
chmod 664 file # 对file的所有者和用户组设置读写权限, 为其其他用户设置读权限
chmod 0755 file # 相当于u=rwx (4+2+1),go=rx (4+1 & 4+1)。0 没有特殊模式。
chmod 4755 file # 4设置了设置用户ID位,剩下的相当于 u=rwx (4+2+1),go=rx (4+1 & 4+1)。
find path/ -type d -exec chmod a-x {} \; # 删除可执行权限对path/以及其所有的目录(不包括文件)的所有用户,使用'-type f'匹配文件
find path/ -type d -exec chmod a+x {} \; # 允许所有用户浏览或通过目录path/

更改文件所有者

chown [-cfhvR] [--help] [--version] user[:group] 文件或目录...

  • user : 新的文件拥有者的使用者 ID
  • group : 新的文件拥有者的使用者组(group)
  • -c : 显示更改的部分的信息
  • -f : 忽略错误信息
  • -h :修复符号链接
  • -v : 显示详细的处理信息
  • -R : 处理指定目录以及其子目录下的所有文件
  • –help : 显示辅助说明
  • –version : 显示版本

更改文件所属组

chgrp [-cfhRv][--help][--version] 所属群组 文件或目录...

Linux 常用命令: 权限管理

https://coderpan.com/linux/linux-permissions.html

作者

CoderPan

发布于

2023-07-13

更新于

2024-05-08

许可协议

评论