Linux基本权限

目录

权限是什么?

sudo指令:提权

文件类型:

修改文件对应的权限:

rwx三种权限对应的作用

file能够查看对应的文件类型

umask:权限掩码


 

权限是什么?

sudo指令:提权

例如:

e74f685400484875985b7828e11851b6.png

 我们的用户名是lol

假设我们前置sudo指令:

4b2e2cd9f85f4ac88a27d88983f0d8d1.png

 我们需要输入whb的密码。

82ad04f928d04561ae74a9a712a3a20b.png

 出现的结果为root,原因是这样:

我们的前置sudo可以用来提权,相当于我们是以根用户的方式的运行指令,我们的根用户为root,所以我们对应的结果为root

 

短时间内再次使用sudo就不再需要输入密码。

 

但是这里有一个问题:我们进行提权时输入自己的密码是啥意思?

按照情理分析:假如我们需要提权,我们首先应该证明自己有root的密码才可以,这里让我们自己输入自己的密码,那我们不就可以肆意提权了吗。

这个问题我们先保留下来,接下来进行解答。

总结:sudo相当于就是提权,以root的身份运行指令。

 

什么是权限呢?

答:权限是约束人的,例如

qq音乐的绿钻用户可以听周杰伦的歌而普通用户却不能。

爱奇艺的vip会员能看普通用户不能看的电影。

但是我们是否可以在qq音乐上看电影,在爱奇艺上听音乐,

所以权限的定义:一件事情是否允许被谁做。

这里的要点有两个,一个是“谁”,一个是“做”

这个谁约束的并不是个人,而是约束的是某些角色。

例如,qq音乐会将用户分成某些角色:绿钻用户和普通用户

绿钻用户可以听收费音乐,而普通用户就不能,

假如我们没有充钱,qq音乐就会设置权限,约束的是普通用户,而我们属于普通用户所以约束了我们,而不是因为我叫xxx而约束了我。
所以:文件权限=人+文件属性。

这里的人相当于就是角色。

而我们的Linux操作系统把这些人分成三个集体:

包括:拥有者 所属者 其他人

owner   grouper  other

 

文件属性:

例如:

我们新创建一个普通文件fil.txtf265872965cf4bd69f0ba76b3863de59.png

ll显示根目录文件的详细信息:

f1814d26e6bc499ca1b203121cd81a69.png

 982d8ef0d69c4ddea246584ea78e3ebe.png

 这些就是对应的文件属性。

其中,这里的前一个root指的是拥有者,第二个的root指的是所属组。

de90451e9d1a42bbaf25e91bd0a3add2.png

 f8246c09241f4c46b71b7768d60f9fc3.png

 我们这里的lol账户既不是所属组,又不是拥有组,所以就是other

 

为什么要存在所属组呢?

例如:

在同一个公司,有两个不同的小组,分别各自完成两个项目,假如我们没有所属组时,我们同一组之间就无法分工交流。

我们互相的代码需要交流传播时,也只能通过other,那么这里的other就是除我们自己之外其他所有的用户,我们在交流时就会造成代码泄露。

 

文件类型:

文件属性如图所示:

dd7d35760883486c8dc809782c061aaa.png

 这个就是file.txt对应的文件属性,其中,最前面的9个字符对应的就是文件类型。

注意:Linux中,文件的后缀名与文件的属性没有任何的关系。

如果要使用,也仅仅是做一个提示符号来使用,文件的后缀名仅仅是文件名的一部分。

那么在Linux中,文件的类型类型应该如何看呢?

在Linux系统中,文件属性的第一个字符对应的就是文件的类型。

d:目录文件

c:字符设备文件:键盘,显示器

b:块设备:磁盘文件

l:链接设备:快捷方式

p:管道文件:

 

文件的属性的前9个字符表示该文件是否可以读写执行

r:对应的是读

w:对应的写

x:对应的是执行。

Linux基本权限_第1张图片

对于该文件,拥有者的权限是可读可写不可执行。

所属组的权限是可读不可写不可执行。

其他的权限是可读不可写不可执行

 

假如我们要对一个文件进行修改的话,我们需要修改两方面

1:文件的所属角色:例如:user,grouper,other

2:文件属性(文件是否可读可写可执行)

修改一个文件也需要权限:假如文件的拥有者是我们或者我们是root都可以修改文件。

修改文件对应的权限:

标题3:chmod:change modifacation的缩写,表示修改文件。

281ccf633cd94c19b44314b4e1135b00.png

 假如我们要去掉文件的拥有者的可读权限:

