🌈个人主页:Yui_
🌈Linux专栏:Linux
🌈C语言笔记专栏:C语言笔记
🌈数据结构专栏:数据结构
文章目录
- [1. Linux权限的概念](#1. Linux权限的概念)
- 2.Linux权限管理
-
- [2.1 文件访问者的分类](#2.1 文件访问者的分类)
- [2.2 文件类型和访问权限](#2.2 文件类型和访问权限)
-
- [2.2.1 文件类型](#2.2.1 文件类型)
- [2.2.2 基本权限](#2.2.2 基本权限)
- [2.3 文件访问权限的相关设置方法](#2.3 文件访问权限的相关设置方法)
-
- [2.3.1 chmod指令](#2.3.1 chmod指令)
- [2.3.2 chown指令](#2.3.2 chown指令)
- [3. 修改文件/目录的所有者](#3. 修改文件/目录的所有者)
-
- [3.1 chown指令](#3.1 chown指令)
- [3.2 chgrp指令](#3.2 chgrp指令)
- [4. 权限掩码](#4. 权限掩码)
-
- [4.1 umask指令](#4.1 umask指令)
- [5. 查看文件类型](#5. 查看文件类型)
-
- [5.1 file指令](#5.1 file指令)
- [6. 目录的权限](#6. 目录的权限)
- 7.粘滞位
- 8.关于权限的总结
1. Linux权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以在Linux系统下做任何事情,不受限制。
- 超级用户的命令提示符是"#",普通用户的命令提示符是"$"。
命令:
shell
su [用户名]
功能 :
切换用户。
当我们需要从root用户切换到普通用户user_name时,则使用su user_name
要从普通用户切换到root用户则使用su root(root可以省略)/su -,此时系统会提示输入root用户的密码。
演示 :从普通用户切成root再从root切回普通用户
普通用户切换成root,需要root密码
Root用户切换成普通用户不需要密码
普通用户变成另一个普通用户需要对方的密码
sudo提权
语法:
shell
sudo 加其他指令
功能 :
暂时拥有root权限
sudo 对指定的指令提权,当root用户把用户拉人"信任"名单后,用户就可以使用sodo提权了
演示 :利用root权限修改文件的所有者为root
2.Linux权限管理
2.1 文件访问者的分类
- 文件和文件目录的所有者:u---user
- 文件和文件目录的所有者所在的组的用户:g---Group
- 其他用户:o---Other
2.2 文件类型和访问权限
下面来解释一下红色框住的内容:
2.2.1 文件类型
- d:文件夹
- -:普通文件
- l:软连接(类似Windows的快捷方式)
- b:块设备文件(例如硬盘,光驱等)
- P:管道文件
- c:字符设备文件(例如屏幕等串口设备)
- s:套接口文件
2.2.2 基本权限
r:read
对文件来说,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
w:write
对文件来说,具有修改文件内容的权限;对目录来说,具有删除移动目录文件的权限。
x:execute
对文件来说,具有执行文件的权限;对目录来说,具有进入目录的权限。
表示不具有该项权限。
2.3 文件访问权限的相关设置方法
2.3.1 chmod指令
语法:
shell
chmod [参数]权限 文件名
功能 :
设置文件的访问权限。
常用选项
- +:向权限范围增加权限代号所表示的权限
- -:向权限范围取消权限代号所表示的权限
- =:向权限范围赋予权限代号所表示的权限
- u:拥有者
- g:所属组
- o:其他用户
- a:所有用户
演示 :
方法2:三位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 |
演示:先把file.txt赋予所有权限,再恢复原样。 |
2.3.2 chown指令
语法:
shell
chown [参数]用户名 文件名
功能 :
修改文件的拥有者
演示 :将用户者从root改为yui
3. 修改文件/目录的所有者
3.1 chown指令
语法:
shell
chown [参数]用户名 文件名
功能 :
修改文件的拥有者
常用选项:
- -R 递归修改文件或目录的所有者。
演示 :将file.txt文件的所有者从yui改为root
提问 :为什么修改文件的所有者需要root权限?
回答:新的所有者不一定愿意接受这个文件,如果不限制的话万一这文件是一个黑锅呢?为了防止类似的情况,还是只有root做才合适。
3.2 chgrp指令
语法:
shell
chgrp [参数]用户组名 文件名
功能 :
修改文件或目录的所属组
常用选项 :
-R 递归修改文件或目录的所属组。
演示 :将file.txt文件的所属组从yui改为root
4. 权限掩码
当我们新创建了一个文件和目录:
通过观察我们可以发现:目录的初始权限是:775,文件的初始权限是664
为什么呢?
其实新建目录的默认权限是777,新建文件的默认权限是666,目录比文件多一个执行权限。
可能有人会说那也不对啊,那是因为Linux下还存在一个叫权限掩码的东西。
在创建文件或目录是会受到权限掩码umask的影响。假设默认权限是mask,那么实际创建出来的文件权限就是:mask&~umask
4.1 umask指令
格式:
shell
umask [权限值]
功能 :
查看或者修改文件掩码
演示 :查看与修改权限掩码
5. 查看文件类型
5.1 file指令
语法:
shell
file [选项]文件或目录
功能 :辨别文件类型
常用选项:
- -c 详细显示指令执行过程,便于排错或者分析执行情形
- -z 尝试去解读压缩文件的内容
演示 :查看test.txt和dir的文件类型
6. 目录的权限
- 可执行权限:如果目录没有可执行权限,那么无法cd到目录中。
- 可读权限:如果目录没有可读权限,那么无法使用ls等命令查看目录中的文件内容。
- 可写文件:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件。
那么问题来了
只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论用户是不是该文件的所有者。
就像这样:
在这种情况下,普通用户甚至可以删除root用户的文件,这可怎么办啊。
连root的文件都可以删还有没有王法了,要是多人协作的情况,给你开放写权限吧你又可以删除别人的文件,补给你开放写权限,连文件都创建不了,还合作什么。
为了处理这种情况,linux引入的粘滞位的概念。
7.粘滞位
shell
[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 8月 15 16:00 /home/
[root@localhost ~]# su yui
[litao@localhost ~]$ rm /home/abc.c #yui不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"? y
rm: 无法删除"/home/abc.c": 不允许的操作
当目录被设置位"粘滞位"(chomd+t)则该目录只能由
- root用户删除
- 该目录的所有者删除
- 该文件的所有者删除
8.关于权限的总结
- 目录的可执行权限表示你可否在目录下执行命令,如果没有-x的权限,则无法对目录执行任何命令,甚至无法cd到目录里面,即使目录有其他权限(可能有人会在-r这个地方放错,认为有读权限就可以进入目录读取目录下的文件)
- 如果具有目录的-x权限但是没有-r权限,那么即使用户进入了目录,也是看不了目录中存在什么文件的。