第六章 权限管理

一、 管理 UNIX 基本权限与特殊权限

6.1 UNIX 基本权限( UGO 权限)

6.1.1 权限的作用

权限的作用是针对文件和目录,是否允许授予用户和组执行读、写或执行的操作。

6.1.2 UGO权限的构成 u g o

u 文件和目录的拥有者(所有者,所属用户)

g 文件和目录的所属组

o 其他用户(不属于文件的所属用户也不属于所属组)

6.1.3 UGO权限的权限标识符

在这里插入图片描述

在这里插入图片描述

r = 4 w = 2 x = 1

难点:理解r、w、x对目录的影响

☛ 首先:Linux 一切皆文件

☛ 读权限影响着:我们能否看到目录文件内容,即:读取文件和子目录的名称列表 ®

☛ 执行权限影响着:我们能否执行目录文件内容,即:访问文件和子目录的inode 数据 (x)

☛ 写权限影响着:我们能否改变目录文件内容,即:新增/删除/移动/更名文件和子目录 (w)

在这里插入图片描述

权限标识的表示格式

在这里插入图片描述

6.1.4 UGO 初始权限的生成机制 (了解)

★ cmask:就是要默认创建的权限位。

★ umask:就是要默认屏蔽的权限位。

cmask 也就是 root 用户初始建立目录和文件的权限

在这里插入图片描述
在这里插入图片描述

umask 可以被修改

用户创建文件和目录的初始权限为 cmask - umask

因为umask是022 所以目录权限是 755(rwxr-xr-x) ,文件是644 (rw-r–r–),不带x权限,可用root用户创建目录和文件 ll 查看去验证

UNIX初始权限 = 在cmask权限位中,去除umask权限位
某普通用户目录权限 = 777 - umask
某普通用户文件权限 = 666 - umask

对目录来说没用问题。对于文件来说,文件是没有 执行(x)权限的,所以当umask里面有执行(x)权限,不能用这个公式

例如 umask 为 033 时 ,文件初始权限为 644

文件:

cmask 666 rw- rw- rw-

umask 033 — -wx -wx

权限 644 rw- r- - r–

无论什么情况,初始文件创建都是没有可执行(x)权限 ,否则 比如 创建一个病毒会直接执行

6.2 管理UNIX 基本权限

ugo权限

6.2.1 chmod命令更改rwx权限

chmod重点

功能:重设、添加、删减UNIX基本权限

语法 :chmod [选项]… 模式… 文件名…

选项 : -R 递归操作,应用于目录 --reference=参考文件 通过引用参考文件的UNIX权限设置,来配置UNIX权限

[模式] 格式 : ugoa -+= rwxXst 或者格式 0~7数字 r4 w2 x1

其中:

​ u :代表所有者

​ g :代表所属组,默认情况下,是所有者的主要组

​ o :代表其他人

​ a :代表所有人(所有者、所属组、其他人)

chmod 命令的三种授权方法:

☞ 方法1:重置权限(=),覆盖式配置文件和目录的权限。

☞ 方法2:添加权限(+),在现有权限的基础上,添加权限。

☞ 方法3:撤销权限(-),在现有权限的基础上,删减权限。

1 查看文件和目录的UGO 权限

ls - l /tmp/1.txt            ## 查看1.txt的权限信息

2 添加文件和目录的UGO 权限

chmod u+rx /tmp/1.txt        ## 给 1.txt 的所有者增加rw权限

3 撤销文件和目录的UGO 权限

chmod g-r /tmp/1.txt         ## 给 1.txt 的所属组取消r权限

4 重置文件和目录的UGO 权限

chmod o=rw /tmp/1.txt    	 ## 给 1.txt 的其他用户权限改成rw-

5 ugo权限全部修改 常用方式

chmod 654 /tmp/1.txt         ## 给 1.txt 的权限改成  rw-r-xr--   
6.2.2 chown更改所有者和所属组

语法 :chown [选项] 所有者 :所属组 文件或目录名

选项有 -R 递归操作,用于目录

