【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),普通用户默认无任何权限,自然无法删除其中的文件。
相关推荐
火龙谷2 小时前
dy自动化遇到的滑动问题
运维·自动化
序属秋秋秋2 小时前
《Linux系统编程之开发工具》【实战:倒计时 + 进度条】
linux·运维·服务器·c语言·c++·ubuntu·系统编程
七夜zippoe3 小时前
Ascend C流与任务管理实战:构建高效的异步计算管道
服务器·网络·算法
IT小哥哥呀5 小时前
Nginx高可用配置实战:负载均衡 + 健康检查 + 动态扩展
运维·nginx·负载均衡·devops·日志分析·openresty·动态扩展
刘某的Cloud5 小时前
ceph osd down排查
linux·运维·ceph·系统·osd
喜欢你,还有大家9 小时前
Docker-仓库-镜像制作
运维·docker·容器
安审若无10 小时前
图数据库neoj4安装部署使用
linux·运维·数据库
做运维的阿瑞10 小时前
CentOS DNS故障排查完整解决方案:从症状到根因的系统化诊断
linux·运维·centos
QT 小鲜肉11 小时前
【个人成长笔记】在 Linux 系统下撰写老化测试脚本以实现自动压测效果(亲测有效)
linux·开发语言·笔记·单片机·压力测试