当前位置:首页 » 《资源分享》 » 正文

【Linux之权限】提升篇

13 人参与  2024年12月20日 16:00  分类 : 《资源分享》  评论

点击全文阅读


前言

在前两篇文章里,我们已经学习了Linux中权限的理论、实践和重点,接下来我们将进一步提升对Linux权限的全面认知。虽是拓展,其实还是重点。
本文内容并不多,那我们就开始吧。

目录的权限该如何理解呢?

如果我想进入一个目录,需要什么权限?

​ 和读权限没关系,和写权限也没关系。和x有关系。x对普通文件意味着执行权限,对目录意味着进出的权限。

那r和w分别对目录意味着什么?

如果一个用户对目录没有r权限,在进入这个目录后,ls我们将得到这样的报错:

目录里的文件就相当于在目录里面,没有读权限就无法查看目录里面的内容。

但是我们可以写,也就是说可以在目录里创建文件

可以看到,都不会报错。

同样的,对于root来说,就算什么角色的权限都去掉了,root仍可以rwx。不受约束。

默认情况下,我们新建一个目录,一般(对于拥有者)rwx权限都要有。
理解Linux多用户之间是怎么互相“隔离”的。

在Linux中,每新建一个普通用户,都会在home这个目录里,新建一个以这个普通用户为名的文件夹。

下次普通用户登录时,就默认在这个家目录里面。/home/naruto

我们还可以从上图看到,whb这个文件夹的拥有者和所属组就是自己,且只对所有者开放了rwx权限。这意味着任何用户,无法进入其他用户的家目录也无法读和写。这就是所谓的用户之间的“隔离”

缺省权限

我们可以发现,普通文件的默认权限是这样的:rw-rw-r–

而目录的默认权限是:rwxrwxr-x

缺省值的设置:

但是为什么我们创建时的初始值却不是这样的呢?

甚至对于不同人的linux,可能默认值又不一样:

这是因为系统里有一个权限掩码(不同人的linux可能不同)。umask可以查:

这里一个位是八进制的。第一个0是与用户相关的,我们不用考虑在内。也就是看002。

002的二进制是000 000 010,最终权限=起始权限&(~umask)

~umask是111 111 101,将其与初始权限111 111 111按位与得到111 111 101,转成八进制是775。

umask目的是什么?

凡是在umask中出现的权限,都不应该在最终权限中出现。

可以看到000 000 010里只有other的写权限为1,那么~就只有other的写权限为0,根据按位与,无论默认值other有没有写权限,最终生成的都不会有;同样,按位与后除了这一位都是1,也就是最终生成权限全凭初始的默认权限决定。

为什么要有umask?

如果没有,一个文件创建时默认的权限由OS决定,无法在创建前进行修改。这是为了可以满足特殊的需求。写成系统可配置,不写死,更有灵活性。

特殊情况下,配置umask,可以控制文件的默认权限,让代码可控。(日后才会接触到)

怎么修改umask?

umask 0777 这样就能改

不过这种修改是一次性的,内存级的。当我重新打开,读取配置文件,会变回去。

=_=
本文到此结束,至此,【Linux之权限】这个系列也结束了。
祝大家开卷有益。
在这里插入图片描述


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/204199.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1