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)

相关文章
|
3天前
|
运维 网络协议 Linux
Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》
Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》
|
4天前
|
Linux 网络安全
linux/服务器使用scp将一个服务器文件转移到另一个服务器上
linux/服务器使用scp将一个服务器文件转移到另一个服务器上
32 3
|
5天前
|
Linux Go
linux ls -la文件信息含义
linux ls -la文件信息含义
11 1
|
5天前
|
Linux 程序员 计算机视觉
【linux 学习】在Linux中经常用到的cmake、make、make install等命令解析
【linux 学习】在Linux中经常用到的cmake、make、make install等命令解析
16 0
|
5天前
|
Linux Shell Python
如何计算 Linux 上文件中的空行数?
【5月更文挑战第11天】
14 0
|
5天前
|
Linux API
Linux系统编程之文件编程常用API回顾和文件编程一般步骤
Linux系统编程之文件编程常用API回顾和文件编程一般步骤
Linux系统编程之文件编程常用API回顾和文件编程一般步骤
|
5天前
|
Linux
如何在 Linux 中递归更改文件的权限?
【5月更文挑战第10天】
20 3
|
5天前
|
监控 Linux 数据处理
|
5天前
|
Linux
Linux如何查询较大文件的方法
【5月更文挑战第8天】Linux如何查询较大文件的方法
15 0
|
机器学习/深度学习 存储 Ubuntu
Linux全面解析讲解
Linux全面解析讲解
163 0
Linux全面解析讲解
http://www.vxiaotou.com