控制单/多用户权限

news2024/12/27 11:23:51

多用户权限控制

        Unix/类Unix是一个多用户的操作系统,拥有众多的发行版系统。单一用户可以使用chmod命令修改可读可写可执行权限。多用户使用chmod就显得力不从心了。多用户操作权限则使用ACL规则(Access Control List),即访问控制列表,ACL规则允许管理员为每个文件或目录指定多个用户或组的权限,更精细的控制文件和目录的访问方式。

chmod用法

chmod命令用于修改文件或目录的权限(rwx),常用于控制单用户对文件的访问权限。其基本用法有两种:数字模式和符号模式

数字模式(Numeric Mode)

使用数字模式可以直接为文件或目录设置权限。权限数字由三个八进制数字组成,每个数字代表一组权限:

第一个数字:所有者(owner)

第二个数字:用户组(group)

第三个数字:其他用户(other)

每组权限的值可以是以下组合之一:

4(读取权限,read)

2(写入权限,write)

1(执行权限,execute)

示例:     

1、chmod 755 file.txt:给所有者赋予读、写、执行权限(4+2+1),给用户组和其他用户赋予读、执行权限(4+0+1);

2、chmod 741 file.txt:给所有者赋予读、写、执行权限(4+2+1),给用户组赋予读权限(4+0+0),给其他用户赋予执行权限(0+0+1)。

符号模式(Symbolic Mode)

符号模式可以在当前权限基础上增加或减少权限,而不是直接设置所有权限,它由以下部分组成:

u:所有者(User)

g:用户组(Group)

o:其他用户(Others)

a:所有用户(all,等同于ugo组合)

每个部分后面可以跟一个操作符和权限符号:

+:增加权限

-:减少权限

=:设置权限为指定的值

权限符号可以是:

r:读权限(Read)

w:写权限(Write)

x:执行权限(Execute)

示例:

1、chmod u+x file.txt:给所有者增加执行权限

2、chmod go-rw file.txt:去掉用户组和其他用户的读写权限

3、chmod a=r file.txt:设置所有用户的权限为只读。

其他选项

-R:递归的应用权限修改,包括目录中的所有文件和子目录

--help:显示chmod命令的帮助信息

--version:显示chmod命令的版本信息

ALC规则用法

        在Unix和类Unix系统中,ACL通常与标准的文件权限(rwx)结合使用,提供更灵活的权限管理。它允许特定用户或组具有特定的权限,例如读、写、执行等,而不受文件所有者或所属组用户的限制。

要查看或修改文件或目录的ACL,通常使用getfacl和setfacl命令。这两个命令使管理员能够查看当前ACL设置并对其进行修改,从而根据特定需求设置更复杂的访问控制策略。

getfacl用法

getfacl命令用来查看是否设置了ACL规则,以及设置的ACL信息。getfacl命令通常情况下需要管理员权限(root)或者文件及目录的所有者权限

getfacl [选项] 文件或目录

选项:

        -R:递归的获取指定目录及其子目录下的所有文件和目录的ACL信息

        -c:在标准输出中显示命令执行的详细信息,包括获取ACL信息的过程

        -p:输出权限信息显示绝对路径名

实例

getfacl -Rpc ./code/

使用getfacl命令递归的显示当前code目录的ACL信息,这里显示ACL信息没有被设置。

 getfacl -R ./code/

使用getfacl 命令递归显示code目录的acl信息,出现绝对路径和所有者、用户组信息

 setfacl用法

setfacl用于设置文件或目录ACL(Access Control List,访问控制列表)的命令,在Unix和类Unix系统中使用,它允许管理员为特定文件或目录设置复杂和精细化的访问控制规则,包括指定不同用户或组的具体权限。

setfacl [选项] ACL规则 文件或目录

选项:

-m:添加或修改指定的ACL规则

-x:移除指定的ACL规则

-b:移除所有的ACL规则

-R:递归的应用ACL规则到指定目录及其子目录下所有文件和目录

ACL规则:指定要设置的ACL规则,通常包括用户或组及其相应的权限设置。

