基本权限和归属 附加权限 ACL策略管理

· 基本权限和归属
· 附加权限
· ACL策略管理

基本权限与归属关系

  • root 用户有最高权限,无视所有权限,可以修改权限

基本权限

  •   读取	: 允许查看内容 - read    		 	 利用 r 表示
    
  •   写入 :允许修改内容 - write   			 利用 w 表示
    
  •   可执行 :运行运行和切换 - excute    利用 x 表示
    

对于文本文件

  •   读取权限(r) :cat 、head  、tail 、 less 、 grep		
    
  •   写入权限(w) :vim (保存退出) 、> 、>>			
    
  •   可执行权限(x) :Shell脚本 、Python脚本
    

归属关系

  •   所有者 : 拥有此文件/目录的用户 - user			    利用u表示
    
  •   所属组 : 拥有此文件/目录的组 - group		    	利用g表示
    
  •   其他用户 : 出所有者、所属组以外的用户 - other	 利用o表示
    
  •   nana(所有者)    nana组(一般基本组为所属组)    1.txt
    
执行ls -l.. 命令查看文件权限
执行ls -ld.. 命令查看目录权限
- 输出信息包括7个字段
以 - 开头:表示文本文件
以 d 开头:表示目录
以 l 开头:表示快捷方式或者链接文件

ls -l /etc/passwd		
# -rw-r--r--. 1 root root 938 Mar 3 11:53 /etc/passwd	- 开头:表示文本文件,rw-所有者具备的权限,r--所属组成员具备的权限,r--其他人的权限
1表示硬链接的个数,第一个root所有者,第二个root所属组

ls -ld /etc/		
# drwxr-xr-x. 83 root root 8192 Mar 9 16:20 /etc	
以 d 开头:表示目录,83表示etc有83个子目录

ls -l /etc/rc.local		
# lrwxrwxrwx. 1 root root 13 Mar 3 19:08 /etc/rc.local -> rc.d/rc.local
以 l 开头:表示快捷方式或者链接文件,1表示硬链接的个数

ls -ld /tmp  默认具备附加权限的目录

修改权限chmod

chmod命令
- 格式: chmod [ugoa] [+-=] [rwx] 文件...
常用命令选项
- -R: 递归修改权限 

mkdir /nsd01
ls -ld /nsd01
# drwxr-xr-x 2 root root 6 Mar  9 17:31 /nsd01

chmod u-w /nsd01	修改所有者用户写权限
ls -ld /nsd01
# dr-xr-xr-x 2 root root 6 Mar  9 17:31 /nsd01
chmod u+w /nsd01	
ls -ld /nsd01		
# drwxr-xr-x 2 root root 6 Mar  9 17:31 /nsd01

chmod g=rwx /nsd01	修改所属组权限
ls -ld /nsd01		
# drwxr-xr-x 2 root root 6 Mar  9 17:31 /nsd01

chmod u=rwx,g=rx,o=--- /nsd01		修改所有者,所属组,其他用户权限
ls -ld /nsd01
# drwxr-x--- 2 root root 6 Mar  9 17:31 /nsd01

chmod a=rwx /nsd01		赋予所有人权限
ls -ld/nsd01
# drwxrwxrwx 2 root root 6 Mar  9 17:31 /nsd01

mkdir -p /opt/aaa/bbb/ccc
chmod -R o=--- /opt/aaa		递归设置权限(目录本身以及目录下的所有已存在的数据)
ls -ld /opt/aaa
# drwxr-x--- 3 root root 17 Mar  9 18:16 /opt/aaa
ls -ld /opt/aaa/bbb/
# drwxr-x--- 3 root root 17 Mar  9 18:16 /opt/aaa/bbb
ls -ld /opt/aaa/bbb/ccc
# drwxr-x--- 2 root root 6 Mar  9 18:16 /opt/aaa/bbb/ccc

Linux判断用户具备的权限

一个用户对于不同的数据具备不同的权限

  • 1.首先判断,用户对于该数据,处于的身份(角色)
  • ACL权限>所有者>所属组>其他人,匹配即停止!!! 匹配了所有者就不会再去匹配所属组了,匹配所属组就不会匹配其他人啦!
