Linux权限详解

目录

前言

一、shell命令以及运行原理

二、Linux权限的概念

三、Linux权限管理

1.文件访问者的分类

2.文件类型和访问权限

2.1文件类型

2.2权限访问属性

3.文件访问权限的修改

3.1权限的增加与减少

3.2 八进制数设置权限

3.3 目录权限含义

4.用户身份的修改 

4.1修改文件拥有者:

4.2 修改文件所属组: 

 5.默认权限解析

 四、粘滞位

总结


前言

在社会中我们每个人都有各自的身份,而相应的身份又决定着是否具有对应的权限。比如我们想要管理一个仓库,那必须要具有仓库管理员的身份。Linux系统中同样具有权限的概念,那接下来我们就来一起看看Linux世界中的权限是如何分配的吧。


一、shell命令以及运行原理

在介绍linux权限之前,我想要先介绍另一个概念,用户是如何与操作系统进行交互的?这里就要提到外壳程序shell。

Linux严格意义上说是一个操作系统,我们称之为“核心(kernel)”。我们一般用户是不能与kernel直接进行交互的,一般要借助kernel的外壳程序shell。我们将指令传达给shell,再由shell传递给kernel,同时shell会把kernel的处理结果翻译给使用者。

为什么要借助shell和kernel进行交互呢?原因当然是因为直接和操作系统交互是一个难度非常大的事,我们大多数人并不擅长,所以要找一个中间人来帮助我们。(可以理解成一个闷骚的男孩子看上了隔壁的女孩子,但他并不擅长和女孩儿打交道,所以找了一个媒婆去帮他牵线搭桥)。

shell的作用:

1.实现用户和操作系统的交互

2.保护操作系统,当用户提出错误或不合理的请求时,shell会直接拒绝

shell的运行原理:

创建子进程,让子进程进行命令行解释,这样子进程出了任何问题都不会影响父进程shell。(可以看出shell很聪明,找了一个劳动力帮他打工,一旦出了事情就直接让劳动力背锅)

shell vs bash

笔者使用的是centos 7,在使用过程中并没有见到shell,而是经常见到bash。

那么shell和bash是什么关系呢?可以这么理解:shell是所有外壳程序的统称,而bash是一种具体的shell。

二、Linux权限的概念

linux下有两种用户,超级用户(root)和普通用户。

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”

命令:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。 

如果我们仅仅想提升当前指令的权限可以在指令前面加上sudo,但这要求发送指令的用户在超级用户的信任列表里。

三、Linux权限管理

1.文件访问者的分类

  • 文件及目录所有者:u--user
  • 文件及目录所有者所在组的用户:g--group
  • 其他人:o-other

2.文件类型和访问权限

2.1文件类型

Linux权限详解_第1张图片

如图所示,文件属性的最开头有十个字母,其中第一个字母代表文件的类型。

注意:linux系统下的文件类型与后缀无关,但建议大家按相应的后缀命名。

-:普通文件,文本,可执行程序,库

d:目录

2.2权限访问属性

文件属性其他信息的含义如下图一一对应:

Linux权限详解_第2张图片


我们重点关心开头十位字母的后九位,他们代表着文件的权限属性。 其中每三个字母为一组,分为三组,从前往后依次代表文件所有者的权限,文件所属用户组的权限,其他用户的权限。

其中每个字母都代表相应的权限:

  • r:读取
  • w:写入
  • x:可执行
  • -:无对应位置的权限

注意:这些对应的权限只对普通用户有限制,超级用户拥有文件的全部权限,不受其限制。

3.文件访问权限的修改

3.1权限的增加与减少

指令:chmod(change mode)

语法:chmod u/g/o+r/w/x 文件名   或  chmod u/g/o-r/w/x 文件名

增加权限:

Linux权限详解_第3张图片

 减少权限:

不写用户身份默认为全部

Linux权限详解_第4张图片

3.2 八进制数设置权限

我们也可以把是否有权限用0或1标识,例如读写执行权限都有的话就是111,每三个二进制数构成一个八进制数,那三个用户身份的权限就可以用三个把进制数来设置。

Linux权限详解_第5张图片

3.3 目录权限含义

在目录中字母代表的权限如下:

  • r:显示目录下的内容
  • w:在目录下创建对应的文件
  • x:进入目录

注意:其中x是最基本的权限,想要读或修改目录的前提是能进入目录,所以如果没有x权限的话,执行r或w权限时会被拒绝或报错。

4.用户身份的修改 

刚才我们学习了如何修改用户身份的对应权限,那么如何修改用户身份呢?例如改变文件的拥有者或所属组用户。注意,这需要root权限。

4.1修改文件拥有者:

指令:chown (change owner)

 语法:chown  修改后的拥有者  文件名

Linux权限详解_第6张图片

4.2 修改文件所属组: 

指令:chgrp (change group)

 语法:chgrp 修改后的所属组  文件名

Linux权限详解_第7张图片

也可以同时进行更改 :

Linux权限详解_第8张图片

 5.默认权限解析

Linux权限详解_第9张图片

 从图中我们可以看出,在文件创建时,有些权限是默认拥有的。那么默认权限是根据什么规则来定的呢?这就要提到一个指令umask。

如图,umask是一个数,我们重点关注后三位002,把这看成是一个八进制数,转化为二进制数就是000000010。规定文件的起始权限为666,目录的起始权限为777,转化为二进制数后和umask进行该操作:起始权限&(~umask) ,最终得出来的结果为默认权限。

把这个计算公式简单概括就是,umask为1的位置默认权限必须为0,即该位置没有默认权限。

同时umask我们是可以自己更改的。

 四、粘滞位

Linux为了让使用更灵活,它规定只要拥有目录的写权限,就可以删除目录中的任何文件。比如张三作为一个目录的拥有者,给了李四该目录的写权限,然后李四就可以删除目录中张三创建的文件,即便他作为other用户,没有该文件的任何权限,依旧可以删除该文件。

如果我们只是想让别人使用一个目录,但不想让他动我们创建的文件,那就要给该目录加上粘滞位,起到保护作用。

语法:chmod +t   文件路径

如图,我们给temp目录加上粘滞位。作为用户zxy,删除root所有的的文件失败,但可以删除自己的。

Linux权限详解_第10张图片

 当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由:

  • 1.超级用户删除
  • 2.目录的所有者删除
  • 3.文件的所有者删除

总结

以上就是今天要讲的内容,相信小伙伴们看完之后一定对shell的功能和权限的相关内容有了一定的了解吧。如果感觉本文有帮助的话不妨点个赞支持一下博主哦~你们的支持就是我创作的最大动力,我也将努力带来更加优质的内容,感谢大家的阅读。

你可能感兴趣的:(Linux系统与网络编程,linux,服务器,运维)