Linux权限理解

文章介绍了Linux权限的概念,包括用户分类(超级用户和普通用户)、用户切换,详细讲解了文件权限的访问者分类、类型和访问权限设置,以及目录权限的差异和默认权限。同时,讨论了shell的作用和文件类型,并提到了粘滞位在多用户共享目录中的重要性,用于限制不必要的文件删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

生活中处处都存在着权限,比如小区的门禁、朋友圈的访问、景区的门票进入等等都是权限Linux中当然也存在权限,用于更加规范的管理这一平台,下面就让我来介绍一下Linux权限的理解与学习吧

1. shell理解

shell是包裹在Linux内核kernel之外的外层壳,又称为Linux外壳shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口,是在Linux内核与用户之间的解释器程序,它接收用户输入的命令并把它送入内核去执行

操作系统、shell和用户的关系图示:

上面是比较抽象的概念,下面我来举一个通俗易懂的例子方便大家理解:

  • 村长的儿子张三喜欢隔壁家的翠花
  • 李四也喜欢翠花和张三是竞争对手
  • 王婆是村里有名的媒婆,有很多徒弟跟着她学习

情况一:张三托王婆去帮他说媒,王婆派出徒弟去办事,小美欣然同意,事儿成了

情况二:张三托王婆去帮他说媒,但是此时翠花已经和李四在一起了,翠花拒绝了此事

情况三:张三托王婆去帮他说媒,但是此时翠花已经和李四在一起了,张三由于非常喜欢翠花,于是找到了他的村长老爹帮忙,在“钞能力”的作用下李四和翠花被拆散,最终还是选择了张三

在上面这个情景中,张三就是用户,村长就是超级用户root,翠花就是操作系统,是用户的操作对象,李四是可能存在的权限限制,王婆则就是shell,她的徒弟就是执行命令时创建的子进程
上面的三种场景则分别对应着:
权限足够、权限不足、超级用户(root)下权限无阻

总结:

Linux下,用户是通过shell外壳来与操作系统进行交互的,shell会创建子进程来进行命令行的传递和结果返回,在CentOS中,bash就是命令行解释器程序,也是个文件,归于shell

shell的作用:

1.帮忙进行命令行传递和返回结果

2.保护操作系统(防止危险指令对操作系统造成破坏)

3.执行命令时创建子进程执行

2. Linux权限的概念

权限是用来限制人的,因为事物可能天然缺失某种属性,所以权限就是一件事是否能做

Linux下权限 = 人 + 事物属性

3. Linux权限管理

3.1 用户分类

Linux下有两种用户:超级用户(root)、普通用户

超级用户:可以再Linux系统下做任何事情,不受限制
普通用户:在Linux下做有限的事情

  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$“

3.2 用户切换

Linux下支持用户之间的切换

语法:su [选项] [用户名]

常见选项:-root切换至超级用户的家目录下,并显示最近登录的信息,这里省略-root也可以切换到root用户下

4. 文件权限

4.1 文件访问者分类

  • 文件和文件目录的所有者:u—User(中国平民 法律问题)
  • 文件和文件目录的所有者所在的组的用户:g—Group(组织)
  • 其它用户:o—Others (外国人)

注意:超级用户root不受角色权限的限制,默认拥有所有权限

4.2 文件类型和访问权限(事物属性)

记住一句话:Linux下一切皆文件,对于每个文件都有它自己对外的权限,我们也可以对文件权进行设置来实现文件权限的划分。

文件分类:

d:目录

-:普通文件,比如文本文件、可执行文件等

l:链接文件

b:块设备文件,比如磁盘文件

c:字符设备文件,比如键盘、显示器等

p:管道文件

s:网络文件

注意:在Linux下文件的类型是由其详细信息中的第一个字符决定的(见上图),与文件后缀没有关系

那么为什么我们还要加上文件后后缀呢?

  • 为了给用户和自己看,更加符合使用习惯,方便一眼区分类型
  • gccLinux下的软件,需要借助文件后缀来判断类型

Linux中文件有三种权限:

r:读权限,对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

w:写权限,对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

x:执行权限,对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

-:表示不具有该项权限

如上图中的test.cpp文件,对于文件所有者而言,其所具有的权限是rw-,意思就是拥有读权限和写权限,没有执行权限

