前言:Linux系统中一切皆文件,那通过ls查看到的文件属性到底都是什么意思呢?本文做了一个简单梳理,欢迎指正~
查看linux里的文件信息
通过输入ls -l,以长列表格式显示文件的具体信息
1 文件权限
- 文件类型 d:目录; -:文件; l:链接(link); b:可随机存取设备; c:一次性读取设备(鼠标、键盘)
- owner权限:文件所有者具备的文件权限
- group权限:属于该群组的账号具备的文件权限
- others权限:既不是文件所有者,也不在群组里的其他人的文件权限
- rwx,r:可读(read);w:可写(write);x:可执行(execute),没有权限为 “ - ”
这里想补充一下rwx权限对于文件和目录区别。
权限对于文件:
r表示可以读取这个文件的内容;
w表示可以编辑、新增或修改文件内容,但是!不可以删除这个文件!因为这个w针对的是文件内容;
x表示可以执行这个文件,windows中,我们想打开某一个文件,要看我们是否有可以打开这个文件扩展名(.xx,例如.txt、.bat、.exe)的软件,但在linux中,全凭x来限制。
权限对于目录:
r表示可以查询这个目录下的文件列表,例如可以用ls来查看;
w表示可以改动这个目录下的文件名,比如创建文件目录啊、删除文件或目录啊(这里注意,无论这个文件的权限是啥,都可以删!)、改文件名啥的;
x表示可以进入这个目录的权限,能否进入某一目录,只与x有关。
2 链接
链接到这个节点(inode)的文件数,这里的链接是指硬链接。
linux中的文件在存储时,会分两部分进行存储。一是文件属性(存储在inode中),包括文件大小、属主UserID、群组GroupID、读写执行权限等;二是文件具体内容(存储在block中)。
每个文件都有对应的inode,而每个inode都有自己的inode号码(类似文件名,用于区别不同的inode),这里需要说明一下,因为在linux系统内部是通过inode号码来识别不同的文件的,而我们为了方便,给不同的文件起了不同的文件名。有点绕?没关系,简单来说流程为:
当我们通过输入文件名打开某文件时,系统内的流程为:文件名→inode号码→inode→block,即通过我们输入的文件名,找到其对应的inode号码,然后通过inode号码确定inode(从中可以得知你是否有权限啊,这个文件的详细情况啊,这个文件的具体内容存在哪啊之类的),然后通过inode可以找到具体存文件内容的block,然后就可以看文件啦。
硬链接和软链接
因为前面提到了文件信息中的 “ 2 ” 是指硬链接到inode的文件数,这里简单说一下什么是硬链接和软链接。
linux系统中允许多个文件名指向同一个inode号码,这样的话,我们就可以通过多个不同的文件名访问相同的文件内容了。假设我有A、B、C三个文件名指向同一个inode号码,当我们通过A打开一个文件并修改了其中内容的时候,我们用B和C打开这个文件会发现,其中内容也是修改后的(因为我们是实实在在修改了block的内容啊),这时,如果我们把A删了,我们依旧可以通过B和C访问这个文件,这就叫硬链接。“ 2 ” 里记录的就是硬链接的数量,上面的例子中链接数就是3,当删了A以后,链接数就是2。
软链接可以理解为windows中的快捷方式,假设A是B的软链接,B的inode链接数量并不会变,因为A指向不是B的inode,而是B的文件名(带入上面的流程再看一下,就不乱啦),这时候,如果删了B,A就也无法打开了(类比为windows,你把软件都删了,光有一个快捷方式当然是打不开这个软件的)。
3 文件所有者账号
该所有者对于文件的使用权限受 “ owner权限 ” 限制。
4 文件所属群组
属于该群组的用户对于文件的使用权限受 “ group权限 ” 限制。
既不是所有者,也不属于该群组的便是其他人啦,其对该文件的使用权限受 “ others权限 ” 限制。
5 文件大小,默认为字节
6 创建日期或最新修改日期(月/日/时间)
7 文件名,如果文件名前有 “ . ” ,说明是隐藏文件(ls -a可以查看隐藏文件)