探秘Linux权限管理:数字背后的守望与秩序
文章目录
- 引言
- 一. shell命令及其运行原理
- 二. linux权限概念
- 三. Linux权限管理与表示
- 四. 文件访问权限的相关接口
- 1.chmod
- 2. chowm
- 3. chgrp指令
- 4. umask指令
- 五. 目录权限
- 粘滞位
- 六. 特殊权限
- 小结

引言
在浩瀚如星海的计算世界中,Linux 作为一颗璀璨的星辰,闪耀着无尽的光辉。它凭借其稳定性、开源性与强大的可定制性,早已在众多领域中扎根。而在这座数字王国的背后,便是复杂却精妙的权限管理体系,像一道无形的护盾,守护着系统的安全与秩序。Linux 权限管理不仅仅是简单的“允许”和“拒绝”,它更是对每一位用户行为的细致规划与引导,是对信息世界中每一个行为的缜密监控与调控。
让我们在这篇文章中,走进 Linux 权限管理的深邃森林,探寻那隐藏在文件系统中的秩序与守护,去理解它如何通过精巧的机制,将每一份数据、每一个动作精确地赋予合适的权利。
一. 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下做有限的事情。
• 超级⽤⼾的命令提⽰符是“#”,普通⽤⼾的命令提⽰符是“$”。
- 命令:su [⽤⼾名]
- 功能:切换⽤⼾。
例如,要从root⽤⼾切换到普通⽤⼾user,则使⽤ su user。
要从普通⽤⼾user切换到root⽤⼾则使⽤ su root(root可以省略),此时系统会提⽰输⼊root⽤⼾的⼝令。
su和su -都可以切换用户,但su -会改变当前目录
sudo用于指令的短暂提权,而非切换用户
whoami可以查看当前用户
三. Linux权限管理与表示
- ⽂件访问者的分类(⼈)
• ⽂件和⽂件⽬录的所有者:u—User(中国平⺠ 法律问题)
• ⽂件和⽂件⽬录的所有者所在的组的⽤⼾:g—Group(不多说)
• 其它⽤⼾:o—Others (外国⼈) - ⽂件类型和访问权限(事物属性)
• ⽂件类型:
◦ d:⽂件夹
◦ -:普通⽂件
◦ l:软链接(类似Windows的快捷⽅式)
◦ b:块设备⽂件(例如硬盘、光驱等)
◦ p:管道⽂件
◦ c:字符设备⽂件(例如屏幕等串⼝设备)
◦ s:套接⼝⽂件
• 基本权限:
◦ 读(r/4):Read对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览该⽬录信息
的权限
◦ 写(w/2):Write对⽂件⽽⾔,具有修改⽂件内容的权限;对⽬录来说具有删除移动⽬录内
⽂件的权限
◦ 执⾏(x/1):execute对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录来说,具有进⼊⽬录的权
限
◦ “—”表⽰不具有该项权限
在 Linux 中,文件和目录的权限由以下三种操作控制:
读取(Read,r):查看文件内容或列出目录内容。
写入(Write,w):修改文件内容或在目录中添加、删除文件。
执行(Execute,x):执行文件(如脚本或程序)或进入目录。
他们有最前面的这一系列字符串表示,每三个为一组,按照拥有者,所属组,其他用户的权限分为三组。
这些权限可以被分配给三种类型的用户:
- 文件所有者(User):文件的创建者或拥有者。
- 用户组(Group):与文件所有者同属一个组的用户。
- 其他用户(Others):不属于文件所有者和用户组的所有其他用户。
四. 文件访问权限的相关接口
1.chmod
功能:设置文件的访问权限
注意事项:只有文件的拥有者和root用户才有权修改文章权限
chmod命令权限值的格式有两种:
① 用户表示符+/-=权限字符
+: 向权限范围增加权限代号所表示的权限
-: 向权限范围取消权限代号所表示的权限
= : 向权限范围赋予权限代号所表示的权限
用户符号 :
u :拥有者
g :拥有者同组用
o :其它用户
a :所有用户
例如:
chmod u+w /home/ccc.txt
② 三位8进制数字
除了上面用字母表示外,我们还可以用八进制数字的方法来表示:
chmod 664 /home/ccc.txt
2. chowm
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
注意事项:只有root用户才有权修改文件的拥有者
选项:-R 递归修改文件的拥有者
实例:
chown user1 f1
chown -R user1 filegroup1
3. chgrp指令
功能:修改文件的所属组
格式:chown [参数] 用户组名 文件名
注意事项:只有root用户才有权修改文件的所属组
选项:-R 递归修改文件的所属组
实例:
chgrp users /abc/f2
4. umask指令
功能:查看或修改文件掩码
- 新建⽂件夹默认权限=0666
- 新建⽬录默认权限=0777
但实际上你所创建的⽂件和⽬录,看到的权限往往不是上⾯这个值。原因就是创建⽂件或⽬录的时候还要受到umask的影响。
假设默认权限是mask,则实际创建的出来的⽂件权限是: mask &~umask
格式:umask 权限值
在讲解之前,我们首先来了解什么是文件掩码
- 如图,我们创建了一个目录和一个普通文件
- 当我们查看它们两个权限时,我们可以看到目录文件的权限为775(八进制数组表示),普通文件的权限为664
但实际上默认权限与我们所看到的是有差别的,目录文件的默认权限为777,普通文件的默认权限为666,之所以我们看到的是上面的,就是因为掩码的存在
我们可以通过umask查看掩码:
我们可以看到掩码为0002,加到775中和664中恰好就是默认权限值,所以也就是说我们实际上得到的文件与默认权限相比,缺少了部分权限,而这一部分权限就是umask掩码中的权限
五. 目录权限
目录的权限与上面讲的文件的权限的内容是有不同的
目录文件的三种权限的结果如下:
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
也就是说,当一个用户对一个目录文件有写权限时,就可以删除里面的文件,即使这个用户可能对里面的文件并没有任何权限
但是这样就会导致一个问题,当我们以后在工作中,如果我们使用了网上的一个开源的目录文件,我们都是这个目录文件所属组的一员,且具有写权限,那么是不是意味着如果我们在这个目录文件下创建一个文件,别人可以随意的删除?
为了解决这个问题,我们引入了粘滞位
的概念
粘滞位
当设置在目录上的粘滞位时,只有目录的所有者
或超级管理员
可以删除或重命名该目录中的文件。标志位用 t 显示在其他用户权限的位置。
chmod +t dir # 设置粘滞位
目录的可执行权限是表示你可否在目录下执行命令。
- 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
- 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
六. 特殊权限
Linux中除了基本的权限外,还给了三种特殊的权限,上面的粘滞位就是其中一种
如下:
- Set UID(SUID):
当设置了 SUID 权限的可执行文件被运行时,程序以文件所有者的权限运行。标志位用 s 显示在所有者权限的位置。 - Set GID(SGID):
与 SUID 类似,但程序以用户组的权限运行。标志位用 s 显示在用户组权限的位置。 - Sticky Bit:
当设置在目录上的 Sticky Bit 时,只有文件的所有者可以删除或重命名该目录中的文件。标志位用 t 显示在其他用户权限的位置。
设置这些特殊权限时,可以使用 chmod 命令:
chmod u+s file.txt # 设置 SUID
chmod g+s dir # 设置 SGID
chmod +t dir # 设置 Sticky Bit
小结
Linux 权限管理的魅力在于其精细与灵活。它不仅能够有效地保护系统免受未授权访问,还能够为系统管理员提供强大的工具,以满足不同场景下的安全需求。从最基本的用户、组、其他的权限设定,到更高级的 setuid 和 sticky bit,每一个权限设置都承载着对系统秩序的严格把控。
本篇关于linux权限管理的介绍就暂告段落啦,希望能对大家的学习产生帮助,欢迎各位佬前来支持斧正!!!