当前位置: 首页 > news >正文

云计算学习笔记——Linux用户和组的归属权限管理、附加权限、ACL策略管理篇

《云计算学习日记Day11》—— 从零开始的云计算之旅
今天是系统学习云计算的第十一天,记录了关于我的云计算学习,后续将每日更新我的笔记。欢迎大家一起来学习,如果内容有遗漏和错误,还请大家多多指正和包涵,谢谢大家。

基本权限和归属

权限和归属概述

权限和归属

  • 访问权限:
    • 读取:允许查看内容-read r
    • 写入:允许修改内容-write w
    • 可执行:允许运行和切换-excute x
  • 对于文本文件:
    • r:cat、less、grep、head、tail等
    • w:vim、>、>>等
    • x:shell和python…
  • 对于目录:
    • r:ls命令查看目录内容等
    • w:能够创建、删除、修改等目录的内容
    • x:能够cd切换到此目录下(进入此目录)
  • 归属关系:
    • 所有者:拥有此文件/目录的用户-user
    • 所属组:拥有此文件/目录的组-group
    • 其他用户:除所有者、所属组以外的用户-other

解析文件/目录权限

执行ls -l …. 查看

  • 输出信息,包括七个字段
[root@bogon ~]# ls -ld /root
dr-xr-x---. 16 root root 4096  8月 21 10:59 /root

dr-xr-x---.16rootroot40968月  21  10:59/root
权限位硬连接数属主属组大小最后修改时间文件/目录名称
  • 权限位字段解析:共10个字符,分为4部分
类型User权限Group权限Other权限
drwxr-xr-x
-rw-r--r--

  • Linux中判断用户具备的权限:
    • 1.查看用户,对于该数据所处的身份
    • 2.查看相应身份的权限位

权限控制

设置基本权限

  • 命令:chmod
  • 格式:chmod 身份[+-=][rwx] 文件…
  • 常用命令选项:-R:递归修改权限
  • 权限位也可以用八进制数表示
    • r w x分别对应4 2 1,user group other权限分别求和表示

      r w xr - xr - x
      4 2 14 0 14 0 1
      755

使用字符权限形式设置基本权限

[root@bogon ~]# mkdir /opt/test                     #新建一个目录
[root@bogon ~]# ls -ldh /opt/test                   #添加选项-ld查看目录详细信息
drwxr-xr-x. 2 root root 6  8月 21 12:44 /opt/test#使用chmod更改权限位
#u-w:User权限减去 写 的权限
#g+w:Group权限添加 写 的权限
#o=rwx:给Other赋予 rwx 的权限
[root@bogon ~]# chmod u-w,g+w,o=rwx /opt/test
[root@bogon ~]# ls -ldh /opt/test                   #再次查看信息,观察权限位变化
dr-xrwxrwx. 2 root root 6  8月 21 12:44 /opt/test

使用数字权限形式设置基本权限

[root@bogon ~]# ls -ld /opt/test                   #先观察现在的权限位
dr-xrwxrwx. 2 root root 6  8月 21 12:44 /opt/test
[root@bogon ~]# chmod 755 /opt/test                #使用数字权限形式更改权限
[root@bogon ~]# ls -ld /opt/test                   #再次观察权限位变化
drwxr-xr-x. 2 root root 6  8月 21 12:44 /opt/test

-R 递归修改权限