id nana 	查看用户nana的id
# uid=1000(nana) gid=1000(nana) groups=1000(nana)
ls -ld /etc/passwd		查看数据/etc/passwd的文件权限
# -rw-r--r-- 1 root root 977 Mar  9 17:24 /etc/passwd
对比这两个之间的关系,用户的uid是属于nana,gid是nana组
数据/etc/passwd的所有者是root,所属组是root,两者没有所有者与所属组的关系
  • 2.查看相应身份的权限位置,权限内容
su - nana			 切换至普通用户nana
head -1 /etc/passwd		 查看文件的第一行内容,可读
# root:x:0:0:root:/root:/bin/bash
echo haha >> /etc/passwd	 插入haha进/etc/passwd文件,不可写
# -bash: /etc/passwd: Permission denied
由此可分析,用户nana对于/etc/passwd数据只具备读的权限,属于o(其他人)
案例:
其他用户dada对于文本文件/opt/a.txt新增写权限
echo haha > /opt/a.txt
useradd dada
id dada
ls -l /opt/a.txt

su - dada
cat /opt/a.txt
echo lala >> /opt/a.txt

exit
chmod o+w /opt/a.txt	

su - dada
echo lala >> /opt/a.txt
cat /opt/a.txt		

用户对于目录具备权限

  • 读取权限( r ) : 可以查看目录内容
  • 可执行权限( x ) : 可以进入切换到该目录下(一位用户能否切换到一个目录只和x执行权限有关)
  • 写入权限( w ) : 可以新建、删除、改名目录的内容,对目录本身没有修改的权限(只对目录内的子目录,子文件操作)

一般情况下,r权限和x权限都是一起出现的
如果只给w权限,那么是不生效的

  • 如果没有给父目录赋予x权限,那么对父目录下的子文件或者子目录,无论赋予什么权限那么都是没有办法去操作的!!!

设置基本权限

· 权限位的8进制数表示

  • r、w 、x 分别对应4、 2 、1,后3组分别求和
    在这里插入图片描述
mkdir nsd01				目录默认位755
ls -ld /root/nsd01		
# drwxr-xr-x 2 root root 6 Mar 10 09:20 nsd01

chmod 700 /root/nsd01	将目录权限改成700
ls -ld /root/nsd01		
# drwx------ 2 root root 6 Mar 10 09:20 /root/nsd01

chmod 750 /root/nsd01	 将目录权限改成750
ls -ld /root/nsd01
# drwxr-x--- 2 root root 6 Mar 10 09:20 /root/nsd01

touch /root/nsd02.txt			文件默认权限为644
ls -l /root/nsd02.txt 
# -rw-r--r-- 1 root root 0 Mar 10 09:28 /root/nsd02.txt

新建文件/目录的默认权限

  •   一般文件默认均不给x执行权限
    
  •   其他取决于umask设置
    
  •   目录默认的权限为755,文件的默认权限为644
    
umask	第一个0为附加权限,777-022=755
# 0022

umask 077	将unmask值设置成007
umask
# 0077

mkdir /root/nsd03
ls -ld /root/nsd03	777-077=700
# drwx------ 2 root root 6 Mar 10 09:37 /root/nsd03

umask 002	将umask值恢复为默认值

修改归属关系

· chown命令

  • chown 属主 文件 … (单独修改文件的属主)
  • chown 属主 : 属组 文件 … (同时修改文件的属主和属组)
  • chown :属组 文件 … (单独修改文件的属组)

· 常用命令选项

  • -R :递归修改权限
groupadd K1
useradd nana
useradd dada

mkdir /nsd08
ls -ld /nsd08
#drwxr-xr-x 2 root root 6 Mar 10 09:48 /nsd08

chown nana:K1 /nsd08	修改目录/nsd08的所属组和所有者
ls -ld /nsd08
# drwxr-xr-x 2 nana K1 6 Mar 10 09:48 /nsd08

chown dada /nsd08		单独修改目录/nsd08的所有者
ls -ld /nsd08
# drwxr-xr-x 2 dada K1 6 Mar 10 09:48 /nsd08

chown :root /nsd08		单独修改目录/nsd08的所属组
ls -ld /nsd08
# drwxr-xr-x 2 dada root 6 Mar 10 09:48 /nsd08

mkdir -p /a/b/c/d
chown -R nana /a	递归修改权限,将目录a以及a下的所有子目录所属主全部改成nana
ls -ld /a
# drwxr-xr-x 3 nana root 15 Mar 10 10:02 /a
ls -ld /a/b
# drwxr-xr-x 3 nana root 15 Mar 10 10:02 /a/b
ls -ld /a/b/c
# drwxr-xr-x 3 nana root 15 Mar 10 10:02 /a/b/c
ls -ld /a/b/c/d
# drwxr-xr-x 2 nana root 6 Mar 10 10:02 /a/b/c/d
案例1:
1.利用root的身份新建/tarena目录,并进一步完成下列操作
cd root
mkdir /tarena

