?个人主页?:孤寂大仙V
?收录专栏?:Linux
?往期回顾?:Linux常见指令(初学者必看)
?流水不争,争的是滔滔不
一、Linux下的两种用户超级用户(root)和普通用户su指令sudo指令 二、Linux权限管理2.1 文件访问者拥有者所属组others 2.2 文件类型和访问权限文件类型文件权限值的表示文件访问权限的相关设置方法(chmod)修改文件拥有者或所属组(chown和chgrp) 2.3 目录权限2.4 缺省权限umask 权限掩码 2.5 粘滞位
一、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文件的所属组从普通用户改到超级用户。
注意:
当我们是普通用户的时候,系统默认不允许我们把文件传给别人是合理的。如果想给别人必须提高权限。
当用户为普通用户的时候想把文件传给别人是不允许的。
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删除。