linux下普通文件和目录文件有什么区别 linux的文件与目录列表命令为( 二 )


5.我们找到inode号8899对应的数据域,于是我们会发现如下一些内容:
“abcdefg”(假设文件内容就是这样)
...
又有疑问了,为毛这次不是表了?
答案:/tmp/abc.txt文件不是目录文件了 , 它是一个普通文件,他存储的一般都是一些字符串 。
体现在本质上:
普通文件:存储普通数据,一般就是字符串 。
目录文件:存储了一张表,该表就是该目录文件下 , 所有文件名和inode的映射关系 。
从父目录中获得本文件的inode号---->找到inode-table表中找到这个inode号对应的数据域中的起点以及其他信息---->去这个数据域中读取该文件的内容(普通文件的内容一般是字符串,目录文件的内容是一张表)
如果你真心看懂上面我说的了 , 那么接下来就变得简单多了 。
关键就是访问任何一个文件 , 要看是否能搞到inode号,搞不到就没辙了 。搞到inode就好说了,拿着inode号去inode表中查找即可,最后找到数据域,那么就可以找到文件的内容了
然后整个过程这不仅仅跟本文件权限有关,还跟它的父目录(还有父目录的父目录...)权限有关(是否能搞到本文件的inode)
体现在命令上:(话说这才是最实际的表象)
======
对于普通文件来说 , rwx的意义是:
r:可以获得这个普通文件的名字和内容 。
w:可以修改这个文件的内容和文件名 。可以删除该文件,但是用户会得到是否删除写保护文件的prompt 。
x:该文件是否具有被执行的权限 。
======
对于目录文件来说,rwx的意义是:
r-x:可以进入cd该目录 , 可以获得该目录下存储情况,但是不能修改这个目录内部存储的文件(目录)的名字,也不能在该目录下新建文件和目录
-wx:可以进入cd该目录,但是看不到该目录下的存储情况(ls不可用),可以往该目录下添加、修改、删除文件 。可以通过cat来读取该目录下的文件or目录的内容 , 由于得不到该目录下存储了那些文件,在不知情的情况下只能通过猜 , cat + 文件名获得文件内容 , 所以这样依然不保密 。
--x:可以进入cd该目录 , 看不到存储情况,也不能往该目录下添加、修改、删除文件 。但是依然可以通过cat + xx(猜)来获得该目录下的文件的内容 。
rw-:不能进入cd该目录,用ls仅仅可以获得文件名和目录名,因为获取不到这些文件的inode号,当然也不能获得该目录下的文件的内容 。不能往该目录下添加、修改、删除文件 。
======
最后总结一下吧:
1.目录文件虽然是文件(唉 , 谁叫Linux的核心理念就是Everything is file),但是存储内容的只是一张表而已 , 关于文件名和inode号的映射关系 。
2.文件的扩展名和文件类型之间,没一毛钱关系 。
3.文件的文件名和文件实际存储内容之间,没一毛钱关系 。
4.要知道如何查找到一个文件内容的过程 。
5.为什么同一个文件系统移动文件要比跨文件系统快?
答:因为只需要修改某个目录中路径和inode对应关系即可,不需要重新写一遍数据域 。
6.什么是买来的500G的硬盘,格式化完后总是少了达不到500G?
答:从本文可知,inode-table也是需要占用存储空间的,所以缺少的一部分中inode-table占用了不少 。

推荐阅读