0


【Linux之权限】实践与重点篇

前言

上一篇文章中我们已经从更为理论层面的角度初步了解了权限的概念,接下来我们从“怎么做”,也就是指令实践层面理解权限,并由此进入Linux权限的重点内容。

怎么做?

修改权限就是在改什么?权限=角色+目标属性,所以修改权限就是要么在修改文件的角色,要么就是在修改目标属性。

我们以这个文件的权限修改为例:

  1. 拥有者 u

chmod u-r my.txt

u代表user,r代表read,也就是把拥有者的读权限去掉。后面再跟上我们要操作的文件。

可以看到,拥有者的读权限就被我们去掉了。

所以很容易想到:

chmod u+r my.txt

我们就又把这个权限加上去了。

我们也可以一次性多带几个权限:

chmod u-rw

一次性把读和写权限都去掉了

  1. 所属组 g
chmod g-r my.txt

就是把所属组的读权限给去掉。

  1. other o

无需赘述。

  • 一次性改变多个角色的权限。chmod u-r,g-r,o-r my.txt
  • 一次性把所有人的权限改了:chmod a-rwx a代表all

重点理解

“我”能改任何人的权限吗?

上面我们的“我”,也就是whb,改的文件my.txt的拥有者就是whb,所以在改自己的权限属性,很正常.

但如果此时一个文件的所有者是root,我们输入改权限属性的指令,是不让我们改的。

所以用户只能更改自己的文件的权限。

如果非要改,我们就得在前面带上root。

没有权限会怎么办?

cat my.txt

需要的是当前用户有读的权限;

而重定向

echo "hello" >> my.txt

需要的是当前用户有写的权限。

确定权限信息时,系统会先确定用户是谁?

在Centos下,用户角色确实只确定一次,顺序是:拥有者,所属组,other。

将当前用户从左到右进行角色的匹配,第一个匹配到是什么角色,对于这个文件该用户就是什么角色。所以既是拥有者又是所属组,按拥有者的权限处理。

  • 所以就会出现,如果whb既是拥有者又是所属组,把拥有者权限关掉,所属组权限留着,依然无法读或者写或执行,因为它只会确定出whb是拥有者,而拥有者没有某个权限,它不会再去找whb是不是为所属组。

更改文件的拥有者和所属组

(能随便给别人吗?)

chown root my.txt

就把文件的拥有者改成了root。

chgrp root my.txt

就把文件的所属组改成了root。

一次性把拥有者和所属组都改了:

chown root:root my.txt

就把拥有者和所属组都改为root。

把自己文件的拥有者给别人,为什么不行?

系统默认不允许我们把文件给别人,是合理的。所以想给别人,要加上sudo,强制地给。或者把自己切成root再去改。

root用户在权限中扮演的角色

即使一个普通用户拥有的文件的other没有任何权限,在root(root也属于other)面前,root仍然可以做任何事。

所以,root不受权限约束。

如何理解可执行?

为何在这里我们给自己(拥有者)加上my.txt的执行权限后,仍然执行不了呢?

可执行权限不等于文件可以执行。如果本身就不是一个可执行文件,有执行权限也无法执行。

像这样,cmd本就是一个可执行程序,所以对它的执行权限的修改就是有意义的。

重谈修改文件属性

其实,还有其他修改文件权限属性的方法(不那么推荐,因为可读性不够高)。

我们可以发现,rwx的状态都是两态的,是或者否。既然是两态的,就可以当作1或者0.

所以rw-可以看做110,那么 -rw-rw-r-- 就是110 110 100,开头的-是代表普通文件。

这个二进制我们又可以转化为八进制,110就是6,100就是4。所以就是权限就是664.

可以看到,

chmod 000 cmd

我们就把所有角色的rwx权限都去掉了。

444,也就是100 100 100,所有人就有读权限了。

777,是111 111 111,所有人所有权限就都有了。

一个八进制数为3个比特位,刚好对应一个角色的三种文件属性的权限。

=_=
那么本文到此结束,下一篇文章将讲解Linux权限相关的拓展问题,虽然是拓展,也十分重要。
在这里插入图片描述

标签: linux 学习 笔记

本文转载自: https://blog.csdn.net/2301_82135086/article/details/143807499
版权归原作者 Octopus2077 所有, 如有侵权,请联系我们删除。

“【Linux之权限】实践与重点篇”的评论:

还没有评论