P表示命名管道:由mkfifo系统调用生成,由于fifo又叫作有名管道,因此用p来表示这个文件的类型,然而pipe系统调用虽然也是用来建立管道的,可是他建立的是无名管道,不会生成一个文件来标识该管道,而mkfifo所建立的管道则须要一个文件来表示,这也是为何叫他有名管道的缘由,既然是用来作标识的,那么他的大小为零就理所固然了。c++
s 表示套接字 /dev/log(UNIX domain)dom
该条目的后9个字符表示该文件的执行权限。RWX分别表示可读可写可执行,若要改成不可读就用-代替R,也能够用一组3位的二进制数来表示这些,好比111表示RWX,或者用十进制的7来表示。头三位是文件拥有用户的权限,文件拥有用户在后面的条目指出,中间三个表示那些和文件拥有用户在同一个组的用户的权限,后三个表示其余用户的权限。咱们这里说的用户是登录系统时的用户。当进程去操做文件时,系统就会检测进程的有效用户和有效组,若和文件的拥有用户或拥有组相同,就具有相应的权限。进程
另外还有重要的一点是文件的SUID和SGID。ip
首先咱们知道一个进程里包含了该进程的实际用户,有效用户,实际组,有效组四个信息。通常状况下实际用户等于有效用户,实际组等于有效组。那么什么状况下会不同呢?这就是咱们接下来要说的了内存
当一个可执行文件的SUID被设置时,某个某个进程去执行他时,这个进程的有效用户就会变成这个文件的拥有用户,这个时候就不同了。一样的,若是文件的SGID被设置了,那么进程在执行该文件时,有效组就会变成该文件的拥有者所在的用户,这个时候实际组和有效组就有可能不同了。总之一个进程的实际用户和实际组是不会变的。pip
那么这样作是为了什么呢?变量
好比每一个用户都有修改密码的需求,可是记录密码的文件是系统文件,只有root用户才能修改,那普通用户怎么修改呢?当咱们修改密码时会执行一个passwd的程序,而passwd的SUID就被设置了!!!而且passwd这个程序的拥有者是root用户,因此在进程执行该程序时,进程的有效用户变成了root,和实际用户就不同了。当该进程去修改系统文件(记录了密码的文件)时,系统就会检测该进程的有效用户是否等于该文件的拥有者用户,如果,则具有了读写功能。从而一个普通用户完成了修改密码的动做。权限
第二个条目是表示这个文件的引用计数,也能够说是这个文件的硬连接数,由于每有一个硬连接,这个数目就会+1,硬连接由ln命令生成,其本质就是给同一个文件起了若干种数目的名字,而这个数目就是这第二个条目―引用计数,有点像c++中的引用,给一个变量取了另一个名字,然而实际上你操做的是同一个块内存,也就是说他们的地址是同样的。例如图中的‘’点‘’文件,其实他表示的就是当前所在目录的这个文件,而数字2就表示该文件硬连接数为2,说白了就是他有两个名字,一个改目录名,一个“点”。引用
第三个条目表示该文件拥有者的用户ID。
它是由建立该文件时,登录系统的用户决定的。 第四个条目表示该文件拥有者所在的组ID。
它是由建立该文件时,登录系统的用户所在的组决定的。 第五个条目表示该文件的大小。
后面的时间表示最后一次访问的时间,若是touch某个文件能够改变该时间为当前时间。二进制