ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

RHEL之(一)Red Hat Linux 文件权限

2021-04-01 20:01:54  阅读:332  来源: 互联网

标签:文件 -- root 修改 RHEL Linux 权限 Hat 目录


(一)Red Hat Linux 文件权限

Linux系统中不仅是对用户与组根据UID,GID进行了管理,还对Linux系统中的文件,按照用户与组进行分类,针对不同的群体进行了权限管理,用他来确定谁能通过何种方式对文件和目录进行访问和操作。

 

一、概念

身份:一个用户对于一个文件或者目录而言,具有的身份。

(1)文件的权限针对三类对象进行定义

owner 属主,缩写u

group 属组,缩写g

other 其他,缩写o

root用户是超级管理员,但root组是一个普通组。

 

(2)每个文件针对每类访问者定义了三种主要权限

r:Read 可读--能够读取文件或者目录内容的权限

w:Write 可写--能够修改文件或者目录的内容

x:eXecute 可执行

针对文件而言,x叫可执行;

针对目录而言,x是否能够成为一个用户的工作目录

 

Tips:

X:针对目录加执行权限,文件不加执行权限(因文件具备执行权限有安全隐患)

root账户不受文件权限的读写限制,执行权限受限制

 

查看示例:

 

 

 

 

Tips:解读-rw-r--r--

 

输出结果的第一个字段就是描述文件和目录权限的编码。这个字段的第一个字符代表了对象的类型:

 

 

 

 

-   代表文件

d   代表目录

I   代表链接

c  代表字符型设备

b  代表块设备

n  代表网络设备

后面的有3组三字符的编码,分别是对应的owner、group、other组,rwx对应的权限类型在上面已经给出。

 

 

 

 

 

Tips:文件权限在对于文件和目录时具有不同的含义

文件权限:

r(read):可读取此文件的实际内容,如读取文本文件的文字内容;

w(write):可以编辑、新增或是修改文件的内容(不包含删除文件);

x(execute):该文件具有可以被系统执行的权限;

 

文件夹权限:

r:表示具有读取目录结构列表的权限,当你具有一个目录的r权限时,表示你可以查询到该目录下的文件名数据

w:表示具有改变目录结构的权限,包括新建文件与目录、删除文件与目录、重命名文件及目录、移动文件及目录位置

x:代表用户能否进入该目录成为工作目录

 

利用一个示例进行说明:

 

如前所述:文件/etc/fstab的other组权限为r--,他的属主为root,属组为root。即当将使用者更换为user10时(此时他就是other身份),此时user10的权限就是r--(只可读)

 

此时user10可以读取/etc/fstab,但是若对文件进行修改时,当退出保存时,会报出以下错误,代表user10没有/etc/fstab。同理,若该文件是个可执行文件(如.sh),user10也不能对他执行。

 

 

 

对于目录权限的分析:

 

可知当使用用户user10,具备的权限是r(可读)和x(可执行)

当一个用户针对一个目录具备r权限的时候,是能够查看到该目录下的内容的,但只限一系列文件名以及目录名称。若目录r权限去掉,则无法读取这个目录下的文件名和目录名。

 

 

为other组加回r权限,而删去x权限,此时的user10连进入目录都做不到了(修改权限的方法在下面继续探讨)

 

Tips:总结

只要你想一个用户针对一个目录可访问:具备读取r和执行x权限是必要的,单纯的r和单纯的w都是没有任何意义的。

而针对目录的w(写入)很简单,即是否能在该目录下创建或者删除文件。

 

所以,针对目录的权限设置,存在以下3种情况:

<1> r-x

<2> rwx

<3> ---

以下这些情况基本不存在:

r-- :仅能读取到目录中的文件名,不能访问目录

-w- : 连目录都访问不到,写权限没有意义

--x :  只能cd进入访问目录,不能读写

rw- : 连目录都访问不到,读写权限没有意义

-wx :只能访问目录不能读取目录内容,写权限没有意义

 

对于文件而言的权限设置,一般存在以下几种:

r-- 可以仅仅读取

rw- 可以读写

rwx 可读可写可执行

--- 什么权限都没有 

r-x 可读可执行

 

 

(3)使用数字对权限的表示

可以将rwx分别对应一个三位数的二进制,当拥有此权限时,将该位置的数字置为1,否则为0。

因此 r=4 w=2 x=1 而每种身份各自的权限是各自三个权限数字的累加

示例如下:

 

 

一、权限修改

1、修改权限

命令:chmod 修改权限 要修改权限的文件或目录

A、记号法

 

Tips:

u:拥有者 g:所属组 o:其他人

=:直接赋予权限

+:在原基础上加权限

-:在原基础上减权限

 

B、数字法

 

 Tips:

数字表示权限的方式如前所述。

拥有者(u)的权限:rwx=4+2+1=7

所属组的权限(g):r-x=4+1=5

其他人的权限(o):-wx=2+1=3

 

 

2、身份修改

A、修改所属者:chown

命令:chown 要修改的所属者 要修改的文件或目录

 

 

 

 

B、修改所属组:chgrp

命令:chgrp 要修改的所属组 要修改的文件或目录

 

