系列文章目录
第二章 Linux的权限管理与使用
文章目录
- 系列文章目录
- 前言
- 一、用户
-
- [1.1 root用户](#1.1 root用户)
- [1.2 普通用户](#1.2 普通用户)
- [1.3 用户切换](#1.3 用户切换)
-
- [1.3.1 su 命令](#1.3.1 su 命令)
- [1.3.2 sudo 命令 及 sudoers](#1.3.2 sudo 命令 及 sudoers)
- 二、权限
-
- [2.1 权限是什么](#2.1 权限是什么)
- [2.2 权限的作用](#2.2 权限的作用)
- 三、角色
-
- [3.1 角色含义](#3.1 角色含义)
-
- tips:用户与角色的区分
- [3.1.1 所属组](#3.1.1 所属组)
- 四、文件属性
-
- [4.1 x 执行权限](#4.1 x 执行权限)
- [4.2 r 执行权限](#4.2 r 执行权限)
- [4.3 w 执行权限](#4.3 w 执行权限)
- 五、修改权限
-
- [5.1 chmod 指令](#5.1 chmod 指令)
- [5.2 修改局限](#5.2 修改局限)
- [5.3 权限位确定规则](#5.3 权限位确定规则)
- 六、修改角色
-
- [6.1 chown 命令](#6.1 chown 命令)
- [6.2 修改限制](#6.2 修改限制)
- 七、文件权限的二进制表示
- 总结
前言
本节是开启Linux中关于权限的第一节内容,本章将围绕其权限管理和限制来讲解,它是我们今后学习如何处理文件与目录的关键一课,让我们废话少说,开始今天的讲解。
一、用户
Linux用户分为两种:root用户和普通用户。root用户有且仅有一个,是超级管理员,可以随意操作文件;而普通用户为泛指比如sxr,syf等等自定义命名。
1.1 root用户
root用户即登录root账号并输入云服务器密码的用户。
root 账户是 Unix/Linux 及类 Unix 系统(含 Android)里的超级管理员账户,UID 固定为0,拥有系统最高权限。

1.2 普通用户
普通用户是root用户创建的,只要机器允许就可以存在多个,是通过命令行创建的。
普通用户:Linux 里权限受限的日常登录账号,没有系统最高权限,只能操作自己有权限的文件和目录。
普通用户是root账户,使用useradd和passwd创建的如图:

当然还有删除用户的指令urerdel 用户,普通用户登录时把用户名修改为要登陆的即可。
1.3 用户切换
当我们想要切换用户时,现在我们现在常常选择退出再登录另一个用户,其实有一个命令可以直接切换用户。
1.3.1 su 命令
- 语法: su [选项] [用户名]
- 功能: 切换当前登录用户身份,或在不同用户环境下执行命令
- 常用选项:
用户名:登录该用户,且保持操作目录(不输入则默认root)
- 用户名:登录该用户,返回到家目录(不输入则默认root)
当然还需要输入该用户的密码,但root变成普通用户不需要输入密码 (这体现了最高管理权) 。
1.3.2 sudo 命令 及 sudoers
- 语法: sudo [选项] 命令
- 功能: 普通用户临时借用管理员权限执行命令
- 常用选项:
sudo 命令:临时用 root 权限执行单条命令
sudo -l:查看当前用户拥有的 sudo 权限
sudo -k:清空密码缓存,下次 sudo 必须重新输密码
我们看sudo登录时输入自己的密码就可以指令提权,那这样不就没有存在的意义了吗?其实不然直接sudo会有如下结果:

其实Linux不傻,它有这样的机制------类似白名单能够记录某些用户从而允许sudo的使用,如同看门大爷只看见熟悉和特殊特征的人才放行。
这样的白名单就叫:sudoers ,位置为: /etc/sudoers ,并且这个文件只有root才能修改,一般不要随便修改。

这个就是修改白名单的位置。

二、权限
2.1 权限是什么
权限的本质就是:对于某个人能或不能做某件事情
核心定义: Linux 权限是一套控制文件 / 目录访问规则的机制,决定了谁(用户 / 组)能对文件做什么(读 / 写 / 执行)。
2.2 权限的作用
权限的限制作用起到多种规定:
- 控制用户行为,防止错误的发生: 如 rm -rf 的使用
- 权限首先限制的是角色,权限要求目标必须具有相对应的属性:如 作为学生就不能随意出入校长办公室;一个观影软件没有刷题的版块。
因此 权限 = 角色 + 文件属性(读,写,执行)
三、角色
3.1 角色含义
角色含义:Linux 把能访问文件 / 目录的人分成三类固定角色,用来分别给不同人设置不同权限。
权限中角色有三种分别为:拥有者、所属组、other ,在文件属性中体现在不同的区块如下图:(大家可以发现没有other,因为除拥有者和所属组外都是other)

tips:用户与角色的区分
用生活类比,用户就是具体的人,角色就是一类人的统称,一个用户可以存在多种角色。如:张三是一个警察,从这可以说张三是个用户,他是警察也是儿子。
3.1.1 所属组
对于所有者和other我们可以见名知意,就是创建者和与这个文件没有任何关系的人,那所属组又是什么呢?这里展开讲解。
所属组是类似小组的意思 ,这里举例说明:如一个公司有两个团队------A组、B组,该公司推行赛马制度即取两个团队最好的程序使用,但由于机器紧张只有一台机器,当团队代码展示时若没有所属组的概念,那么只能修改other的权限,但是就会同时暴露给另一团队,而所属组就可以解决这一问题。
四、文件属性
文件属性就是角色拥有对文件处理能力的权限,本质还是能否进行操作。
定义: 文件属性就是用 ls -l 看到的一整行信息,包含文件类型、权限、所有者、所属组、大小、时间等所有关键信息。
这里只考虑文件的读写及执行权限
r w x :分别代表允许读、允许写、允许执行,不允许则为 - .

4.1 x 执行权限
一个文件具有执行权限不代表可以执行 ,一个文件可以执行的前提是:能力 + 许可,比如一个文本、目录可以被执行吗?
另外x权限还管控能否进入该目录,如图:

4.2 r 执行权限
对于一个文件来说,r的权限是决定是否能查看文件里记录的内容,而对于目录来说则是是否能够查看当前目录中的内容。

4.3 w 执行权限
对于一个文件来说,w的权限是决定是否能修改文件里记录的内容,而对于目录来说则是是否能够在当前目录中创建文件或目录。

| 权限 | 文件 | 目录 |
|---|---|---|
| r | 查看文件内容 | 查看目录中的文件及目录信息 |
| w | 修改文件内容 | 在目录中创建文件或目录 |
| x | 设置为可执行文件 | 能进入该目录 |
五、修改权限
修改权限,意味着修改文件的角色或者文件属性,这是在限制保护文件必要的操作。
5.1 chmod 指令
- 语法: chmod [选项] 权限 文件 / 目录
- 功能: 修改文件或目录的访问权限(控制谁能读、写、执行)
- 常用选项:
-R:递归修改,把目录和里面所有文件、子目录一起改权限
| 用户符号 | 修改符号 |
|---|---|
| u:拥有者 | +:向权限范围增加权限代号所表⽰的权限 |
| g:所属组 | - :向权限范围取消权限代号所表⽰的权限 |
| o:其他用户 | =:向权限范围赋予权限代号所表⽰的权限 |
| a:所有角色 | ... |

5.2 修改局限
我们对于一个文件修改权限时,不是想怎么该就能怎么改的,必须在规定的情况下,如果随便修改就会出现错误:如图。

这是因为该文件所有者不是sxr,而是root,因此在没有相应权限的情况下进行相应操作是被系统拒绝的。
5.3 权限位确定规则
在对文件或目录进行操作时,Linux会先查看当先账户的权限,并且一旦确定就不会向后检查改变,查看顺序为:拥有者、所属组、other,常见情况就是:一个用户既是拥有者也是所属组时,会直接匹配到拥有者这个角色。

在修改该文件的所有者后,就可以正常读文件了,因为匹配了所属组的读写权限。

六、修改角色
6.1 chown 命令
- 语法: chown [选项] 所有者:所属组 文件 / 目录
- 功能: 修改文件 / 目录的所有者和所属组
- 常用选项:
-R: 递归修改(目录 + 里面所有文件 / 子目录一起改)
大家修改文件的角色时可能会发现下列报错,这是由于修改角色也是存在限制的。还有chgrp这个指令,这是修改所属组的指令。

6.2 修改限制
大家想一想你斗地主时一手好牌,本来快赢了,突然有人给你塞了几张3,你还怎么玩?这里也同理,我这代码运行的好好的,有人突然给我加了个充满bug的文件,这合理吗?因此,普通用户是不能随便更改一个文件的角色的。
那应该如何改呢?这就需要root用户级别的操作了,即sudo。

七、文件权限的二进制表示
对于文件的读、写、执行权限,无非就是1存在和0不存在的两种关系,而这种关系不就对应了二进制吗?因此还可以通过二进制来修改文件权限,从高位到低位就是r w x的顺序。

总结
本节对于权限的讲解就到此为止了,下一节我们将深入了解权限是如何控制隔离、创建文件目录时默认权限设置的原理等,感谢您的阅读,如有错误请在评论指出或私信我。