Linux文件类型及权限
简介
在Linux中,我们可以通过ls -l [path]命令查看文件的基本属性,其中path是可选参数,不指定path会默认以当前目录为查询目录,例如:
ydqun@VM-0-9-ubuntu chapter7 % ls -l [0]
total 40
-rw-r--r-- 1 ydqun root 164 Jan 23 19:03 1.test.sh
-rw-r--r-- 1 ydqun root 14 Jan 24 14:23 1.txt
-rw-r--r-- 1 ydqun root 41 Jan 23 19:03 2.true.false.sh
-rw-r--r-- 1 ydqun root 495 Jan 23 19:09 3.file_type.sh
-rw-r--r-- 1 ydqun root 319 Jan 23 19:09 4.check.termimal.sh
-rw-r--r-- 1 ydqun root 322 Jan 23 19:12 5.check.file.sh
-rw-r--r-- 1 ydqun root 196 Jan 23 19:14 6.same.file.sh
-rw-r--r-- 1 ydqun root 159 Jan 23 19:17 7.campare_int.sh
-rw-r--r-- 1 ydqun root 263 Jan 23 19:24 8.campare.str.sh
-rwxr--r-- 1 ydqun root 33 Jan 23 18:59 test.sh
这里输出的第一行为查询目录的所有文件所占的block的存储大小,每一个块的大小为4k(4096bytes),total 40表示该目录下所有文件所占的块的存储大小为40k,这里特别注意,因为该目录下有10个文件,即使每个文件的大小小于4k,也占用一个block,所以一共有10block,共40k的大小。
接下来,就是以长列表形式输出文件的七个详细属性的字段,分别为文件权限属性,文件硬链接数,文件所有者,文件所属用户组,文件大小,文件修改时间和文件名称,如图所示
上图只是一个总结,具体每一个字段,我们详细讲解。
文件类型与文件权限
第一个字段由10个字符组成,主要包含两部分文件属性信息,为文件类型和文件权限,其中第一个字符表示文件类型,具体对应关系如下:
“-”表示普通文件;
“d”表示目录;
“l”表示链接文件;
“p”表示管理文件;
“b”表示块设备文件;
“c”表示字符设备文件;
“s”表示套接字文件
接着剩下的九个字符,每三个表示一组,分别表示文件所有者,文件所属组,其他用户对该文件拥有的读(r),写(w)和可执行(x)三个基本权限,例如对于cowsay这个文件,文件的所有者root用户拥有该文件的可读可写可执行权限,另外,我们可以用八进制数值来表示一个权限值,因为每一组有三个字符,占三位,我们可以用位数对应的八进制数值来表示权限值,所以我们又可以说root对文件cowsay拥有的权限为7。类似的,我们也可以推导出文件所属组的用户对该文件可读可执行,其他用户对该文件可读可执行。
这里,我们需要解释一下何为可读,可写,可执行,这里主要分为目录文件和非目录文件两个部分
对于目录而言:
1.读权限允许用户可以读取目录中的文件名,但不能进入该目录,也不能查看到该目录下个文件的属性。
2.写权限允许用户修改目录,例如创建、移动、复制和删除
3.执行权限允许用户进入该目录,或者搜索该目录
对于非目录文件:
1.读权限允许用户可以读取该文件的内容或者查看该文件的属性
2.写权限允许用户可以修改该文件的属性(例如修改内容等)
3.可执行权限主要是针对二进制可执行文件或者某些脚本文件而言,拥有可执行文件意味着用户可以去执行这两种文件
文件硬链接数
介绍硬链接数前,我们先介绍一下链接。
链接文件主要是Linux文件系统提供的一种可以通过多个文件来访问文件的手段。
Linux中有两种链接文件:硬链接(hard link)和软连接(soft link),我们可以通过ln [-s] 命令来创建链接文件,其中-s是常用命令权限,加上-s表示创建一个软连接文件,不加默认创建一个硬链接文件,至于软硬链接的区别,这里先不细究。
需要注意的是,ls -l列出来的第二个字段表示的是硬链接数,而不是软链接数或者软硬链接数之和。这里我们测试一下。
ydqun@VM-0-9-ubuntu /tmp % ls -l 1.txt
-rw-rw-r-- 1 ydqun ydqun 3567 Jan 25 21:51 1.txt
ydqun@VM-0-9-ubuntu /tmp % ln 1.txt 1.txt.hard
ydqun@VM-0-9-ubuntu /tmp % ls -l 1.txt
-rw-rw-r-- 2 ydqun ydqun 3567 Jan 25 21:51 1.txt
ydqun@VM-0-9-ubuntu /tmp % ln -s 1.txt 1.txt.soft
ydqun@VM-0-9-ubuntu /tmp % ls -l 1.txt
-rw-rw-r-- 2 ydqun ydqun 3567 Jan 25 21:51 1.txt
&emsp由上述例子可验证,确实是硬连接数。
文件所有者和文件所属组
&emsp第三和第四个字段,分别表示文件所有者(user)和文件所属组(group),我们可以通过chown去修改文件所有者和文件所属组,当然我们一般用chgrp来修改文件所属组更为容易理解。
文件大小
&emsp第五个字段表示文件大小,单位为字节,这里有一个比较需要掌握的知识点,就是Linux文件系统有一个叫block的概念,一个block为4096个字节(4k),一般文件存放在文件系统中是以block为单位,不足4096个字节也归为一个block。这里简单提一下。
文件修改时间(modify time)
文件名称
&emsp没啥好说,就是文件的名称。