Linux 中的文件属性解析

简介: 在 Linux 系统中,每个文件和目录有一组属性控制其操作和访问权限。了解这些属性对有效管理文件至关重要。文件属性包括:文件类型(如 `-` 表示普通文件,`d` 表示目录),权限(如 `rwx` 表示所有者权限,`r-x` 表示组和其他用户权限),所有者,组,硬链接数,文件大小和最后修改时间。通过 `chown` 和 `chmod` 命令可更改文件所有者、所属组及权限。此外,还有特殊权限(如 SUID、SGID)和 ACL(访问控制列表)提供更精细的访问控制。

 导言:

在 Linux 系统中,每个文件和目录都有一组属性,用于确定对其进行的操作和访问权限。了解和理解这些文件属性对于有效管理和保护系统中的文件至关重要。本篇博客将详细介绍 Linux 中的文件属性,包括权限、所有者、组等。

以下面一个文件为例:

drwxr-xr-x 2  rootuser rootgroup 4096 Mar 20 15:30 file.txt

每个文件的属性由左边第一部分的 10 个字符来确定:

在给定的示例中,文件 "file.txt" 的属性如下:

  • d:表示这是一个目录。
  • rwxr-xr-x:表示所有者(rootuser)具有读、写和执行权限,而组(rootgroup)和其他用户具有读和执行权限。
  • 2:表示文件的硬链接数量为 2,即有两个文件名指向同一个文件。
  • rootuser:表示文件的所有者是 "rootuser"。
  • rootgroup:表示文件所属的组是 "rootgroup"。
  • 4096:表示文件的大小为 4096 字节。
  • Mar 20 15:30:表示文件的最后修改时间是在 3 月 20 日 15:30。

总结:根据给定的示例,可以得出结论,这是一个目录文件 "file.txt",所有者为 "rootuser",所属组为 "rootgroup",具有读、写和执行权限的所有者,以及读和执行权限的组和其他用户。它有两个硬链接,文件大小为 4096 字节,最后修改时间为 3 月 20 日 15:30。

drwxr-xr-x

d:表示File type(第 0 位确定文件类型)

在 Linux 中,文件列表的第一个字符表示文件的类型和属性。以下是一些常见的字符和它们的含义:

  • -:表示普通文件。这是最常见的文件类型,包含文本文件、二进制文件等。
  • d:表示目录。目录是一个包含其他文件和目录的文件。
  • l:表示符号链接(Symbolic Link)。符号链接是指向另一个文件或目录的特殊文件。
  • c:表示字符设备文件(Character Device File)。字符设备文件是与设备通信的接口,例如终端设备、声卡等。
  • b:表示块设备文件(Block Device File)。块设备文件是与设备通信的接口,例如硬盘、闪存驱动器等。
  • p:表示命名管道(Named Pipe)。命名管道是用于进程间通信的特殊文件。
  • s:表示套接字(Socket)。套接字是用于进程间网络通信的特殊文件。