2./tarena属主设为gelin01,属组设为tmooc组
useradd gelin01
chown gelin01:tmooc /root/tarena

3.使用户gelin01对此目录具有rwx权限,除去所有者于所属组之外的用户对此目录无任何权限
chmod 750 /root/tarena

4.使用户gelin02能进入,查看此目录
useradd gelin02
gpasswd -a gelin02 root		先添加进入父目录的权限
gpasswd -a gelin02 tmooc

5.将gelin01加入tmooc组,将tarena目录的权限设为450,测试gelin01用户能否进入此目录
gpasswd -a gelin01 tmooc
chmod 450 /root/tarena
案例2:
实现lisi用户可以读取/etc/shadow文件内容,有几种办法?
ls -ld /etc/shadow
# ---------- 1 root root 693 Mar 10 11:41 /etc/shadow

1.利用其他人
chmod o+r /etc/shadow		

2.利用所属组
chown :lisi /etc/shadow 	lisi的基础组为lisi,将/etc/shadow的组更换成lisi组
chmod g+r /etc/shadow		更改组成员的r权限

3.利用所有者
chown lisi /etc/shadow
chmod u+r /etc/shadow

4.利用acl策略
setfacl -m u:lisi:r /etc/shadow 

附加权限(特殊权限)

除了r、w、x以外的又附加的权限

  • Set UID
  • Set GID
  • Sticky Bit (t权限)

t权限

· 粘滞位 Sticky Bit权限(t权限)

  • 占用其他人(other)的x位
  • 显示位t或T,却决于其他人是否有x权限(t有x,T没有x)
  • 适用于目录,用于限制用户滥用写入权
  • 在设置了粘滞位的文件夹下,即使用户有写入权限,也不能删除或改名其他用户文档
mkdir /home/a
chmod 777 /home/a
ls -ld /home/a
# drwxrwxrwx 2 root root 6 Mar 10 12:38 /home/a

chmod o+t /home/a
ls -ld /home/a	 	 其他用户有切入权限的时候,显示为t
# drwxrwxrwt 2 root root 6 Mar 10 12:38 /home/a

chmod o-x /home/a
ls -ld /home/a		 其他用户没有切入权限的时候,显示为T
# drwxrwxrwT 2 root root 6 Mar 10 12:38 /home/a

ehco abc > /home/a/a.txt 
useradd dudu
su - dudu
ehco 123 > /home/b.txt
cd /home/a
cat a.txt			有查看权限
mv a.txt z.txt		没有改名权限
echo 123 >> a.txt   没有修改文本内容权限
rm -rf a.txt		没有删除权限

可以对自己的写入的文件行使w权力
echo abc >> b.txt
mv b.txt z.txt
rm -rf z.txt
ls -ld /tmp			根下的目录tmp目录默认自带t权限的
# drwxrwxrwt. 21 root root 4096 Mar 10 14:38 /tmp

Set GID权限

· SGID权限

  • 占用属组(group)的x位
  • 显示为s或S,取决于属组是否有x权限
  • 对目录有效
  • 在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份
命令演示:
mkdir /a
chown :dudu /a
ls -ld /a
# drwxr-xr-x 2 root dudu 6 Mar 10 15:22 /a

chmod g+s /a		赋予Set GID权限
ls -ld /a
# drwxr-sr-x 2 root dudu 6 Mar 10 15:22 /a

touch /a/a.txt		在a目录下的创建a.txt文件,属组继承了父目录a的属组dudu
ls -l /a/a.txt
# -rw-r--r-- 1 root dudu 0 Mar 10 15:23 /a/a.txt

mkdir /a/a1			在a目录下的创建a1自目录,属组继承了父目录a的属组dudu
ls -ld /a/a1
# drwxr-sr-x 2 root dudu 6 Mar 10 15:24 /a/a1

Set UID权限(了解即可)

· SUID权限

  • 占用属主(user)的x位
  • 显示为s或S,取决于属组是否有x权限
  • 仅对可执行的程序有意义
  • 当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限