实例

setfacl -Rm u:sunwukong:rwx ./code/

使用useradd命令创建三个用户孙悟空、太上老君、哪吒,使用setfacl命令递归的将code目录及其子目录的所有文件赋予rwx权限给到用户孙悟空,并使用getfacl查看到孙悟空已经有了code目录的rwx权限。

 

 setfacl -Rm u:taishanglaojun:rwx ./code/

 setfacl -Rm u:nezha:rwx ./code/

 

setfacl -Rb ./code/

使用setfacl命令递归的清除code目录及其子目录的所有文件的ACL规则,通过getfacl命令查看ACL规则全部清空

 

小结

setfacl命令并不是对所有用户有效,有一个特殊的超级用户root,setfacl命令对其是完全无效的(设置了也是白设,可以绕过)。另外使用setfacl命令可以帮助我们理解Unix和类Unix的多用户权限操作原理,了解命令使用方法可以帮助我们进一步的使用自动化的方式批量的来完成大型且复杂的权限操作,比如将setfacl、getfacl命令写入脚本中批量设置多用户权限等。

小细节: 通过ll或ls命令可以查看目录或文件是否设置了ACL规则,比如ll ./code/ 如果设置了ACL规则,在ugo权限的后面多了+(第一列的末位),表示额外的使用了ACL规则。(绿色的文件名后加*,表示该文件可执行)

注意:ACL规则不能代替文件或目录的基本权限,它只是一种对文件或目录基本权限的扩展,可以理解为壳,即基本权限外加了一层保护壳。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1923376.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库的学习(6)