chown     cl:cl  1.txt     ## 把1.txt的所有者和所属组都改成cl                          
chown     cl     1.txt		## 把1.txt的所有者改成cl,所属组不变
chown       :cl  1.txt		## 所有者不变,把1.txt的所属组改成cl
chown     cl:cl  a			## 把目录a的所有者和所属组都改成cl,目录下的所有者和所属组不变
chown -R  cl:cl  a			## 把目录a和a目录下的的所有者和所属组都改成cl

chgrp 更改所属组,了解就好,不如chown

语法 : chgrp [选项] 所属组 文件或者目录名

选项有 -R 用法 和chown一样,了解就好

6.2.3 管理:UNIX 特殊权限(功能性解决不了时使用)
1 了解 UNIX 特殊权限

目录本身有rwx权限时候,可以进行增删子文件,在修改文件的时候,就算子文件没有权限修改(只读文件),用户也可以通过强制保存 wq! 修改

特殊权限有 SUID(4)、SGID(2)、SBIT(1)

SUID(4) 的功能作用:让用户在执行特定应用程序的过程中被临时提权。(u)

​ 仅用于命令,让该命令变成文件或目录的所属者去执行文件和目录 所属者有什么权限该命令就有什么权限

SGID(2) 的功能作用:统一设置文件和子目录的所属组和进程的运行组账号。(用于命令和目录,让目录下的文件和目录继承该目录所属组)(g)

​ 对于命令,让该命令变成文件或目录的所属用户权限去执行文件和目录 所属用户有什么权限该命令就有什么

​ 对于目录, 让该目录下的文件和目录(不仅子目录,孙子目录及以下也会继承)继承其所属用户

SBIT(1) 的功能作用:防止非特权用户的误删除和强制修改并夺权。(o) (防删除键) 非特权用户表示该用户对目录有权限,但对于目录里的文件没有权限

​ 仅对于目录 ,禁止目录下的文件和目录被删除和更改,强制保存也不行 (对文件有权限的用户可以修改,对目录有权限对文件没权限不行)

​ 只有目录的所有者、文件所有者和 root 用户才能删除或重命名该目录中的文件。(目录其他用户有权限也不行,用户对文件有权限可以修改)

2 配置 UNIX特殊权限

在这里插入图片描述

​ SUID SGID SBIT

u+s g+s o+t

​ 原来是 rwx rw- rw- 变成 rws rwS rwT 大写表示本来是-,小写表示本来是x

SUID(4) 的功能作用

​ 作用于可执行文件(命令)

​ 让 命令 临时拥有可执行文件的权限,即以该文件的所属用户权限去执行(相当于拥有尚方宝剑),例子如下:

su cl                         ## 切换普通用户
cat  /var/log/messages        ## 会显示权限不够
which cat                     ## 查看 cat 命令路径,显示user/bin/cat
ll  /user/bin/cat			  ## 查看 cat 权限 即rwxr-xr-x   
chmod u+s /user/bin/cat		  ## 赋予SUID 权限 即rwsr-xr-x 如果是rw- 使用u+s 变成 rwS  大写表示没有,小写表示有执行权限
cat  /var/log/messages        ## 可查看日志

SGID(2) 的功能作用

1 作用于可执行命令 和SUID差不多,只不过是 变成以该文件的所属组权限去执行 (少用)

2 作用于目录 (常用)

​ 在更换目录所属用户组时,在其下创建的文件所属用户组也跟着改变,例如

当前在root用户下
cd /tmp
mkdir a             ## a的所属用户和所属用户组都是root
ll    a             ## 查看权限是rwxr-xr-x
chown : cl  a       ## a的所属用户组改成 cl
touch /tmp/a/1.txt  ## 发现1.txt的所属用户组还是root
chmod g+s a         ## 权限变成rwsr-xr-x
touch /tmp/a/2.txt  ## 发现2.txt的所属用户组变成cl

SBIT(1) 的功能作用

​ 作用于目录 锁住目录,让目录下的文件或目录,只能该目录所有者和目录下的文件所有者还有root用户可以进行增删重命名。如果对文件有权限就有权限作用,对文件没有权限但是对该文件的父目录有权限也不能通过 wq!强制保存进行修改

