一、Linux下的两种用户

超级用户(root)和普通用户

Linux下有两种用户,超级用户(root)和普通用户

超级用户:可以在Linux下做任何事情不受限制。

普通用户:在Linux下受限。

可以通过whoami指令查看,当前是超级用户还是普通用户。

Linux权限(超详细彻底搞懂Linux的权限)上_普通用户

可以发现超级用户的命令提示符为#,普通用户的命令提示符为$。

su指令

在不同用户下我们又是如何切换用户的呢?

通过su指令完成用户的切换,如果是超级用户切换到普通用户,su+普通用户的用户名就可以完成切换了。如果是普通用户切换到超级用户,直接一个su指令然后输入超级用户的密码完成切换。

Linux权限(超详细彻底搞懂Linux的权限)上_css_02

sudo指令

对普通用户的指定指令进行短暂提权。

我们进行sudo提权的时候可能会报错。这是因为有个类似于白名单的东西,当前用户没有sudo权限。

要在你当前的用户没有在 /etc/sudoers 文件中配置使用 sudo 的权限。此时需要管理员将当前用户添加到允许使用 sudo 的用户组(通常是 sudo 或 wheel)中。影响不大,如果想具体了解可以看看这篇博客linux命令之sudo详解

二、Linux权限管理

2.1 文件访问者

简单来说,权限的本质是能做什么不能做什么。权限首先限制的是角色,权限要求目标必须具备对应的属性。

Linux的权限由角色和目标权限属性组成。权限=角色+目标权限属性

角色包含拥有者、所属组、other、

角色:

  1. 拥有者 2. 所属组 3. other

拥有者(User,u):文件或目录的所有者。
所属组(Group,g):文件或目录所属的用户组。
其他(Others,o):除了文件所有者和用户组之外的所有人

Linux权限(超详细彻底搞懂Linux的权限)上_可执行_03

拥有者

拥有者就是当前Linux中的用户,是超级用户还是普通用户。文件或目录文件的所有者

所属组

文件或目录文件的所有者所在组的用户。更精细化的权限管理首先要有更精细化的身份角色。

others

其他用户。但是我们发现others没有被记录。

other不需要被记录,日志冗余和过度审计问题,因为 Others 包括所有非文件所有者和组的用户,操作频繁且难以精确记录。审计重点不同,管理员更关心具体的用户、组和命令的执行,而不太关心所有 Others 权限的每个变更。安全性和权限管理,Others 权限变更通常较少,也不应频繁发生,因此一般不需要特别记录。

2.2 文件类型和访问权限

Linux权限(超详细彻底搞懂Linux的权限)上_css_04

文件类型

d为目录,-为文件

文件权限值的表示

r为允许读

w为允许写

x为可执行

drwxr-xr-x  2 root root 4096 Dec  1 17:53 code/

上面的这个,拥有者可读可写可执行,所属组织可读不可写可执行,other可读不可写可执行。

数值表达式

Linux权限(超详细彻底搞懂Linux的权限)上_可执行_05

这些rwx是两态的,不是行就是不行。所以如果为rw-rw-r-- 二进制为110 110 100,八进制为664。

文件访问权限的相关设置方法(chmod)

指令chmod:设置文件的访问权限。

chmod u-r code

当对文件code,对拥有者的只读权限进行修改。把允许读改为不允许读。

root@hcss-ecs-48ab:~/learn/test_12_1# chmod u-r code

Linux权限(超详细彻底搞懂Linux的权限)上_css_06

chmod u+r

对文件code,当前拥有者的只读文件不允许读,改为允许读权限

root@hcss-ecs-48ab:~/learn/test_12_1# chmod u+r code

Linux权限(超详细彻底搞懂Linux的权限)上_普通用户_07

chmod g-r code

对文件code,当前所属组的允许读,修改允许读文件为不可读

root@hcss-ecs-48ab:~/learn/test_12_1# chmod g-r code

Linux权限(超详细彻底搞懂Linux的权限)上_可执行_08

chmod g-r code

对文件code,当前所属组的只读权限为不可读,修改为可读。

root@hcss-ecs-48ab:~/learn/test_12_1# chmod g+r code

Linux权限(超详细彻底搞懂Linux的权限)上_普通用户_09

前面我们学习了数值表达式,二进制和八进制之间的转换。在对文件访问权限进行修改的时候,可以通过八进制的方式进行修改。

八进制为666二进制就是110 110 110 就是rw- rw- rw-

root@hcss-ecs-48ab:~/learn/test_12_1# chmod 666 code

Linux权限(超详细彻底搞懂Linux的权限)上_可执行_10

注意:

  1. 用户只能修改自己的文件权限。
  2. 没有权限,系统会拒绝让我们访问。
  3. 确定权限信息的时候,系统会进行用户角色确定,且只确定一次。确定依次从拥有者、所属组、other确定。
  4. root用户的权限不受限制。
  5. 上述描述了一堆执行,可执行权限!=文件可执行

修改文件拥有者或所属组(chown和chgrp)

chown修改文件/目录的拥有者。
chgrp修改文件/目录的所属组

将code文件的拥有者从root超级用户改到普通用户。

Linux权限(超详细彻底搞懂Linux的权限)上_普通用户_11

将code文件的拥有者从普通用户改到超级用户。

Linux权限(超详细彻底搞懂Linux的权限)上_css_12

将code文件的所属组从超级用户改到普通用户。

Linux权限(超详细彻底搞懂Linux的权限)上_普通用户_13

将code文件的所属组从普通用户改到超级用户。

Linux权限(超详细彻底搞懂Linux的权限)上_css_14

注意:

当我们是普通用户的时候,系统默认不允许我们把文件传给别人是合理的。如果想给别人必须提高权限。

当用户为普通用户的时候想把文件传给别人是不允许的。