#首先创建一个目录,并分别查看他们的基本权限设置
[root@bogon ~]# mkdir -p /opt/test/test1/test2
[root@bogon ~]# ls -ld /opt
drwxr-xr-x. 3 root root 18  8月 21 12:44 /opt
[root@bogon ~]# ls -ld /opt/test
drwxr-xr-x. 3 root root 19  8月 21 12:58 /opt/test
[root@bogon ~]# ls -ld /opt/test/test1
drwxr-xr-x. 3 root root 19  8月 21 12:58 /opt/test/test1
[root@bogon ~]# ls -ld /opt/test/test1/test2
drwxr-xr-x. 2 root root 6  8月 21 12:58 /opt/test/test1/test2#使用-R选项递归更改目录/opt的基本权限
[root@bogon ~]# chmod -R 777 /opt#再次查看/opt目录下所有内容的基本权限设置
[root@bogon ~]# ls -ld /opt
drwxrwxrwx. 3 root root 18  8月 21 12:44 /opt
[root@bogon ~]# ls -ld /opt/test
drwxrwxrwx. 3 root root 19  8月 21 12:58 /opt/test
[root@bogon ~]# ls -ld /opt/test/test1
drwxrwxrwx. 3 root root 19  8月 21 12:58 /opt/test/test1
[root@bogon ~]# ls -ld /opt/test/test1/test2
drwxrwxrwx. 2 root root 6  8月 21 12:58 /opt/test/test1/test2

文件/目录的默认权限

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

  • 一般文件默认均不给x执行权限
  • 其他取决于umask(权限掩码)设置
  • 新建目录默认权限为755
  • 新建文件默认权限为644
[root@bogon ~]# umask             #查看默认配置
0022                              #022和755向对应,试着找找他们之间的关系规律
[root@bogon ~]# umask -S          #查看默认配置
u=rwx,g=rx,o=rx
[root@bogon ~]# umask 0000        #对数字进行修改
[root@bogon ~]# umask -S          #再次查看默认配置
u=rwx,g=rwx,o=rwx
[root@bogon ~]# mkdir /test       #创建新的目录和文件验证是否成功更改
[root@bogon ~]# touch /test/t.txt
[root@bogon ~]# ls -ld /test
drwxrwxrwx. 2 root root 19  8月 21 19:11 /test
[root@bogon ~]# ls -l /test
总用量 0
-rw-rw-rw-. 1 root root 0  8月 21 19:11 t.txt
[root@bogon ~]# umask -S u=rwx,g=rx,o=rx    #用字母的方法进行更改
u=rwx,g=rx,o=rx
[root@bogon ~]# umask                       #验证一下
0022

或者另一种配置方法:

#修改家目录配置文件
[root@bogon ~]# vim /root/.bashrc
#在文件中新增配置,指定权限掩码
umask  077
  • 创建新的文件夹时,可以直接设置权限
    • 利用mkdir的-m选项
[root@bogon ~]# mkdir /test01
[root@bogon ~]# mkdir -m 777 /test02
[root@bogon ~]# ls -ld /test0?
drwxr-xr-x. 2 root root 6  8月 21 19:19 /test01
drwxrwxrwx. 2 root root 6  8月 21 19:19 /test0

归属控制

设置归属关系

  • 命令:chown
  • 格式:
    • chown 属主 文件….:只修改所有者
    • chown 属主:属组 文件….:修改所有者和所属组
    • chown :属组 文件….:只修改所属组
  • 常用命令选项:
    • -R:递归修改归属关系
[root@bogon ~]# mkdir -p /A/B              #创建目录/A/B
[root@bogon ~]# echo 123 > /A/B/C.txt      #创建文件/A/B/C.txt
[root@bogon ~]# tree /A
/A
└── B└── C.txt1 directory, 1 file
[root@bogon ~]# useradd user01              #创建用户
[root@bogon ~]# groupadd group01
[root@bogon ~]# ls -ld /A
drwxr-xr-x. 3 root root 15  8月 21 19:34 /A
[root@bogon ~]# ls -ld /A/B
drwxr-xr-x. 2 root root 19  8月 21 19:34 /A/B
[root@bogon ~]# ls -l /A/B/C.txt 
-rw-r--r--. 1 root root 4  8月 21 19:34 /A/B/C.txt
[root@bogon ~]# chown -R user01:group01 /A
[root@bogon ~]# ls -ld /A
drwxr-xr-x. 3 user01 group01 15  8月 21 19:34 /A
[root@bogon ~]# ls -ld /A/B
drwxr-xr-x. 2 user01 group01 19  8月 21 19:34 /A/B
[root@bogon ~]# ls -l /A/B/C.txt 
-rw-r--r--. 1 user01 group01 4  8月 21 19:34 /A/B/C.txt

