一文了解 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):其他用户具有读权限。
相关推荐
摸鱼也很难3 分钟前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
watermelonoops5 分钟前
Deepin和Windows传文件(Xftp,WinSCP)
linux·ssh·deepin·winscp·xftp
woshilys37 分钟前
sql server 查询对象的修改时间
运维·数据库·sqlserver
疯狂飙车的蜗牛1 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
恩爸编程2 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
Michaelwubo3 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
远游客07133 小时前
centos stream 8下载安装遇到的坑
linux·服务器·centos
马甲是掉不了一点的<.<3 小时前
本地电脑使用命令行上传文件至远程服务器
linux·scp·cmd·远程文件上传
jingyu飞鸟3 小时前
centos-stream9系统安装docker
linux·docker·centos
好像是个likun4 小时前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器