一文了解 Linux 系统的文件权限管理

文章目录

引入

在Linux操作系统中,我们想查看我们对文件拥有哪些权限时,可以在终端键入ls -lll命令,终端会输出当前路径下的文件信息,如文件名称、权限信息、文件所有者和所属组等信息。例如:

图中类似 -rw-r--r-- 的字符串清晰地展示了对应文件的权限信息,包括用户、组和其他用户的读、写和执行权限。因此,理解这些权限的含义以及如何进行管理,我们就可以通过控制文件的访问权限来确保数据的安全性和完整性。

Linux文件权限模型

Linux系统中的文件权限主要分为三种:读取(Read)、写入(Write)、执行(Execute) 。每个文件都有一个所有者,称为用户(User) ,用户对其文件拥有特定的权限,能够决定其他人(Others)可以访问或修改这些文件;用户也可以被组织成组,组内的成员可以共享特定的文件访问权限,每个用户可以属于一个或多个用户组(Group)

每种类型的用户都有读(r)、写(w)和执行(x)三种文件权限。文件所有者是创建文件或目录的用户,拥有完全的控制权;文件所属组是一组用户的集合,共享相同的权限;其他用户则是系统中除文件所有者和所属组之外的所有用户。

查看文件权限

我们可以使用ls -lll命令查看文件和目录的详细信息,包括文件权限:

  • 查看指定文件 file.txt 的详细信息:

    shell 复制代码
    ls -l file.txt
  • 使用ls -l命令查看当前目录下所有文件的信息:

    shell 复制代码
    ls -l
  • 使用ll命令查看当前目录下所有文件的信息:

    shell 复制代码
    ll

权限信息解析

Linux系统文件的读取、写入、执行三种权限分别使用r,w,x表示:

权限类型 符号表示 描述
读取 r 允许用户查看文件内容或列出目录中的文件
写入 w 允许用户修改文件内容或在目录中添加、删除文件
执行 x 允许用户执行文件(如果是可执行程序)或访问目录

Linux 使用10位字符表示文件的权限信息:

第1位用于标识文件类型(如普通文件、目录);后9位表示文件权限,分为三组,每组三个字符,从左到右依次对应所有者、用户组及其他用户对文件所拥有的操作权限。详细解析对应如下表:

下标 含义 说明
1 文件类型 - | d | l 文件类型(-:普通文件,d:目录,l:符号链接)
2 所有者权限 r | - r:所有者拥有读取权限;-:所有者无读取权限
3 所有者权限 w | - w:所有者拥有写入权限;-:所有者无写入权限
4 所有者权限 x | - x:所有者拥有执行权限;-:所有者无执行权限
5 组用户权限 r | - r:组用户拥有读取权限;-:组用户无读取权限
6 组用户权限 w | - w:组用户拥有写入权限;-:组用户无写入权限
7 组用户权限 x | - x:组用户拥有执行权限;-:组用户无执行权限
8 其他用户权限 r | - r:其他用户拥有读取权限;-:其他用户无读取权限
9 其他用户权限 w | - w:其他用户拥有写入权限;-:其他用户无写入权限
10 其他用户权限 x | - x:其他用户拥有执行权限;-:其他用户无执行权限

执行 ll 命令后,终端输出结果的格式通常如下:

从左到右,这一行信息可以分解为以下几个部分:

属性 说明
文件类型和权限 -rw-rw-rw- 表示这是一个普通文件,拥有读、写、执行权限
硬链接数 1 表示链接到该文件的硬链接数量为1
文件所有者 root 表示文件的创建者或所有者为 root 用户
文件所属组 root 表示与该文件关联的用户组为 root 组
文件大小 664 以字节为单位显示文件的大小
最后修改时间 10月 8 14:06 表示文件最后一次修改的日期和时间
文件名 compara_card.sh 表示该文件的名称为compara_card.sh

