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

Linux 文件系统权限管理(补充)

一、文件权限的基本概念

Linux 文件系统的权限体系基于三类用户和三种权限的组合,形成了灵活且严谨的访问控制模型。

1. 三类用户

  • 所有者(User):文件的创建者或被指定的用户,对文件拥有最高级别的控制权。
  • 所属组(Group):包含多个用户的集合,用于实现团队内的权限共享。
  • 其他用户(Other):系统中除所有者和所属组成员之外的所有用户,代表最广泛的访问范围。

2. 三种基础权限

  • 读取(r):对文件而言,允许查看文件内容;对目录而言,允许列出目录中的文件和子目录。
  • 写入(w):对文件而言,允许修改文件内容;对目录而言,允许创建、删除或重命名目录中的文件。
  • 执行(x):对文件而言,允许将文件作为程序或脚本运行;对目录而言,允许进入该目录(通过cd命令)。

二、权限的表示与查看

Linux 权限可以通过字符或数字两种方式表示,使用ls -l命令可查看文件或目录的权限信息。

1. 字符表示法

-rw-r--r--为例,该字符串分为四部分:

  • 第一个字符:表示文件类型(-为普通文件,d为目录,l为符号链接等)。
  • 接下来三组字符(每组 3 个):分别对应所有者、所属组、其他用户的权限,每组内的字符依次表示r(读取)、w(写入)、x(执行),若权限不存在则用-表示。

例如:

  • drwxr-xr-x:表示目录,所有者拥有读、写、执行权限,所属组和其他用户拥有读和执行权限。
  • -rwx------:表示普通文件,仅所有者拥有读、写、执行权限。

2. 数字表示法

数字表示法将权限转换为八进制数值,便于通过命令快速设置权限:

  • r对应4w对应2x对应1,无权限对应0
  • 每组权限的数值为三种权限的总和,例如:
    • rwx = 4+2+1 = 7
    • rw- = 4+2 = 6
    • r-x = 4+1 = 5
    • r-- = 4
    • --- = 0

完整的权限数值由三组数字组成,分别对应所有者、所属组、其他用户的权限,例如755表示所有者拥有rwx,所属组和其他用户拥有r-x

三、权限的修改方法

修改文件或目录的权限需要使用chmod命令,修改所有者和所属组需使用chownchgrp命令。

1. 修改权限:chmod

  • 字符模式:通过u(所有者)、g(所属组)、o(其他用户)、a(所有用户)指定对象,结合+(添加)、-(移除)、=(设置)操作符修改权限。

    • 示例 1:为文件file.txt的所有者添加执行权限
      chmod u+x file.txt
    • 示例 2:移除目录docs的所属组和其他用户的写入权限
      chmod go-w docs
    • 示例 3:将script.sh的权限设置为所有者可读可写可执行,所属组和其他用户可读可执行
      chmod u=rwx,go=rx script.sh
  • 数字模式:直接通过三组数字设置权限。

    • 示例:将data目录的权限设置为rwxr-x---(所有者rwx,所属组r-x,其他用户无权限)
      chmod 750 data

2. 修改所有者和所属组

  • 修改所有者:使用chown命令,格式为chown 新所有者 文件名
    示例:将file.txt的所有者改为user1
    chown user1 file.txt

  • 修改所属组:使用chgrp命令,格式为chgrp 新组名 文件名;或通过chown同时修改所有者和所属组(格式:chown 所有者:组名 文件名)。
    示例 1:将docs目录的所属组改为team1
    chgrp team1 docs
    示例 2:将report.pdf的所有者改为user2,所属组改为team2
    chown user2:team2 report.pdf

  • 递归修改:添加-R选项可递归修改目录及其子目录中所有文件的权限或所有权。
    示例:递归修改project目录的所属组为dev
    chgrp -R dev project

四、特殊权限与默认权限

除基础权限外,Linux 还支持特殊权限和默认权限(umask),用于满足复杂场景的需求。

1. 特殊权限

  • SetUID(SUID):文件所有者的权限位中x变为s,允许用户以文件所有者的身份执行该文件(仅对可执行文件有效)。
    示例:为/bin/passwd设置 SUID(允许普通用户修改自己的密码,实际以 root 身份执行)
    chmod u+s /bin/passwd

  • SetGID(SGID):所属组的权限位中x变为s,对文件而言,执行时以所属组身份运行;对目录而言,目录中新建文件的所属组与该目录一致。
    示例:为shared目录设置 SGID(确保团队成员在该目录中创建的文件均属于team组)
    chmod g+s shared

  • 粘滞位(Sticky Bit):其他用户的权限位中x变为t,用于目录时,仅文件所有者或 root 可删除该目录中的文件(防止误删共享目录中的文件)。
    示例:为/tmp设置粘滞位(系统默认已设置)
    chmod o+t /tmp

特殊权限的数字表示:SUID 对应4,SGID 对应2,粘滞位对应1,需添加在三组基础权限数字之前,例如4755(SUID+755)、2770(SGID+770)、1777(粘滞位 + 777)。

2. 默认权限:umask

umask(用户文件创建掩码)用于控制新建文件和目录的默认权限,它通过从最大权限中 “减去” 相应值来生效:

  • 新建文件的最大权限为666(无执行权限,需手动添加),新建目录的最大权限为777
  • umask 的默认值通常为0022(普通用户)或0077(root 用户),表示:
    • 普通用户新建文件默认权限:666 - 022 = 644rw-r--r--
    • 普通用户新建目录默认权限:777 - 022 = 755drwxr-xr-x

修改 umask:直接在命令行输入umask 新值(临时生效),或在~/.bashrc(用户级)、/etc/profile(系统级)中添加配置(永久生效)。
示例:将当前 shell 的 umask 设置为0007(新建文件权限为660,目录为770
umask 0007

http://www.lryc.cn/news/626291.html

相关文章:

  • pinctrl和gpio子系统实验
  • 前后端联合实现文件上传,实现 SQL Server image 类型文件上传
  • LeetCode热题100--101. 对称二叉树--简单
  • 【Kafka】常见简单八股总结
  • 力扣 30 天 JavaScript 挑战 第36天 第8题笔记 深入了解reduce,this
  • Linux Shell 常用操作与脚本示例详解
  • CNN 在故障诊断中的应用:原理、案例与优势
  • DAY 50 预训练模型+CBAM模块
  • 排查Redis数据倾斜引发的性能瓶颈
  • VScode ROS文件相关配置
  • 什么是大数据平台?大数据平台和数据中台有什么关系?
  • 网络间的通用语言TCP/IP-网络中的通用规则3
  • A股大盘数据-20250819 分析
  • 【PyTorch】单对象分割项目
  • Arthas 全面使用指南:离线安装 + Docker/K8s 集成 + 集中管理
  • Python入门第11课:Python网络请求入门,使用requests库轻松获取网页数据
  • Linux的基本操作
  • 浅看架构理论(一)
  • RK3568 Linux驱动学习——Linux设备树
  • 【SQL优化案例】统计信息缺失
  • 51单片机拼接板(开发板积木)
  • oracle官网下载jdk历史版本,jdk历史版本下载
  • Pandas数据预处理中缺失值处理
  • 【数据结构】堆和二叉树详解(下)
  • JavaScript 性能优化实战:从分析到落地的全指南
  • 【Task01】:简介与环境配置(第一章1、2节)
  • 彻底清理旧版本 Docker 的痕迹
  • 3.Kotlin 集合 Set 所有方法
  • STL——string的使用(快速入门详细)
  • 让AI学会“边做边想“:ReAct的实战指南