一、Linux用户分类
Linux下有两种用户:超级用户(root)、普通用户
- 超级用户:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$
二、文件访问者分类
文件是否允许被访问与访问者的“属性”有关,“属性”可以分为如下三类:
- 文件和文件目录的所有者:u——User
- 文件和文件目录的所属组:g——Group
- 其他用户:o——Other
三、文件类型和访问权限
在目录下用ll指令来查看文件夹中文件的详细信息可以看到如下情况:
以第一条dir的查询结果为例,其中的字母都是如下的含义:
1.文件类型
Linux中文件类型有很多种,在文件详细信息中,一般用第1位来表示文件类型。如上图中的第1块。一般d和-最为常见。
- d:文件夹
- -:普通文件
- l:软链接(类似Windows的快捷方式)
- b:块设备文件(例如硬盘、光驱等)
- p:管道文件
- c:字符设备文件(例如屏幕等串口设备)
- s:套接口文件
2.基本权限
Linux中文件的权限分为三种:
- r :读权限——对于文件指可以查看文件内容;对于目录指可以浏览该目录信息
- w:写权限——对于文件指可以改写文件内容;对于目录指对目录中的文件有创建、修改、删除、移动的权限
- x :执行权限——对于文件指可以执行该文件;对于目录指可以进入该目录
- - :无权限
1).字符表示权限
在文件的详细信息查询时,查询结果用这种方式表示,也就是上文图中显示的表示方式
Linux表示 | 说明 | Linux表示 | 说明 |
---|---|---|---|
r-- | 只读 | -w- | 只写 |
--x | 仅可执行 | rw- | 可读写 |
r-x | 可读和执行 | -wx | 可写和执行 |
rwx | 可读可写可执行 | --- | 没有任何权限 |
2).8进制表示权限
文件权限也可以用8进制数值来表示,后续的权限修改中可以用到这种方法
权限符号 | 八进制 | 二进制 |
---|---|---|
r-- | 4 | 100 |
-w- | 2 | 010 |
--x | 1 | 001 |
rw- | 6 | 110 |
r-x | 5 | 101 |
-wx | 3 | 011 |
rwx | 7 | 111 |
--- | 0 | 000 |
3.文件访问权限的相关设置方法
1).修改权限
命令:chmod
功能: 设置文件的访问权限格式: chmod [ 参数 ] 权限 文件名常用选项:
- R -> 递归修改目录文件的权限
- 说明:只有文件的拥有者和root才可以改变文件的权限
- chmod命令中权限的格式其一:用户表示符+/-=权限字符
修改符号:
- +:向权限范围增加权限代号所表示的权限
- -:向权限范围取消权限代号所表示的权限
- =:向权限范围赋予权限代号所表示的权限
用户符号:
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:所有用户
示例:
chmod u+w /home/abc.txt #给abc.txt加上写权限
chmod o-x /home/abc.txt #给abc.txt去掉执行权限
- chmod命令中权限的格式其二:三位8进制数字
示例:
chmod 664 /home/abc.txt #拥有者和所属组权限为读写,other权限为读
chmod 640 /home/abc.txt #拥有者权限为读写,所属组权限为读,other没有任何权限
2).修改拥有者
命令:chown
功能: 修改文件的拥有者格式: chown [ 参数 ] 用户民 文件名
示例:
chown user1 f1 #f1文件拥有者修改为user1
3).修改所属组
命令:chgrp
功能: 修改文件的所属组格式: chgrp [ 参数 ] 用户民 文件名
4.权限掩码
我们再来看这张图,可以发现在刚刚创建时,系统给目录的权限是775,给文件的权限是664。接下来告诉大家系统如何给定刚刚创建文件的权限。
操作系统存在掩码——umask,如图系统初始默认掩码是002。
文件创建之后我们看到的是最终权限,而实际上文件还有默认权限,最终权限是通过默认权限和掩码的一系列操作之后得到的,具体操作如下:
最终权限 = 默认权限 & (~umask)
- 注:最终得到的效果就是在掩码中出现的权限,在最终权限中不会出现
目录的默认权限是777,文件的默认权限是666。掩码002去掉了other的写权限,所以得到最终权限目录为775,文件为664.
5.粘滞位
在共享目录中,为了防止用户删除他人的不属于自己的文件,需要给共享目录加上粘滞位。从而实现在此目录中,用户只能删除自己创建的文件。
添加粘滞位的方法:
chmod +t /home #给home目录加上粘滞位