我们可以这样写:

e14be6a31f4940d7b92258d8cd9a6752.png

 表示去掉文件file.txt的user(拥有者)的r(可读)权限。

8765b103037b4698ba24b9d4af00d95e.png

 这时候,我们发现file.txt的拥有者的可读权限被去除了。

假如我们要加上文件的拥有者的可执行权限:

debd0b8e0a054ebc88749613b18b312f.png

 5ea918fa75324dceb389e58c527c4e8c.png

 文件的拥有者有可执行的权限了。

 

假设我们要去掉文件的拥有者的全部权限:

d77218076a2e44a5add984668f18e2f3.png

 c3a038e31540447e96f01ac7dbd648b9.png

可以发现:我们去掉了文件拥有者的全部权限。

 

假设我们要对文件所有组的权限进行修改:

a3ea7afcba0c4705a06a90138d8da58d.png

 我们加上文件所有组的可写可执行权限:

05e54cc618ad48ba8beb59f3382f100d.png

 文件所有组可写可执行了。

假设我们要去掉文件所属组的全部文件

bdb71b48f7814035a2c2725118de9b7c.png

 1460959ddc3e407c9c3698d0e7681161.png

文件成功去除。

 假设我们要去掉other的可读权限:

4b81a470e062478b9c39556b0869cca0.png

 988e74e7167d4e76b29a97f57ef1c8e2.png

 

 假设我们要添加拥有者和所属组的全部权限:

2075e64da6c145ab835dcbd0421fdb9b.png

 189851cdddfb4ee993ce25842371186d.png

 

假设我们要去掉全部的权限

91f4c82738ab47589ea4082f5545e400.png

 这里的a表示的是all的意思。

表示我们去掉user,grouper以及other的全部权限。

fd64764416724440a9704c91a31096f7.png

 

rwx三种权限对应的作用

我们知道,r对应的是读,w对应的写,x对应的是执行。

这些作用是如何体现的呢?

b119a68663a249958d4d4110732a666a.png

我们首先给文件的使用者加上可读权限。

该文件中存储的内容如下:

Linux基本权限_第2张图片

 我们使用cat来读

Linux基本权限_第3张图片

 可以发现,成功读出了文件的内容。

这就是r(读)的作用

 

写权限:

4b78f9603df9405d997fa25bb28332e4.png

 我们去掉使用者的写权限。

假设我们去掉了拥有者写的权限,那我们就不能对文件进行写操作。

1446d695a8294b589dc5a29183f9feb6.png

 e3e840e2b1824b99a8ac8750b6e6e5a0.png

 

这里的拥有者和所属组不会冲突吗?

 473dacdf334549faa82fa5319c6d719a.png

 并不会:这里的识别是从左到右识别的,识别到我们是拥有者就不再识别了,我们对应的就是拥有者,识别到我们是所属组就不再识别了,我们就是所属组。

 

假如我们是root呢?

假如所有对象什么权限也没有,我们也可以对文件执行所有的读写执行权限。

例如:

d24f8a7466634dd5b9b1429b65f2b67f.png

我们也可以对文件进行读:

Linux基本权限_第4张图片

 写:

 aabef0c7adb14f39a6ccf0e378e5131d.png

 Linux基本权限_第5张图片

 

所以root不受任何权限的约束。

 

假如我们要对文件的拥有者进行修改呢?

chown可以修改文件的拥有者。

332103c8a5e545a89a2f5ca831a6f679.png

 可以发现,并不能修改,不能修改的原因是:

给别人的权限也需要别人同意,假设我们用root的情况下就可以给。

db17da6e9e2040acb60f52e9c8784e7b.png

 我们成功的把拥有者的权限转让给lol用户。

 

假如我们要转让所属组呢?

chgrp表示转让所属组

e917fb16d68b42c8bb3bbfdb87089ba6.png

同样的,给所属组也需要经过别人的同意,所以我们可以使用root。

b14d8200fb464d2c82cdf94335f7caa1.png

 

同时,我们也可以同时转让文件的拥有者和所属组权限。

324afd2718244be686edafea4fd7771e.png

这里就可以同时的把文件的拥有者和所属组全部转让给lol

 

设置文件属性:chmod

设置文件所属角色:chown/chgrp

b37b23f330944bd8afa99351b7bf4415.png

 对于该文件,我们可以把文件的9个前缀转换为3个8进位制数字。

例如:

Linux基本权限_第6张图片

 这样操作起来就比较简单了,假如我们要删除所有角色对应的权限:

