Linux权限理解

简介: Linux权限理解

前言

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

1. shell理解

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

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

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

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

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

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

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

在上面这个情景中,张三就是用户,村长就是超级用户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用户下

63770fd9daeea7f54a0c12428c9fe3cf.png

4. 文件权限

4.1 文件访问者分类

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

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

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

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

47eb200e7ce952a44f8f8e7086887746.png

文件分类:

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:所有用户

举个栗子:

83c2bf470b572c9163bd40ab5b114259.png

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

fe44edff570107df04b5f745ddcd2fba.png

4.3.2 拥有者修改

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

功能:修改文件的拥有者

4.3.3 所属组修改

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

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

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

4.3.4 文件类型辨识

语法:file [文件]

功能:辨识文件类型

常用选项:

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

546aa2246266e4f09ed1c56f66fa7fb9.png

5. 目录权限

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

5.1 基本权限

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

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

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

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

-:表示不具有该项权限

举个栗子:

1aa2538ff4285c912a44972eb55ddbdb.png

可见没有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指令来查看当前系统的默认权限掩码

0c8a002946642e97c18ec658259e22af.png

如图,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

afec41f0b806e9697546c93d33d39681.png

Linux的权限介绍和理解到这里就介绍结束了,感谢大家的支持!

文章有写的不足或是错误的地方,欢迎评论或私信指出,我会在第一时间改正

目录
相关文章
|
21天前
|
存储 安全 Linux
Linux权限之谜:一步步教你如何解锁sudo权限并窥视/etc/shadow的神秘面纱!
【8月更文挑战第22天】在Linux中,`sudo`命令让授权用户能以其他用户(通常是root)身份运行命令。关键的安全文件`/etc/shadow`存储用户密码哈希,仅root可读。要使用`sudo`,需确保账户被列入`sudoers`文件中。系统管理员可通过`visudo`编辑此文件来赋予用户权限,例如添加`username ALL=(ALL) NOPASSWD: ALL`行。获得`sudo`权限后,可运行`sudo cat /etc/shadow`查看文件内容,但需谨慎操作以免影响系统安全。遵循最小权限原则,确保安全使用这些强大工具。
39 2
|
21天前
|
Linux 数据安全/隐私保护
在Linux中,什么是文件权限?什么是rwx权限模型?
在Linux中,什么是文件权限?什么是rwx权限模型?
|
28天前
|
Unix Linux Shell
Linux 权限简介
Linux 权限简介
33 1
|
1月前
|
Linux 数据安全/隐私保护 Windows
Linux专栏10:Linux权限详解(上)
Linux专栏10:Linux权限详解(上)
36 3
|
14天前
|
Unix Linux Go
Linux中的chmod权限问题
Linux中的chmod权限问题
12 0
|
20天前
|
安全 Linux 数据安全/隐私保护
在Linux中,使用rsync服务模式时,如果指定了⼀个密码文件,那么这个密码文件的权限应该设置成多少才可以?
在Linux中,使用rsync服务模式时,如果指定了⼀个密码文件,那么这个密码文件的权限应该设置成多少才可以?
|
20天前
|
Linux
在Linux中,如何使用xargs和exec实现把当前目录下所有后缀名为.txt的⽂件的权限修改为777。
在Linux中,如何使用xargs和exec实现把当前目录下所有后缀名为.txt的⽂件的权限修改为777。
|
20天前
|
安全 Linux 数据安全/隐私保护
Linux安全大揭秘:一键切换root权限背后隐藏的秘密
【8月更文挑战第23天】Linux操作系统因其出色的灵活性和安全性备受推崇,用户权限管理是其核心功能之一。本文介绍如何安全地在用户间切换,特别是切换至拥有最高权限的root用户。我们探讨了两种主要的方法:`su` 和 `sudo` 命令,并通过示例展示了它们的应用场景。`su` 命令适合需要执行多个root权限操作的情况,而 `sudo` 更适用于临时执行单个高权限命令。同时,文章还提供了一些最佳实践,如避免长时间使用root账户、定期审查 `sudoers` 文件等,以确保系统的安全性。正确理解和应用这些工具和原则对于维护Linux系统的安全至关重要。
33 0
|
20天前
|
安全 Linux 数据安全/隐私保护
在Linux中,什么是最小权限原则?
在Linux中,什么是最小权限原则?
|
22天前
|
Linux Go
在Linux中,文件和目录的权限有何作用以及如何修改?
在Linux中,文件和目录的权限有何作用以及如何修改?