rwx: 表示属主权限,即user permissions (第 1-3 位确定属主(该文件的所有者)拥有该文件的权限

r-x:表示属组权限,即group permissions,第4-6位确定属组(所有者的同组用户)拥有该文件的权限

r-x:表示其他用户权限,即other (everyone) permissions

 2的含义

2 :表示在这个示例中,文件 file.txt 的硬链接数量为 2。这意味着有两个文件名指向同一个 inode,即这个文件。在 Linux 文件系统中,一个文件的硬链接数量大于 1 表示它有多个链接,即它在文件系统中有多个位置。

在这个示例中,文件 file.txt 的硬链接数量为 2。这意味着有两个文件名指向同一个 inode,即这个文件。在 Linux 文件系统中,一个文件的硬链接数量大于 1 表示它有多个链接,即它在文件系统中有多个位置。

当你创建一个文件的硬链接时,实际上是创建了一个指向相同 inode 的新的目录项。这意味着文件的内容和权限是相同的,只是文件名和位置不同。当你删除一个硬链接时,文件的硬链接数量减少,但实际文件内容不会被删除,直到所有硬链接都被删除。

rootuser      rootgroup

rootuser     : user(owner)name

rootgroup  : group name

4096的含义:

4096: 表示文件的大小为 4096 字节。

Mar 20 15:30

  • Mar 20 15:30:表示文件的最后修改时间是在 3 月 20 日 15:30。

(一)文件权限解释

Linux 中的每个文件和目录都有三组权限:所有者(Owner)、组(Group)和其他人(Others)。这些权限决定了谁可以读取、写入和执行文件。权限分为三个类别:读取(Read)、写入(Write)和执行(Execute)。每个类别都有一个字母表示:

r、w 和 x

权限可以使用数字或字母表示。例如,rwx 表示读取、写入和执行权限。

权限可以使用数字或字母表示。每个权限可以用一个数字表示,如下所示:

  • r(读取权限):用数字 4 表示。
  • w(写入权限):用数字 2 表示。
  • x(执行权限):用数字 1 表示。
  • - 字符表示没有该位置权限

这些数字可以与权限组合使用,以表示文件或目录的权限。将数字权限相加可以得到相应的权限值。例如:

  • rwx 表示读取、写入和执行权限,对应的数字为 4 + 2 + 1 = 7。
  • rw- 表示读取和写入权限,没有执行权限,对应的数字为 4 + 2 = 6。
  • r-x 表示读取和执行权限,没有写入权限,对应的数字为 4 + 1 = 5。

在 Linux 中,使用数字权限表示方式可以更方便地设置文件或目录的权限。例如,使用 chmod 命令可以通过指定数字权限来修改文件的权限。例如,chmod 755 file.txt 将文件 "file.txt" 的权限设置为 -rwxr-xr-x

请注意,数字权限表示方式不仅仅适用于文件和目录的权限,还可以用于其他文件属性,如特殊权限(SUID、SGID、粘滞位)和 ACL(访问控制列表)的权限。

(二)更改文件属性

1. 修改文件所有者和所属组

chown 是 "change owner" 的缩写,用于更改文件或目录的所有者。

chgrp 是 "change group" 的缩写,用于更改文件或目录的所属组。

文件的所有者和所属组决定了谁对文件具有特殊权限。你可以使用 chown 命令来更改文件的所有者,使用 chgrp 命令来更改文件的所属组。以下是使用这些命令的示例:

  • chown user file.txt:将文件的所有者更改为 "user"。
  • chgrp group file.txt:将文件的所属组更改为 "group"。

chgrp 命令用于更改文件或目录的所属组。以下是常见的 chgrp 命令的参数选项:

  • -R:递归地更改指定目录下的所有文件和子目录的所属组。

2. 修改文件权限

  • user:用户
  • group:组
  • others:其他
  • 可以使用 u, g, o 来代表三种身份的权限。

文件权限决定了谁可以读取、写入和执行文件。你可以使用 chmod 命令来修改文件权限。以下是一些常见的 chmod 选项:

  • chmod +x file.txt:添加执行权限。
  • chmod -w file.txt:移除写入权限。
  • chmod 644 file.txt:将文件权限设置为 -rw-r--r--
  • 如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定

chmod 命令用于修改文件或目录的权限。以下是常见的 chmod 命令的参数选项:

  • -R:递归地更改指定目录下的所有文件和子目录的权限。
  • u:表示用户(所有者)权限。
  • g:表示组权限。
  • o:表示其他用户权限。
  • a:表示所有用户权限(相当于 ugo 的组合)。
  • +:添加权限。
  • -:移除权限。
  • =:设置权限。
  • r:读取权限。
  • w:写入权限。
  • x:执行权限。
  • s:设置 SUID 或 SGID 位。
  • t:设置粘滞位。
  • X:仅对目录和文件执行权限。

这些参数选项可以组合使用,以实现对文件或目录权限的精确控制。

请注意,使用 chmod 命令需要适当的权限。通常情况下,只有超级用户(例如 root 用户)才能更改其他用户的文件或目录的权限。

特殊权限和粘滞位

除了基本的权限之外,Linux 还提供了一些特殊权限和标记。其中最常见的是 SUID、SGID 和粘滞位。

  • SUID(Set User ID)权限允许用户在执行文件时以文件所有者的权限运行它。可以使用 chmod u+s file 设置 SUID 权限。
  • SGID(Set Group ID)权限允许用户在执行文件时以文件所属组的权限运行它。可以使用 chmod g+s file 设置 SGID 权限。
  • 粘滞位(Sticky Bit)权限适用于目录,它确保只有目录的所有者可以删除或重命名其中的文件。可以使用 chmod +t directory 设置粘滞位权限。

ACL(访问控制列表)

除了基本的文件权限之外,Linux 还支持 ACL(Access Control List),允许更细粒度的权限控制。ACL 允许你为单个文件或目录设置特定用户或组的权限。使用 getfaclsetfacl 命令可以查看和修改 ACL。

今天就学到这了,先记录一下,方便以后复习!!!

资料参考:Linux 文件基本属性 | 菜鸟教程 (runoob.com)

相关文章
|
14小时前
|
存储 Linux 数据库
【Linux】Linux基础文件与目录管理:成为Linux大师的入门必修课
【Linux】Linux基础文件与目录管理:成为Linux大师的入门必修课
10 3
|
2天前
|
Linux 数据处理 数据库
深入解析Linux命令id:理解用户身份与权限
`id`命令在Linux中用于显示用户身份(UID, GID和附加组)。它查看系统用户数据库获取信息。参数如`-u`显示UID,`-g`显示GID,`-G`显示附加组,结合`-n`显示名称而非ID。用于确认命令执行者身份,确保权限正确。在脚本中使用时注意权限管理,遵循最小权限原则。
|
6天前
|
Linux API C语言
C语言读写BMP文件-EasyBmp【 linux 平台】
**EasyBmp** 是一个49KB的轻量级C++图像处理库,专注于BMP格式,提供简单易用的API。它的特点是小巧、开源、易于理解和高度定制。通过示例代码展示了如何轻松读取、缩放和保存BMP图像。适合需要高效处理BMP图像的开发者。
|
7天前
|
Linux Shell
蓝易云 - Linux下查看文件和文件夹大小
这两个命令是查看Linux系统中文件和文件夹大小的基本工具,可以根据需要进行组合使用。
8 0
|
7天前
|
应用服务中间件 Linux nginx
蓝易云 - Linux使用pid文件结束nginx
以上就是使用pid文件结束nginx进程的方法。
7 0
|
8天前
|
缓存 Linux Windows
初识Linux操作系统(根目录下的重要文件)(命令提示符的含义)
Linux系统基于"一切皆文件"的理念,重要文件分布在如/root(root用户目录)、/home(普通用户目录)、/etc(应用配置)、/dev(设备文件)、/boot(内核及启动文件)、/proc(动态系统信息)、/lib64(库文件)、/opt(软件存放)、/tmp(临时文件)。"[root@localhost ~]#"代表管理员在root目录,"$"代表普通用户。创建新用户用`useradd`命令。调节终端字体大小:Ctrl+Shift++增大,Ctrl+减号缩小。绝对路径从根目录开始,相对路径从当前目录开始。
|
9天前
|
Linux 数据库 数据库管理
Linux下的`db_checkpoint`命令:深入解析与应用
`db_checkpoint`是Linux下Berkeley DB的命令,用于触发检查点操作,保证数据库故障恢复时的一致状态。它锁定数据库、刷新内存中的写入、更新日志并解锁。在Linux中,通过命令行调用,如`db_checkpoint -h /path/to/db_home`,可配合 `-f` 强制写入,`-v` 获取详细输出。注意权限、并发性能影响及事务一致性。使用得当能提升数据库可靠性和性能。
|
10天前
|
存储 缓存 Unix
【嵌入式软件工程师面经】Linux文件IO
【嵌入式软件工程师面经】Linux文件IO
14 1
|
1月前
|
Linux
百度搜索:蓝易云【Linux中如何对文件进行压缩和解压缩?】
这些是在Linux中进行文件压缩和解压缩的常见方法。根据您的需求和具体情况,可能会使用其他压缩工具和选项。您可以通过查阅相应命令的帮助文档来获取更多详细信息。
58 1
|
1月前
|
NoSQL Java Linux
Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)
Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)