在linux下使用“ls -l”或者“ls -al”或者“ll”命令查看文件及目录详情时,shell中会显示出好几列的信息。平时也没怎么注意过,今天忽然心血来潮想了解一下,于是整理了这篇博客,以供参考:
首先给出一张典型的显示结果:
下面对其中的每一列进行详细的分析:
一、文件类型
表示该文件的类型:
“-”表示普通文件;
“d”表示目录;
“l”表示链接文件;
“p”表示管理文件;
“b”表示块设备文件;
“c”表示字符设备文件;
“s”表示套接字文件;
二、文件属性
以back_init文件为例,其属性可分为三段:[rwx][rwx][r-x],其中:
第一段表示文件创建者/所有者对该文件所具有的权限,第二段表示创建者/所有者所在的组的其他用户所具有的权限,第三段表示其他组的其他用户所具有的权限。
-
r(Read,读取权限):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
-
w(Write,写入权限):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
-
x(eXecute,执行权限):对文件而言,具有执行文件的权限;对目录来说,该用户具有进入目录的权限。
另外,这里还有2个很特殊的属性,平时不怎么常见,这里也顺带解释一下:
- s或S(SUID,Set
UID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。请注意具备SUID权限的文件,黑客经常利用这种权限,以SUID配上root帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用。 - t或T(Sticky):/tmp和
/var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件。
综合起来可得,对于back_init文件,其创建者/所有者具有可读可写可执行的权限,其创建者/所有者所在的组的其他用户具有可读可写可执行的权限,其他组的其他用户则具有可读可执行但不可写的权限。
三、目录/链接个数
对于目录文件,表示它的第一级子目录的个数。注意此处看到的值要减2才等于该目录下的子目录的实际个数。
- 比如这里的include目录下,其实是没有子目录的,所以应该是0,但是它这里却显示2,这是因为要加上.目录和…目录。在linux下,.目录表示当前目录,…目录表示上一级目录。
- 这也可以解释上图中第一行的.目录下的3和第二行…目录下的26。因为当前目录下有一个include目录,所以加上.目录和…目录这2个目录就等于3,所以第一行会显示3。而上一级目录共有24个目录,加上上一级目录的.目录和…目录这2个目录,所以这里的第二行显示的是26。
对于其他文件,表示指向它的链接文件的个数。
四、所有者及组
表示该文件的所有者/创建者(owner)及其所在的组(group)。
五、文件大小
如果是文件,则表示该文件的大小,单位为字节。
如果是目录,则表示该目录符所占的大小,并不表示该目录下所有文件的大小。
六、修改日期
七、文件名称
八、字体颜色
在大多数的linux shell窗口中,还能用颜色来区分不同文件的属性:
- 灰白色表示普通文件;
- 亮绿色表示可执行文件;
- 亮红色表示压缩文件;
- 灰蓝色表示目录;
- 亮蓝色表示链接文件;
- 亮黄色表示设备文件;
当然,这里需要使用系统缺省的配色方案。如果你自定义了shell的配色方案,则有可能与上面的定义不一致。
最后还要说明一点的是,可以看到上述的图片中,back_init文件的后面还带了一个星号(),这也是linux系统下用于标记可执行文件的另外一种方式。也就是说,凡是文件名后面带了一个星号()的,都是在说明这是一个可执行文件。