【Linux仓库】权限的量子纠缠:用户/组/other如何编织Linux访问控制网?

🌟 各位看官好,我是!****

🌍 Linux == Linux is not Unix !

🚀 今天来学习权限的相关知识,权限 = 用户 + 文件权限属性!!!

👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更多人哦!

目录

shell外壳

Linux权限

用户

提权指令

权限理解

角色

修改角色

文件属性

修改权限操作

file指令

修改目录权限

​编辑

umask

粘滞位


shell外壳

Linux严格意义上说的是⼀个 操作系统,我们称之为"核⼼(kernel) " ,但我们⼀般⽤⼾,不能直接使⽤kernel 。⽽是通过 kernel的"外壳"程序,也就是所谓的shell,来与kernel沟通

如何理解?为什么不能直接使⽤kernel?
从技术⻆度,Shell的最简单定义:命令⾏解释器(command Interpreter)主要包含:

  • 将使⽤者的命令翻译给核心(kernel)处理。
  • 同时,将核⼼的处理结果翻译给使⽤者。

对⽐windows GUI,我们操作windows 不是直接操作windows内核,⽽是通过图形接⼝,点击,从
⽽完成我们的操作(进⼊D盘的操作,我们通常是双击D盘盘符.或者运⾏起来⼀个应用程序)。
shell 对于Linux,有相同的作⽤,主要是对我们的指令进⾏解析,解析指令给Linux内核。反馈结果在通过内核运⾏出结果,通过 shell解析给⽤⼾

Linux权限

用户

Linux下有两种用户: 超级用户(root)、普通用户
• 超级 用户 :可以再linux系统下做任何事情,不受限制
• 普通用户:在linux下做有限的事情。
• 超级用户的命令提示符是"#",普通⽤⼾的命令提⽰符是"$"。

root用户有且仅有一个,那么该如何创建普通用户呢?

如何知道当前用户是root用户还是普通用户呢?

指令 :whoami --> 查看当前用户

sudo提权指令

sudo指令能让我在不成为root情况下,执行root有的权限,那我还要root来干什么呢?

sudo并不是每个人都可以执行的,只有该用户受系统信任,即成为白名单用户,才能使用sudo指令。那该如何成为白名单用户呢?

权限理解

在现实生活中,一个人具不具备权限是由人和事物属性组成,即 权限 = 人 + 事物属性

而 人 在生活中又由两方面组成 ,即 人 = 真实的你 + 扮演角色。

什么意思呢?

假设你是某公司的总董,名字叫做张三。在平日的上下班途中,他人对你毕恭毕敬,见你一声都要喊声老板好!而他人对你喊老板的原因并不是因为你是张三,而是因为你是老板的原因才对你打招呼。因此,从这里可以看出,角色在我们的生活中占有重大地位。

那么在Linux当中,权限 = 用户 + 文件权限属性!!!

我们说过Linux一切皆文件:

文件权限 = 角色 + 文件属性。

**文件权限理解:具不具备某种能力,可不可以做,也需要有对应"权限"。**该文件是由谁创建的,他人是否可以进行修改,这不就是角色吗?而事物属性不就是文件属性?

决定了我们对文件权限的讨论是从角色和文件属性方面进行!!!

角色

似乎角色从浅层理解只分为:自己、其他人。但是在生活中,公司开会,制作PPT等等都需要有决策人、协作者、其他人。这决定了角色的扮演并不是那么简单。

因此在计算机当中角色分为:拥有者、所属组、其他人
• ⽂件和⽂件⽬录的所有者:u(user)
• ⽂件和⽂件⽬录的所有者所在的组的⽤⼾:g(group)
• 其它⽤⼾:o(other)

修改角色
  1. chown
    功能: 修改⽂件的拥有者
    格式:chown [参数] ⽤⼾名 ⽂件名
  2. chgrp
    功能: 修改⽂件或⽬录的所属组
    格式:chgrp [参数] ⽤⼾组名 ⽂件名
    常⽤选项:-R 递归修改⽂件或⽬录的所属组

文件属性

Windows中是用文件后缀区分文件类型的;

Linux中是用文件的属性列区分文件类型的。

修改权限操作

