Linux权限的理解和管理

shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。
而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
将使用者的命令翻译给核心(kernel)处理。 同时,将核心的处理结果翻译给使用者。

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。


广义上:Linux发行版=Linux内核+外壳程序;
狭义上:Linux = Linux 内核;


所以说一个Linux要运行起来,需要shell程序的支持,因为它帮助我们和内核打交道,至于为什么不直接和内核打交道,也很容易理解,因为直接操纵内核代码本身就是很危险的事情;


shell中我们最常用的是bash的一个程序,这两种关系就像:聊天软件和QQ的关系,也就是说聊天软件有微信QQ等其他,而我们选择了QQ;在Linux上我们就是使用bash来解释命令的;


Linux权限的理解

在我们Linux中权限就是:一件事是否允许被特定的人做;权限约束的对象是人,而我们的文件天然有:r(读),w(写),x(可执行)三个权限;那么对我人来说:就需要受到权限的约束,于此同时,权限对于我们人来说,也是一种管理,因为只有管理好才可以约束好;


我们可以理解 权限 = 人+事物的属性;而人要管理权限,也就是管理事物属性,同时权限要约束人,也就是事物属性要约束人


对于人来说:
也就是Linux的用户类别有三种:拥有者(owner),所属组(group),其他(other);

拥有者(owner):对文件的拥有权力管理的人;
所属组(group):对文件拥有权力管理的小组;
其他(other):不对文件具有权力管理的人,也就是说不是拥有者和所属组的人就是other;


在我们的Linux文件中:我们也可以看到这些相关信息:
在这里插入图片描述
而对于文件的拥有者和所属组我们都是可以修改的,也就是说对于文件的管理权限的用户,我们是可以修改的;


在这里插入图片描述
而我们文件的类型常见的有这些:

-表示普通文件
d表示目录文件
c表示字符设备文件:如我们的键盘和显示器
p表示管道文件:用来通信的
l表示软连接文件:也就是快捷方式
b表示硬盘磁盘设备文件

我们就可以通过文件属性的第一个字母去判断:文件的类型了;


在这里插入图片描述


root 用户和普通用户的切换

su - 可以普通用户切换到超级用户,第一次时候需要root密码
su - 用户名 可以从超级用户切换到普通用户;
只要切换过,之后就可以按ctrl+d切换,这样会减少开bash进程,也可以使用exit切换;

su 切换到超级用户,并且还在当前目录,假如加 - 参数那么表示,切换到root的家目录中 ~

在这里插入图片描述


在这里插入图片描述


对于一条指令没有只想权限那么我们可以加 sudo去执行该指令,表示短暂提升权限,去执行该指令;


修改文件属性权限

修改权限可以一个一个的改,也可以组合的改

给文件加减权限的命令 chmod

chmod u+rwx file.txt #给文本文件file.txt的拥有者加可读可写可执行的权限
chmod g+rwx file.txt #给所属组加可读可写可执行权限
chmod o+rwx file.txt #给其他人加可读可写可执行权限
chmod u+rw,g-x,o-rwx file.txt #给u加上可读可写 给g去掉可执行 给o去掉可读可写可执行

 
其中这里的 u g o 分别表示拥有者 所属组 其他人
而这里的+号或者是-号,表示加权限和-权限
后面的r w x 分别表示可读 可写 可执行 

有一个场景:虽然这里的拥有者的写入权限是被限制无法写入了。但是你强制写入也是没问题的,因为你本身就是拥有者,但是你却无法普通写入,只能强制的写入
在这里插入图片描述


我们用vim强制写入看看:
在这里插入图片描述
当我强制保存才可以!也成功写入了。
在这里插入图片描述


修改权限还有第二套方案:

即把 u g o 对应于八进制 从000 ->111; 即在八进制中 一个位就表示对应的 权限者 ;

chmod 666 file.txt # 把file.txt 文件权限修改为 u rw-;g rw-;o rw-;
chmod 000 file.txt # 把file.txt 文件权限修改为 u ---;g ---;o ---;
chmod 777 file.txt # 把file.txt 文件权限修改为 u rwx;g rwx;o rwx;

在这里插入图片描述


权限是显示普通用户的,对于root用户来说,任何权限都无法显示它。


修改文件拥有者和所属组

chown xjh file.txt #修改file.txt拥有者为xjh
chown root file.txt #修改file.txt拥有中为root

前提:你想修改文件的拥有者,需要提升权限:在命令面前加sudo即可;
对于root用户来说,不会受权限的限制所以root用户可以随便修改文件的拥有者;
在这里插入图片描述


chgrp root file.txt #修改file.txt文件的所属组为root
chgrp xjh file.txt #修改file.txt文件的所属组为xjh

前提:依旧是需要root用户才可以直接操作,如果你是普通用户那么就需要短暂提升权限:使用sudo即可
但是:有个细节:就是假如这个文件本身拥有者是属于你的,并且所属组假如不属于你的,也是可以直接修改所属组的,因为很简单,文件本身拥有者就是你,那么你肯定可以改;
在这里插入图片描述


