☰
【Linux权限管理】一文讲透Linux权限管理问题,轻松实现面试0压力
2026/9/25 20:22:38 网站建设 项目流程

目录

一、前言

二、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---User
2.⽂件和⽂件⽬录的所有者所在的组的⽤⼾: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 filename
chmod o-x /home/abc.txt
chmod a=x /home/abc.txt
2.三位8进制数字
实例:
chmod 664 filename
chmod 640 /home/abc.txt

2.chown

功能:修改⽂件的拥有者
格式:chown [参数] 用户名 ⽂件名
实例:
chown user1 f1
chown -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)。
所有者能读、写、进入,同组和其他人能读、进入,但不能写入(不能随便在别人的目录里删改文件)

疑问:为什么普通文件的起始掩码是0666,目录的起始掩码是0777?(为什么默认就不给普通文件x?而为什么目录默认都给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的变强之路!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询