题目: 数据准备创建两张表:部门(dept)和员工(emp),并插入数据,代码如下create table dept(dept_id int primary key auto_increment comment 部门编号,dept_name char(20)comment部门名称 ); insert into dept (dept_name) values(销售部),(财…

新手-前端生态

文章目录 新手的前端生态一、概念的理解1、脚手架2、组件 二、基础知识1、HTML2、css3、JavaScript 三、主流框架vue3框架 四、 工具(特定框架)1、uinapp 五、组件库()1、uView如何在哪项目中导入uView 六、应用(各种应…

Wavlink 路由器攻击链

本文仅用于技术研究学习,请遵守相关法律,禁止使用本文所提及的相关技术开展非法攻击行为,由于传播、利用本文所提供的信息而造成任何不良后果及损失,与本账号及作者无关。 本文来源无问社区,更多实战内容,…

手把手教你打数学建模国赛!!!第一天软件准备篇

第一天软件准备 MATLAB MATLAB(Matrix Laboratory)是一种强大的数值计算和科学编程软件。它提供了丰富的数学函数和工具,用于数据分析、算法开发、信号处理、图像处理、控制系统设计、仿真等应用领域。 MATLAB具有直观的语法,使…

SAP HCM 定额扣减不生效问题,从定位错误到玩转配置

导读 INTRODUCTION 定额扣减:今天遇到一个很奇怪的问题,就是年假不会扣减年假定额的问题,认真去查看相关配置,但是一直没找到为什么不触发扣减规则,这次出现的问题还是触发规则的问题,触发规则主要这么几类、星期、假期类、日类型、期间工作日程表的技术类、日工作计划类…

用友NC Cloud blobRefClassSearch FastJson反序列化RCE漏洞复现

0x01 产品简介 用友 NC Cloud 是一种商业级的企业资源规划云平台,为企业提供全面的管理解决方案,包括财务管理、采购管理、销售管理、人力资源管理等功能,实现企业的数字化转型和业务流程优化。 0x02 漏洞概述 用友 NC Cloud blobRefClassSearch 接口处存在FastJson反序列…

Apache AGE 聚合函数

简介 一般来说,聚合函数 aggr(expr) 会处理每个聚合键在传入记录中找到的所有匹配行(键使用等价性进行比较)。 在常规聚合(即形式为 aggr(expr) 的情况下),聚合值列表是候选值列表,其中所有空…

学生护眼用什么样的台灯比较好?推荐学生护眼台灯十大排名

台灯成为每家每户不可缺少的家具产品,更是成为学生认可的学习搭子。而设计师设计出多功能的台灯,既能营造适宜的环境,也在为眼睛这个器官提供一个优质舒适的环境。对于学生而言, 学生护眼用什么样的台灯比较好?我们处于…

【经典面试题】是否形成有环链表

1.环形链表oj 2. oj解法 利用快慢指针: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; bool hasCycle(struct ListNode *head) {ListNode* slow head, *fast…

jenkins系列-01.docker安装jenkins

进入官网:https://www.jenkins.io/ 使用LONG term support版本:2.387.1 docker pull jenkins/jenkins:2.387.1-lts 拉取镜像: 编写docker-compose文件: 启动jenkins: 查看启动日志: 默认生成的密码:…

Go-知识测试-测试参数

Go-知识测试-测试参数 1. -args2. -json3. -o4. -bench5. -benchtime6. -cpu7. -count8. -failfast9. -list10. -parallel11. -run12. -timeout13. -v14 -benchmem 1. -args 指示go test 把-args 后面的参数带到测试中去。具体的测试函数会根据此参数来控制测试流程。 -args后…

c++ - 多态

文章目录 一、多态的概念二、多态使用三、多态的原理 一、多态的概念 1、概念: 多态就是具有多种形态,可以理解为同一个行为不同对象去完成表现出不同的状态,如: 二、多态使用 1、构成多态的条件 (1)派…

从线性变换的视角理解矩阵范数与行列式

在线性代数这一数学分支中,矩阵作为描述线性变换的工具,扮演着至关重要的角色。矩阵的范数和行列式是两个核心概念,它们分别从不同的角度揭示了矩阵及其所代表的线性变换的性质。本文旨在从线性变换的视角出发,探讨矩阵范数与行列…

C#小结:未能找到类型或命名空间名“xxx”(是否缺少 using 指令或程序集引用?)

方案一:移除这些失效的引用,下载对应版本的dll,重新添加引用 方案二:项目右键属性-调整目标框架版本(一般是降低版本) 方案三:调整编译顺序: 项目A:引用1、引用2 &…

底软驱动 | Linux用户空间与内核空间通信(Netlink通信机制)

1,什么是Netlink通信机制 Netlink是linux提供的用于内核和用户态进程之间的通信方式。但是注意虽然Netlink主要用于用户空间和内核空间的通信,但是也能用于用户空间的两个进程通信。只是进程间通信有其他很多方式,一般不用Netlink。除非需要用…

【pytorch】手写数字识别

https://blog.csdn.net/qq_45588019/article/details/120935828 基本均参考该博客 《深度学习原理Pytorch实战》 初步处理 导包 import torch import numpy as np from matplotlib import pyplot as plt from torch.utils.data import DataLoader from torchvision import tr…

esp32 usb cdc串口读写

void setup() { Serial.begin(); // 在USB CDC On Boot使能(Enabled)情况下,这里是USBCDC Serial.setDebugOutput(true); } void loop() { if (Serial.available() > 0) { // 检查是否有可用的数据 String input Serial.readS…

大模型应用中什么是IFT(指令微调)?

大模型应用中什么是IFT(指令微调)? 背景 随着人工智能技术的发展,特别是自然语言处理(NLP)领域的进步,预训练语言模型(如GPT-3、BERT)已经展现出了强大的语言理解和生成…

少儿编程 2024年6月电子学会图形化编程等级考试Scratch二级真题解析(判断题)

2024年6月scratch编程等级考试二级真题 判断题(共10题,每题2分,共20分) 26、下列积木的运算结果为false 答案:错 考点分析:考查逻辑运算符的使用,60>50为true,取反为false&…

Java高频面试基础知识点整理3

干货分享,感谢您的阅读!背景​​​​​​高频面试题基本总结回顾(含笔试高频算法整理) 最全文章见:Java高频面试基础知识点整理 (一)Java基础高频知识考点 针对人员: 1.全部人员都…