which mkdir		查看mkdir的执行文件
# /usr/bin/mkdir	
/usr/bin/mkdir /opt/test01
ls /opt/
# test01
cp /usr/bin/mkdir /usr/bin/xixidir
ls -l /usr/bin/xixidir
# -rwxr-xr-x 1 root root 79768 Mar 10 18:17 /usr/bin/xixidir
chmod u+s /usr/bin/xixidir		赋予执行文件Set UID权限
ls -l /usr/bin/xixidir		
# -rwsr-xr-x 1 root root 79768 Mar 10 18:17 /usr/bin/xixidir

su - nana
/usr/bin/mkdir a1	用原执行文件创建目录a1	

/usr/bin/xixidir a2	  用具有Set UID权限的执行文件创建目录a2
ls -l
# drwxrwxr-x 2 nana nana 6 Mar 10 18:22 a1
# drwxrwxr-x 2 root nana 6 Mar 10 18:23 a2

由此可见,我们在用赋予了Set UID权限的执行文件创建目录等同于root身份在创建目录
我们普通用户是无法在根下创建目录的,但是这个时候我们用Set UID权限的执行文件可以以root的身份在根下创建目录
/usr/bin/xixidir /abc
ls /
# 成功创建了子目录abc

ACL策略管理

acl策略的作用
· 文档归属的局限性

  • 任何人只属于三种角色: 属主 属组 其他人
  • 无法实现更精细的控制
    · acl访问策略
  • 能够对个别用户、个别组设置独立的权限
  • 大多数挂载的EXIT3/4 、XFS文件系统默认已支持
定义ACL控制策略
setfacl命令
- 格式 :  setfacl [选项] u:用户名:权限 文件...
		  setfacl [选项] g:组名:权限 文件...

常用命令选择
-m : 定义一条ACL策略
-x : 清除指定的ACL策略
-b : 清除所有已经设置的ACL策略
-R : 递归设置ACL策略

getfacl 文件路径		查看acl策略配置文件
mkdir /nsd01			创建目录nsd01
chmod 770 /nsd01		设置nsd01的目录权限为770
ls -ld /nsd01			查看目录权限
# drwxrwx--- 2 root root 6 Mar 10 16:12 /nsd01

su - dudu		切换用户到普通用户dudu
cd /nsd01		普通用户切换至/nsd01目录上,other用户没有办法切换
# -bash: cd: /nsd01: Permission denied
exit			 

setfacl -m u:dudu:rx /nsd01		给目录nsd01定义一条acl权限,用户名:dudu:rx权限
getfacl /nsd01					查看/nsd01权限
	getfacl: Removing leading '/' from absolute path names
		# file: nsd01
		# owner: root
		# group: root
		user::rwx
		user:dudu:r-x
		group::rwx
		mask::rwx
		other::---

su -dudu	切换至普通用户dudu
cd /nsd01	普通用户对/nsd具备读权限和切换权限
pwd
# /nsd01

将某个用户拉黑(制作黑名单)

setfacl -m u:xixi:--- /nsd01
getfacl /nsd01
	getfacl: Removing leading '/' from absolute path names
		# file: nsd01
		# owner: root
		# group: root
		user::rwx
		user:dudu:r-x
		user:xixi:---
		group::rwx
		mask::rwx
		other::---
		
因为ACL的权限的优先级是最高的,这样单独设置一个用户xixi,那么用户xixi对于目录/nsd01不具备任何权限
ACL练习:
mkdir /nsd18
setfacl -m u:dudu:rwx /nsd18
setfacl -m u:dada:--- /nsd18
setfacl -m u:nana:rx /nsd18
getfacl /nsd18 		查看目录/nsd18下的ACL策略配置信息

setfacl -x u:nana /nsd18   删除指定的ACL策略信息
setfacl -b /nsd18	清空所有的ACL策略信息

递归设置ACL策略

针对已经存在的数据来进行递归设置,新增的数据是不会有继承关系的
mkdir -p /opt/a/b		
setfacl -Rm u:nana:rx /opt/a	在目录a下创建递归的ACL策略
getfacl /opt/a/b			查看目录a下的子目录b是否也赋予了用户nana的rx权限
# ACL策略里面存在 user:nana:r-x

mkdir /opt/a/b/c	创建新的子目录a/b/c
getfacl /opt/a/b/c   查看新建子目录c下是否继承了用户nana的rx权限
# ACL策略里面不存在 user:nana:r-x		新增的数据是不会有继承关系的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值