附加权限

附加权限概述

特殊权限的作用

  • 特殊权限
    • 叠加于权限位的u、g、o分组之上
    • 用来传递程序执行身份、限制目录写入权

特殊权限分类

类别字符表示数字表示叠加位置
Set UIDs4User的x位
Set GIDs2Group的x位
Sticky Bitt1Other的x位

Set UID

Set UID概述

  • SUID权限
    • 占用所有者(User)的x位
    • 显示为s或S,取决于属主是否有x权限
    • 仅对可执行的程序有意义
    • 当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限

SUID权限测试

下面我们来进行SUID的权限测试

测试流程:

我们找到mkdir命令程序的位置,复制到/opt下的test,这样我们通过输入/opt/test可以实现和命令mkdir一样的作用

然后我们通过运行和修改/opt/test和它的SUID权限,观察修改前后其他用户使用的它时创建的目录的变化

#首先我们查找命令mkdir的程序所在位置,并把他copy到/opt/test
[root@bogon ~]# ls /opt
[root@bogon ~]# which mkdir
/usr/bin/mkdir
[root@bogon ~]# cp /usr/bin/mkdir /opt/test#复制完成后,查看/opt/test的基本权限,这里是755
[root@bogon ~]# ls -l /opt
总用量 72
-rwxr-xr-x. 1 root root 69952  8月 21 21:20 test#在我们修改之前,先让用户zhangsan使用/opt/test在/opt目录下创建新目录,这里发现没有权限原因是父目录/opt的Other的权限是rx,并没有w的权限,所以说会出现创建不成功、报错权限不够的情况
[root@bogon ~]# su - zhangsan 
[zhangsan@bogon ~]$ /opt/test /opt/test01
/opt/test: 无法创建目录 “/opt/test01”: 权限不够
[zhangsan@bogon ~]$ exit
注销#这里再次进入root超级管理员,给/opt/test添加SUID权限
[root@bogon ~]# chmod u+s /opt/test#使用超级管理员root的身份创建目录/opt/test01
[root@bogon ~]# /opt/test /opt/test01#再次进入用户zhangsan,让zhangsan使用/opt/test创建目录/opt/test02,结果显示创建成功,也就是说,我们通过给程序/opt/test添加SUID权限,除了程序的属主之外的其他用户也可以使用
[root@bogon ~]# su - zhangsan 
[zhangsan@bogon ~]$ /opt/test /opt/test02#查看/opt下的子目录的详细信息,我们可以看到,root创建的/opt/test01属主是root、属组是root,但是,zhangsan创建的/opt/test02属主是root但是属组是zhangsan
[zhangsan@bogon ~]$ ls -l /opt
总用量 72
-rwsr-xr-x. 1 root root     69952  8月 21 21:20 test
drwxr-xr-x. 2 root root         6  8月 21 21:21 test01
drwxr-xr-x. 2 root zhangsan     6  8月 21 21:22 test02

它可以赋予没有权限的用户更多的权限,可以参考一下sudo命令

Set GID

Set GID概述

  • SGID权限
    • 占用属组的x位
    • 显示位s或S,取决于属组是否有x权限
    • 对目录有效
    • 在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份

SGID权限测试

测试流程:

首先我们创建一个新目录,在创建一个新的组,让这个组成为这个目录的属组,在这个目录先创建新的子目录1,然后修改目录的group权限为s,再创建新的子目录2,观察他们的归属关系的区别