2365e83892304e8193143fcc79193f59.png

 87cbafe2698b42ad8e3c09b0922fce7b.png

 对应的结果如下:我们只需要一串数字就能够具体的给每一个角色分配相应的权限。

b4b1b43d6e5b436f9dd5f57d5f012cf1.png

 56647cdcc0a74a5cbd762fa927442b3b.png

 我们就把每一个角色都分配了全部的权限。

 

file能够查看对应的文件类型

例如:

Linux基本权限_第7张图片

我们首先可以创建一个空目录,然后file来查看对应的文件类型:

dfb5cc44277b4a3098be44860e34c61a.png

 894254c83d784e9b849e7e0bdac39d50.png

 

为什么要有权限:

设置权限的目的就是便于我们的系统进行安全检查。

5611e7bf137943eb903d07bc391698ff.png

 我们创建一个普通文件:

为什么我们的普通文件和目录的权限不同呢?

8a4edd765f18442987a2a73749ccf0d1.png

 

首先,在Linux中规定,目录的起始权限为777,普通文件的起始权限为666

umask:权限掩码

权限掩码的默认值是0002,凡是在umask中出现的权限,都必须在其实权限中去掉。

如何使用umask

例如:

4353701dba644eecb562f20b39d031a6.png

我们设置umask为0444,对应的8进制为0 100 100 100,所以我们去掉的就是r,我们创建一个目录:

5f76ebdd8947470a823ea8d1329d0958.png

 可以发现,目录中的所有角色都没有了可读权限。

我们创建一个普通文件:

25fb81a200e2497f81a9deaa24e8b77d.png

 普通文件也没有了可读权限。

 

当我们把umask设置为0时:

我们再创建一个普通文件和目录:

acde44a0f64947d299eefba1c83992af.png

 这时候,我么我们对应的权限就是666和777了

 

那是不是我们的umask是多少,我们的初始权限减去多少就可以了呢?

答:不对,例如我们设置umask为0111

我们再创建一个普通文件和一个目录:

ddd584f7ec0a462dba6ecdda336e672f.png

 按道理来说,我们的目录的起始权限是777,普通文件的起始权限是666,再减去111,那我们对应的目录就应该为666,普通文件就应该为555. 

但是我们得到的结果是:目录的权限码是666,普通文件的权限吗也是666,原因如下:

最终权限的计算公式=起始权限&(~umask)

例如:

当我们的umask为0时,我们对应的普通文件和目录的权限为7f8327e8b1064669bcdbdafa75f5957d.png

 c5d2242c500d42a78046fe09e4c63a45.png

 对于这个目录文件,假如我们的umask变为0111时,由我们的公式计算可得:

Linux基本权限_第8张图片

 我们可以用普通的理解方法:

例如对于这里,我们可以这样计算:

8379e93a90634c5d908a947cfd6edfc3.png

 我们要从起始权限中去掉umask对应的权限,umask对应的是每一个角色对应的末位也就是执行权限,我们去掉起始权限中每一个权限的执行权限即可。

Linux基本权限_第9张图片

 总结:umask是权限掩码,我们最终权限有两种计算方法

1:公式法:最终权限:起始权限&(~umask)

2:理解法:最终权限等于起始权限的权限减去权限掩码对应的权限。

 

为什么目录的起始权限是777,而普通文件的起始权限是666?

原因如下:

假如我们要进入一个文件的目录,我们是否需要读的权限:

57d4cbf9f21e43c389fc097cc58e1bc2.png

我们去掉dir的读权限

 ae65c3f69c4b4e858d48622a93658013.png

我们判断是否可以进入该目录:

 fa31a764654145cfa0df6960785335bd.png

所以:目录的读权限与是否可以进入目录是没有关系的。 

 我们发现,我们是可以进入目录的,但是我们不能查看目录中的内容。

15b34680520447e599cf1dbabf92a974.png

 我们也可以在该目录中创建文件但是并不能查看。

eab36fd888554106992a320a015b7cd4.png

 r权限并不影响我们进入目录,影响的是我们查看目录中的内容。

 

进入一个目录需要的是x权限也就是执行权限:

Linux基本权限_第10张图片

 可以发现,当我们没有x权限是不能进入目录的。

 

假如我们删除掉w权限,保留x和r权限,我们既可以进入目录,也可以查看目录的内容,但是我们不能在目录中创建文件。

因为我们创建目录,目录中有其他文件,我们一定要保证目录是可以进入的,所以我们要加上一个x权限,所以目录的默认权限是777而普通文件的默认权限是666.

 

 

你可能感兴趣的:(linux,服务器)