【Linux】权限(2):文件权限的深入理解&&粘滞位

前文回顾:【Linux】权限(1):初识权限与使用理解

目录

[一 引入](#一 引入)

[二 为什么新建文件的时候,新建的文件的权限就是我们看到的权限](#二 为什么新建文件的时候,新建的文件的权限就是我们看到的权限)

[三 粘滞位](#三 粘滞位)

[四 权限总结](#四 权限总结)

[五 问题解释](#五 问题解释)

(1)决定文件或目录默认权限的关键因素

[(2)root 新建的文件,普通用户能否删除](#(2)root 新建的文件,普通用户能否删除)



一 引入

我们在上一篇遗留了两个问题,我们先来回顾一下:

(1)进入一个目录需要什么权限?

对目录来讲:

  1. x 决定是否能进入
  2. r 决定是否能查看目录下的文件信息
  3. w 决定在指定的目录下,是否能够删除和新建文件文件是否能被删除,由所在的目录 w 决定!!!!!(不由拥有者决定)

(2)什么决定了文件或目录的默认权限?

(3)root新建的文件,普通用户不读不写不执行,可以删除吗?

我们来通过下面的讲解来解答这两个问题。


二 为什么新建文件的时候,新建的文件的权限就是我们看到的权限

标题的意思是:为什么我们创建好一个新文件或新目录时,它的拥有者,所属组,other的权限都是已经确定好的

当我们新建一个普通文件时:

发现它的权限是664

普通文件,开始的时候,就要具备x,不是主流!!
文件的起始权限:666-->不给x--->除非是二进制可执行文件或使用指令 chmod ugo +x +filename自己加权限

Linux系统中,会存在一个叫做权限掩码的东西,使用指令umask查看当前设备的权限掩码

一般程序设定的掩码为0002,但是我们也可以自己修改掩码

对于一个目录而言,目录具有x权限是刚需!!!

因为什么目录新建,默认就要能被进入!

目录的起始权限:从777开始

细节1:不同的系统,不同的用户,umask可能会不一样!

细节2:不用担心umask被更改的问题,退出登录,重新登录,umask就会恢复默认

细节3:如何创建一批普通文件: 示例:touch hello{1..100}.txt 删除时也可以一起删除:rm hello{1..100}.txt


三 粘滞位

删除文件,不由目标文件决定,由你这个文件所在的目录权限决定

我们根据目录的权限知道,只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论

这个用户是否有这个文件的写权限.

这好像不太科学啊,我张三创建的⼀个文件,凭什么被你李四可以删掉?我们用下面的过程印证⼀下.

bash 复制代码
[root@localhost ~]$ chmod 0777 /home/
[root@localhost ~]$ ls /home/ -ld 
drwxrwxrwx. 3 root root 4096 9⽉ 19 15:58 /home/
[root@localhost ~]$ touch /home/root.c
[root@localhost ~]$ ls -l /home/
总⽤量 4
-rw-r--r--. 1 root root 0 9⽉ 19 15:58 abc.c
drwxr-xr-x. 27 litao litao 4096 9⽉ 19 15:53 litao
-rw-r--r--. 1 root root 0 9⽉ 19 15:59 root.c
[root@localhost ~]$ su - litao
[litao@localhost ~]$ rm /home/root.c #litao可以删除root创建的⽂件 
rm:是否删除有写保护的普通空⽂件 "/home/root.c"?y
[litao@localhost ~]$ exit 
logout

为了解决这个不科学的问题,Linux引入了粘滞位的概念.

我们先来谈谈文件删除的问题:

我们发现:普通用户能自己删除自己创建的文件,超级用户能自己删除自己创建的文件,但是普通用户能删除超级用户创建的文件,超级用户也能删除普通用户创建的文件

关于Linux文件共享的话题

**当⼀个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

  1. 超级管理员删除
  2. 该目录的所有者删除
  3. 该文件的所有者删除**

四 权限总结

• 可执行权限:如果目录没有可执行权限,则无法cd到目录中.
• 可读权限:如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容.
• 可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件.

1)目录的可执行权限是表示你可否在目录下执行命令;

(2)如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目,即使目录仍然有-r读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件);

(3)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限;

(4)所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。


五 问题解释

学习完上面的内容,我们就能回答开始剩下的两个问题了:

(1)决定文件或目录默认权限的关键因素

文件或目录的默认权限由umask(权限掩码) 决定,它的作用是从系统预设的基础权限中 "减去" 相应权限,最终得到创建时的默认权限。

  1. 系统预设基础权限不同:目录的基础权限是 rwxrwxrwx(数字表示为 777),文件的基础权限是 rw-rw-rw-(数字表示为 666)。
  2. umask 的数字值代表要移除的权限,例如默认 umask 值 022,意味着会移除 "组用户" 和 "其他用户" 的写权限(w)。

(2)root 新建的文件,普通用户能否删除

普通用户不能直接删除 这类文件,删除权限不取决于文件本身的权限,而取决于文件所在目录的权限

  1. 删除操作的权限核心在目录:要删除一个文件,本质是 "修改目录内容"(移除目录中该文件的条目),所以关键看普通用户对文件所在目录是否有 w(写)权限x(执行)权限
  2. 文件自身权限不影响删除:即使文件是 root 创建且权限为 "---------"(无任何权限),只要普通用户对其所在目录有 w 和 x 权限,就能删除该文件;反之,若目录无 w 权限,即便文件开放所有权限,也无法删除。
  3. root 权限的特殊性:如果文件所在目录是 root 专属(如 /root),普通用户默认无任何权限,自然无法删除其中的文件。
相关推荐
正在学习前端的---小方同学3 小时前
Harbor部署教程
linux·运维
牛奔4 小时前
Docker Compose 两种安装与使用方式详解(适用于 Docker 19.03 版本)
运维·docker·云原生·容器·eureka
翼龙云_cloud4 小时前
阿里云渠道商:如何手动一键扩缩容ECS实例?
运维·服务器·阿里云·云计算
Sean X5 小时前
Ubuntu24.04安装向日葵
linux·ubuntu
墨风如雪5 小时前
拒绝被找回!MJJ必修课:Outlook邮箱交易后的“防回手”安全设置全攻略
服务器
DX_水位流量监测6 小时前
大坝安全监测之渗流渗压位移监测设备技术解析
大数据·运维·服务器·网络·人工智能·安全
电商API&Tina6 小时前
京东 API 数据采集接口接入与行业分析
运维·服务器·网络·数据库·django·php
IT 乔峰6 小时前
脚本部署MHA集群
linux·shell
dz小伟6 小时前
execve() 系统调用深度解析:从用户空间到内核的完整加载过程
linux
Mr_Xuhhh6 小时前
博客标题:深入理解Shell:从进程控制到自主实现一个微型Shell
linux·运维·服务器