【Linux】shell 及权限理解(下)

简介: 【Linux】shell 及权限理解(下)

为什么我是所属组,且所属组有对该文件的所有权限,我还是不能够对文件进行相关的操作呢?因为系统的角色匹配结构是 if-else if - else 结构,而不是 if-if-if 结构。只要前面的角色匹配上了,就只能拥有该角色对该文件的权限,无法拥有其他角色对该文件的权限。其实如果 Linux 系统采取 if-if-if 的匹配结构,你想去除拥有者的权限,那么你也要去除所属组所对应的权限。这样是不合理的,因为所属组可能还有有其他人。

root 用户不受任何权限的约束


7ada6d4513d94731b530bc005b1b70c5.png

sudo chown 用户名 文件名 #将指定文件的拥有者改为指定用户
sudo chgrp 用户名 文件名 #将指定文件的所属组改为指定用户
sudo chown 用户名1:用户名2 文件名 #将指定文件的拥有者和所属组改为指定用户
#-R 递归修改文件或目录的拥有者或所属组

注:修改文件的拥有者和所属组都需要使用 root 用户,也可以使用 sudo 指令暂时提权。

6368f03fe4394ab9a9c01f8e6fea3527.png

aece69d0872d45cabe5f1b466202597a.png



48b835e24f8a458a9ce89a7f3dac891d.png


d40031072a594e4591fe57407b22a969.png

②三位8进制数字


8fcf2ba270384276a937fe60d00d8759.png


b5225e775e364263adf35c0866126217.png


文件相关指令


1.file指令


功能说明:辨识文件类型。

语法: file [选项] 文件或目录…

常用选项

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形
  • -z 尝试去解读压缩文件的内容


9190de4e064c405a915622c74226b7fe.png

2.umask指令


为什么要有权限呢?便于我们和系统进行安全管理!


那又为什么我们创建的目录或者普通文件,其默认权限是我们所看到的样子呢?

5efccbef2bda4994a09934535297bc70.png

其实,Linux 规定了目录的起始权限是 777,而普通文件的起始权限是 666。除了起始权限,Linux 系统还有一个权限掩码,超级用户默认掩码值为0022,普通用

户默认为0002。(注:最开头的 0 不需要管,可以看做八进制数的标志)系统默认会配置好 umask 权限掩码。凡是在 umask 权限掩码中出现的权限,都必须在起始权限中去掉。

f02820c89db54ba2bb4918bbbc2819cd.png

那去掉 umask 权限掩码中出现的权限是什么意思呢?是做减法吗?学习这个之前,我们先来学习一下 umask 指令的用法。


umask

功能: 查看或修改文件掩码

用法: umask 权限值


umask #查看权限掩码
umask 数字 #将权限掩码改为指定数字

ac1f7dc5c57442859bfc8f59976c5aee.png

那么现在我们来回答上面的问题:去掉是做减法吗?我们来看一下。


84d474e3c71d4590a6ffe1949a60196c.png


通过上图的推导,我们可以知道去掉并不是做减法,那么去掉究竟是什么意思呢?其实是通过位运算来达到去掉的目的。最终权限 = 起始权限 & (~mask)


e611cc0f13ad4566abd815f94451dbfb.png


那为什么这样子就能做到去掉权限掩码中出现的权限呢?因为默认 umask 权限掩码中的 1 表示要去掉的权限位,0 表示要保留的权限位。那么,~umask中的 1 表示要保留的权限位,0 表示要去掉的权限位。那么起始权限和 ~umask 按位与就能够做到去掉权限掩码中出现的权限了。


目录的权限


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


558fcef1cfbc4033a5fb19749af0d69a.png


90d63c233ad54ab495418eb3704fb290.png


如果我们要进入一个目录,需要该目录的可执行权限。所以,系统就规定目录的起始权限是 777 。因为所有的目录被创建出来,一般都要能够被进入的。而大部分普通文件都是不可执行的,所以普通文件一般被创建出来都是没有可执行权限的。


粘滞位


Linux 系统中有很多用户,有时候用户需要在一个公共的目录下,进行临时文件的操作(增删查改)。那么系统也有这样的目录来满足用户的需求。

3b896b16ec0545568edd3d3bfa5b75b2.png

