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