🔥个人主页🔥:孤寂大仙V
🌈收录专栏🌈:Linux
🌹往期回顾🌹:Linux常见指令(初学者必看)
🔖流水不争,争的是滔滔不
一、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 117: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文件的所属组从普通用户改到超级用户。
注意:
当我们是普通用户的时候,系统默认不允许我们把文件传给别人是合理的。如果想给别人必须提高权限。
当用户为普通用户的时候想把文件传给别人是不允许的。
2.3 目录权限
前面学过了目录类型,d开头的是目录,-开头的是文件。
注意:这里说的是普通用户,超级用户不受限制。
- 如果目录没有r,就无法查看目录里的文件。
- 如果目录没有w,就无法在目录里新建文件。
2.4 缺省权限
对于普通文件,起始权限是666,默认不带可执行。
对于目录文件,只是权限是777,默认带可执行。
umask 权限掩码
最终权限=起始权限&(-umask)
umask目的是凡是umask中出现的权限都不应该在最终全限中出现。
默认权限由操作系统自主决定,无法在创建前进行修改,通过umask让系统可配置能够灵活的满足需要的情况。配置umask,可以控制文件的默认权限,让我们的代码都是可控的。
2.5 粘滞位
在一个普通用户的目录下,在里面创建一个普通用户文件和超级用户文件。这个普通用户的文件相对于这个超级用户的文件访问权限是other,在普通用户下可以根据rwx对超级用户文件进行操作。给当这个超级用户文件other访问权限rwx修改为为不可写不可读不可执行时,现在在普通用户下不能对超级用户的文件进行任何操作。但是在普通用户下可以对此文件进行删除。这时可以得出一个结论,一个文件是否能删除与文件本身无关,与此时所处的目录的w权限有关。
当两个用户需要共享一个文件的时候, tmp 目录是多用户环境中的公共目录,在tmp目录下生成一个公共目录。此时两个用户都能对此尽心修改,当然两个用户之外的用户也可以对此文件进行修改。这时就需要引入粘滞位。
在 Linux 系统中,粘滞位(Sticky Bit) 是一种特殊权限位,主要用于控制对特定目录中文件的删除操作。设置粘滞位后,当前用户只能删除自己的共享文件,删不掉另一个用户的共享文件。只有文件的所有者或 root 用户才能删除或移动该文件,而其他用户即使有写权限也不能删除或移动这些文件。
当一个目录被设置为"粘滞位"(用chmod +t)
chmod +t directory # 为目录设置粘滞位chmod-t directory # 移除目录的粘滞位
删除tmp目录下的共享文件,root删除。
版权归原作者 孤寂大仙v 所有, 如有侵权,请联系我们删除。