一、权限对象
1、文件拥有者(owner)
文件拥有者,也称为文件的属主,由于Linux系统是一个多任务多用户的系统,因此会有很多人来使用这部主机,为了考虑每个人的隐私,文件所有者这个权限就尤为重要。
2、用户组(group)
群组是权限中最有用的功能之一,群组简单理解就是用户组,类似于我们公司的各个部门之间,或者学校的班级之间的划分,每一个班级就是一个群组,群组内的资源是共享的,群组之间是相互隔离的。
3、其他人(others)
对于非文件的拥有者,或者文件的所属组以外的人,我们称为其他人
二、权限类型
- Linux权限基于UGO模型进行控制;U代表User,G代表Group,O代表Other;每一个文件的权限基于UGO进行
- 设置 Linux的基本权限分为读、写、执行(r、w、x),可用数字4、2、1来表示
- 属主:用户若是文件的主人,则匹配属主的权限,权限在文件的左三位,即第一个rwx
- 属组:用户与属组在同 一个组,则匹配属组的权限,权限在文件的中三位,即第二个rwx
- 其他:用户既不是属主也不是属组,则匹配其他的权限,权限在文件的右三位,即第三个rwx
三、r、w、x权限说明
1、对于文件而言
权限 | 说明 |
---|---|
r | 可获取文件的数据 |
w | 可修改文件数据 |
x | 可以将此文件运行为进程 |
2、对于目录而言
权限 | 说明 |
---|---|
r | 可以使用ls命令获取其下的所有文件列表 |
w | 可修改此目录下的文件列表;即创建或删除文件 |
x | 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息 |
四、文件权限判断逻辑
1、判断用户对文件的权限
前提条件:用户能够成功进入到文件所在的目录,即对操作的文件所在目录有x权限
- 删除文件:看用户是否具备对目录的w权限
(1)先判断用户是以什么身份删除文件,按照owner->group->other顺序进行匹配
(2)若是目录的属主,目录权限的左三位有w权限,删除文件成功,无w权限,删除失败
(3)若不是目录属主,但在目录的属组中,如果目录权限的中三位有w权限,则删除文件成功,无则失败
(4)若不是目录属主,也不在目录的属组中,如果目录权限的右三位有w权限,则删除文件成功,无则失败 - 创建文件:和用户删除文件判断逻辑一致
- 修改文件:看用户是否具备对修改的文件的w权限
(1)先判断用户是以什么身份修改文件,按照owner->group->other顺序进行匹配
(2)若是文件的属主,文件权限的左三位有w权限,修改文件成功,无w权限,修改失败
(3)若不是文件属主,但在文件的属组中,如果文件权限的中三位有w权限,则修改文件成功,无则失败
(4)若不是文件属主,也不在文件的属组中,如果文件权限的右三位有w权限,则修改文件成功,无则失败
2、判断用户对目录的权限
前提条件:用户能够成功进入到目录所在的目录,即对操作的目录所在的目录有x权限
- 删除目录:看用户是否具备对上一级目录的w权限
(1)先判断用户是以什么身份删除文件,按照owner->group->other顺序进行匹配
(2)若是上一级目录的属主,上一级目录权限的左三位有w权限,删除目录成功,无w权限,删除失败
(3)若不是上一级目录属主,但在上一级目录的属组中,如果上一级目录权限的中三位有w权限,则删除目录成功,无则失败
(4)若不是上一级目录属主,也不在上一级目录的属组中,如果上一级目录权限的右三位有w权限,则删除目录成功,无则失败 - 创建目录:和用户删除目录判断逻辑一致(包括改名、改时间戳)
- 修改目录(在目录下创建、删除文件):看用户是否具备对修改的目录的w权限,与上一级目录是否有w权限无关
(1)先判断用户是以什么身份修改目录,按照owner->group->other顺序进行匹
(2)若是目录的属主,目录权限的左三位有w权限,修改目录成功,无w权限,修改失败
(3)若不是目录属主,但在目录的属组中,如果目录权限的中三位有w权限,则修改目录成功,无则失败
(4)若不是目录属主,也不在目录的属组中,如果目录权限的右三位有w权限,则修改目录成功,无则失败
五、权限管理命令
1、chmod命令
三类用户:
u:属主
g:属组
o:其它
a: 所有
赋权表示法:直接操作一类用户的所有权限位rwx;
u=
g=
o=
a=
授权表示法:直接操作一类用户的一个权限位r,w,x;
u+,u-
g+,g-
o+,o-
a+,a-
-R, --recursive:递归修改
注意:用户仅能修改属主为自己的那些文件的权限
2、chown命令
修改问价的属主,一并修改属组
chown owner:group file
chown root file
chown :root file
-R:递归修改
3、chgrp
chgrp [option]… group file…
仅管理员可以修改文件的属主和属组
例:复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的所有文件的属组为jerry,并让属组对目录本身拥有写权限
六、进程安全上下文
进程对文件的访问权限应用模型
进程的属主与文件的属主是否相同;如果相同,则应用属主权限;
否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限;
否则,就只能应用other的权限
Linux的进程安全上下文法则
启动进程的权限问题:
能否启动一个可执行程序文件作为一个进程PID,取决于此用户是否对这个文件有可执行权限x
例:能否将/bin/cat执行为一个进程,取决于用户是否对此文件有x权限
/bin/cat的owner,group,other都具备x权限,所以都可以将此文件启动为一个进程
来源:CSDN
作者:hiolb
链接:https://blog.csdn.net/hiolb/article/details/104778112