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

Linux--权限

Linux系统的权限管理是保障系统安全的重要机制,以下详细讲解权限相关概念及操作指令:


一、基础权限机制

1. 权限的三元组,读(r)、写(w)、执行(x)

每个文件或目录有三组权限,分别对应三类用户:

  • 所有者(User):文件/目录的创建者或当前所有者。
  • 所属组(Group):文件/目录所属的用户组。
  • 其他用户(Others):非所有者且不属于所属组的用户。

每组权限由三个字符组成:r(读)、w(写)、x(执行)。

权限的作用
权限对文件的作用对目录的作用
r允许读取文件内容允许列出目录中的文件名(如 ls
w允许修改文件内容允许在目录中创建、删除、重命名文件
x允许执行文件(如脚本或程序)允许进入目录并访问子文件(如 cd

示例1drwxr-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)。

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
    

六、注意事项

  1. 目录的执行权限:无x权限则无法进入目录或访问子项。
  2. 递归修改权限:使用 -R 时谨慎操作,避免开放敏感目录。
  3. 特殊权限风险:不当的SUID/SGID可能导致提权漏洞。
  4. 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--
    

五、权限机制的核心原则

  1. 最小权限原则:用户仅获得完成任务所需的最小权限。
  2. 继承规则
    • 新建文件继承目录的所属组(若目录设置 SGID)。
    • 权限受 umask 影响。
  3. 优先级顺序
    • 用户身份匹配顺序:所有者 > 所属组 > 其他用户
  4. 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 身份运行
    

七、注意事项

  1. SUID/SGID 风险:若程序存在漏洞,攻击者可能利用 SUID/SGID 提权。
  2. 目录的执行权限:无 x 权限的目录无法被访问(即使有 r)。
  3. 递归修改权限:使用 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 规则永久修改设备权限(更安全且灵活):
    1. 创建规则文件 /etc/udev/rules.d/99-serial.rules
      SUBSYSTEM=="tty", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="1234", GROUP="users", MODE="0666"
      
    2. 重新加载 udev 规则:
      sudo udevadm control --reload-rules
      

6. 不同发行版的差异

  • Ubuntu/Debian:默认使用 dialout 组管理串口。
  • Arch Linux:可能使用 uucplock 组。
  • 检查当前系统:查看设备文件的所属组:
    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&#xff1…...

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&#xff08;1.8及以上版本&#xff09; 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

来源&#xff1a; [1905.09646] Spatial Group-wise Enhance: Improving Semantic Feature Learning in Convolutional Networks 相关工作&#xff1a; #GroupedFeatures #AttentionModels 创新点&#xff1a; 贡献&#xff1a; 提出了一种轻量级的SGE模块&#xff0c;能够…...

二叉搜索树中的搜索(力扣700)

首先介绍一下什么是二叉搜索树。 二叉搜索树是一个有序树&#xff1a; 若它的左子树不空&#xff0c;则左子树上所有结点的值均小于它的根结点的值&#xff1b;若它的右子树不空&#xff0c;则右子树上所有结点的值均大于它的根结点的值&#xff1b;它的左、右子树也分别为二叉…...

记录让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 内核与应用软件做一个打包。 目前市面上较知名的发行版有&#xff1a;Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等…...

sqlzoo答案4:SELECT within SELECT Tutorial

sql练习&#xff1a;SELECT within SELECT Tutorial - SQLZoo world表&#xff1a; namecontinentareapopulationgdpAfghanistanAsia6522302550010020343000000AlbaniaEurope28748283174112960000000AlgeriaAfrica238174137100000188681000000AndorraEurope46878115371200000…...

【fly-iot飞凡物联】(20):2025年总体规划,把物联网整套技术方案和实现并落地,完成项目开发和课程录制。

前言 fly-iot飞凡物联专栏&#xff1a; https://blog.csdn.net/freewebsys/category_12219758.html 1&#xff0c;开源项目地址进行项目开发 https://gitee.com/fly-iot/fly-iot-platform 完成项目开发&#xff0c;接口开发。 把相关内容总结成文档&#xff0c;并录制课程。…...

Lucene常用的字段类型lucene检索打分原理

在 Apache Lucene 中&#xff0c;Field 类是文档中存储数据的基础。不同类型的 Field 用于存储不同类型的数据&#xff08;如文本、数字、二进制数据等&#xff09;。以下是一些常用的 Field 类型及其底层存储结构&#xff1a; TextField&#xff1a; 用途&#xff1a;用于存储…...

适用于IntelliJ IDEA 2024.1.2部署Tomcat的完整方法,以及笔者踩的坑,避免高血压,保姆级教程

Tips:创建部署Tomcat直接跳转到四 一、软件准备 笔者用的是IntelliJ IDEA 2024.1.2和Tomcat 8.5。之前我使用的是Tomcat 10&#xff0c;但遇到了许多问题。其中一个主要问题是需要使用高于1.8版本的JDK&#xff0c;为此我下载了新的JDK版本&#xff0c;但这又引发了更多的兼容…...

XSS靶场通关详解

前言 这里作者采用phpstudy部署的xss-lab靶场&#xff0c;配置如下&#xff1a; 第一关 进入靶场后寻找页面的传参处&#xff0c;发现url中的name参数传了test给页面&#xff0c;可以在此处进行尝试xss 成功弹窗&#xff01; payload&#xff1a; <script>alert(1)<…...

Excel 技巧15 - 在Excel中抠图头像,换背景色(★★)

本文讲了如何在Excel中抠图头像&#xff0c;换背景色。 1&#xff0c;如何在Excel中抠图头像&#xff0c;换背景色 大家都知道在PS中可以很容易抠图头像&#xff0c;换背景色&#xff0c;其实Excel中也可以抠简单的图&#xff0c;换背景色。 ※所用头像图片为百度搜索&#x…...

备忘-humanplus相关的代码解析

-1: numpy必须为1.20.0&#xff0c;否则会报错&#xff0c;版本冲突0.rlvalue-based: 如q-learning&#xff08;走迷宫&#xff09;&#xff0c;对当前状态下作出的动作进行价值计算&#xff0c;通过贪婪策略穷尽所有可能选择最佳state-action,但是对于连续的动作空间&#x…...

青少年编程与数学 02-008 Pyhon语言编程基础 01课题、语言概要

青少年编程与数学 02-008 Pyhon语言编程基础 01课题、语言概要 一、榜一大哥起源与早期发展版本演进与社区壮大应用领域的拓展编程语言排行榜的常客结语 二、当前排行三、出色表现四、易学易用五、特色显著六、资源丰富初学者资源中高级学习资源在线编程学习平台 课题摘要:本文…...

XSS (XSS)分类

XSS &#xff08;XSS&#xff09; 概要 XSS全称为Cross Site Scripting&#xff0c;为了和CSS分开简写为XSS&#xff0c;中文名为跨站脚本。该漏洞发生在用户端&#xff0c;是指在渲染过程中发生了不在预期过程中的JavaScript代码执行。XSS通常被用于获取Cookie、以受攻击者的…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...