一、Linux下的两种用户
超级用户(root)和普通用户
Linux下有两种用户,超级用户(root)和普通用户
超级用户:可以在Linux下做任何事情不受限制。
普通用户:在Linux下受限。
可以通过whoami指令查看,当前是超级用户还是普通用户。
可以发现超级用户的命令提示符为#,普通用户的命令提示符为$。
su指令
在不同用户下我们又是如何切换用户的呢?
通过su指令完成用户的切换,如果是超级用户切换到普通用户,su+普通用户的用户名就可以完成切换了。如果是普通用户切换到超级用户,直接一个su指令然后输入超级用户的密码完成切换。
sudo指令
对普通用户的指定指令进行短暂提权。
我们进行sudo提权的时候可能会报错。这是因为有个类似于白名单的东西,当前用户没有sudo权限。
要在你当前的用户没有在 /etc/sudoers 文件中配置使用 sudo 的权限。此时需要管理员将当前用户添加到允许使用 sudo 的用户组(通常是 sudo 或 wheel)中。影响不大,如果想具体了解可以看看这篇博客linux命令之sudo详解
二、Linux权限管理
2.1 文件访问者
简单来说,权限的本质是能做什么不能做什么。权限首先限制的是角色,权限要求目标必须具备对应的属性。
Linux的权限由角色和目标权限属性组成。权限=角色+目标权限属性
角色包含拥有者、所属组、other、
角色:
- 拥有者 2. 所属组 3. other
拥有者(User,u):文件或目录的所有者。
所属组(Group,g):文件或目录所属的用户组。
其他(Others,o):除了文件所有者和用户组之外的所有人
拥有者
拥有者就是当前Linux中的用户,是超级用户还是普通用户。文件或目录文件的所有者
所属组
文件或目录文件的所有者所在组的用户。更精细化的权限管理首先要有更精细化的身份角色。
others
其他用户。但是我们发现others没有被记录。
other不需要被记录,日志冗余和过度审计问题,因为 Others 包括所有非文件所有者和组的用户,操作频繁且难以精确记录。审计重点不同,管理员更关心具体的用户、组和命令的执行,而不太关心所有 Others 权限的每个变更。安全性和权限管理,Others 权限变更通常较少,也不应频繁发生,因此一般不需要特别记录。
2.2 文件类型和访问权限
文件类型
d为目录,-为文件
文件权限值的表示
r为允许读
w为允许写
x为可执行
drwxr-xr-x 2 root root 4096 Dec 1 17:53 code/
上面的这个,拥有者可读可写可执行,所属组织可读不可写可执行,other可读不可写可执行。
数值表达式
这些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
chmod u+r
对文件code,当前拥有者的只读文件不允许读,改为允许读权限
root@hcss-ecs-48ab:~/learn/test_12_1# chmod u+r code
chmod g-r code
对文件code,当前所属组的允许读,修改允许读文件为不可读
root@hcss-ecs-48ab:~/learn/test_12_1# chmod g-r code
chmod g-r code
对文件code,当前所属组的只读权限为不可读,修改为可读。
root@hcss-ecs-48ab:~/learn/test_12_1# chmod g+r code
前面我们学习了数值表达式,二进制和八进制之间的转换。在对文件访问权限进行修改的时候,可以通过八进制的方式进行修改。
八进制为666二进制就是110 110 110 就是rw- rw- rw-
root@hcss-ecs-48ab:~/learn/test_12_1# chmod 666 code
注意:
- 用户只能修改自己的文件权限。
- 没有权限,系统会拒绝让我们访问。
- 确定权限信息的时候,系统会进行用户角色确定,且只确定一次。确定依次从拥有者、所属组、other确定。
- root用户的权限不受限制。
- 上述描述了一堆执行,可执行权限!=文件可执行
修改文件拥有者或所属组(chown和chgrp)
chown修改文件/目录的拥有者。
chgrp修改文件/目录的所属组
将code文件的拥有者从root超级用户改到普通用户。
将code文件的拥有者从普通用户改到超级用户。
将code文件的所属组从超级用户改到普通用户。
将code文件的所属组从普通用户改到超级用户。
注意:
当我们是普通用户的时候,系统默认不允许我们把文件传给别人是合理的。如果想给别人必须提高权限。
当用户为普通用户的时候想把文件传给别人是不允许的。