Linux权限(2)

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


前言

对于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的影响的!
所以这么个过滤方法的话如果我们

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博客。

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Linux 操作系统中,文件和目录都有权限属性,用于控制对它们的访问权限。这些权限属性包括读、写、执行权限,以及文件所有者、所属组等信息。以下是一些常用的 Linux 权限相关的命令和操作: 1. 查看文件和目录权限 使用 `ls -l` 命令可以查看文件和目录的权限信息: ``` ls -l file_name ls -l directory_name ``` 其中,`file_name` 是要查看权限的文件名称,`directory_name` 是要查看权限的目录名称。 2. 修改文件和目录权限 使用 `chmod` 命令可以修改文件和目录的权限: ``` chmod permissions file_name chmod permissions directory_name ``` 其中,`permissions` 是要设置的权限,可以使用数字或符号两种方式设置。数字方式的权限设置方式为三位数,每一位分别代表所有者、所属组和其他用户的权限。符号方式的权限设置方式为 `u`(所有者)、`g`(所属组)、`o`(其他用户)和 `a`(所有用户),以及 `+`(添加权限)、`-`(删除权限)和 `=`(设置权限)等符号。 例如,要将文件 `file.txt` 的所有者权限设置为可读写,所属组权限设置为只读,其他用户权限设置为不可访问,可以使用以下命令: ``` chmod 640 file.txt ``` 3. 修改文件所有者和所属组 使用 `chown` 命令可以修改文件所有者和所属组: ``` chown owner_name file_name chown owner_name:group_name file_name ``` 其中,`owner_name` 是要设置为文件所有者的用户名,`group_name` 是要设置为文件所属组的组名。 例如,要将文件 `file.txt` 的所有者设置为 `user1`,所属组设置为 `group1`,可以使用以下命令: ``` chown user1:group1 file.txt ``` 以上是一些常用的 Linux 权限相关的命令和操作。在 Linux 系统中,文件和目录的权限管理非常重要,可以保护文件和目录的安全性,防止未经授权的访问和操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值