Linux 中的文件属性解析

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

目录
打赏
0
0
0
0
134
分享
相关文章
|
2天前
|
Linux基础:文件和目录类命令分析。
总的来说,这些基础命令,像是Linux中藏匿的小矮人,每一次我们使用他们,他们就把我们的指令准确的传递给Linux,让我们的指令变为现实。所以,现在就开始你的Linux之旅,挥动你的命令之剑,探索这个充满神秘而又奇妙的世界吧!
45 19
|
17天前
|
Linux 常用文件查看命令
`cat` 命令用于连接文件并打印到标准输出,适用于快速查看和合并文本文件内容。常用示例包括:`cat file1.txt` 查看单个文件,`cat file1.txt file2.txt` 合并多个文件,`cat > filename` 创建新文件,`cat >> filename` 追加内容。`more` 和 `less` 命令用于分页查看文件,`tail` 命令则用于查看文件末尾内容,支持实时追踪日志更新,如 `tail -f file.log`。
45 5
Linux 常用文件查看命令
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
Linux|Transfer.sh 轻松实现文件共享
Linux|Transfer.sh 轻松实现文件共享
36 2
Linux|Transfer.sh 轻松实现文件共享
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
87 34
linux怎么把文件传到docker里面
在现代应用开发中,Docker作为流行的虚拟化工具,广泛应用于微服务架构。文件传输到Docker容器是常见需求。常用方法包括:1) `docker cp`命令直接复制文件;2) 使用`-v`选项挂载宿主机目录,实现数据持久化和实时同步;3) 通过SCP/FTP协议传输文件;4) 在Dockerfile中构建镜像时添加文件。选择合适的方法并确保网络安全是关键。
128 1
|
1月前
|
Linux文件与目录的日常
目录的切换 一般使用(”pwd“)显示当前所在的目录 比如:当前目录是在home下面的,与用户名相同的文件夹,可以使用(”cd“)命令来切换目录; 进入下载目录(”cd home/a/下载“)这种从给目录开头的一长串路经”叫做绝对路径“; 进入图片目录(”cd .. /图片/“)".."代表当前路径的上级路径,相对于当前的目录而言的”叫做相对路径“,(”.“)代表当前路径; 如果,想快速切换,上一个所在目录可以(”cd - / cd..“); 如果,想快速切换,追原始的目录可以(”cd --“); 查看目录及文件
45 14
|
1月前
|
Linux 将所有文件和目录名重命名为小写
Linux 将所有文件和目录名重命名为小写
36 3
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
35 4
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
77 11

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等