📝前言:
上篇文章我们对Linux的基本指令进行了收尾,这篇文章我们来理解一下Linux的权限
🎬个人简介:努力学习ing
📋本专栏:Linux
🎀CSDN主页 愚润求学
🌄其他专栏:C++学习笔记,C语言入门基础,python入门基础,C++刷题专栏
Linux权限
一,shell命令介绍
在了解Linux操作权限之前,我们先补充一个知识点,shell
——命令行解释器。对于Linux
而言,Linux
是操作系统,它是内核,用户无法直接对操作系统进行操作,于是就有了kernel的“外壳”程序:shell
。
shell
的作用:
- 将使⽤者的命令翻译给核⼼(kernel)处理。
- 同时,将核⼼的处理结果翻译给使⽤者。
二,Linux权限
权限 = 角色 + 目标属性,修改权限,起始就是该角色,或者改目标属性。
1. Linux下的用户
Linux下分为两种用户:root
用户和普通用户
root
用户具有超极权限,不受权限约束,做任何事情不受限制- 普通用户受到权限的约束
- 超级⽤⼾的命令提⽰符是
#
,普通⽤⼾的命令提⽰符是$
只有具有对应的权限才可以进行某些操作,比如要在usr/bin
目录下安装程序,这时候就需要root
权限。
如果普通用户没有root
权限,可以通过sudo
来进行短暂提升权限。
sudo
的提权是基于root
用户设置的“白名单”,在白名单内的用户才能够提权。
如tr
用户未在白名单里面:
2. 命令su
有su 用户名
和 su - 用户名
两种方式,su
切换时,当前的目录不变,用su-
切换时,相当于用另一个用户重新登录。
- 对于
root
切换到其他用户,不需要输入密码 - 其他用户切换到
root
,需要输入密码(输入密码的时候不回显)
如root
用户切换到用户tr
(注意看目录还是/home
):
tr
切换到root
(注意看目录变成了~
家目录):
创建用户:使用adduser 用户名
,这条命令会自动在/home
目录下生成用户目录
3. Linux权限管理
3.1. 文件访问者
- ⽂件和⽂件⽬录的所有者:u—User
- 件和⽂件⽬录的所有者所在的组的用户:g—Group
- 其它用户:o—Others
u
和g
以外的就是o
,
第一个root
代表拥有者,第二个root
代表所属组
我们再看:第一个-
代表文件属性,后面每三个字符为一组,代表对应的访问者的权限
每个字符都是两态的,即表示允许(1)或拒绝(0)
,即:r
或 -
。
且顺序必须是rwx
,r
:读权限,w
写权限,x
可执行权限(有了可执行权限并不代表文件就可执行,还要求文件是可执行文件才可执行)。
因此某一用户的权限也可以用一个8进制的数字来表示:如6
代表:110
,即:rw-
。
对于目录:
r
:是否能查看目录内容和目录里面的文件,如ls
,以及:就算内部文件有r
权限,但是父目录没有r
,则也看不了这个内部文件w
:是否能在该目录创建和删除文件,一个文件能否被删除和文件本身权限无关,与该文件所在的目录的w
权限有关。x
:是否能够进入这个目录
默认情况下,如果要新建一个目录,则rwx
权限都要有
4. 修改权限
1. 修改目标属性
命令:chmod [参数] 权限 ⽂件名
说明:只有⽂件的拥有者和root
才可以改变⽂件的权限
常⽤选项:
R
递归修改⽬录⽂件的权限
chmod命令权限值的格式:
用户表示符 +/-/= 权限字符
权限字符 | 作用 |
---|---|
+ |
增加 |
- |
删除 |
= |
赋予 |
用户符号 | 含义 |
---|---|
u |
拥有者 |
g |
所属组 |
o |
其他用户 |
a |
所有用户 |
实例:
chmod u+w abc.txt
,修改单人单权限chmod o-rwx abc.txt
,修改单人多权限chmod u+x, g-rw abc.txt
,修改多人多权限
三位8进制数字:
chmod 664 abc.txt
,(即:拥有者:rw-
,所属组:rw-
,其他人:r--
)chmod 640 abc.txt
当我们访问一个文件时,如果没有对应的权限,系统就是拒绝我们的访问
centos下,权限只确定一次,且确定权限的顺序是:拥有者→所属组→其他用户(即先判断是不是拥有者,如果是则按拥有者的权限,如果不是就再判断是不是所属组,以此类推)
2. 修改拥有者
chown
chown
命令:
格式:chown [参数] 用户名[:所属组] ⽂件名
前提:必须有root
级别的权限才可以修改拥有者(root
用户,或者sudo
提权)
如,普通用户无法把文件拥有者改成别人:
root
用户:
chgrp
chgrp
命令:
功能:修改⽂件或⽬录的所属组(也需要root
权限)
格式:chgrp [参数] 用户组名 ⽂件名
常⽤选项:-R
:递归修改⽂件或⽬录的所属组
5. 缺省权限
如图,创建一个文件的时候,系统自动会给不同角色赋予默认的权限,如这里是664
,这就是缺省权限。
系统在创建的时候,默认权限分别是:文件:666
,目录:777
那为什么这里是664
呢?
这就要谈到umask
umask
umask
是系统中存在的权限掩码,即:凡是umask
中出现的权限,最终权限中都不能出现。
umask
四位数字的构成和含义
umask
显示为四位八进制数,其中第一位表示特殊权限位,后三位分别对应所有者、所属组和其他用户的权限掩码。
- 特殊权限位(第一位):这一位用于设置特殊权限,也就是
setuid
(4)、setgid
(2)和sticky
(1)。例如,若umask
为0022
,第一位的0
表示不设置特殊权限 - 所有者权限掩码(第二位):对应所有者的权限掩码,在
0022
中,第二位的0
表示不对所有者的默认权限进行屏蔽。 - 所属组权限掩码(第三位):对应所属组的权限掩码,
0022
中的第三位2
表示屏蔽所属组的写权限。 - 其他用户权限掩码(第四位):对应其他用户的权限掩码,
0022
中的第四位2
表示屏蔽其他用户的写权限。
具体计算方法:最终权限 = 起始权限 & (~umask)
,其实也是起始权限 - 对应位umask
比如对于所属组:起始权限:111
,umask是010
,则最终权限:111 & 101 = 101
为什么要有umask
呢?
umask
可以去除一些不必要的权限,满足需求和保证安全- 配置
umask
,可以控制新生成的文件的默认权限,满足更多用户的需求
umask
也可以修改:
Linux的多用户之间的“隔离”也是通过这个实现的。当我们新建用户的时候,会在/home
目录下创建独立的用户文件,这个文件默认对自身开放所有权限,但是对其他非root
用户的权限都禁止。
t 粘滞位
对于共享类目录(即other
都有rwx
权限),想让other
都能新建文件,但是非文件的拥有者无法删除别人的文件(即使有该目录的w
权限),如何实现呢?
方法:给目录设置一个"粘滞位"t(在删文件时对权限做再判断)
语法:chmod o+t 目录名
当⼀个⽬录设置了"粘滞位",则该⽬录下的⽂件只能由
- 超级管理员删除
- 该⽬录的所有者删除
- 该⽂件的所有者删除
如,根目录下的tmp
就自带t
🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!