Linux中的文件权限概念总结

Linux中的文件权限概念总结

引子

在最近做的一道笔试题中,遇到了一个关于Linux中文件权限的问题,事后发现题目做错了,于是重新复习下文件权限的概念并做一个总结,同时对Ext2文件系统进行回顾。

问题如下:
存在一个目录directory,执行 ‘ls -Al directory/’ 命令后,终端界面上显示 ‘-????????? ? ? ? ?  ? file’,请问用户对于该文件夹的权限可能是

A. rw-           B. -wx           C. -w-           D. r-x

我当时理所当然的认为该目录不可读,但是能够看到文件夹中的内容所以能够访问,因此选了B。考试结束后自己重现了一下这道题的场景,发现选AD都是对的,具有r权限是因为执行ls命令后,能够显示出目录中的文件名,也就是目录的内容,但是从题目中看不出是否有w权限,条件不足,不能够判断对是否可以修改目录结构。

Linux文件属性

一般情况下,当我们执行 ‘ls -Al’ 命令后,终端界面上会列出当前路径下所有的目录和文件详细的权限与属性,你会看到类似下面的内容:

[root@www ~]# ls -al
total 12
drwxr-x—.  4   root root 4096 Sep  8 14:06  .
drwxr-xr-x. 23  root  root  4096 Sep  8 14:21  ..
-rw-rw-r–.  1   root root  435  Sep 19 14:27  example
[ 1 ][2][3][4][5][   6   ][ 7 ]
  权限 连接 所有者 用户组 文件容量  修改日期   文件名

第一列权限列代表文件的权限和属性,其各个字符含义如下图所示:

权限列代表的文件权限和属性含义

文件类型有[d]目录,[-]文件,[l]链接文件,[b]块设备文件,[c]字符设备文件,[p]管道等等。

第二列表示有多少个文件名连接到此节点(i-node),这就涉及到Linux的文件系统了,在内核里有一个struct inode结构体,因为在Linux中所有的设备、文件夹等都是作为文件处理的,所以该结构体也就是文件的索引节点,每一个文件都有一个索引节点,它用来记录和存放文件的基本信息和相关属性,包含权限、属性、时间、使用者及群组等,以及记录到文件内容存储块的索引,但是我们使用的命令树确是使用文件名来记录的,每个文件名都要连接到一个i-node上才有意义,因此这个属性记录的就是多少个不同的文件名连接到同一个i-node索引节点上。

第三列表示这个文件的所有者。

第四列表示这个文件的所属用户组。

第五列表示这个文件的容量大小,默认单位为B。

第六列为这个文件的创建日期或者是最近的修改日期。

第七列是文件名,文件名第一个字符为. 表示隐藏文件。

目录与文件的权限意思

权限对于文件的意义

  • r : 可读取此文件的内容。
  • w : 可以编辑、新增或者是修改该文件的内容,不包括删除权限。
  • x : 具有被系统执行的权限。在Linux下面,文件是否能被当前用户执行是由该标志唯一判断的。
    以上主要都是针对文件的内容而言,与文件名本身没有绝对的关系。

权限对于目录的意义

  • r : 具有读取目录结构列表的权限。
  • w : 具有更改该目录结构列表的权限,包括新建、删除、重命名、拷贝移动等。
  • x : 具有进入该目录成为工作目录的权限。

文件和目录其实是一样的原理,因为在文件系统中,不管是文件、设备还是目录都是作为一个inode节点来记录的,而实际数据则放置在block中,这些block由inode索引。当具有r权限时,也就可以读取block中的内容,对于目录来说,目录结构列表就是目录的内容;当具有w权限时,也就意味着可以修改block中的内容;当具有x权限,就可以将block中的内容加载到内存中,对于目录来说也就是切换到工作目录。

文件系统特性

对一个分区进行格式化后,在这个分区里就形成了文件系统,在文件系统中有以下三个比较重要的概念:

super block: 记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息等;
inode: 记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码;
block: 实际记录文件的内容,一个文件根据文件大小占用一个或多个block。

回到一开始的问题,当我们在Linux下的ext2文件系统新建一个目录时,ext2会分配一个inode与至少一块block给该目录。其中,inode记录该目录的相关权限与属性,并可记录分配到的那块block号码;而block则是记录在这个目录下的文件名与该文件名占用的inode号码数据。所以,inode本身并不记录文件名,文件名的记录是在目录的block中。因为对目录具有r权限,所以我们可以看到记录在block中的文件名,但是因为没有x权限,所以我们无法去读目录里的文件的inode信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux,文件是存储数据的基本单位。它可以是文本文件、二进制文件、目录、设备文件等。Linux的文件系统采用了一种层次结构的组织方式,以便于对文件进行管理和访问。 在Linux,文件有以下几个重要的概念: 1. 文件名:文件名是用来标识文件的字符串。它可以包含字母、数字、特殊字符和空格等。文件名是区分大小写的。 2. 文件路径:文件路径是指文件在文件系统的位置。在Linux,有两种类型的文件路径:绝对路径和相对路径。绝对路径从根目录(/)开始,一直到文件所在的目录。相对路径是相对于当前工作目录的路径。 3. 文件类型:Linux的文件类型有很多种,常见的包括普通文件(regular file)、目录(directory)、符号链接(symbolic link)、设备文件(device file)等。 4. 文件权限:每个文件都有一组权限,用于控制对文件的访问。权限分为三类:所有者权限、群组权限和其他用户权限。每类权限又分为读取(r)、写入(w)和执行(x)三种。 5. 文件大小:文件大小指的是文件所占用的存储空间大小,以字节为单位。 6. 文件时间戳:每个文件都有三个时间戳,分别是访问时间(atime)、修改时间(mtime)和状态改变时间(ctime)。访问时间指的是最后一次读取或执行文件的时间,修改时间指的是最后一次修改文件内容的时间,状态改变时间指的是最后一次修改文件元数据(如权限、所有者等)的时间。 7. 文件链接:Linux的文件链接有两种类型:硬链接和符号链接。硬链接是指多个文件名指向同一个文件数据块,它们共享相同的inode。符号链接是一个特殊类型的文件,它包含了指向另一个文件或目录的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值