☰
Linux中的权限解析
2026/9/30 2:41:27 网站建设 项目流程

概念:同日常生活中的认知一样,能与不能的问题,放在Linux上就是文件能与不能的问题

意义:权限是帮助用户更好的管理,什么人可以读,什么人可以改等等

对象:权限针对的是用户和文件属性。文件属性是针对主体,我们暂时理解为可读、可写和可执行;而用户是能与不能对文件进行操作,如root和普通用户

root是超级用户(皇帝),不受权限的约束,在Linux中属于特权级别。它甚至可以对用户增删等。

而普通用户则受规则的约束(大臣)

root可以切换为普通用户,但普通用户切换为root时需要输入密码(root的根本被普通用户知道,普通用户才可以切换)。切换用户命令看命令1

用户被规则约束——什么规则呢

用户的作用/角色被分为三类:拥有者角色、所属组角色以及other角色。现在我们的逻辑就要放在Linux上了,文件的拥有者就是拥有者角色,他所属的组织就是所属组角色,other角色就是以上两个角色都不是,那就是其他角色。就比如一个公司,他就是拥有者的一个所属组,拥有者可以让公司的人看,但不允许他们改等,其他角色连看都不能看。就是有这样的需求才会划分为三类角色,Linux方便用户管理权限。但这影响不到root(相当于老板),文件的拥有者就是打工人,你可以约束其他人,但老板不受约束(多了就不能说了,懂得都懂)

第一个符号是文件类型,“-”表示普通文件。然后后续九个字符每三个为一组,分别表示拥有者,所属组,其他角色的权限。这三个顺序只能是是否可读r,是否可写w,是否可执行x。若可读就为r,不可就是-。可写、可执行同理。接着依次是拥有者、所属组的名字,other不需要显示。再接着是硬链接数,我暂时也不知道含义。再接着时创建时间,最后是文件名

用户访问文件时机器会确定用户相对于文件的身份角色,但只确认一次。若是拥有者就按拥有者的权限约束当前用户,即使用户还是是所属组,编译器会按拥有者权限约束,因为机器只确认一次,判断是不是拥有者就记作一次,不会再判断是不是所属组了

文件若想被执行需要两个条件:1、用户对于文件具有可执行权限;2、文件是二进制文件,具有可执行的内在能力

安装软件到系统目录下只有root才有权限,而普通用户可以随意在自己的目录下操作,但普通用户可以使用sudo指令提权来做只有root才能做的事情,可以随意sudo吗,肯定不行,是有条件的,普通用户必须在“白名单”中,一旦出现问题,只需要去白名单中追查即可

1、su指令

切换用户

su root(普通用户要切换为root要输入密码,不然就乱套了,每个人都可以当老板,随意对文件操作)

su 普通用户名(root可以直接切换,其他用户如果切换别的用户就需要输入密码,不然也乱套了,公司内的用户拥可以自由切换账号,那么对文件来说此时就不需要划分角色了,每个人想对文件操作,切换为所有者的账号即可,这时登陆的人就是拥有者)

su - 用户名:-代表登录式Shell,模拟完整登录过程。如果时root用户执行此命令直接切换,如果是普通用户要输入密码

su -:默认切换到root用户,完整加载root登录环境

ubuntu机器要切换为root要用sudo -i

2、文件权限修改指令

chmod指令

用户符号:u拥有者、g所属组、o其他角色、a所有角色。+增加权限,-减少权限,=将三个权限替换为等号后的权限。注:只有文件拥有者和root可以修改文件权限

-R:递归修改,目录连同里面所有子目录、里面全部文件,一次性批量修改所有者

示例:chmod u+r dica;chmod u+rw dica;chmod a-w dicb;

chmod a=rw dica

还可以用8进制修改权限(每三个作为一个八进制,r、w、x为1,-为0)

chmod 777 dica

chown指令

修改文件的拥有者

-R:递归修改,目录连同里面所有子目录、里面全部文件,一次性批量修改所有者

chown 用户名 文件名:将文件的拥有者改为指定用户名(需要输入他人的密码,防止甩锅。root可以随意改)

chown 用户名:用户名 文件名:将文件的拥有者和所属组改为指定用户名(也需要输入密码)

chgrp指令(修改所属组)与上面类似不再赘述

补充:文件类型有以下几种,-:普通文件;d:目录;l:链接文件;p:管道文件;c:字符文件;b:块设备文件

字符文件不支持随机读写,块设备文件支持随机读写

增加权限理解的三个问题:

1、目录权限是怎么生效的

进入一个目录是什么权限在管理(可读?可写?可执行?)?受可执行权限管辖!目录可读权限是约束读取目录内容(文件名 + 对应文件的 inode 编号,这个后面讲,但是这两个加起来会包含文件属性),如果不可读,ls等指令就报错,但如果我们事先知道这个目录下的普通文件的文件名,而且此文件对我这个角色是可读的,即使上一级的目录是不可读的,我们仍然读取它的内容。目录可写权限是约束我们修改目录的内容(如修改文件名,增加/删除文件),但那个文件的内容是否可以修改是看那个文件是否对当前用户是否可写

2、问题2:我们新建的目录和普通文件的默认权限是什么样的

上述图片是我创建的两个普通文件和一个目录。Lnux中一个普通文件的起始权限是777(即rwxrwxrwx),一个目录的起始权限是666(即rw-rw-rw-)。但是Linux中的文件会有权限掩码(补充一个知识点:凡是出现权限掩码的权限,最终都要在起始权限中“去掉”。这个去掉不是简单的相减,而是起始权限&(~权限掩码)——&是按位与,~是按位取反),Linux中的文件的权限掩码0002(第一个0不管)

3、问题3:公共文件出现的问题

Linux中若想有公共文件,应该放到哪里?为了方便应该放到root目录下的一个目录下(这个目录应该对other开放可读可写可执行权限)。这个公共文件(普通文件)可以设置好权限不让过多人修改等,但这样会出现一个问题若有人恶意删除(受目录可写权限约束)呢,问题是这个目录对other开放了所有权限,可若没有开放所有权限,它又不能算得上公共文件(意思是那一小部分人也会无法使用),把他们都添加到root的所属组吗,这样能保证root下其他文件的安全吗?Linux为了解决此问题,有了粘滞位——给other设置的一种权限管理级别:指定t目录下,每个人新建文件,删除的时候,只能自己删自己的,不能因为目录可写权限的问题,删除别人的文件!当然这个权限是针对other的,root还有这个目录的所有者也可以删除。通常用来做,文件共享的场景

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

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

立即咨询