Linux 中的文件属性解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 在 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)

相关文章
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
88 2
|
7天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
55 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
4天前
|
自然语言处理 文字识别 数据处理
多模态文件信息抽取:技术解析与实践评测!
在大数据和人工智能时代,企业和开发者面临的挑战是如何高效处理多模态数据(文本、图像、音频、视频)以快速提取有价值信息。传统方法效率低下,难以满足现代需求。本文将深度评测阿里云的多模态文件信息抽取解决方案,涵盖部署、应用、功能与性能,揭示其在复杂数据处理中的潜力。通过自然语言处理(NLP)、计算机视觉(CV)、语音识别(ASR)等技术,该方案助力企业挖掘多模态数据的价值,提升数据利用效率。
18 4
多模态文件信息抽取:技术解析与实践评测!
|
4天前
|
文字识别 自然语言处理 算法
从多模态到精准洞察:深度解析多模态文件信息提取解决方案!
阿里云推出《多模态数据信息提取》解决方案,涵盖文本、图像、音频、视频等多种数据形式的自动化处理。本文从部署体验、功能验证到实际应用,全面解析该方案的能力与潜力,帮助开发者高效提取和整合复杂数据,提升工作效率...
23 3
从多模态到精准洞察:深度解析多模态文件信息提取解决方案!
|
23天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
55 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
9天前
|
Ubuntu Linux Go
golang编译成Linux可运行文件
本文介绍了如何在 Linux 上编译和运行 Golang 程序,涵盖了本地编译和交叉编译的步骤。通过这些步骤,您可以轻松地将 Golang 程序编译成适合 Linux 平台的可执行文件,并在目标服务器上运行。掌握这些技巧,可以提高开发和部署 Golang 应用的效率。
67 14
|
8天前
|
存储 NoSQL Linux
linux积累-core文件是干啥的
核心文件是Linux系统在程序崩溃时生成的重要调试文件,通过分析核心文件,开发者可以找到程序崩溃的原因并进行调试和修复。本文详细介绍了核心文件的生成、配置、查看和分析方法
41 6
|
10天前
|
存储 NoSQL Linux
linux之core文件如何查看和调试
通过设置和生成 core 文件,可以在程序崩溃时获取详细的调试信息。结合 GDB 等调试工具,可以深入分析 core 文件,找到程序崩溃的具体原因,并进行相应的修复。掌握这些调试技巧,对于提高程序的稳定性和可靠性具有重要意义。
53 6
|
2月前
|
缓存 并行计算 Linux
深入解析Linux操作系统的内核优化策略
本文旨在探讨Linux操作系统内核的优化策略,包括内核参数调整、内存管理、CPU调度以及文件系统性能提升等方面。通过对这些关键领域的分析,我们可以理解如何有效地提高Linux系统的性能和稳定性,从而为用户提供更加流畅和高效的计算体验。
37 2
|
2月前
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
46 3