目录
1.启语
今天我们要学习的是linux权限,话不多说我们进入到今天的linux权限学习。
2.权限
2.1什么是权限
权限(privilege)是指某个特定的用户具有特定的系统资源使用权力,像是文件夹,特定系统指令的使用或存储量的限制。通常,系统管理员,或者在网络中的网络管理员,对某个特定资源的使用分配给用户不同的权限,系统软件则自动地强制执行这些权限。
2.2权限的本质
- 权限和角色有关:权限限定的是某种角色,限定该角色是否持有对应权限。
- 权限和事物的属性有关:限制角色的事物有什么属性,权限 = 角色 + 事物属性。2
2.3Linux用户
超级用户root | 不受权限约束,命令提示符为 " # " |
普通用户 | 只能在 Linux 下做有限的事,命令提示符为 " $ " |
2.4Linux切换用户命令
语法:su[用户名]
功能:切换用户,root可直接切换至系统中的任何用户,无需密码。
su root
2.5指令提权
sudo:
功能:用来以其他身份来执行命令
格式:sudo(选项)(参数)
注意:使用 sudo 对指令提权时输入的是普通用户的密码,因为此前root用户已经将该普通用户加入了白名单,所以普通用户使用 sudo 前还需要被 root 用户信任。
2.6Linux权限管理
2.6.1文件访问者的分类(角色)
文件访问者分为三种角色:
- 拥有者(User):文件和文件目录的拥有者,通常创建文件的用户被认为是该文件的拥有者,对文件享有最高的权限,可以进行读、写和执行操作。
- 所属组(Group):文件和文件目录的拥有者所在的组的用户。这个组可以是系统默认创建的,也可以是用户自己创建的。组内的用户对文件享有与组相关的权限,这些权限可能包括读、写和执行,具体取决于文件的权限设置。
- 其他用户(Others):除了文件拥有者和文件所属组的用户之外的所有用户。
示例:
- 查看 test3 文件的访问者。
- 默认情况下一般都是拥有者自成一组,文件访问者没有 Others 这一列,因为不匹配拥有者和所属组的就是其他用户,没必要单开一列去记录。
2.7文件类型和访问权限
2.7.1文件属性
- 使用 ll 查看文件的详细属性。
- test.txt 文件的拥有者和所属组都是 root,所以普通用户对该文件来说就属于 others,只有读权限
第一个字符:是否拥有读权限r |
第二个字符:是否拥有写权限 w |
第三个字符:是否拥有可执行权限 x |
r(Read,读取): 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的 权限。
w(Write,写入): 对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删 除、移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录 的限。
ps:“—”表示不具有该项权限
描述一个文件的权限时,一般都是说 拥有者、所属组、others 分别拥有 rwx 的权限。
权限 = 用户角色 + 文件权限属性
2.7.2文件类型
我们常使用的Windows区分文件类型是使用后缀名,linux则是通过属性的第一位区分:
类型 | 说明 |
d |
文件夹
|
- |
普通文件
|
1 |
软链接(类似
Windows的快捷方式允许用户创建指向文件或目录的引用
)
|
b |
块设备文件(例如硬盘、光驱等)
|
p |
管道文件
|
c |
字符设备文件(例如屏幕等串口设备)
|
s |
套接口文件
|
2.7.3文件权限值的表示方法
(a)字符表示方法:
Linux表示 | 说明 | Linux表示 | 说明 |
r - - | 只读 | - w - | 仅可写 |
- - x | 仅可执行 | rw - | 可读可写 |
- wx | 可写和可执行 | r - x | 可读可执行 |
rwx | 可读可写可执行 | - - - | 无权限 |
(b)8进制表示方式
可读 r、可写 w、可执行 x 的顺序分别是 r w x,如果某个文件有对应权限,则对应二进制位上的值为 1。
如:文件属性为“rw-”,就是代表2进制“110”。
权限符号 | 八进制 | 二进制 |
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 5 | 101 |
wx | 3 | 011 |
rwx | 7 | 111 |
- - - | 0 | 000 |
2.8权限的修改
能修改文件的角色:
1.root
2.文件的拥有者
2.8.1chmod修改文件权限
功能: 设置文件的访问权限格式 : chmod [ 参数 ] 权限 文件名
R -> 递归修改目录文件的权限说明:只有文件的拥有者和root才可以改变文件的权限
2.8.1.1chmod命令权限值的格式:
权限符号 | 说明 |
+ |
向权限范围增加权限代号所表示的权限
|
- |
向权限范围取消权限代号所表示的权限
|
= |
向权限范围赋予权限代号所表示的权限
|
u |
拥有者
|
g |
拥有者同组用
|
o |
其它用户
|
a | 所有用户 |
使用字符表示法修改权限:用户符号 + - 权限字符
2.8.1.2使用三位八进制表示法修改字符
已知八进制表示法中八进制的值对应的是什么权限,那么只要使用 3 个八进制的数字就能修改 拥有者、所属组和其他用户对该文件的权限了。
2.8.2chown修改文件的拥有者
功能: 修改文件的拥有者格式: chown [ 参数 ] 用户名 文件名
示例:
root用户下修改txt.txt的文件拥有者为new,又在new用户改回root(这时候要提权)。
(ps:记得在普通用户下改回root要用sudo提权,sudo出问题的可以看看这位大佬的博客处理) 博客链接
2.8.3 chgrp 修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
功能: 修改文件或目录的所属组
常用选项: -R 递归修改文件或目录的所属组
(ps:也要记得在普通用户下改回root要用sudo提权)
2.8.4权限掩码
2.8.4.1默认权限
Linux 对于创建的普通文件和目录文件自带默认权限。
普通文件:默认权限是 0666,去掉三个访问者 x 的。
目录文件:默认权限是 0777,包含三个访问者x 的。
但是实际上显示出来的普通文件和目录文件的默认权限分别是 0664 和 0775,默认权限不能完全决定文件最终的权限,这情况就和权限掩码有关了
2.8.4.2 查看或者修改文件掩码
格式: umask 权限值说明: 将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022 ,普通用 户默认为0002 。
创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask的影响。假设默认权限是 mask ,则实际创建的出来的文件权限是 :mask & ~(取反)umask
umask:查看当前用户的默认掩码。
umask 权限值:设置当前用户的掩码值
2.8.5目录的权限
可读权限r: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限w: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件可执行权限x: 如果目录没有可执行权限, 则无法cd到目录中
存在的问题
只要某个用户具有该目录的写权限,就能够直接删除该目录中的文件甚至是root拥有的,与这个文件拥有者无关。也就是说,只要对某个目录具有写权限,则该目录下文件的创建者都可以删除该文件。
解决的办法
1.对该目录去掉写权限:解决了可能会被外人删除目录下的文件,但同时又出现了一个新的问题,无法在该目录下进行增加和修改文件操作,相当于自费武功,所以不推荐这个。
2.使用粘滞位
粘滞位
格式:chmod +t 目录,对目录加上粘滞位。
功能:即使其他用户对目录具有写权限,也使得除了以下三种用户外都无法删除目录下的文件:
1.超级管理员删除2.该目录的所有者删除3.该文件的所有者删除
示例:
现有一个由 root 创建的目录 1 且已经将该目录 拥有者、所属组、others 的权限都设置为 rwx。
使用 chmod -t 1 对 root 创建的 1 目录添加粘滞位。
再切换成普通用户 new 删除 1 目录下的 test.txt 文件 (new 用户是 1 目录的 others)。
可以看到 new就算拥有 1目录的写权限,也是无法删除该目录下的文件
3.结语
今天的linux就到这里,我们下次再见!