Linux--权限
Linux系统的权限管理是保障系统安全的重要机制,以下详细讲解权限相关概念及操作指令:
一、基础权限机制
1. 权限的三元组,读(r)、写(w)、执行(x)
每个文件或目录有三组权限,分别对应三类用户:
- 所有者(User):文件/目录的创建者或当前所有者。
- 所属组(Group):文件/目录所属的用户组。
- 其他用户(Others):非所有者且不属于所属组的用户。
每组权限由三个字符组成:r(读)、w(写)、x(执行)。
权限的作用
| 权限 | 对文件的作用 | 对目录的作用 |
|---|---|---|
r | 允许读取文件内容 | 允许列出目录中的文件名(如 ls) |
w | 允许修改文件内容 | 允许在目录中创建、删除、重命名文件 |
x | 允许执行文件(如脚本或程序) | 允许进入目录并访问子文件(如 cd) |
示例1:drwxr-xr--
d:目录类型。rwx:所有者拥有读、写、执行权限。r-x:组用户有读和执行权限。r--:其他用户仅有读权限。
示例2:
-rwxr-xr-- 1 root dev 1024 Jan 1 10:00 script.sh
- 所有者(root):拥有
rwx(读、写、执行)。 - 所属组(dev):拥有
r-x(读和执行,不可写)。 - 其他用户:仅有
r--(仅读)。
二、权限设置指令
1. chmod:修改文件/目录权限
-
符号模式(操作对象 + 权限):
chmod [用户类别][操作符][权限] 文件- 用户类别:
u(所有者)、g(组)、o(其他)、a(所有)。 - 操作符:
+(添加)、-(移除)、=(覆盖)。 - 示例:
chmod u+x file # 给所有者添加执行权限 chmod g-w,o=rx dir # 移除组的写权限,设置其他用户为rx chmod a+r file # 所有人添加读权限
- 用户类别:
-
数字模式(三位八进制数):
chmod 755 file # 所有者rwx(7),组和其他rx(5)- 计算方式:r=4,w=2,x=1,相加得权限值(如
rwx=4+2+1=7)。
- 计算方式:r=4,w=2,x=1,相加得权限值(如
2. chown:修改所有者和所属组
chown 用户:组 文件 # 同时修改所有者和组
chown 用户 文件 # 仅修改所有者
chown :组 文件 # 仅修改所属组
- 示例:
chown root:admin /data # 设置所有者为root,组为admin chown alice file.txt # 设置所有者为alice - 递归修改(目录及其子项):
chown -R user:group dir/
3. chgrp:修改所属组
chgrp 组名 文件
- 等效于
chown :组名 文件,逐渐被chown替代。
三、特殊权限
1. SUID(Set User ID)
- 作用:执行文件时,以所有者身份运行。
- 设置:
chmod u+s file # 符号模式 chmod 4755 file # 数字模式(4表示SUID) - 示例:
/usr/bin/passwd允许普通用户修改密码(临时获得root权限)。
2. SGID(Set Group ID)
- 作用:
- 对文件:执行时以所属组身份运行。
- 对目录:新建文件继承目录的所属组。
- 设置:
chmod g+s dir # 符号模式 chmod 2770 dir # 数字模式(2表示SGID)
3. 粘滞位(Sticky Bit)
- 作用:目录中文件仅所有者可删除(如
/tmp)。 - 设置:
chmod +t dir # 符号模式 chmod 1777 dir # 数字模式(1表示粘滞位)
四、默认权限与umask
umask:决定新建文件/目录的默认权限。umask 022 # 默认设置(目录权限755,文件644) umask -S # 查看当前符号格式的umask- 计算:
默认权限 = 最大权限 - umask- 目录最大权限为
777,文件为666(无默认执行权限)。
- 目录最大权限为
- 计算:
五、ACL(访问控制列表)
提供更细粒度的权限控制(需文件系统支持):
setfacl:设置ACL规则。setfacl -m u:alice:rwx file # 授予alice对文件的rwx权限 setfacl -m g:dev:rx dir # 授予dev组对目录的rx权限getfacl:查看ACL规则。getfacl file
六、注意事项
- 目录的执行权限:无
x权限则无法进入目录或访问子项。 - 递归修改权限:使用
-R时谨慎操作,避免开放敏感目录。 - 特殊权限风险:不当的SUID/SGID可能导致提权漏洞。
- root用户:不受普通权限限制,可访问所有文件。
七、示例汇总
- 设置SUID并查看:
chmod u+s /usr/bin/script ls -l /usr/bin/script # 显示 -rwsr-xr-x - 设置目录SGID:
chmod g+s /shared_dir ls -ld /shared_dir # 显示 drwxr-sr-x
通过掌握这些权限机制和指令,可以有效管理Linux系统的文件安全与共享需求。
好的!Linux 的权限机制是系统安全的核心组成部分,其设计目的是控制用户和进程对文件及目录的访问。以下是 权限的机制和作用 的详细解析:
二、特殊权限机制
除了基础权限,Linux 还支持三种特殊权限,用于更复杂的场景。
1. SUID(Set User ID)
- 机制:当用户执行一个设置了
SUID的文件时,程序会以文件所有者的身份运行。 - 作用:允许普通用户临时获得文件所有者的权限(常用于需要特权操作的工具)。
- 示例:
/usr/bin/passwd(修改密码需要修改/etc/shadow,普通用户无权限,但passwd设置了 SUID 并属于 root)。 - 设置方式:
chmod u+s file # 符号模式 chmod 4755 file # 数字模式(4 表示 SUID) - 显示:权限中的
x变为s(如-rwsr-xr-x)。
2. SGID(Set Group ID)
- 机制:
- 对文件:执行时以文件所属组的身份运行。
- 对目录:在目录中新建的文件会继承目录的所属组(而非用户默认的组)。
- 作用:
- 文件:共享工具以组权限运行(类似 SUID)。
- 目录:便于团队协作(确保新建文件属于同一组)。
- 设置方式:
chmod g+s dir # 符号模式 chmod 2770 dir # 数字模式(2 表示 SGID) - 显示:组权限的
x变为s(如drwxr-sr-x)。
3. 粘滞位(Sticky Bit)
- 机制:设置后,目录中的文件仅允许文件所有者或 root 删除。
- 作用:防止用户误删他人文件(常见于共享目录如
/tmp)。 - 设置方式:
chmod +t dir # 符号模式 chmod 1777 dir # 数字模式(1 表示粘滞位) - 显示:其他用户的
x变为t(如drwxrwxrwt)。
三、默认权限与 umask
1. 默认权限规则
- 目录:默认最大权限为
777(rwxrwxrwx)。 - 文件:默认最大权限为
666(rw-rw-rw-),且默认不赋予执行权限(需手动设置)。
2. umask 的作用
- 机制:
umask是一个掩码值,用于从最大权限中“扣除”权限,得到文件/目录的实际默认权限。 - 计算方式:
实际权限 = 最大权限 - umask - 示例:
umask 022:- 目录默认权限:
777 - 022 = 755(rwxr-xr-x)。 - 文件默认权限:
666 - 022 = 644(rw-r–r–)。
- 目录默认权限:
- 查看与设置:
umask # 显示当前值(如 0022) umask -S # 显示符号格式(如 u=rwx,g=rx,o=rx) umask 027 # 设置新的 umask 值
四、ACL(访问控制列表)
1. 作用
- 提供更细粒度的权限控制,允许为特定用户/组单独设置权限,突破三元组的限制。
- 典型场景:允许用户A读写文件,同时禁止用户B访问,而无需修改文件所属组。
2. 设置与查看
- 设置 ACL:
setfacl -m u:alice:rwx file # 授予用户 alice 对文件的 rwx 权限 setfacl -m g:dev:r-- dir # 授予组 dev 对目录的读权限 - 查看 ACL:
getfacl file # 输出示例: # user::rw- # user:alice:rwx # group::r-- # mask::rwx # other::r--
五、权限机制的核心原则
- 最小权限原则:用户仅获得完成任务所需的最小权限。
- 继承规则:
- 新建文件继承目录的所属组(若目录设置 SGID)。
- 权限受
umask影响。
- 优先级顺序:
- 用户身份匹配顺序:所有者 > 所属组 > 其他用户。
- root 的超级权限:root 用户可无视权限限制,直接访问或修改任何文件。
六、典型应用场景
1. 共享目录协作
- 目标:团队(组
dev)共享目录/project。 - 设置:
chmod 2770 /project # SGID 确保新建文件继承组 dev chown root:dev /project # 所有者 root,组 dev - 效果:所有组成员可在目录中创建文件,且文件自动属于组
dev。
2. 防止误删文件
- 目标:共享目录
/shared允许用户创建文件,但仅允许所有者删除。 - 设置:
chmod 1777 /shared # 粘滞位生效
3. 特权工具
- 目标:允许普通用户执行需 root 权限的命令(如
ping)。 - 设置:
chmod u+s /bin/ping # SUID 使 ping 以 root 身份运行
七、注意事项
- SUID/SGID 风险:若程序存在漏洞,攻击者可能利用 SUID/SGID 提权。
- 目录的执行权限:无
x权限的目录无法被访问(即使有r)。 - 递归修改权限:使用
chmod -R时需谨慎,避免过度开放敏感目录。
补充
dialout用户组
在 Linux 系统中,dialout 用户组是一个与串行端口(Serial Port)访问权限相关的特殊用户组。它的存在主要是为了管理用户对串口设备(如 /dev/ttyS0、/dev/ttyUSB0 等)的访问权限。
1. 作用与背景
- 历史背景:名称 “dialout” 源于早期通过调制解调器(Modem)“拨号”(dial-out)上网的时代。该用户组允许普通用户直接操作调制解调器等串口设备。
- 现代用途:如今,
dialout组主要用于控制对串行端口设备的访问权限,例如:- 物理串口(如
/dev/ttyS0)。 - USB 转串口设备(如
/dev/ttyUSB0)。 - 嵌入式开发板(如 Arduino、树莓派)的通信接口。
- 物理串口(如
2. 权限管理
- 设备文件权限:串口设备的默认权限通常为
crw-rw----,所有者是root,所属组是dialout:$ ls -l /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 0 Jun 10 15:30 /dev/ttyUSB0- 只有
root用户和dialout组成员有读写权限。
- 只有
- 为何需要加入该组:普通用户若未加入
dialout组,访问串口时会报错Permission denied。
crw-rw----解释
-
c:表示这是一个 字符设备文件(Character Device)。
-
字符设备以流式数据传输为特征(如键盘、串口、终端),与块设备(如硬盘,标识为 b)不同。
-
例如:/dev/ttyS0(串口)、/dev/ttyUSB0(USB转串口)等。
-
c rw- rw- ---
│ │ │ │
│ │ │ └─ 其他人(others)的权限:无权限(`---`)
│ │ └─ 所属组(group)的权限:读 + 写(`rw-`)
│ └─ 所有者(owner)的权限:读 + 写(`rw-`)
└─ 文件类型标识符:字符设备文件(`c`)
3. 将用户添加到 dialout 组
- 命令:
或sudo usermod -aG dialout 你的用户名sudo gpasswd -a 你的用户名 dialout - 生效方式:注销后重新登录,或重启系统。
4. 安全注意事项
- 最小权限原则:仅将需要访问串口的用户加入该组,避免不必要的权限分配。
- 潜在风险:串口设备可能连接敏感硬件(如工业控制器),不当操作可能导致系统不稳定或数据泄露。
5. 替代方案
- 临时权限:使用
sudo临时获取 root 权限访问设备(不推荐长期使用):sudo minicom -D /dev/ttyUSB0 - udev 规则:通过自定义 udev 规则永久修改设备权限(更安全且灵活):
- 创建规则文件
/etc/udev/rules.d/99-serial.rules:SUBSYSTEM=="tty", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="1234", GROUP="users", MODE="0666" - 重新加载 udev 规则:
sudo udevadm control --reload-rules
- 创建规则文件
6. 不同发行版的差异
- Ubuntu/Debian:默认使用
dialout组管理串口。 - Arch Linux:可能使用
uucp或lock组。 - 检查当前系统:查看设备文件的所属组:
ls -l /dev/ttyUSB0
7. 常见使用场景
- 嵌入式开发:通过串口与开发板通信(如 Arduino 上传程序)。
- 工业设备调试:连接 PLC、传感器等设备的串口。
- 网络设备配置:通过 Console 线管理路由器、交换机。
总结
dialout 用户组是 Linux 中管理串口设备访问权限的关键组。通过合理分配组成员或使用 udev 规则,可以在便利性和安全性之间找到平衡。处理硬件设备时,请始终遵循最小权限原则。
相关文章:
Linux--权限
Linux系统的权限管理是保障系统安全的重要机制,以下详细讲解权限相关概念及操作指令: 一、基础权限机制 1. 权限的三元组,读(r)、写(w)、执行(x) 每个文件或目录有三组…...
java后端之登录认证
基础登录功能:根据提供的用户名和密码判断是否存在于数据库 LoginController.java RestController Slf4j public class LoginController {Autowiredprivate UserService userService;PostMapping("/login")public Result login(RequestBody User user) {…...
【矩阵二分】力扣378. 有序矩阵中第 K 小的元素
给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。 请注意,它是 排序后 的第 k 小元素,而不是第 k 个 不同 的元素。 你必须找到一个内存复杂度优于 O(n2) 的解决方案。 示例 1࿱…...
C语言-构造数据类型
1、构造数据类型 结构体、共用体、枚举。 2、结构体 1、结构体的定义 结构体是一个自定义的复合数据类型,它允许将不同类型的数据组合在一起。 struct 结构体名 {数据类型1 成员变量1;数据类型2 成员变量2;数据类型3 成员变量3;数据类型4 成员变量4; } 2、结构体变…...
鸿蒙next 自定义日历组件
效果图预览 20250124-113957 使用说明 1.选择日期左右箭头,实现每月日历切换,示例中超出当前月份,禁止进入下一月,可在代码更改 2.日历中显示当前选择的日期,选中的日期颜色可自定义 3.日历中可展示历史记录作为数据…...
【express-generator】08-路由重定向
前言 通过前面两篇文章的讲解,我们已经介绍完第二阶段的前两点,本篇介绍第三点:路由重定向。 1. 路由重定向概述 路由重定向是指在服务器端将客户端的请求从一个 URL 重定向到另一个 URL 的过程。这通常通过 HTTP 状态码(如 30…...
搭建Spring Boot开发环境
JDK(1.8及以上版本) Apache Maven 3.6.0 修改settings.xml 设置本地仓库位置 <localRepository>D:/repository</localRepository> 设置远程仓库镜像 <mirror><id>alimaven</id><name>aliyun maven</name&…...
Spatial Group-wise Enhance (SGE) module
来源: [1905.09646] Spatial Group-wise Enhance: Improving Semantic Feature Learning in Convolutional Networks 相关工作: #GroupedFeatures #AttentionModels 创新点: 贡献: 提出了一种轻量级的SGE模块,能够…...
二叉搜索树中的搜索(力扣700)
首先介绍一下什么是二叉搜索树。 二叉搜索树是一个有序树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉…...
记录让cursor帮我给ruoyi-vue后台管理项目整合mybatis-plus
自己整合过程中会出现 work.web.exception.GlobalExceptionHandler :100 | 请求地址/admin/device/install/detail/1,发生未知异常. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.fire.mapper.DeviceInstallMapper.selectById at o…...
【可实战】Linux 系统扫盲、 Shell扫盲(如何写一个简单的shell脚本)
一、Linux系统扫盲 1.Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议 2.Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。 目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等…...
sqlzoo答案4:SELECT within SELECT Tutorial
sql练习:SELECT within SELECT Tutorial - SQLZoo world表: namecontinentareapopulationgdpAfghanistanAsia6522302550010020343000000AlbaniaEurope28748283174112960000000AlgeriaAfrica238174137100000188681000000AndorraEurope46878115371200000…...
【fly-iot飞凡物联】(20):2025年总体规划,把物联网整套技术方案和实现并落地,完成项目开发和课程录制。
前言 fly-iot飞凡物联专栏: https://blog.csdn.net/freewebsys/category_12219758.html 1,开源项目地址进行项目开发 https://gitee.com/fly-iot/fly-iot-platform 完成项目开发,接口开发。 把相关内容总结成文档,并录制课程。…...
Lucene常用的字段类型lucene检索打分原理
在 Apache Lucene 中,Field 类是文档中存储数据的基础。不同类型的 Field 用于存储不同类型的数据(如文本、数字、二进制数据等)。以下是一些常用的 Field 类型及其底层存储结构: TextField: 用途:用于存储…...
适用于IntelliJ IDEA 2024.1.2部署Tomcat的完整方法,以及笔者踩的坑,避免高血压,保姆级教程
Tips:创建部署Tomcat直接跳转到四 一、软件准备 笔者用的是IntelliJ IDEA 2024.1.2和Tomcat 8.5。之前我使用的是Tomcat 10,但遇到了许多问题。其中一个主要问题是需要使用高于1.8版本的JDK,为此我下载了新的JDK版本,但这又引发了更多的兼容…...
XSS靶场通关详解
前言 这里作者采用phpstudy部署的xss-lab靶场,配置如下: 第一关 进入靶场后寻找页面的传参处,发现url中的name参数传了test给页面,可以在此处进行尝试xss 成功弹窗! payload: <script>alert(1)<…...
Excel 技巧15 - 在Excel中抠图头像,换背景色(★★)
本文讲了如何在Excel中抠图头像,换背景色。 1,如何在Excel中抠图头像,换背景色 大家都知道在PS中可以很容易抠图头像,换背景色,其实Excel中也可以抠简单的图,换背景色。 ※所用头像图片为百度搜索&#x…...
备忘-humanplus相关的代码解析
-1: numpy必须为1.20.0,否则会报错,版本冲突0.rlvalue-based: 如q-learning(走迷宫),对当前状态下作出的动作进行价值计算,通过贪婪策略穷尽所有可能选择最佳state-action,但是对于连续的动作空间&#x…...
青少年编程与数学 02-008 Pyhon语言编程基础 01课题、语言概要
青少年编程与数学 02-008 Pyhon语言编程基础 01课题、语言概要 一、榜一大哥起源与早期发展版本演进与社区壮大应用领域的拓展编程语言排行榜的常客结语 二、当前排行三、出色表现四、易学易用五、特色显著六、资源丰富初学者资源中高级学习资源在线编程学习平台 课题摘要:本文…...
XSS (XSS)分类
XSS (XSS) 概要 XSS全称为Cross Site Scripting,为了和CSS分开简写为XSS,中文名为跨站脚本。该漏洞发生在用户端,是指在渲染过程中发生了不在预期过程中的JavaScript代码执行。XSS通常被用于获取Cookie、以受攻击者的…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