chmod
功能: 设置⽂件的访问权限
格式:chmod [参数] 权限 ⽂件名
常⽤选项:
• R -> 递归修改⽬录⽂件的权限
• 说明:只有 ⽂件的拥有者和root才可以改变⽂件的权限
chmod命令权限值的格式:
• ⽤⼾表⽰符+/-=权限字符
◦ +:向权限范围增加权限代号所表⽰的权限
◦ -:向权限范围取消权限代号所表⽰的权限
◦ =:向权限范围赋予权限代号所表⽰的权限
⽤⼾符号:
◦ u:拥有者
◦ g:拥有者同组⽤
◦ o:其它⽤⼾
◦ a:所有⽤⼾
• 三位8进制数字

同时方法一也可以一次性修改多个角色权限


file指令

功能说明:辨识⽂件类型。
语法: file [ 选项 ] ⽂件或⽬录 ...


修改目录权限

可读权限(r) : 如果⽬录没有可读权限, 则⽆法⽤ls等命令 查看⽬录中的⽂件内容 .
可写权限(w) : 如果⽬录没有可写权限, 则 ⽆法在⽬录中创建⽂件, 也⽆法在⽬录中删除⽂件.
可执⾏权限(x) : 如果⽬录没有可执⾏权限, 则 ⽆法cd到⽬录中 .

umask

创建普通文件时的默认权限一直都是 rw- r-- r--,而目录文件的默认权限一直都是 rwx r-x r-x。(注意:我的起始权限和你的起始权限可能不一样,这是由umask决定的,但每次创建新文件时一定都是相同的)。

为什么开始各角色的默认权限是这样子的呢?这与umask有关

文件权限 = 起始权限 + umask

普通文件的起始权限应该是rw- rw- rw-;

目录文件的起始权限应该是rwx rwx rwx。
umask
功能:
• 查看或修改⽂件掩码
• 但实际上你所创建的⽂件和⽬录,看到的权限往往不是上⾯这个值。原因就是创建⽂件或⽬录的
时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的⽂件权限是: mask &
~umask

普通文件最终权限: rw- r-- r--

目录文件最终权限: rwx r-x r-x

完全用这一点并不能说明权限与umask具有关联,我们反向证明只要修改umask的值,从而达到我们想要的结果时,则可以文件或目录确实受到umask的影响。


粘滞位

超级用户root在egoist用户的路径下新建了一个文件,将该文件的other的w权限删了,那么other便不能删除该文件,但是在egoist用户下竟然能删除该文件,这是为什么呢?

可以看到家目录的每个普通用户的other权限都是默认没有的,因此普通用户之间是没法相互串门的,只有root能随意进出,因为它是超级用户无视权限。

为了让用户之间能够相互串门,我们在根目录下新建了shared目录,并将other的r和x权限打开 , 让用户可以进入该目录并查看该目录的内容,但是用户在根目录下肯定也要有新建文件的能力,否则这个shared目录依旧只能有root来增删改。正因如此,root不得不将other的w权限加上,但有了w权限后,用户之间会出现互删的问题!!!

为了解决这种问题,我们引入了粘滞位
当⼀个⽬录被设置为"粘滞位"(⽤chmod +t),则该⽬录下的⽂件只能由
1. 超级管理员删除
2. 该⽬录的所有者删除
3. 该⽂件的所有者删除


相关推荐
滴水之功2 分钟前
C语言数据结构-链式栈
linux·c语言·数据结构
liulilittle3 分钟前
Ubuntu 18.04 升级内核到 5.X(< 5.10)
linux·运维·服务器·ubuntu
老攀呀8 分钟前
CentOS系统上挂载磁盘
linux·运维·centos
梅孔立12 分钟前
centos原系统安装了Python3.7.9兼用在安装一个python3.8
linux·运维·centos
aqi0017 分钟前
FFmpeg开发笔记(六十一)Linux给FFmpeg集成H.266编码器vvenc
linux·ffmpeg·音视频·直播·流媒体
sanggou23 分钟前
CentOS 7.6 升级 Openssl 及 Openssh 方法文档
linux·运维·centos
It's Q30 分钟前
接口自动化可视化展示
运维·python·测试工具·自动化
yi个名字38 分钟前
Linux环境变量与地址空间
linux·前端·计算机网络
虾球xz1 小时前
WSL 下面 Buildroot + QEMU 环境记录一下
linux·嵌入式·qemu
安科瑞刘鸿鹏1 小时前
工商业预付费系统组成架构及系统特点介绍
运维·物联网·安全·架构