su cl                ## 切换普通用户
mkdir a      cl:cl	## 当目录的其他用户有rwx权限,其他用户可用增删子目录和子文件
					## 如果子文件是只读文件,但是因为该父目录有w权限也可以通过 wq! 强制保存进行修改
su dj                                                
touch a/1.txt   dj:dj   ## 当文件的其他用户有rwx权限,其他用户也能修改文件内容    
						 ## 可用cl或者其他用户验证

chmod u+t  a             ## 如果本来是rwxrwxrwx权限变成rwxrwxrwt  

注意:执行该操作后,只有cl用户和dj用户还有root可以对目录下的文件或目录进行删除改名等操作,别的都不行,其他用户对目录有权限但是对该文件没有权限是不能修改的

注意 如果是 775 即rwxrwxr-x 如果使用chown o+t 1.txt 那么会变成rwxrwxr-t

后面如果是 T/S ,说明本来是 - (无执行权限) 如果 是t/s ,说明本来是x(有执行权限)

二、 管理 ACL 访问控制列表

1 了解ACL (范围性解决不了使用)

ACL 是 Access Control List 的缩写,主要的目的是在提供传统的 owner,group,others 的 read,write,execute 权限之外的细部权限配置。

ACL 可以针对单一使用者,单一文件或目录来进行 r,w,x 的权限规范,对于需要特殊权限的使用状况非常有帮助。

ACL 主要可以针对以下几个方面来控制权限:

使用者 (user):可以针对使用者来配置权限;

群组 (group):针对群组为对象来配置其权限;

默认属性 (mask):还可以针对在该目录下在创建新文件/目录时,规范新数据的默认权限;

ACL 的作用:用于弥补UNIX 基本权限不够精细的缺陷,实现更加精细的权限控制。

ACL 是文件系统所赋予的一种安全特性,它不属于UNIX 基本权限的范畴。

当前 CentOS 7 所采用的XFS文件系统就已经默认启动了ACL 特性,可以直接使用。

( acl是特性,不是权限范围,要手动开启)

2 getfacl 和 setfacl 命令

getfacl 是 get file access control list 的简称

setfacl 是 set file access control list 的简称

getfacl功能 : 用于查看文件或目录的ACL 访问控制列表。(查看ACL)

语法 : getfacl [选项] <文件和目录> … 可写多个文件或者目录

选项 : -a -d -r 可不写

-a 				      # 显示ACL 访问控制列表,这是默认选项  几乎都显示
-d 				      # 仅显示ACL 默认权限 显示#注释的内容
-e 				      # 显示出ACL 有效权限 几乎都显示
cd /tmp
getfacl 	 1.txt    查看acl,即1.txt里面的默认权限 # 前面有注释和有效权限 
getfacl -a	 1.txt	  显示1.txt的权限控制列表,即所属用户,所属用户组,其他用户对他的权限(常用)
getfacl -d	 1.txt    显示1.txt的默认权限 # 注释内容
getfacl -e   a   	  显示目录a的有效权限

setfacl功能 :用于配置文件或目录的ACL 访问控制列表。

语法 : setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] <文件和目录> … 可写多个文件或者目录 空格隔开

**例如 : setfacl -m u:dj:r-- /tmp/test **

​ setfacl -m g:dj:rwx /tmp/test

​ setfacl -d -m g:dj:rwx /tmp/a

意思是代表对用户dj 针对于 test这个文件或者目录 赋予他的权限为r–

属性可能是 用户 ,也可能是用户组或者其他

选项: 可不写

-R                   		# 表示递归操作(对目录生效)(慎用,少用,新创建的没有该权限) 
-m                  		# 修改ACL 列表项
-x                   		# 删除ACL 列表项  删除某一添加的
-b, --remove-all     		# 清除ACL 所有扩展的列表项(恢复出厂)
-d, --default        		# 设置目录的ACL 默认权限,赋予目录可被其目录下的新建的文件或目录继承该ACL,本身目录下存在的文件也没有权限(本身没有继承)
-k, --remove-default 		# 清除目录的ACL 默认权限 (清除继承权限)

