目录
一、前言
二、shell命令运行原理
1.shell的定义和功能
2.一则小故事快速理解shell
3.总结
三、Linux权限
1.权限是什么?
1.su&&sudo
2.Linux权限管理
1.三个权限角色:u/g/o
2.三种权限属性:-/r/w/x
3.文件权限值的两种表示方法
3.设置权限的指令
1.chmod
2.chown
3.chgrp
四、关于权限的三个问题
1.进入一个目录需要r/w/o中的哪个权限?(面试题)
目录的r/w/o权限都管理什么?(知识点)
2.为什么在创建一个目录/文件时,系统默认给的权限是775/664?
1.引出权限掩码(umask)
2.对目录/普通文件默认权限的解释
3.粘滞位(面试题)
五、小结
一、前言
前文博主结合理论知识向大家介绍了Linux系统的一些基础指令,相信大家收获颇多!指令部分的学习相对来说有些枯燥,本文博主要向大家介绍shell外壳的运行原理和Linux的权限管理问题,“Linux下一切皆文件”,想要保护自己的文件,对文件权限进行管理是我们必不可少的技能。废话不多说,下面直接开启我们今天的学习!
二、shell命令运行原理
1.shell的定义和功能
从技术⻆度,Shell的最简单定义:命令⾏解释器(command Interpreter)主要包含:1.将使⽤者的命令翻译给核⼼处理。2.同时,将核⼼的处理结果翻译给使⽤者。
2.一则小故事快速理解shell
背景:有一个人叫小王,他爹是村长叫老王,他爹想让小王赶紧找一个对象结婚,村头有一个叫“王婆”的媒婆,专门替人说媒。小王有一个老同学叫“如花”,小王看上了如花。
第一幕:
小王从小没有和女生打过交道,不知道怎么和女生讲话,但是他想和如花结婚,于是就去找能说会辩的王婆,给她说:“我喜欢如花,你帮我说媒吧王婆”。王婆答应了小王的请求,去如花家里找她说媒。王婆进如花家先问她没有直接告诉如花来意,而是旁敲侧击的问对小王印象怎么样,如花说:“这个人邋里邋遢的,我不喜欢他”。于是王婆就走了,告诉小王“如花觉得她配不上你”。
在此场景里:
1.为什么要存在王婆?——因为小王不擅长和女生打交道。
2.Linux系统为什么要存在shell外壳?——因为用户无法直接使用操作系统。
第二幕:
小王听不懂王婆善意的谎言,还想让王婆去找如花说说。王婆迫于小王的老爸是村长,还是硬着头皮去找如花,还没进门,就看见村里的小帅在如花家里和如花的家人其乐融融的一起吃饭,很明显如花已经心有所属了,王婆也没开口说请求,走了。
在此场景里:
王婆拦截了小王的非法请求,保护了如花。
等价替换,外壳程序拦截了非法请求,变相的保护了内核。
3.总结
1.Linux用到的shell外壳程序,叫做bash,bash是命令行外壳程序的统称,是shell的一种。
2.如果媒婆是shell外壳,那么王婆就是bash。
三、Linux权限
1.权限是什么?
Linux下有两种⽤⼾:超级⽤⼾(root)、普通⽤⼾。超级⽤⼾:可以再linux系统下做任何事情,不受限制普通⽤⼾:在linux下做有限的事情。超级⽤⼾的命令提⽰符是“#”,普通⽤⼾的命令提⽰符是“$”。
1.su&&sudo
场景:我们平时使用的指令都存在于/usr/bin/路径下,普通用户权限受限制,不能向该路径下拷贝文件(/usr/bin/是系统路径,仅root账号有修改权限)。
解决方案一:把普通账号变成root(仅限管理员做)
命令:su [⽤⼾名]功能:切换⽤⼾。例如,要从root⽤⼾切换到普通⽤⼾user,则使⽤ su user。要从普通⽤⼾user切换到root⽤⼾则使⽤ su root(root可以省略),此时系统会提⽰输⼊root⽤⼾的⼝令。
解决方案二:sudo提权(适合所有用户做)
注意:不是所有的普通账号都能sudo提权。
2.Linux权限管理
1.三个权限角色:u/g/o
⽂件访问者的分类(⼈)1.⽂件和⽂件⽬录的拥有者:u---User2.⽂件和⽂件⽬录的所有者所在的组的⽤⼾:g---Group(不多说)3.其它⽤⼾:o---Others (除了拥有者和所属组其余的都是other)
ll指令展示文件属性时,只会显示拥有者和所属组,而不会显示other(不太重要)!
如图所示:第一个root代表文件的拥有者,第二个root代表文件的所属组。
2.三种权限属性:-/r/w/x
读(r):Read对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览该⽬录信息的权限◦写(w):Write对⽂件⽽⾔,具有修改⽂件内容的权限;对⽬录来说具有删除移动⽬录内⽂件的权限◦执⾏(x):execute对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录来说,具有进⼊⽬录的权限◦“—”表⽰不具有该项权限
如图所示:权限三三为一组,第一组表示拥有者的权限,第二组表示所属组的权限,第三组表示other的权限。
3.文件权限值的两种表示方法
1.字符表示法:r/w/x
2.八进制表示法:
因为一个角色有三个文件权限位,所以这三个位可以表现为八进制,比如---,就表示三个位都是0,二进制换算为八进制还是0,rwx就表示三个位都是1,转换为八进制就是7。
以这个图为例:
拥有者的权限“rw-”->110(二进制)->6(八进制);
所属组的权限“r--”->100(二进制)->4(八进制)。
3.设置权限的指令
1.chmod
chmod(change mode)
功能:设置⽂件的访问权限格式:chmod [参数] 权限 ⽂件名常⽤选项:R -> 递归修改⽬录⽂件的权限说明:只有⽂件的拥有者和root才可以改变⽂件的权限
chmod命令权限值的格式
1.用户表示符+/-=权限字符+:向权限范围增加权限代号所表⽰的权限-:向权限范围取消权限代号所表⽰的权限=:向权限范围赋予权限代号所表⽰的权限用户符号:u:拥有者g:拥有者同组⽤o:其它用户a:所有用户实例:chmod u+w filenamechmod o-x /home/abc.txtchmod a=x /home/abc.txt2.三位8进制数字实例:chmod 664 filenamechmod 640 /home/abc.txt
2.chown
功能:修改⽂件的拥有者格式:chown [参数] 用户名 ⽂件名实例:chown user1 f1chown -R user1 filegroup1
3.chgrp
功能:修改⽂件或⽬录的所属组格式:chgrp [参数] 用户组名 ⽂件名常⽤选项:-R 递归修改⽂件或⽬录的所属组实例:chgrp users /abc/f2
四、关于权限的三个问题
1.进入一个目录需要r/w/o中的哪个权限?(面试题)
答:x。
目录的r/w/o权限都管理什么?(知识点)
| 权限 | 名称 | 对目录的含义 | 具体能做什么 |
|---|---|---|---|
| r | 读 | 列出目录内容 | 允许你用ls查看目录里有哪些文件名。没有r,ls会报Permission denied。 |
| w | 写 | 修改目录条目 | 允许在目录中创建、删除、重命名文件或子目录。注意:删除文件看的是目录的w,不是文件本身的w。 |
| x | 执行 | 进入目录 / 访问目录内文件 | 允许cd进入该目录,也允许访问目录内已知文件名的文件(读取内容、查看属性等)。没有x,即使知道文件名也打不开。 |
2.为什么在创建一个目录/文件时,系统默认给的权限是775/664?
1.引出权限掩码(umask)
功能:查看或修改⽂件掩码新建⽂件夹默认权限=0666新建⽬录默认权限=0777但实际上你所创建的⽂件和⽬录,看到的权限往往不是上⾯这个值。原因就是创建⽂件或⽬录的 时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的⽂件权限是: mask & ~umask格式:umask 权限值说明:将现有的存取权限减去权限掩码后,即可产⽣建⽴⽂件时预设权限。root默认掩码值为 0022,而普通用户幕刃掩码值为0002。
2.对目录/普通文件默认权限的解释
上图验证,root的默认掩码值为0022。
上图可以看出,超级用户root创建文件显示出的权限为644,创建目录显示出的权限为755,
新建⽂件夹默认权限=0666 ,新建⽬录默认权限=0777。我们使用公式:最终权限=起始权限&(~权限掩码),可以得出对应的664和755。新建文件:
666 & ~022=644(rw-r--r--)。
所有者能读写,同组和其他人只能读。新建目录:
777 & ~022=755(rwxr-xr-x)。
所有者能读、写、进入,同组和其他人能读、进入,但不能写入(不能随便在别人的目录里删改文件)
答:
777对应的权限是rwxrwxrwx(所有用户可读、可写、可执行)。关键点在于:它必须保留执行权限(x)。执行权限对目录的意义不同:对于目录,x权限不代表“运行目录”,而是代表“进入(遍历)目录”。没有x权限,你连cd进去的资格都没有,也无法访问目录里的文件内容。
666对应的权限是rw-rw-rw-(所有用户可读、可写)。关键点在于:它默认去掉了执行权限(x)。安全考虑:在 Linux 中,如果文件带有x权限,它就可以被当作程序运行。如果系统默认给新建的文件加上x权限,你从网上下载一个普通的文本文件或图片,双击它(或者误执行),系统可能会把它当成脚本或恶意程序去执行,这是极其危险的
3.粘滞位(面试题)
情景:当超级用户root在普通用户(tmx)的文件夹里创建一个文件1.txt,并且把1.txt的权限设置为640,此时1.txt只有拥有者具有rw权限:
[tmx@my-alicloud /]$ cd /home/tmx/ [tmx@my-alicloud ~]$ tree . └── test.d 2 directories, 0 files [tmx@my-alicloud ~]$ whoami tmx [tmx@my-alicloud ~]$ su - Password: Last login: Wed Sep 23 21:08:15 CST 2026 on pts/0 [root@my-alicloud ~]# whoami root [root@my-alicloud ~]# pwd /root [root@my-alicloud ~]# cd ./test.d -bash: cd: ./test.d: No such file or directory [root@my-alicloud ~]# cd /home/tmx/test.d/ [root@my-alicloud test.d]# touch 1.txt [root@my-alicloud test.d]# ll total 0 -rw-r--r-- 1 root root 0 Sep 23 21:25 1.txt [root@my-alicloud test.d]# chmod o-x 1.txt [root@my-alicloud test.d]# ll total 0 -rw-r--r-- 1 root root 0 Sep 23 21:25 1.txt [root@my-alicloud test.d]# chmod o-r 1.txt [root@my-alicloud test.d]# ll total 0 -rw-r----- 1 root root 0 Sep 23 21:25 1.txt作为other身份的tmx是没有任何权限的,不能读写,竟然可以删除!
[root@my-alicloud test.d]# exit logout [tmx@my-alicloud ~]$ whoami tmx [tmx@my-alicloud ~]$ cat 1.txt cat: 1.txt: No such file or directory [tmx@my-alicloud ~]$ rm 1.txt rm: cannot remove '1.txt': No such file or directory [tmx@my-alicloud ~]$ pwd /home/tmx [tmx@my-alicloud ~]$ cd ./test.d/ [tmx@my-alicloud test.d]$ ll total 0 -rw-r----- 1 root root 0 Sep 23 21:25 1.txt [tmx@my-alicloud test.d]$ rm 1.txt rm: remove write-protected regular empty file '1.txt'? y [tmx@my-alicloud test.d]$ ll total 0为什么可以删除呢?
删除文件看的是目录的写权限,不是文件的写权限。
只要你对目录有w和x,即使文件本身是r--r--r--(只读),你也能删除它。因为删除操作修改的是目录的“花名册”,不是文件内容。
粘滞位(Sticky Bit)会限制删除。
像/tmp目录权限是drwxrwxrwt,最后的t就是粘滞位。它规定:即使你对目录有w,也只能删除自己拥有的文件,不能删别人的。这防止了多人共享目录中的误删。
五、小结
本篇从 Shell 运行原理切入,系统梳理了 Linux 权限管理的核心知识。Shell 是命令解释器,负责将用户命令翻译给内核,同时拦截非法请求保护内核(bash 是其最常用的一种)。权限部分明确了两种用户(root 与普通用户)和三种角色(拥有者 u、所属组 g、其他人 o),并区分了
rwx对文件和目录的不同含义:对文件,r读、w写、x执行;对目录,r浏览、w增删、x进入。在权限操作上,
chmod可用字符法(如u+w)或八进制法(如664)修改权限,chown和chgrp分别修改拥有者和所属组。针对默认权限,系统新建文件默认666,目录默认777,实际权限由umask决定(最终权限 = 起始权限 & ~umask),所以文件通常为644,目录为755。文件默认不给x是为了防范恶意代码和误操作;目录默认给x是为了能进入和遍历。最后,粘滞位(
t)用于共享目录(如/tmp),使得即使有w权限,普通用户也只能删除自己拥有的文件,防止误删他人文件。理解这些机制后,才能在多用户环境中安全、精细地控制系统资源的访问。
至此,Linux权限管理问题告一段落,下一篇——基础开发工具,会向大家介绍Vim编辑器,这个对Linux开发特别重要,请大家持续关注wac的变强之路!