目录
一、权限的概念
Linux文件权限的概念是指不同属性的人是否有对文件进行读、写、执行的资格。即权限=“人”+“文件属性”。
1.Linux的用户有两种:
a.超级用户,管理员——root 几乎可以干任何事情(不被权限约束)
b.普通用户
注:普通用户通常受到各种权限的约束,如需解放某种约束,可以用sudo语句对单个指令进行提权,即sudo command(其中“command"指被提权的指令)
2.对于文件来说,人包括(用户充当的角色种类):
文件和文件目录的所有者: u---User
文件和文件目录的所有者所在的组的用户: g---Group
其它用户: o---Others
3.文件权限包括:读-r,写-w,执行-x
例如:
二、权限表示
其中前十位分别表示文件类型和三类用户的权限,三类用户的权限排列顺序为u-g-o。
1.文件类型
d 文件夹
- 普通文件
l 软链接(类似Windows的快捷方式)
b 块设备文件(例如硬盘、光驱等)
p 管道文件
c 字符设备文件(例如屏幕等串口设备)
s 套接口文件
2.权限内容
权限表示 | 文件 | 目录 |
r / 4 | 读取文件内容 | 浏览目录信息 |
w / 2 | 修改文件内容 | 删除移动目录内文件 |
x / 1 | 执行文件 | 进入目录 |
注:“-”表示不具有该项权限
3.权限表示方法
字符法:
Linux表示 | 说明 | Linux表示 | 说明 |
- - - | 无权限 | - w x | 可写可执行 |
- - x | 只可执行 | r - x | 可读可执行 |
- w - | 只可写 | r w - | 可读可写 |
r - - | 只可读 | r w x | 可读可写可执行 |
阿拉伯数字法:
Linux表示 | 说明 | Linux表示 | 说明 |
0 | 无权限 | 3 | 可写可执行 |
1 | 只可执行 | 5 | 可读可执行 |
2 | 只可写 | 6 | 可读可写 |
4 | 只可读 | 7 | 可读可写可执行 |
三、权限管理
1.权限的修改(文件属性):chmod指令
语法 chmod [选项] 权限 文件名
功能 设置文件的访问权限
常用选项:
-R 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
chmod u/g/o/a+/-=r/w/x 文件名
+ 增加指定权限
- 取消指定权限
= 赋予指定权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
例如:chmod u+rx 文件名 对文件的拥有者添加读和执行的权限
chmod 777 文件名 将文件的三类用户的权限全都设置为可读可写可执行
2.权限修改(文件的拥有者):chown指令
语法 chown [选项] 用户名 文件名
功能 修改文件的拥有者
常用选项:
-R 递归修改目录文件的拥有者
例如:chown user1 file1 将文件file1的拥有者改为user1
3.权限修改(文件的所属组):chgrp指令
语法 chgrp [选项] 用户组名 文件名
功能 修改文件或目录的所属组
常用选项:
-R 递归修改文件或目录的所属组
例如:chgrp users /abc/f2 将文件f2的所属组改为users
四、权限掩码
1.起始权限(默认权限)——> 最终权限
起始权限:Linux操作系统,目录的默认权限是777(rwxrwxrwx),文件的默认权限是666(rw-rw-rw-)
最终权限:文件或目录创建后的实际权限。最终权限和起始权限往往不相同,是因为创建文件或目录后的实际权限是起始权限和权限掩码umask共同作用的结果。root用户的umask是0022,普通用户是0002。
最终权限=起始权限mask & ~umask
举例:root用户新建目录的最终权限为755 = 777 & ~022 ; 新建文件的最终权限为644 = 666 & ~022
2.umask指令
语法 umask [权限掩码值]
功能 查看或修改权限掩码,umask其后无具体值时查看,有具体值时修改为该值。
3.file指令
功能 辨识文件类型。
语法 file [选项] 文件或目录
常用选项:
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容
五、粘滞位的理解
1.背景
有些文件会被共享出来,所有普通用户都能读到文件的内容,但是如果自己创建的文件共享后被别人删除,这是不合常理的,而只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。于是有了粘滞位这一特殊权限。
2.具体实现
设置粘滞位是对目录而言的,有粘滞位的目录即使其他人对目录有可写的权限,其他用户也不能删除该目录下的文件。
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
粘滞位的设置有效的保证了共享目录下的文件不被除文件和目录的所有者及超级用户之外的人删除。