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