目录

Linux中的权限

Linux中的权限


shell的理解

Linux严格来说是一个操作系统,我们称之为 “核心(kernel)”,但我们⼀般用户,不能直接使用kernel。⽽是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。

从技术⻆度,Shell的最简单定义:命令⾏解释器(commandInterpreter)。

主要包含:

  • 将使⽤者的命令翻译给核⼼(kernel)处理。
  • 同时,将核⼼的处理结果翻译给使⽤者。

对⽐windowsGUI:我们操作windows不是直接操作windows内核,⽽是通过图形接⼝,点击,从 ⽽完成我们的操作(⽐如进⼊D盘的操作,我们通常是双击D盘盘符.或者运⾏起来⼀个应⽤程序)。

shell 对于Linux:主要是对我们的指令进⾏解析,解析指令给Linux内核。反馈结果在通过内核运⾏出结果,通过shell解析给⽤⼾。

图理解:

https://i-blog.csdnimg.cn/direct/f29c534e5f2445baa22f9db004535573.png

注意:

在shell中,有一个命令行解释器文件(/bin/bash),它的内部是一个死循环,不断得给内核解释我们输入的命令。

怎么理解bash和shell的关系呢?

外壳程序shell往往以进程的形式呈现的,而这个进程不能挂掉,一旦挂掉,其他命令就解释不了了,就需要重新登陆,所以往往会创建子进程来解释命令,就算子进程挂掉了,也问题不大!

https://i-blog.csdnimg.cn/direct/10b0ac9467c44a07be0f17d9d253463e.png

这个问题到此为止,我们讲到进程再继续深究!

用户概念

在linux中,有两种用户 :超级用户(root),普通用户

这个和windows差不多,windows有管理者(admin)和普通用户。

超级用户权限高,不受管控;普通用户权限底,受管控;

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

https://i-blog.csdnimg.cn/direct/27cee76bb78445928a2b5263c7303ab8.png

su指令

我们可以使用这个命令,使得用户之间可以互相转换!

操作:

https://i-blog.csdnimg.cn/direct/b632abbed1b5454f849b05aa482faaeb.png

sudo 命令

语法:sudo   指令

功能:获得短暂提权的权利

例子:

比如你需要安装一个软件,需要root权限。

https://i-blog.csdnimg.cn/direct/26a170647ef742fa814d1bd312437c00.png

只有在sudo指令的白名单里的用户,才能使用sudo命令!

解决办法:

我们只需要将自己需要使用的普通用户配置到sudo白名单里就行!

文件目录:/etc/sudoers

注意:配置时,需要超级用户才能配置成功!

https://i-blog.csdnimg.cn/direct/4111a198a5bb41ff98068800057f2e9c.png

这样我们就可以使用sudo 命令!

理解权限

我们不难理解, 权限的本质就是什么事情能干,什么事不能干!

那为什么要有权限?

因为需要控制用户的行为!不能让用户为所欲为,否则不小把系统文件删除了,系统还怎么运作。

我们来看一个例子:

https://i-blog.csdnimg.cn/direct/c390fd076676425e8ba45c05ea92586f.png

解释:

这个文件运行不了,是因为它没有可执行的权限,它只是一个文本文件!

那我们平常敲的指令,能执行是因为它们就是一个可执行文件!有可执行的权限!

所以说: 权限==用户的权限+文件的权限

而Linux对于文件的问题,无非就是这三种:读,写,可执行。

我们现在也就围绕这三个来更深入理解在文件方面的权限。

权限管理

⽂件访问者的分类(用户)

  • ⽂件和⽂件⽬录的所有者:u—User
  • ⽂件和⽂件⽬录的所有者所在的组的⽤⼾:g—Group
  • 其它⽤⼾:o—Others

⽂件类型和访问权限(事物属性)

⽂件类型:

  • d:⽂件夹
  • -:普通⽂件
  • l:软链接(类似Windows的快捷⽅式)
  • b:块设备⽂件(例如硬盘、光驱等)
  • p:管道⽂件
  • c:字符设备⽂件(例如屏幕等串⼝设备)
  • s:套接⼝⽂件

基本权限:

  • 读(r/4):Read对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览该⽬录信息 的权限。
  • 写(w/2):Write对⽂件⽽⾔,具有修改⽂件内容的权限;对⽬录来说具有删除移动⽬录内 ⽂件的权限。
  • 执⾏(x/1):execute对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录来说,具有进⼊⽬录的权限。

命令行理解

看图理解:

https://i-blog.csdnimg.cn/direct/cd3212fd068f41199e203e298418ac47.png

缺省权限

我们可以用三个八进制数代表读,写,可执行权限:

https://i-blog.csdnimg.cn/direct/8ed7d6409f58426fb3528c08761887b5.png

对于普通文件来讲:起始权限 666,默认不带可执行。

对于目录来讲起始权限 777,默认都带。

https://i-blog.csdnimg.cn/direct/8418bf285ffc438ea42b884abdd7883c.png

我们来看一下这个。

umask