Tips:使用命令修改所属者或所属组为user10后,管理员(root)还是可以对该目录进行操作。所以root用户拥有最高的权限,也可以看做无论怎么更改,root拥有系统上所有文件的所有权限。

 

 

 

 

 

 

二、默认权限

 

 

 

 

创建目录的默认权限为755,创建文件的默认权限为644

决定默认权限的是一个叫umask(反掩码)的默认属性,root用户的umask的值默认为0022

 

一个目录的创建权限等于:满权限(777)-umask值=777-022=755

一个文件的创建权限等于:满权限(666)-umask值=666-022=644

Tips:root用户和普通用户的umask值不一样的。(可以查看/etc/profile文件)

 

 

 

 

Tips:修改umask值

临时修改:直接使用命令--umask 修改后的值

永久修改:编辑配置文件/etc/profile --vim /etc/profile,修改的位置如下图,修改后需要source /etc/profile之后永久生效。

 

 

三、特殊权限

(1)SUID

作为一个普通用户,是否可以自己更改自己的密码呢?答案是可以的。

 

 

 

 

Linux系统的所有用户名和密码均存放在文件/etc/shadow中。修改一个用户的密码,其实就是更改配置文件 /etc/shadow

 

由上图可知,该文件任何人均没有修改的权限,即便是root用户。

但是为什么普通用户user40却能执行passwd命令对自己的密码进行更改呢?

在linux系统中,当执行一个命令时,其实就是执行在/usr目录中的一个二进制可执行文件,可以使用命令which来定位到某个命令对应的二进制可执行文件(如下图所示)

 

可以看到,命令passwd的二进制可执行文件的所属者权限中,执行权限的位置上从x变成了s,也就是我们所说的GUID。

普通文件:rwx   带SUID的文件:rws 

SUID:当一个s权限出现在所属者的x位上

作用: 当一个普通用户user40去执行一个带有SUID的二进制文件 (passwd),那么这个用户(test1)在执行过程中,会暂时获得获取到这个二进制文件(passwd)的拥有者(root)的权限。后续操作比如修改文件(passwd) 这个文件的时候,会拿着(root)这个拥有者的身份去执行,这个操作仅仅对二进制文件生效。

原理:普通用户执行passwd→/etc/shadow→root身份去执行

 

 

 

 

Tips:

如果是rwS,则本身文件是没执行权限的,仅仅获得了SUID功能而已,SGID同样适用。

操作命令:chmod u+s filename/directoryname

 

 

(2)SGID

与SUID同理,当一个s权限出现在属组的x位上时,为SGID

A、针对二进制文件:文件执行过程中获取文件属组的权限。

B、针对目录:默认情况下,我们新建一个文件或目录的时候,它的属组是这个用户的初始组。

 

 

加上SGID之后,其下新建的目录及文件会继承该目录的属组(不继承属主)。

操作命令:chmod g+s filename/directoryname

 

 

 

 

(3)sticky(粘滞位)

sticky bit:仅对目录生效,若该目录其他人(other)的执行权限出现了t,那么该目录下的文件或目录,仅文件所有者及root用户能删除

操作命令:chmod o+t filename/directoryname

 

通过目录可以看出里面的文件f3和f5的所属者分别对应root和user10。此时如果使用user20对这两个文件进行删除操作,会提示因没有权限而被拒绝。

 

Tips:

超级权限数值法:suid 4XXX / sgid 2XXX / sticky bit 1XXX

 

 

(4)写保护特殊权限:i和a

操作方法:

修改:chattr +i/+a filename

列出:lsattr filename

+i:硬写保护,只能读不能写,不能删除

 

加了硬写保护后,不能删除,不能通过重定向修改文件。

 

也不能用vim直接修改

 

 

+a:软写保护,只能读不能写,不能删除原有内容,但是能通过重定向追加更新内容

 

 

 

可以通过重定向的方式(echo)修改文件

 

 

(5)给特定用户设置对应的权限--ACL

当需要给不同用户设置对应不同的文件(目录)权限时,可以通过设置文件访问控制列表,即ACL(Access Control List)规则来实现。

查看acl:getfacl

设置acl:setfacl

 

A、通过getfacl获取文件(目录)的ACL列表

 

 

B、setfacl设置ACL规则

为文件设置:

setfacl -m u:user10:rw- /tmp/testprivillege/f1

 

 

 

为目录(若是递归)设置:

setfacl -Rm u:user20:rwx /tmp/testprivillege/

 

 

 

由于是递归的添加,可以看到该目录下的文件也会添加上对应的规则

 

 

 

 

C、删除ACL规则

删除一条记录:

setfacl -x u:user20 /tmp/testprivillege/f1

 

 

 

删除所有记录:

setfacl -b /tmp/testprivillege/f1

 

 

D、默认ACL:定义用户对于文件的ACL的最大权限

设置默认ACL:

[root@servera test_privillege]# setfacl -d 权限 /tmp/testprivillege 

移除默认ACL:

[root@servera test_privillege]# setfacl -k /tmp/testprivillege

 

Tips:

参考链接:https://www.cnblogs.com/ftl1012/p/setfacl.html

标签:文件,--,root,修改,RHEL,Linux,权限,Hat,目录
来源: https://www.cnblogs.com/zylSec/p/14607868.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有