系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。
每个进程都是以某个用户的身份运行,所以进程的权限与该用户的权限一样,用户的权限越大,该进程所拥有的权限也就越大。
1 | drwxr-xr-x 22 hyhnm staff 748B 2 24 19:41 . |
1 | ll -dl /test # 查看指定目录权限 |
文件标识符
drwxr-xr-x
d
代表的是目录-rwxr-xr-x
-
代表的是普通文件lrwxr-xr-x
l
代表的是符号链接(快捷方式)crw-rw-rw-
c
代表的是专门设备文件brw-r-----
b
代表的是块专门设备文件srwxr-xr-x
s
代表的是套接字prwxr-xr-x
p
代表的是命名管道文件
权限标识
权限三个一组(rwx),对应 UGO 分别设置(总共有 3 个组 9 个权限)
可读 r | 可写 w | 可执行x |
---|---|---|
4 | 2 | 1 |
rwx rwx rwx = 777
rwx | rwx | rwx |
---|---|---|
属主 U | 属组 G | 其他人 O |
Linux 权限基于 UGO 模型进行控制:U 代表 User,是文件或文件夹所属用户的权限;G 代表 Group,是文件或文件夹所属组的权限;O 代表 Other,是其他用户对文件或文件夹的权限
修改权限
命令 chmod
用以修改文件的权限:
示例:chmod 777
mode 参数格式如下:
1 | u、g、o 分别代表用户、组、其他 |
示例:
1 | chmod u +rw test.md 给文件的所属用户添加rw权限 |
命令 chmod 也支持以三位八进制数值的方式修改权限,rwx 权限值分别由数字表示如下:
1 | r = 4 (2 ^ 2) |
使用数字表示权限时,每组权限分别为对应数字之和:
1 | rw = 4 + 2 = 6 |
所以,使用数字表示 UGO 权限时,可以用如下方式表示:
1 | chmod 0660 test.md 设置 UGO 权限为 rw-rw---- |
修改文件所属用户和组
命令 chown 用以改变文件的所属用户:
1 | chown username filename |
常用参数:
1 | -R 归地修改目录下所有文件的所属用户 |
命令 chgrp 用以改变文件的所属组:
1 | chgrp groupname filename |
常用参数:
1 | -R 递归地修改目录下所有文件的所属组 |
实例
如何修改文件的拥有者的权限为可读可写不可执行?
1 | chmod u=rw <file name> |
总结
- 文件
- read:查看文件内容
- write:修改文件内容
- x:执行文件(把文件当做命令一样执行)
- 目录
- read:浏览目录下的子目录名,子文件名
- write:创建、重命名、删除主目录、子文件
- x:可以 cd 目录(有这个权限才可以修改目录下面的文件)