Linux 5 目录权限与粘滞位详解

🔥个人主页: Milestone-里程碑

❄️个人专栏: <<力扣hot100>> <<C++>><<Linux>>

<<Git>><<MySQL>>

🌟心向往之行必能至

目录

一.前言:核心问题(面试高频)

二.umask:隐形的权限调控者

三:目录权限:特殊的逻辑

3.1⽬录的权限(与文件不同)

四.粘滞位:解决目录不科学的问题


一.前言:核心问题(面试高频)

1.进入一个目录需要什么文件

2.什么决定了目录和文件的默认权限

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

问题一:
⽬录的权限

• 可执⾏权限: 如果⽬录没有可执⾏权限, 则⽆法cd到⽬录中.
• 可读权限: 如果⽬录没有可读权限, 则⽆法⽤ls等命令查看⽬录中的⽂件内容.
• 可写权限: 如果⽬录没有可写权限, 则⽆法在⽬录中创建⽂件, 也⽆法在⽬录中删除⽂件.
所以回答问题一:进入目录需要可执行权限
但这也导致一个问题三,用户并不需要文件的写权限,只要有root的写权限,即可进行删除,是一个大坑,此处暂留,先回答问题二,进入下一个主题

二.umask:隐形的权限调控者

umask(用户文件创建掩码)是 Unix/Linux 系统中用于控制新创建文件和目录默认权限的机制。它通过屏蔽(屏蔽掉)特定的权限位,决定文件或目录的初始权限。
功能:

• 查看或修改⽂件掩码
• 新建⽂件夹默认权限=0666(可读可写)
• 新建⽬录默认权限=0777(可读可写可执行)
• 但实际上你所创建的⽂件和⽬录,看到的权限往往不是上⾯这个值。原因就是创建⽂件或⽬录的 时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的⽂件权限是: mask & ~umask
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产⽣建⽴⽂件时预设权限。超级⽤⼾默认掩码值为 0022,普通⽤⼾默认为0002。
umask 755
• umask //查看
• umask 044//设置

示例

bash 复制代码
root@hcss-ecs-1cde:~# umask
0022
root@hcss-ecs-1cde:~# mkdir s
total 4
drwxr-xr-x 2 root root  4096 Dec 12 14:36 s
//更改umask值,导致新建的目录与文件默认权限改变
root@hcss-ecs-1cde:~# umask 0222
root@hcss-ecs-1cde:~# umask
0222
root@hcss-ecs-1cde:~# mkdir ss
root@hcss-ecs-1cde:~# ls -l
total 60
drwxr-xr-x 2 root root  4096 Dec 12 14:36 s
dr-xr-xr-x 2 root root  4096 Dec 12 14:38 ss

三:目录权限:特殊的逻辑

3.1⽬录的权限(与文件不同)

• 可执⾏权限: 如果⽬录没有可执⾏权限, 则⽆法cd到⽬录中.
• 可读权限: 如果⽬录没有可读权限, 则⽆法⽤ls等命令查看⽬录中的⽂件内容.
• 可写权限: 如果⽬录没有可写权限, 则⽆法在⽬录中创建⽂件, 也⽆法在⽬录中删除⽂件.
所以删除目录下的文件,只需要该目录可写即可,与文件的权限无关!!!

⽬录的可执⾏权限是表⽰你可否在⽬录下执⾏命令。
• 如果⽬录没有 -x 权限,则⽆法对⽬录执⾏任何命令,甚⾄⽆法 cd 进⼊⽬, 即使⽬录仍然有 -r 读 权限(这个地⽅很容易犯错,认为有读权限就可以进⼊⽬录读取⽬录下的⽂件)
• ⽽如果⽬录具有 -x 权限,但没有 -r 权限,则⽤⼾可以执⾏命令,可以 cd 进⼊⽬录。但由于没有 ⽬录的读权限
• 所以在⽬录下,即使可以执⾏ ls 命令,但仍然没有权限读出⽬录下的⽂档。

四.粘滞位:解决目录不科学的问题

上面的目录权限,我们知道用户可以删除其他人的文件,为了修复,Linux引入了粘滞位这一概念

常用于共享目录(如/tmp),防止用户误删他人文件。

且当⼀个⽬录被设置为"粘滞位"(⽤chmod +t),则该⽬录下的⽂件只能由

  1. 超级管理员删除
  2. 该⽬录的所有者删除
  3. 该⽂件的所有者删除

示例:推荐大家去实践,简单

bash 复制代码
//创建文件和加上粘滞位
root@hcss-ecs-1cde:~# mkdir s
root@hcss-ecs-1cde:~# cd s
root@hcss-ecs-1cde:~/s# touch test
root@hcss-ecs-1cde:~/s# chmod +t /home/s/test
//切换进行删除
root@hcss-ecs-1cde:~# su lisi
//没有权限,删除失败
lisi@hcss-ecs-1cde:/root$ rm -rf s
rm: cannot remove 's': Permission denied
相关推荐
酉鬼女又兒2 小时前
SQL113+114 更新记录(一)(二)+更新数据知识总结
java·服务器·前端
yi.Ist2 小时前
关于若干基础的几何问题
c++·学习·算法·计算几何
程序员哈基耄2 小时前
安全高效,本地运行:全能文件格式转换工具
大数据·python·安全
zuozewei2 小时前
零基础 | AI应用记忆管理:从短期到长期的完整实践指南
运维·服务器·人工智能
毅炼2 小时前
Netty 常见问题总结
java·网络·数据结构·算法·哈希算法
Anastasiozzzz2 小时前
leetcodehot100--最小栈 MinStack
java·javascript·算法
馨谙2 小时前
shell编程实际应用----磁盘空间监控与告警
linux·运维·服务器
跃渊Yuey2 小时前
【Linux】线程概念
linux
历程里程碑2 小时前
双指针2--盛水最多的容器
大数据·数据结构·算法·leetcode·elasticsearch·搜索引擎·散列表