[root@bogon ~]# mkdir /test
[root@bogon ~]# ls -ld /test
drwxr-xr-x. 2 root root 6  8月 25 08:49 /test
[root@bogon ~]# mkdir /test/test1#创建组TEST
[root@bogon ~]# groupadd TEST
[root@bogon ~]# chown :TEST /test#设置目录/test的权限
[root@bogon ~]# chmod g+s,o+w /test
[root@bogon ~]# ls -ld /test
drwxr-srwx. 3 root TEST 19  8月 25 08:49 /test
[root@bogon ~]# su - zhangsan
[zhangsan@bogon ~]$ mkdir /test/test2
[zhangsan@bogon ~]$ exit
注销#作比较
[root@bogon ~]# ls -l /test
总用量 0
drwxr-xr-x. 2 root     root 6  8月 25 08:49 test1
drwxr-sr-x. 2 zhangsan TEST 6  8月 25 08:51 test2

通过上边的实验测试结果我们可以发现,有SGID权限的目录在创建子目录和文件时,新目录和文件的属组和父目录相同

在这里我想到一个问题,就是之前学到的chown -R递归设置归属关系的命令,它也可以让子目录和子文件的属组和属组和父目录一样,那这两个命令不是就一样了吗?

其实他们之间还是有区别的,只不过是功能有些类似:

chown:递归修改目录中已有的内容的属组和属主,但是,修改之后在创建新的内容的属组和属主不能确定

SGID权限:给目录设置SGID权限之后,再创建子目录或文件,他们的属组和父目录一样,但是原有的子目录或文件的属组不会发生改变

通俗来讲,他们两个的作用对象不同,一个是已经有的目录或文件,一个是还没被创建的目录或文件

Sticky Bit

Sticky Bit概述

  • 粘滞位,Sticky Bit权限
    • 占用其他人(Other)的x位
    • 显示为t或T,取决于其他人是否有x权限
    • 适用于目录,用来限制用户滥用写入权
    • 在设置了粘滞位的文件夹下,即使用户有写入权限,也不能删除或改名其他用户文档

Sticky 权限测试

测试流程:

我们先创建两个用户和一个测试目录,然后让其中一个用户创建文件,让另一个用户去修改,再为这个目录设置Sticky Bit权限,让另一个用户去修改,最后对比结果

#先准备好两个用户
[root@bogon ~]# id zhangsan
用户id=1000(zhangsan) 组id=1000(zhangsan) 组=1000(zhangsan),10(wheel)
[root@bogon ~]# id honey
用户id=1001(honey) 组id=1001(honey) 组=1001(honey)#做好准备工作,创建目录和文件
[root@bogon ~]# mkdir /test
[root@bogon ~]# chmod 777 /test
[root@bogon ~]# su - zhangsan
[zhangsan@bogon ~]$ touch /test/t.txt
[zhangsan@bogon ~]$ touch /test/t2.txt
[zhangsan@bogon ~]$ mkdir /test/test1
[zhangsan@bogon ~]$ mkdir /test/test2
[zhangsan@bogon ~]$ exit
注销#登录另一个用户honey对张三用户的文件进行修改
[root@bogon ~]# su - honey
[honey@bogon ~]$ cat /test/t.txt#第一个结果
[honey@bogon ~]$ rm /test/t.txt
rm:是否删除有写保护的普通空文件 '/test/t.txt'?y
[honey@bogon ~]$ rm -r  /test/test1
rm:是否删除有写保护的目录 '/test/test1'?y
[honey@bogon ~]$ ls /test
t2.txt  test2
[honey@bogon ~]$ exit
注销#修改权限
[root@bogon ~]# chmod o+t /test
[root@bogon ~]# ls -ld /test
drwxrwxrwt. 3 root root 33  8月 25 11:28 /test
[root@bogon ~]# su - honey#第二个结果
[honey@bogon ~]$ cat /test/t2.txt
[honey@bogon ~]$ rm /test/t2.txt
rm:是否删除有写保护的普通空文件 '/test/t2.txt'?y
rm: 无法删除 '/test/t2.txt': 不允许的操作
[honey@bogon ~]$ rm -rf /test/test2
rm: 无法删除 '/test/test2': 不允许的操作

ACL策略管理

ACL策略概述

ACL策略的作用

  • 文档归属的局限性
    • 任何人只属于三种角色:属主、属组、其他人
    • 无法实现更精细的控制
  • ACL访问策略
    • 能够对个别用户、个别组设置独立的权限
    • 大多数挂载的EXT3/4、XFS文件系统默认已支持