24e452dc56bc44b88e2b4732772c2ad1.png

那为什么张三为什么不在李四的家目录下操作呢?因为没有权限。粘滞位是在一个公共的目录下,大家一起进行文件操作,其创建者是 root 用户。


那现在我们就自己手动创建一个公共目录吧!

e49f6a666f9d4697962f2454d8c5d118.png

张三和李四在公共目录下创建自己的文件。

bc114c8559834fb38d0973c5e5bfe90d.pngbf2444583d4b4af6be7151473310f424.png


李四不能没有张三创建的文件的写权限和可执行权限


5e63d796cccd457db62052da9331c9d7.png

李四没有张三创建的文件的任何权限,却可以删除张三的文件。

7a15dd3badcf49519c88a3d12e8ce886.png


其他人对一个文件没有任何权限,却可以删除该文件,这样子合理吗?其实很合理,因为能不能删除一个文件并不取决于用户对该文件有没有权限,而是取决于用户对于该目录有没有读权限。


424986ac9b304f3bbf53bac9bbb2ee51.png


一个文件能不能被删除取决于目录权限,而公共目录对任何人都有读写执行权限。所以任何人都能删除其他人在公共目录下的文件。那这样是不是非常不合理?我在公共目录下创建的文件居然被你删掉了,那怎么行呢?


那我们怎么才能让大家在一个公共目录进行 rwx 操作,但禁止大家互删对方的文件呢?那么,这时候就需要给公共目录设置粘滞位(权限的一种特殊情况)。


注:粘滞位只能给目录进行设置。


chmod +t 目录名 #给公共目录设置粘滞位


65c92ea2f2ff45c5b7f64d70cf6a3d59.png

设置完粘滞位后,我们再来看看李四能不能删除张三的文件了。

eb93f155e3b94b68abef7352bf5c22d1.png


通过上图,我们可以看到:给公共目录设置好粘滞位后,用户无法删除别的用户的文件,只能删除自己的文件。


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


  • 超级管理员删除
  • 该目录的所有者删除
  • 该文件的所有者删除


👉总结👈


本篇博客主要讲解了shell 命令及其运行原来、权限的概念、权限管理、文件相关指令以及粘滞位等等。那么以上就是本篇博客的全部内容了,如果大家觉得有收获的话,可以点个三连支持一下!谢谢大家!💖💝❣️






相关文章
|
4月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
121 4
|
4月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
266 3
|
5月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
418 25
|
5月前
|
Linux Shell
shell_42:Linux参数移动
总的来说,参数移动是Linux shell脚本中的一个重要概念,掌握它可以帮助我们更好地处理和管理脚本中的参数。希望这个解释能帮助你理解和使用参数移动。
89 18
|
7月前
|
安全 Unix Linux
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
25000多字详细讲解,深度剖析权限管理核心。从基础权限到复杂的特殊权限,逐一拆解,无论你是零基础小白还是经验丰富的运维人员,都能在这里找到提升技能的关键知识,全面掌握 Linux 权限管理。还不快来看看?
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
|
7月前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
590 32
|
6月前
|
安全 Linux 数据安全/隐私保护
【Linux】深入理解linux权限
本文深入解析Linux权限管理机制,涵盖权限概念、用户角色、文件属性及操作方法。文章分为前言、权限介绍、用户与角色、文件属性、权限修改及常见问题六大板块。详细说明了权限类型(r/w/x)、角色优先级、chmod/chown指令用法,以及目录权限、umask掩码、粘滞位等重点内容。掌握这些知识,可有效提升Linux系统安全性和灵活性,是管理员必备技能。喜欢的话别忘了点赞支持哦! ❤❤❤
344 6
|
7月前
|
安全 Linux 数据安全/隐私保护
Linux权限揭秘“Root与Sudo”
Root用户是Linux系统中的超级用户,拥有对系统的完全控制权。Root用户几乎可以执行任何命令,修改任何文件,甚至删除系统上的所有内容。因此,Root用户的使用需要非常谨慎,以避免潜在的安全风险。
303 6
|
10月前
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
221 1
linux特殊权限!!
|
10月前
|
存储 Shell Linux
Linux 如何更改默认 Shell
Linux 如何更改默认 Shell
Linux 如何更改默认 Shell