## 如果 要某目录下的内容  新创建的内容都要有权限 那 -R 和 -d联合使用且写两遍

2.1 修改-m,删除-x,清空-b,重置-b -m

对某个文件或目录修改ACL权限(在后面对某一属性添加权限,与文件或目论本身默认权限的无关) -m

setfacl -m u:cl:r-- /tmp/test    ## 对用户cl添加acl修改权限为r-- 仅对于test目录生效
getfacl  /tmp/test               ## 查看test的acl,进去可以看到多了一行内容  user:cl:rwx
setfacl -m g:cl:rwx /tmp/test 	 ## 对用户组cl添加acl修改权限为rwx 仅对于test目录生效
getfacl  /tmp/test               ## 查看test的acl,进去可以看到多了一行内容  group:cl:r-x
setfacl -m u:it01:--- /tmp/myfile	## 该命令也是设置用户it01的ACL,但是这里“---”表示用户it01没有任何权限
setfacl -m u:it01:- /tmp/myfile		## “-”表示移除用户it01的所有权限

对于某一目录或文件针对某一属性删除ACL -x

setfacl -x u:cl /tmp/test       ## 对用户cl删除在test目录里面添加的ACL
setfacl -x g:cl /tmp/test 		## 对用户组cl删除在test目录里面添加的ACL
getfacl /tmp/test               ## 验证cl用户和用户组所添加的ACL内容是否删除

清空ACL(相当于恢复出厂) -b

setfacl -b /tmp/test                   

重置ACL(先清空,在添加) -b -m

setfacl -b -m u:cl:rw- /tmp/test     ## 先把扩展权限清空,
									 ## 然后给用户cl添加权限rw- 仅对于test而言

2.2 配置ACL 可继承默认权限(仅针对目录) -d -m

setfacl -d -m u:cl:r-x /tmp/a    ## a是目录,添加目录的ACL权限
								 ## -d 使且让其子目录可以继承其ACL
setfacl -m u:cl:r-x /tmp/a       ## 本身不会被继承,要想本身也有权限得写
getfacl  /tmp/a                  ## 查看如下图所示           

如图所示

在这里插入图片描述

图方框内为可被继承的权限

touch /tmp/a/1.txt    
getfacl /tmp/a/1.txt         ## 查看发现如下图所示已经继承a目录的ACL

在这里插入图片描述

