Linux权限管理

103 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情

一、Linux权限的概念

Linux 下有两种用户:

  1. 超级用户 (root):可以在 linux 系统下做任何事情,不受限制
  2. 普通用户:在 linux 下做有限的事情
  3. 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

注意为了更好的学习,后面尽量少使用 root 用户。

root 用户是 Linux 中一个管理员的角色,且只有一个 root 帐户,它具有最高权限。

这里一定是得有两组密码的,且一定不要把两组密码设置成一样的。

怎么切换用户 ❓

命令:su [用户名]

功能:切换用户

例如,要从 root 用户切换到普通用户 user,则使用 su user。 要从普通用户 user 切换到 root 用户则使用 su root (root 可以省略),此时系统会提示输入 root 用户的口令。

su 和 su - ?

  1. su 只是切换了 root 身份,但是 shell 环境仍然是普通用户的 shell,且 pwd 仍是普通用户的目录
  2. su - 把用户和 shell 环境一起切换成了 root 身份,且 pwd 是 root 的目录

注意 su 同 su root,以后我们要安全切换成 root 时可直接 su -。

sudo ❓

如果不想切换成 root ,只想用 root 的身份去执行命令,可以在命令前加上 sudo,这样就可以对命令进行短期的权限提升。 在这里插入图片描述 注意我们在 sudo 的时候可能会报错,这里先不打算解决,因为涉及到后面学的知识,这里可以先用 su -。 在这里插入图片描述

二、Linux权限管理

什么是权限 ❓

权限本质上是决定某件事情,某人能否做。 在这里插入图片描述 文件权限 ❓

  1. 文件受人的影响 —— 为什么不能自定义博客域名?因为没有 VIP。
  2. 文件受本身自身特点 (事物属性) 的影响 —— 为什么不能看电影?因为它本身不具备视频属性。

所以文件权限 = 人 + 事物属性

文件权限属性:r(读)、w(写)、x(执行权限)

人 (不是特定具体的人,而是一种角色):拥有者、所属组、other (其它)

💦 文件访问者的分类(人)

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

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

a) 文件类型

  • d:文件夹
  • -:普通文件
  • l:软链接 (类似 windows 的快捷方式)
  • b:块设备文件 (例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件 (例如屏幕等串口设备)
  • s:套接口文件

使用命令 ls -l (ll) 显示的多列属性的第一列对应的字符来区分它的文件类型。

查看文件类别还可以使用命令 file 查看: 在这里插入图片描述

b) 基本权限

  • i.读 (r/4):read 对文件而言,具有读取文件内容的权限;对目录而言,具有浏览目录信息的权限
  • ii.写 (w/2):write 对文件而言,具有修改文件内容的权限;对目录而言,具有删除移动目录内文件的权限
  • iii.执行 (x/1):execute 对文件而言,具有执行文件的权限;对目录而言,具有进入目录的权限

在这里插入图片描述

在这里插入图片描述

💦 文件权限值的表示方法

a) 字符表示方法

Linux表示说明Linux说明
r - -只读- w -仅可写
- - x仅可执行r w -可读可写
- w x可写可执行r - x可读可执行
r w x可读可写可执行- - -无权限

b) 八进制数值表示方法

权限符号 (读写执行)八进制二进制
r41 0 0
w20 1 0
x10 0 1
r w61 1 0
r x51 0 1
w x30 1 1
r w x71 1 1
- - -00 0 0

其中我们可以直接使用八进制来替代 u、g、o 中的 r、w、x ❗ 在这里插入图片描述

$ chmod 777 file.txt
$ chmod 000 file.txt
$ chmod 640 file.txt

在这里插入图片描述

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

a) chmod

功能:设置文件的访问权限

格式:chmod [参数] 权限 文件名

常用选项

  • R -> 递归修改目录文件权限
  • 说明:只有文件的拥有者和 root 才能改变文件权限

chmod 命令权限值的格式:

1️⃣ 用户表示符 +/-= 权限字符

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

实例

$ chmod u-r file.txt
$ chmod g-rw file.txt
$ chmod o+rwx file.txt
$ chmod u+r,g+rw,o-rwx file.txt

在这里插入图片描述 sudo提升权限解决不可读等问题 ❗ 在这里插入图片描述 作为 root 具有最高权限,所以这里能 cat 没问题;但是 root 同时也是 other,这里 other 无权限为什么能 cat 呢 ?

权限永远都是约束普通人的,root 是超级用户,它不受或几乎不受权限约束。这里的 owner、group、other 主要针对的是多个普通用户的情况。

Linux下文件后缀 ❗

之前说过 Linux 系统对于文件后缀是不关心的,注意这里指的是系统不关心不是某些工具。 在这里插入图片描述 这里把 a.out mv a.txt 后 a.out 和 a.txt 的结果是一样的。 在这里插入图片描述 如果我们把拥有者的 x 权限删除那么便不能执行了,因为我当前是文件的拥有者,那我也是所属组且有执行,为啥不让执行呢 ?—— 因为在审核权限时,优先使用拥有者。

2️⃣ 三位八进制数字

如上八进制数值表示方法

b) chown

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名

实例

$ sudo chown root file.txt//修改拥有者
$ sudo chown wanghong file.txt//修改拥有者
$ sudo chown :wanghong file.txt//修改所属组
$ sudo chown wanghong:wanghong file.txt//可以将拥有者、所属组同时修改
$ sudo chown root:root file.txt//可以将拥有者、所属组同时修改

在这里插入图片描述

c) chgrp

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

格式:chgrp [参数] 用户组名 文件名

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

实例

$ sudo chgrp root file.txt
$ sudo chgrp wanghong file.txt

在这里插入图片描述 注意如果短期内使用过 sudo,那么可以不用输密码。

d) umask

功能:查看或修改文件掩码

格式:umask 权限值

说明:将现有的存储权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022,普通用户默认为 0002

❓ 新建了一个 file 文件、dir 目录,是什么决定了它的默认权限 ❔ 在这里插入图片描述 一般普通文件,起始权限从 666(rw- rw- rw-) 开始

一般目录文件,起始权限从 777(rwx rwx rwx) 开始

为啥它没按照一般情况来 ❓

因为在 Linux 中,在设置权限时,系统默认会有一个 umask 权限掩码

在这里插入图片描述

对于 0002 我们这里先不管第一个 0(它涉及后面的概念),其它位转成对应的二进制就是 000 000 010

umask 其中设定了一个概念:凡是在 umask 中出现的权限,都不应该在最终权限中出现

这里我们发现只有 other 里有一个写的权限,那么最终我们应该在 666(rw- rw- rw-) 或 777(rwx rwx rwx) 中去掉 other 的写权限,其中计算过程是:default & ~umask

实例在这里插入图片描述 所以换句话说我们在系统中设定的 umask 就可以进行更改默认权限了 ❗ 在这里插入图片描述 之后我们再新建 file1.txt 和 dir1.txt 时,它们就无权限了: 在这里插入图片描述

使用sudo分配权限

对于 sudo 分配权限,咱后面再说,因为它需要改配置文件。