上述示例中的 -rw-rw-rw- 的含义如下:

  • 第一个字符-表示这是一个普通文件(如果是d则表示目录)。
  • 接下来的三个字符rw-表示文件所有者的权限:r表示可读,w表示可写,-表示没有执行权限。
  • 中间的三个字符rw-表示同组用户的权限,意义与所有者相同。
  • 最后三个字符rw-表示其他用户的权限,也同样表示可读和可写,但没有执行权限。

即该文件允许所有用户读取和写入,但不允许执行。

修改文件权限

Linux 修改文件和目录的权限需要使用 chmod 命令。而权限的设置有两种方式:符号模式八进制数字模式

符号模式

符号模式使用用户类型(u、g、o、a)和权限(r、w、x)来修改文件和目录的权限,格式为:

bash 复制代码
chmod [ugoa][+-=][rwx] file
  • [ugoa]:用户类别

    用户类型 符号表示 说明
    所有者 u 文件的创建者
    用户组 g 与文件所有者同组的用户
    其他用户 o 不属于文件所有者或同组用户的所有其他用户
    所有用户 a u, g, o 的组合,即系统中的所有用户
  • [±=]:操作符

    操作符 描述
    + 增加权限
    - 删除权限
    = 设置权限(仅指定的权限有效)
  • [rwx]:权限类型

    符号表示 描述
    r 读取权限
    w 写入权限
    x 执行权限

修改用户权限示例如下:

  1. 给文件所有者增加执行权限:

    bash 复制代码
    chmod u+x file
  2. 从同组用户中删除写权限:

    bash 复制代码
    chmod g-w file
  3. 将其他用户的权限设置为只读:

    复制代码
    chmod o=r file

八进制数字模式

八进制数字模式的权限数值由三位八进制数字组成,每位分别代表不同的用户类别。即:

  • 第一位:文件所有者的权限
  • 第二位:同组用户的权限
  • 第三位:其他用户的权限

每一位八进制数字又拆分为三个二进制数字表示对应的权限(r、w、x),三位二进制数字可以表示不同的权限组合:

权限组合 二进制 八进制 权限描述
无权限 000 0 不允许任何操作
只执行(x) 001 1 仅允许执行
只写(w) 010 2 仅允许修改
写+执行(wx) 011 3 允许修改和执行
只读(r) 100 4 仅允许读取
读+执行(rx) 101 5 允许读取和执行
读+写(rw) 110 6 允许读取和修改
读+写+执行(rwx) 111 7 允许读取、修改和执行

例如,运行以下命令将权限设置为754

bash 复制代码
chmod 754 example.txt
  • 第一位7(二进制111):文件所有者具有读、写和执行权限。
  • 第二位5(二进制101):同组用户具有读和执行权限。
  • 第三位4(二进制100):其他用户具有读权限。
相关推荐
ICscholar2 小时前
ExaDigiT/RAPS
linux·服务器·ubuntu·系统架构·运维开发
sim20202 小时前
systemctl isolate graphical.target命令不能随便敲
linux·mysql
薛定谔的猫19823 小时前
RAG(二)基于 LangChain+FAISS + 通义千问搭建轻量级 RAG 检索增强生成系统
运维·服务器·langchain
米高梅狮子3 小时前
4. Linux 进程调度管理
linux·运维·服务器
再创世纪4 小时前
让USB打印机变网络打印机,秀才USB打印服务器
linux·运维·网络
fengyehongWorld5 小时前
Linux ssh端口转发
linux·ssh
昨夜见军贴06165 小时前
IACheck AI审核如何实现自动化来料证书报告审核,全面提升生产效率与合规水平
运维·人工智能·自动化
知识分享小能手6 小时前
Ubuntu入门学习教程,从入门到精通, Ubuntu 22.04中的Shell编程详细知识点(含案例代码)(17)
linux·学习·ubuntu
浩子智控7 小时前
电子产品设计企业知识管理
运维·服务器·eclipse·系统安全·硬件工程
以太浮标7 小时前
华为eNSP模拟器综合实验之-BGP路由协议的配置解析
服务器·开发语言·php