系统有一个权限掩码的概念: 最终权限=起始权限&(~umask)

但凡是出现在umask权限里面,都不应该出现在最终权限里!

解释:

https://i-blog.csdnimg.cn/direct/66d2ed20b11449e481a6281a830ed766.png

可以修改:

https://i-blog.csdnimg.cn/direct/9742a20d6ee441a0907c9038782ec440.png

为什么要有umask?

  • 默认权限,由OS自主决定,无法在创建前修改,而umask系统可以配置,是一种灵活满足需求的表现。
  • 特殊情况下,配置umask,可控制文件的默认权限,让我们的代码都是可控的。

文件权限

chown指令

语法:chown [参数]  ⽤⼾名  ⽂件名

功能:修改⽂件的拥有者

常⽤选项:-R递归修改⽂件或⽬录的所属组

注意:只有超级用户才能修改文件的拥有者,哪怕是自己创建的文件都不行!

例子:

https://i-blog.csdnimg.cn/direct/e4a386fdec4749e4b4ec9474f3fbe56c.png

https://i-blog.csdnimg.cn/direct/1a8b3c882a4b404a91f61e7fdf2e9748.png

https://i-blog.csdnimg.cn/direct/4ba0dc176c6a42968eb0892670ce061f.png

目录修改:

https://i-blog.csdnimg.cn/direct/3efad9deabee4a05a19a07a19ae64d86.png

chgrp指令

语法:chgrp[参数]   ⽤⼾组名  ⽂件名

功能:修改⽂件或⽬录的所属组

常⽤选项:-R递归修改⽂件或⽬录的所属组

注意:普通用户可以将文件的所属组更改为自己所属的任何组。但不能修改到别的组,root才能!

例子:

https://i-blog.csdnimg.cn/direct/3f364cbd87fa4f73ab861e41023f7e68.png

chmod指令

语法:chmod  [参数]   权限   ⽂件名

功能:设置⽂件的访问权限

常⽤选项:

  • -R:递归修改⽬录⽂件的权限

说明:只有⽂件的拥有者和root才可以改变⽂件的权限

chmod命令权限值的格式:

  • +:向权限范围增加权限代号所表⽰的权限
  • -:向权限范围取消权限代号所表⽰的权限
  • =:向权限范围赋予权限代号所表⽰的权限

用户符号:

  • u:拥有者
  • g:所属组
  • o:其它⽤⼾
  • a:所有⽤⼾

例子:

https://i-blog.csdnimg.cn/direct/a3ed036b94a148a59a4979feab09a101.png

https://i-blog.csdnimg.cn/direct/c13d0f988f26400a9fbca25633c241b9.png

也可以利用缺省权限来修改文件的权限:

https://i-blog.csdnimg.cn/direct/3e688c32748f4107be2d7a8b86fcf0c8.png

三个指令总结

  1. 普通用户不能将自己的文件给别人(不能修改拥有者), 也就是不能将自己的文件随便给别人

2.普通用户不能将自己的文件的所属组添加给别人,但是可以添加给自己! 也就是说不能将自己文件随便共享给别人

3文件拥有者才能修改自己的文件(root也能),所属组都不行!

4.root可以干任何事情,上面三点都可以干!

注意:

确定权限信息时,系统会确定用户是谁?是拥有者,所属组,还是other。

在centos下,系统只会确定一次,顺序是拥有者,所属组,other。

例子:

https://i-blog.csdnimg.cn/direct/27d0c522d510491cb8cdf95fefa7e3c2.png

理解文件可执行权限

https://i-blog.csdnimg.cn/direct/0c3a385968e949cfaa2e15aafd79e108.png

目录权限

  • r :具有浏览该⽬录信息的权限
  • w:具有删除,移动,新建⽬录内⽂件的权限
  • x:具有进⼊⽬录的权 限

看例子:

https://i-blog.csdnimg.cn/direct/dd4b62e777384cd68888a4feac6b9523.png

那如果两多个需要进行文件之间的协作呢?我们谈一谈!

多用户文件协作

我们先来理解Linux中,用户是怎么隔离的!

任何用户都无法进入其他用户的家目录!root除外!这就已经隔离了!

https://i-blog.csdnimg.cn/direct/92b0b28dad1d4c3f9066f5c1a5b3c789.png

所以我们需要怎么进行多用户文件协作呢?

我们要的功能是: 所有人都能在这个目录下新建,删除等操作,但是不能删除!

我们在系统层建立一个目录(不能放在私人用户目录下),我们再加上 t 权限 :粘滞位。

粘滞位作用:

当⼀个⽬录被设置为"粘滞位"(⽤chmod+t),则该⽬录下的⽂件只能由:

  • 超级管理员删除
  • 该⽬录的所有者删除
  • 该⽂件的所有者删除

https://i-blog.csdnimg.cn/direct/8ee5938d21664c06bab5880a1d4bc3be.png

而系统里面专门有一个目录来应对这情况: /tmp目录

https://i-blog.csdnimg.cn/direct/2fe9a12063c34823b824d09309d9a18b.png

好了,我们下期见!