大家好,上一次我们学习了关于Linux中的基础指令,那么我们今天来继续学习Linux的新的内容:权限。那么话不多说,我们开始今天的学习:
目录
Linux权限
1. Linux权限的概念
2. Linux权限管理
3. ⽂件权限值的表⽰⽅法
4. ⽂件访问权限的相关设置⽅法
5. umask
6. ⽬录的权限
7.粘滞位
Linux权限
对于权限我们先来思考两个问题:
权限是什么?
权限的本质:能或不能做什么事情
为什么有权限?
1. 控制用户的行为,防止错误的发生
2. 权限首先限制的用户,权限要求目标必须具备相应的属性
所以我们可以总结出:权限=用户+目标属性 ,也就是说,权限限制的就是用户和目标属性这两个方面,下面我们就从这两个方面来学习。
1. Linux权限的概念
超级⽤⼾:可以再linux系统下做任何事情,不受限制普通⽤⼾:在linux下做有限的事情。超级⽤⼾的命令提⽰符是“#”,普通⽤⼾的命令提⽰符是“$”。
这里我们学习一个新的命令:
名令:su [⽤⼾名]功能:切换⽤⼾。
当我们使用 su ( root ) 时,系统会在我们当前用户上新覆盖一个root的身份,而当我们使用 su - ( root ) 时,系统会登录root用户,这是这两种使用方法的区别。
2. Linux权限管理
1. ⽂件访问者的分类(用户)⽂件和⽂件⽬录的所有者:u---User⽂件和⽂件⽬录的所有者所在的组的⽤⼾:g---Group其它⽤⼾:o---Others2. ⽂件类型和访问权限(事物属性)⽂件类型:d:⽂件夹-:普通⽂件l:软链接(类似Windows的快捷⽅式)b:块设备⽂件(例如硬盘、光驱等)p:管道⽂件c:字符设备⽂件(例如屏幕等串⼝设备)s:套接⼝⽂件基本权限:读(r/4):Read对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览该⽬录信息的权限写(w/2):Write对⽂件⽽⾔,具有修改⽂件内容的权限;对⽬录来说具有删除移动⽬录内⽂件的权限执⾏(x/1):execute对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录来说,具有进⼊⽬录的权限“—”表⽰不具有该项权限
在我们实际使用的时候,有些时候会遇到一些我们想要执行的操作但是这些操作只能由root用户来执行,比如说安装软件,这需要管理员root的权限,这时候就需要另一个命令:
命令:sudo[选项] [命令]
功能:它允许系统管理员为普通用户分配特定的 root 权限,避免直接使用 root 账户登录
-rw-r--r--. 1 root root 0 9 ⽉ 19 15:58 abc.cdrwxr-xr-x. 27 litao litao 4096 9 ⽉ 19 15:53 litao-rw-r--r--. 1 root root 0 9 ⽉ 19 15:59 root.c
我们来看这三个文件的详细信息,
其中,画线部分第一个用户名就是文件目录的所有者,第二个用户名就是文件目录的所属组,至于其他用户,这里并不需要给出,因为对于一个用户他既不是所有者也不是所属组那么他就是其他用户,在这里就无法给出其他用户的具体用户名。
下面我们来看用户名前面这一部分,我们上一次学习了这里第一个字符代表文件的类型,决定了这是目录还是一个什么类型的文件,后面9个字符我们每三个分成一组,第一组就代表所有者对该文件或目录的权限,第二组代表所属组的权限,第三组代表其他用户的权限。
其中r代表可读,w代表可写,x代表可执行。但是一个文件具体能不能执行不仅需要该文件是可执行文件也需要有可执行权限,否则都无法执行。
1.能改任何人的文件权限吗?用户只能更改自己的文件权限
2.没有权限怎么念?系统会拒绝让我们访问
3.确认权限信息的时候,系统会先确定用户是谁?拥有者,所属组,还是 other?在 Centos 下 用户角色确定,只确定一次 顺序是:拥有者,所属组,other
4.root 用户的权限?不受权限约束
3. ⽂件权限值的表⽰⽅法
符表⽰⽅法8进制数值表⽰⽅法
每一组权限都由r w x组成,每个权限都有两种可能也就是可读和不可读... ,那么我们可以用二进制来表示,对于可读可写可执行那么它的二进制就是111,写成8进制就是7,对于不可读不可写不可执行那么它的二进制就是000,写成8进制就是0,因此我们把上述三个文件的权限全部写成8进制就是644 755 644,这样在后面修改权限时使用会更方便 一些。
4. ⽂件访问权限的相关设置⽅法
chmod功能:设置⽂件的访问权限格式:chmod [参数] 权限 ⽂件名常⽤选项:R -> 递归修改⽬录⽂件的权限说明:只有⽂件的拥有者和root才可以改变⽂件的权限chmod命令权限值的格式:⽤⼾表⽰符+/-=权限字符+:向权限范围增加权限代号所表⽰的权限-:向权限范围取消权限代号所表⽰的权限=:向权限范围赋予权限代号所表⽰的权限⽤⼾符号:u:拥有者g:拥有者同组⽤o:其它⽤⼾a:所有⽤⼾
chmod u+r test.txt
这就代表我们给test.txt文件的所有者加上了可读权限
chmod g-rw test.txt
这代表我们给test.txt文件的所属组减去了可读可写权限
同样我们也可以给其他用户修改权限,这里不多介绍了
当然也可以使用8进制来修改
chmod 664 /home/abc.txtchmod 640 /home/abc.txt
chown功能:修改⽂件的拥有者格式:chown [参数] ⽤⼾名 ⽂件名实例:chown user1 f1这是把文件 f1 的所有者给user1chown -R user1 filegroup1这是把filegroup1目录的所有者给user1
chgrp
功能:修改⽂件或⽬录的所属组格式:chgrp [参数] ⽤⼾组名 ⽂件名常⽤选项:-R 递归修改⽂件或⽬录的所属组实例: chgrp users /abc/f2
当我们新建文件或目录的时候,它的默认权限是怎么来的呢?
5. umask
对于普通文件来讲:起始权限 666,默认不带可执行
对于目录文件来讲:起始权限 777,默认带 x
那为什么默认权限是我们看到的样子?
因为系统默认存在一个叫做权限掩码的概念:
查看或修改⽂件掩码新建⽂件夹默认权限=0666新建⽬录默认权限=0777但实际上你所创建的⽂件和⽬录,看到的权限往往不是上⾯这个值。原因就是创建⽂件或⽬录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的⽂件权限是: mask & (~umask)
格式:umask 权限值说明:将现有的存取权限减去权限掩码后,即可产⽣建⽴⽂件时预设权限。超级⽤⼾默认掩码值为0022,普通⽤⼾默认为0002。实例:umask // 查看权限掩码umask 044// 设置权限掩码
若是修改权限掩码后忘了改回去,不用担心,这个每次登录时都会回到默认值。
1.umask 的目的什么?
希望凡是在 umask 中出现的权限,都不应该在最终权限中出现
2.为什么要有 umask?
默认权限,有 OS 自主决定,无法在创建前进行统一… 系统可控层,可以灵活满足需要的一种表现
特殊情况下,配置 umask,可以控制文件的默认权限,让我们的代码都是可控的。
6. ⽬录的权限
说完了文件的权限,那我们再来看一看目录的权限:
1.rwx 分别对目录意味着什么?
r对于目录来说代表这可以打开目录中的文件,也就是可以读取文件里的内容
w对于目录来说代表可以在目录中修改文件,包括新建,删除,修改等
x对于目录来说才是可以访问该目录,代表该目录可执行(可访问)
2.默认情况下,我们新建一个目录,rwx 权限都要有!
⽬录的可执⾏权限是表⽰你可否在⽬录下执⾏命令。如果⽬录没有 -x 权限,则⽆法对⽬录执⾏任何命令,甚⾄⽆法 cd 进⼊⽬, 即使⽬录仍然有 -r 读权限(这个地⽅很容易犯错,认为有读权限就可以进⼊⽬录读取⽬录下的⽂件)⽽如果⽬录具有 -x 权限,但没有 -r 权限,则⽤⼾可以执⾏命令,可以 cd 进⼊⽬录。但由于没有⽬录的读权限所以在⽬录下,即使可以执⾏ ls 命令,但仍然没有权限读出⽬录下的⽂档。
7.粘滞位
当⼀个⽬录被设置为"粘滞位"(⽤chmod +t),则该⽬录下的⽂件只能由
1. 超级管理员删除2. 该⽬录的所有者删除3. 该⽂件的所有者删除
用户类型 | 是否可删除文件 |
---|---|
文件创建者 | 可以(无论目录所有者是谁) |
目录所有者 | 可以(无论文件所有者是谁) |
其他普通用户 | 不可以(即使有目录写权限) |
超级用户(root) | 可以(不受粘滞位限制) |
好的,那么我们今天关于权限的内容到这里就结束了,让我们下次再见。