还有一种方式同时修改拥有者和所属组的方式

chown root:root file.txt #修改file.txt的拥有者和所属组为file.txt

在这里插入图片描述


有人提问other的权限如何修改?其实不需要修改,因为你不是拥有中和所属组,那么就说明你是other了;
还有要区分一个概念:创建者和拥有中不是同一个概念,创建者创建的文件是是属于他的,他同时也是拥有者,但是同时别人也可以修改拥有者的身份,那么创建者和拥有者就不一样了;


对目录文件的rwx权限修改出现的现象的理解

首先我们得知道,一个目录假如没有了读权限:那么表示我们就无法看到目录里面得内容了;
在这里插入图片描述
其次我们要记得:权限限制的是普通用户,对与root来说是不受权限限制的;


对于目录文件而言:写权限意味着我可以向目录里创建新的文件:本质就是给多叉树添加结点的操作;
在这里插入图片描述


问题又来了:进入目录需要什么权限呢?也就是cd一个目录;
需要的是x权限,也就是可执行路径

在这里插入图片描述
所以不要误认为:进入一个目录是需要读的权限,其实是可执行权限;


有个好玩的现象:假如一个目录有读权限r:却没有可执行权限x;如果你要查看目录文件内容,只能查看到那到里面的文件名,具体信息属性是不给查看的;
其实也很好理解:目录本身就是要先可以进去,才可以查看的,但是由于权限的限制,导致了只可以看不可以进去;这就相当于去探监一样。。。只可以给你看人,不给你进去监狱看里面的具体监狱模样;
在这里插入图片描述


还要注意一个点:
一个目录对other没有写权限w:那么other是无法删除目录下的文件的;
一个目录对other有些权限w:那么other是可以删除目录下的文件的,也就是说这个文件拥有者即使不是你的你也可以删除;


在这里插入图片描述
上面删除失败原因就是该目录test 没有w权限,所以other用户xjh无法删除test目录下拥有者root的所有文件;


在这里插入图片描述
上面删除原因就是test目录有写权限;


总结:删除一个文件,不与删除该文件的人有关,也就是说,不管你是不是拥有者,都有可能删除该文件;上面的例子就说明:普通用户xjh可以删除root用户的文件,这个不于用户有关;
相关联的是:该目录是否对other有w权限,有的话,other就可以 删改目录下的所有文件咯;


粘滞位的理解

需求提出:有时候我们有个这样的场景:我们other用户想在一个特定的目录下创建文件,但是我们other用户又不可以删除改目录下其他人任何人的文件,是否有一种方式可以限制起来呢?


怎么理解这个需求:我们知道要在一个目录下创建文件,就必须又w写权限,所以说我们在一个目录下创建一个文件,只要改目录是又w权限即可;但是我们other又不想删除别人的文件,也就是,只要限制改目录下没有w权限即可;这么说要完成这种需求那么不是矛盾了吗?
其实不矛盾,我们就是希望其他人在该目录能创建文件,但是不可以删除别人的文件,这种需求确实存在,所以在Linux中,我们有一种权限的叫做粘滞位,其实就是给other用户的x权限的位置改为t权限这个t权限和x权限唯一区别就是,有了t权限,该文件就不可以被other用户删除掉了,只能被root或者是拥有者删除该文件


修改other为权限为粘滞位:
在这里插入图片描述
带来的效果就是other用户无法删除改目录下的别人的文件:
在这里插入图片描述


粘滞位的特点:
只对目录进行设置,一般限制other人的权限;

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除


在Linux系统中:/tmp 目录就是一个有粘滞位权限的目录:该目录也就是存放所有人户的临时文件的地方,谁都有访问改目录的权限,但是对于里面的文件,只能属于文件用拥有者才可以删除(也包括root用户),所以把它设置为粘滞位权限;

在这里插入图片描述


权限掩码

我们发现在Linux中一个很有趣的现象就是:
默认创建的普通文件一般都是:664权限;
默认创建的目录文件一般都是:775权限;

在这里插入图片描述


为什么会是这样呢?首先我们得有个认识:
对于普通文件:起始权限都是666;
对于目录文件:起始权限就是777;


这个起始权限是非官方得说法,为什么我们创建文件默认权限不是和起始文件一样呢?
因为这是系统中有一个权限掩码得存在得原因:我们可以使用umask命令查看;

在这里插入图片描述


有一个公式:默认权限 = 起始权限&(~权限掩码);
所以说我们普通文件得 664 = 666 & ~002;目录文件775 = 777 & ~002;


起始权限掩码还是可以自定义的,但是这个自定义的方式只对当前用户有效,不会对其他用户生效,并且一旦退出改用户,也会失效;


umask 0333 #第一个0是八进制的意思,给系统设置默认掩码为0333,
				导致结果就是创建文件,默认权限会不一样了

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呋喃吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值