前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux权限(2)

Linux权限(2)

作者头像
薛定谔方程难
发布2024-07-25 13:41:29
690
发布2024-07-25 13:41:29
举报
文章被收录于专栏:我的C语言

一日学一日功,一日不学十日空。——谚语

前言

对于Linux权限讲了很多部分在这篇文章中如果看过的话可以复习,没看过的话一定要看,不然权限的理解就不透彻了。

1、知识补充

1、1、Linux系统的文件类型与gcc的纠缠

Linux系统中的文件不需要后缀来区分文件的类型,在这篇文章中我已经讲解过了,同时也讲解了Linux是怎么区分文件的类型。但是通常情况下我们是最好带一下的,就像我们如果要编译一个Linux的C语言的文件的话,我们通常都是以 .c 为结尾的文件,如果正常在Linux上还是以 .c为结尾的话,gcc的时候是能够编译成功的,可是如果是我们使用mv操作把文件名修改的话,gcc居然不能运行了?原因很简单,那是因为gcc是gcc,Linux操作系统是Linux,即是在Linux下,gcc也是通过后缀名来操作的!(也包括g++编译器)。所以Linux不区分文件的类型,但是Linux上的工具可能是区分的。 所以对于Linux文件的态度就是:可以使用,方便人看,也防止类似于gcc这种情况出现

2、什么是权限‘x’

x表示的是可执行,如果有x权限,就是表示一个文件能够执行。 可是又有问题了!如果我们将test.c文件利用chmod u+x的话,然后再执行的话确实报错,执行不了。

明明不是加上了可执行的x权限了吗? 你要执行,前提是你必须要是可执行文件,你是一个可执行文件有可执行权限,你才能执行 能执行=具有可执行权限+你是一个可执行文件。 所以x(可执行权限)的侧重点是权限,而不是可执行。所以可执行不等于可执行权限。

3、目录权限

3、1、cd目录

cd目录的条件是什么呢? r?w?x?是哪一个? 如果取消文件的r的权限。 cd dir的情况的话,ls就不能展示出来文件中的内容了。创建文件能够实现。目录r的权限:用户能否查看目录内的文件信息。 如果取消文件的w的权限。 还是能够实现cd dir。所以能够推断出x权限是不能进入文件夹。 那么此时的w权限限制的是什么呢?我们ls的时候能够查看文件夹内容,但是touch的时候会报错。目录w的权限:用户是否能在目录内创建,修改,删除文件。 如果取消文件的x权限。 不能进入文件夹。 由于一切 文件=内容+属性 ,属性很简单,直接能看到。所以文件夹的内容应该是该目录里的所有文件信息详情数据。 所以没有r和w到权限,也就不能看到文件夹中相关文件的信息(r权限本质是读取文件内容)和修改(增,删,改)文件(w权限的本质就是在更改文件里面的东西)。

3、2、普通文件和目录默认权限不同及原因

此时的情况是在普通用户下,如果是在root的情况下的话,会有些不一样。 对于目录文件来说,默认的权限时775。 对于普通文件来说,默认的权限时664。(这里表示方法的细节在这篇文章有介绍) 所欲对于普通文件和默认权限,为什么两个不一样呢?为什么权限是这么设计的呢? 从逻辑上来讲,一个文件夹的创建天然就是为了别人能够cd的,就好比普通文件创建出来默认就是为了读写的。所以目录带上x是合理的。 创建的普通文件,起始权限时:0666,去掉x的 创建的目录文件,起始权限时:0777,包含x的 可是这和实际是不一样的,普通文件却是0664,而目录文件却是0775。 这里就需要介绍Linux的权限掩码:创建文件的时候,要从起始权限中,过滤掉(不是简单的减法)在umask(0 0 2= =000 000 010)中出现的权限。 所以普通文件的权限666= =110 110 110,从中过滤掉umask得到的就是110 110 100= =0664。相对应的,目录文件也是这样的过程能够得到最后的775的结果。(过滤方法不是简单的减法而是先将umask按位取反,然后再和起始权限进行按位与操作) 证明方法:

说明我们创建文件果然是受umask的影响的! 所以这么个过滤方法的话如果我们

代码语言:javascript
复制
umask 0777
mkdir dir
touch file

此时将会什么权限都没有。因为此时umask取反的时候全部为0。此时进行按位与将全部是0。

不同系统之间的umask也会不一样

3、3、超级管理员创建文件时的权限

作为一个普通人,我居然能够在没有读没有写没有运行权限的前提下,能够将root创建的文件删除?这合理吗?为什么能删掉? 合理,非常合理! 因为文件的不让读不让写不让执行是文件本身的属性,可是这个文件在文件夹里面,我这个普通用户的文件夹里面,那我就可以对我的内容进行修改! 所以删文件和目标文件之间没关系! 所以是和所在目录之间有关系(干掉你和你无关)。既然跑到我普通人的目录中,就本来也应该被我管理。

所以Linux操作系统为了防止别人互删,Linux操作系统在用户文件夹默认设定的时候就只有拥有者才有rwx权限,其余的人任何权限都没有,连运行,打开文件都不能。

3、4、Linux操作系统下多用户创建共享文件

首先能够排出,这个文件不能在各自的家目录下创建,因为别人根本就进不来你的目录。 此时我们只能在系统的非用户目录下进行创建。(不再/home里面创建)用root账户创建,并且文件夹的权限时drwxrwxrwt。 那么这个时候就会出现一个问题,怎么解决别人的权限,不让别人rwx呢?其中的t又是什么作用呢? 预知下问如何,请关注我接下来的Linux博客。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1、知识补充
    • 1、1、Linux系统的文件类型与gcc的纠缠
    • 2、什么是权限‘x’
    • 3、目录权限
      • 3、1、cd目录
        • 3、2、普通文件和目录默认权限不同及原因
          • 3、3、超级管理员创建文件时的权限
            • 3、4、Linux操作系统下多用户创建共享文件
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档