2.3 清空ACL 可继承默认权限(仅针对<目录> -k

setfacl -k /tmp/a    ## 把a里面可继承的ACL权限删除 即删除上方方框里面default开头的内容
getfacl   /tmp/a     ## 查看ACL验证是否清除 

2.4 让原来的文件和后面的文件都拥有继承功能

setfacl -R -m u:cl:r-x /tmp/a       ## 递归写入,让目录a本身及其以下原有的文件都拥有 r-x 权限
setfacl -R -d -m u:cl:r-x /tmp/a 	## 让目录a以下新建的文件或者目录继承 r-x 权限
									## 仅对于用户cl来说

三、扩展权限(万不得已使用)

不建议使用,甚至可以阻止root用户进行操作

lsattr 和 chattr

lsattr 查看扩展权限

语法 :lsattr [选项] 文件名

选项一般不用 -a ,-d ,-R 和 ls 里面选项作用一样

lsattr  1.txt            ## 主要查看chattr有没有给1.txt文件赋予了什么权限

chattr 设置文件扩展权限

语法: chattr [ (+或-或=)权限 ] 文件名

比如 chattr +a 1.txt

权限[选项] :

a :仅附加<属性>
★ <文件和目录>不能被<删除/重命名/移动>,但是,可以<附加数据>,可复制
★ 针对该<文件>不能创建<硬链接>,针对该<文件和目录>可以创建<符号链接>
i :一成不变<属性>
★ <文件和目录>不能被<修改/删除/重命名/附加数据> root也不能修改内容 ,可复制
★ 针对该<文件>不能创建<硬链接>,针对该<文件和目录>可以创建<符号链接>

还有别的选项

注意:给文件附加或修改内容时候,不能使用vim、vi ,只能使用 echo 进行附加内容

a选项 可用cp不能使用mv

touch 1.txt
echo 111 > 1.txt          ## 写入111  成功
chattr +a 1.txt           ## a仅允许添加数据,不允许修改数据
echo 222 > 1.txt          ## 失败,不能写入222覆盖   root用户也不行
echo 222 >> 1.txt         ## 在第二行添加加222成功 

可以使用cat 1.txt查看文件内容     还可以使用lsattr 1.txt  查看 发现 a 权限

i选项 可用cp 不能使用mv

touch 1.txt
echo 111 > 1.txt         ## 写入111  成功
chattr +i 1.txt          ## a仅允许添加数据,不允许修改数据
echo 222 > 1.txt         ## 失败,不能写入222覆盖
echo 222 >> 1.txt        ## 失败,不能附加222内容

四、su 用户切换

su 命令功能: 切换用户身份

su 命令的使用方法如下

第1种 切换方式:su user01

执行:不完整的 login 用户登录,也称之为 non-login 登录。(登录 了3个配置环境,共五个)

最直接的感知就是:切换之后,当前目录未发生改变。

第2种 切换方式:su -l user01 或者 su - user01

执行完整的 login 用户登录。 (登录了全部5个配置环境)

最直接的感知就是:切换之后,当前目录变成了用户家目录。

五、sudo 用户提权

sudo 命令功能:让当前用户通过临时提权的方式来执行一个特权的命令。

提示:用户能否通过sudo命令来提取,取决于</etc/sudoers 配置文件>的授权配置。

给普通用户提权: (两个办法)

1 或者去/etc/sudoers 文件里面后面写入内容(防止不知道写在哪)

2 或者去 /etc/sudoers.d 目录下创建一个文件,仍会在文件里面写入内容提权 (建议用这个,因为出问题可以直接把创建的文件删掉)

3 visudo 进去文件里面写入内容,是进去 vi /etc/sudoers 文件

/etc/sudoers.d 属于 /etc/sudoers 下被包括的目录 ,在里面创建的文件写内容也可以配置sudo

可使用 cat -n /etc/sudoers 或者 cat /etc/sudoers | grep -vE ‘^\s*(##|# |#\s* ∣ | )’ 查看内容

写入的内容: (全部提权)

user01       ALL  =  (ALL)    NOPASSWD: ALL
%groud01       ALL  =  (ALL)    NOPASSWD: ALL
     
 # 指定的用户或组  主机名  可切换的用户   无需口令  命令           %  代表是用户组不是用户   

例子 下面给用户cl 和dj 进行配置sudo 提权功能

1 给 cl 配置 使用sudo时候需要输入密码验证

cd /etc/sudoers.d
vim cl                            ## 没有cl文件会创建一个cl文件,换别的文件名也可以
切换命令模式输入   cl ALL=(ALL) ALL  ## 保存退出即可

2 给dj配置 使用sudo不需要密码验证

cd /etc/sudoers.d
vim dj                  
切换命令模式输入   dj ALL=(ALL) NOPASSWD: ALL    保存退出即可

3 给cl 配置 sudo 不能使用 rm -rf/* 命令的权限

(部分不提权)

which rm           ##  查看rm位置,可知在 /usr/bin/rm 或者显示 /bin/rm  
				   ## 因为/bin在/usr目录下,但是 ll / 也可以显示bin
cd /etc/sudoers.d
vim cl                                   
切换命令模式输入   cl ALL=(ALL) NOPASSWD: ALL,!/bin/rm -rf /*    

## 注意:!后面没有空格直接接路径,或者路径可写/usr/bin/rm  保存退出

4 给 用户 组 配置权限 以ac组为例子,给ac组成员添加多个管理命令

cd /etc/sudoers.d
vim ac                                  
切换命令模式输入   %ac ALL=(ALL) NOPASSWD: ALL,!/bin/rm -rf /*    

## 注意:!后面没有空格直接接路径,或者路径可写/usr/bin/rm  保存退出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值