设置ACL权限

Linux中判断用户具备的权限

  • 首先查看该用户或者组是否有ACL策略
  • 查看用户,对于该数据所处的身份,顺序:所有者>所属组>其他人,原则是匹配即停止
  • 查看相应身份的权限位

定义ACL控制策略

  • 命令:setfacl

  • 格式:setfacl [选项] u:用户名:权限 文件….

               setfacl    [选项]    g:组名:权限     文件….
    
  • 选项:

    • -m:定义一条ACL策略
    • -x:清除指定的acl策略
    • -b:清除所有已设置的ACL策略
    • -R:递归设置ACL策略
#创建一个测试目录,把other的权限设置为0
[root@bogon ~]# mkdir /test
[root@bogon ~]# touch /test/t.txt
[root@bogon ~]# chmod 770 /test#用户zhangsan属于other,正常来说是没有rwx权限的,我们可以测试一下
[root@bogon ~]# su - zhangsan #这里结果也确实是没有权限
[zhangsan@bogon ~]$ cat /test/t.txt
cat: /test/t.txt: 权限不够
[zhangsan@bogon ~]$ cd /test/t.txt
-bash: cd: /test/t.txt: 权限不够
[zhangsan@bogon ~]$ exit
注销#设置ACL权限,给用户张三在/test中有rwx的权限
[root@bogon ~]# setfacl -m user:zhangsan:rwx /test
[root@bogon ~]# su - zhangsan #设置好后测试一下
[zhangsan@bogon ~]$ cd /test
[zhangsan@bogon test]$ echo 123 > t.txt
-bash: t.txt: 权限不够
[zhangsan@bogon /]$ mkdir /test/test1
[zhangsan@bogon /]$ ls /test
test1  t.txt

但是我们可以发现一个问题,虽然我们的用户张三获得了目录/test的rwx权限,但是并没有获得/test/t.txt的wx权限,所以说不能对t.txt文件进行wx操作,但是我们可以对他进行删除等基于他的父目录的操作

http://www.dtcms.com/a/350854.html

相关文章:

  • 联邦雪框架FedML自学---第四篇---案例一
  • 浅谈:运用幂的性质
  • 程序的“烽火台”:信号的产生与传递
  • 【基础-单选】使用http发起网络请求,需要以下哪种权限?
  • C6.2:小信号、交流电流增益分析
  • 立轴式小型混凝土搅拌机的设计含14张CAD
  • 客户生命周期价值帮助HelloFresh优化其营销支出
  • 快速了解工业相机中的连续采集、软触发、硬触发和同步触发以及PTP同步触发
  • Spring介绍
  • Linux iptables 防火墙
  • Linux网络编程基础API
  • [灵动微电子六步换向(方波控制)方案MM32BIN560C] 六步换向实现和规律
  • PostgreSQL诊断系列(2/6):锁问题排查全攻略——揪出“阻塞元凶”
  • RK3568 Linux驱动学习——pinctrl和gpio子系统
  • onnx入门教程(四)——ONNX 模型的修改与调试
  • Day24: NumPy 奥德赛:用科学计算的魔法征服数据宇宙!
  • 32.Ansible平台搭建
  • 2024年09月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • NFC线圈设计计算
  • 力扣热题——前K个高频元素
  • 记一次Arrays.asList集合删除的错误
  • Java vs Kotlin 在实际开发中的主要区别与面试题总结
  • 太阳光模拟器在国防军工中的应用
  • k8s-容器化部署论坛和商城服务(小白的“升级打怪”成长之路)
  • K8s Pod驱逐机制详解与实战
  • SpringBoot防重放攻击的5种实现方案
  • 什么是数据库?现代数据库类型、示例与应用(2025)
  • 深入理解 iptables:Linux 防火墙从入门到精通
  • Vue3使用 DAG 图(AntV X6)
  • 2024年12月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试