4.3 文件访问权限的相关设置方法

4.3.1 权限更改

普通用户在家目录中基本上是不受限制的,可以借助chmod指令来对指定文件进行权限设置

语法:chmod u/g/o/a +/- r/w/x [文件]

功能:对指定文件进行权限设置

常见选项:-R 递归修改目录的权限(只有文件的拥有者和root才可以改变文件的权限)

chmod命令权限值的格式:

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

举个栗子:

这里还可以用八进制数字来修改权限,例如 chmod 100 test.cpp 表示将test.cpp文件的拥有者权限修改为不可读不可写可执行,所属组和其他人权限清零,1表示有权限,0表示无权限

4.3.2 拥有者修改

语法:chown [选项] 用户名 文件名

功能:修改文件的拥有者

4.3.3 所属组修改

语法:chgrp [选项] 用户组名 文件名

功能:修改文件或目录的所属组

常用选项:-R 递归修改文件或目录的所属组

4.3.4 文件类型辨识

语法:file [文件]

功能:辨识文件类型

常用选项:

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形
  • -z 尝试去解读压缩文件的内容

5. 目录权限

目录和文件一样也有权限,并且二者还略有差别

5.1 基本权限

目录的基本权限和文件一样也是rwx

r:读权限,如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容

w:写权限,如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

x:执行权限,如果目录没有可执行权限, 则无法cd到目录中

-:表示不具有该项权限

举个栗子:

可见没有r权限是无法使用ll查看文件内容的

5.2 默认权限

无论是创建文件还是目录,系统都会自动为其分配默认权限

文件:

1.文件的默认权限为664,即rw-rw-r--

2.一般的文件都是没法直接执行的,所以所有的角色都默认没有可执行权限,为了保证文件的安全性,就默认不会赋予其他人Other写的权限

目录:

1.目录的默认权限为775,即rwxrwxr-x

2.没有执行权限是无法访问目录的,这里默认去掉了其他人Other写的权限

5.3 权限掩码

Linux规定普通文件的起始权限为666(不包括可执行文件),目录的起始权限是777

为了更好的控制文件权限,系统通过权限掩码(umask)来取消部分角色的权限,例如Other的写入权限

可以直接通过umask指令来查看当前系统的默认权限掩码

如图,Centos7.6Linux操作系统的权限掩码为002(八进制),平台不同权限掩码可能也不同

默认权限计算方式:

默认权限 = 起始权限 & (~umask)

注意是先将掩码按位取反后再与上起始权限

计算实例:

假设新建一个普通文件,系统起始的权限为 666 ,权限掩码为 002 ,带入公式可得默认权限:

  • 666 & (~002) = 110 110 110 & (~000 000 010) = 110 110 110 & 111 111 101 = 110 110 100 = 664

假设新建一个目录,系统起始权限为 777 ,权限掩码为 002 ,带入公式可得默认权限:

  • 777 & (~002) = 111 111 111 & (~000 000 010) = 111 111 111 & 111 111 101 = 111 111 101 = 775

6. 粘滞位

粘滞位是为了在一些特殊的场景下对目录进行限制

6.1 诞生背景

在未来使用Linux进行开发时未来我们可能会用到共享目录,这些目录是被所有的普通用户共享,用来保存普通用户产生的临时数据的

假设上司给A、B两个工作小组建立了一个共享目录,让其来分别完成同一项目来进行择优选取,两小组都完成后,虽然A组的成员不能查看B组的项目内容(没有读写权限),但是A组成员可以直接删除B组的工作文件,这是很不合理的情况

为了避免这种情况的发生,于是就有了粘滞位的引入,粘滞位可以限制目录,使得次目录下的文件只允许拥有者和超级用户才能删除

6.2 使用方法

建立一个共享目录后,利用root权限,使用 chmod +t [目录] 指令,来为此目录添加粘滞位就可以了,粘滞位添加成功后,该共享目录的 Other 的可执行权限会变成 t


Linux的权限介绍和理解到这里就介绍结束了,感谢大家的支持!
文章有写的不足或是错误的地方,欢迎评论或私信指出,我会在第一时间改正

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茉莉蜜茶v

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值