- Linux网络管理与配置(第2版)
- 姚越
- 3786字
- 2021-03-31 09:54:51
3.3 文件类型
Linux中常见的文件类型有普通文件、目录、字符设备文件、块设备文件和符号链接文件等。Linux文件和命令均要区分大小写,并且Linux支持长文件名,不论是文件名还是目录名,最长可以达到256个字符。Windows根据文件的扩展名就能判断文件的类型,但在Linux中一个文件是否能被执行和扩展名没有太大的关系,主要与文件的属性有关。但用户了解Linux文件的扩展名还是有必要的,特别是自己创建的一些文件,最好还是加扩展名,这样做的目的仅仅是为了用户在应用时方便。
现在的Linux桌面环境和Windows一样智能化,文件的类型是和相应的程序关联的。在打开某个文件时,系统会自动判断用哪个应用程序打开。从这方面来看,Linux桌面环境和Windows桌面没有太大的区别。
在Linux系统中,带有扩展名的文件只能代表程序的关联,并不能说明文件是可以执行的,从这方面来说,Linux的扩展名没有太大的意义。
在文字界面下使用ls或ll命令显示时,普通文件显示为白色,在图形界面仿真终端中,普通文件显示为黑色,目录为蓝色,可执行文件显示为绿色,链接文件显示为青色。通过颜色,也可很快区分文件的类型。
Linux文件类型和Linux文件的文件名所代表的意义是两个不同的。通过一般应用程序创建的文件,如file.txt、file.tar.gz,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量时,大多是常规文件(也称为普通文件)。
3.3.1 Linux文件属性
Linux文件或目录的属性主要包括文件或目录的结点、种类、权限模式、链接数量、所归属的用户和用户组、最近访问或修改的时间等内容。使用ll命令或ls -lsh可以查看文件的属性。例如:
总计104 KB。
解释如下。
第一字段:inode。
第二字段:文件类型和权限。
第三字段:硬链接个数。
第四字段:文件属主。
第五字段:文件属组。
第六字段:文件或目录的大小。
第七字段和第八字段:最后访问或修改的时间。
第九字段:文件名或目录名。
以lsfile.sh为例:
inode的值:2408949。
文件类型:文件类型是-,表示这是一个普通文件。
文件权限:文件权限是rwxr-xr-x,表示文件属主可读、可写、可执行,文件所归属的用户组可读可执行,其他用户可读可执行。
硬链接个数:lsfile.sh这个文件没有硬链接;因为数值是1,就是它本身。
文件属主:也就是这个文件归于哪个用户,它归于root,也就是第一个root。
文件属组:也就是说,这个文件归属于哪个用户组,在这里是root用户组。
文件大小:文件大小是7个字节。
访问或修改时间:这里的时间是最后访问的时间,最后访问时间和文件被修改或创建的时间,有时并不是一致的。
文件名或目录名:再看lsfile.sh,其中有这样一个字段-rwxr-xr-x。这个字段包含两个信息:一是文件类型;二是文件的权限。文件类型就是第一个字符,lsfile.sh的文件所归属的文件类型是“-”。同理,mkuml-2004.07.17对应的文件类型和权限是drwxr-xr-x,它所归属的文件类型应该是“d”;sun001.txt文件对应的lrwxrwxrwx,sun001.txt所归属的文件种类应该是“l”。
当然,文档的属性不仅仅包括这些,这些是最常用的一些属性。
(1)普通文件
第一个符号是“-”的文件在Linux中就是普通文件。这些文件一般是用一些相关的应用程序创建的,比如图像工具、文档工具、归档工具或cp工具等。这类文件的删除方式是用rm命令。
(2)目录
第一个符号是“d”的文件就是目录,目录在Linux中是一个比较特殊的文件。创建目录可以用mkdir命令或cp命令。cp可以把一个目录复制为另一个目录。目录的删除用rm或rmdir命令。
(3)字符设备文件或块设备文件
进入/dev目录,使用ls -al命令列出tty和hdc的文件属性,结果如图3-6所示。
图3-6 字符设备和块设备文件属性
可以看到/dev/tty的属性是crw-rw-rw-,注意第一个字符是“c”,这表示字符设备文件,比如调制解调器等串口设备。
可以看到/dev/hdc的属性是brw-rw----,注意第一个字符是“b”,这表示块设备文件,比如硬盘、光驱等设备。
该类型的文件用mknode命令来创建,用rm命令来删除。目前在最新的Linux发行版本中,一般不用自己创建设备文件,因为这些文件是和内核相关联的。
(4)链接文件
第一个符号是“l”的文件是链接文件,通过“ln -s源文件名”命令创建新链接文件。
3.3.2 修改文件的属性
对文件属性的修改包括修改文件的拥有者和修改用户对文件的权限两个方面。
1.文件权限
Linux文件或目录的权限是与用户和用户组联系在一起的,如图3-7所示。
图3-7 文件的权限
每个文件或目录都有一组9个权限位,每3位分为一组,它们分别是属主权限位(占3个位置)、属组权限位(占3个位置)、其他用户权限位(占3个位置)。比如rwxr-xr-x,这9个权限位来控制文件属主、属组及其他用户的权限。
对于普通文件的可读、可写及可执行权限可以如下理解。
● 可写:意味着可以修改或删除(删除或修改的权限受父目录的权限控制)。
● 可读:意味着可以查看阅读。
● 可执行:意味着文件可以运行,比如二进制文件(比如命令),或脚本(要用脚本语言解释器来解释运行)。
例如:
第一个字段-rwxr-xr-x中的第一个字符是-,表示lsfile.sh是一个普通文件;lsfile.sh的权限是rwxr-xr-x,表示lsfile.sh文件的属主root拥有rwx(可读、可写、可执行)权限,用户组root拥有r-x(可读、可写)权限,其他用户拥有r-x(可读、可写)权限。这9个权限连在一起就是rwxr-xr-x。
2.修改文件或目录权限的chmod命令
chmod命令是用来改变文件或目录权限的命令,但只有文件的属主和超级权限用户root才有这种权限。通过chmod命令来改变文件或目录的权限有两种方法:一种是通过八进制语法;另一种是通过助记语法。
【例3-5】 新建abc.txt和bnm.txt文件,通过chmod命令的两种语法来改变权限。
结果如图3-8所示。
图3-8 查看文件权限
结果如图3-9所示。
图3-9 修改后的文件权限
上面是一个演示chmod命令的两种改变权限的语法的例子,可以看到,两种方法都能达到同一目的。
3.通过chmod八进制语法来改变文件或目录的权限
前面已经说过,文件或目录的权限位总共有9个位置,文件属主、文件属组和其他用户三者的权限各占用3个位置。例如:
说明如下。
● 属主权限位:占用3个位置,3个位置的顺序是读r、写w、执行x。如果没有权限,则相应的位为-。在这个例子中,可以看到rwx,表示属主在3个权位上都有权限,也就是可读可写可执行。
● 属组权限位:占用3个位置,3个位置的顺序是读r、写w、执行x。如果没有权限,则相应的位为-。在这个例子中,可以看到r-x,在写的位置上是-,表示没有写权限,文件所归属的组对文件拥有可读可执行权限,但没有写的权限。
● 其他用户权限位:占用3个位置,3个位置的顺序是读r、写w、执行x,如果没有权限,则相应的位为-。在这个例子中,其他用户的权限位是r-x,在写的位置上是-,表示没有写权限,其他用户对文件拥有可读可执行权限,但没有写的权限。
chmod的八进制语法的数字说明:
● 属主权限的数字表达:属主的3个权限位数字相加的总和。比如上面的例子中属主的权限是rwx,也就是4+2+1,应该是7。
● 属组权限的数字表达:属组的3个权限位数字的相加的总和。比如上面的例子中的r-x,也就是4+0+1,应该是5。
● 其他用户权限的数字表达:其他用户权限位数字相加的总和。比如上面例子中是r-x,也就是4+0+1,应该是5。
操作如图3-10所示。
图3-10 修改moon.txt的权限
4.通过chmod助记语法来改变文件或目录的权限
chmod的助记语法相对简单,对文件或目录权限改变时,通过比较直观的字符形式来完成。在助记语法中,相关字母的定义如下。
用户或用户组定义:
● u代表属主。
● g代表属组。
● o代表其他用户。
● a代表属主、属组和其他用户,也就是上面3个用户(或组)的所有。
权限定义字母:
● r代表读权限。
● w代表写权限。
● x代表执行权限。
权限增减字符;
● - 代表减去相关权限。
● + 代表增加相关权限。
示例一:
示例二:
示例三:
用助记语法比较灵活,组合起来比较方便,如下所述。
● u=r+x为文件属主读和执行权限。
● ug=rwx,o=r为属主和属组添加读、写、执行权限,为其他用户设置读权限。
● a+x为文件的属主、属组和其他用户添加执行权限。
● g=u让文件的属组和属主的权限相同。
● 对于目录权限的设置,要用到-R参数。
● 和八进制方法一样,如果要让一个目录及其下的子目录和文件具有相同的属性,就可以用-R参数。例如:
5.默认权限分配的umask命令
umask命令是通过八进制数值来定义用户创建文件或目录时的默认权限。umask表示禁止权限,不过,文件和目录有点不同。
对于文件来说,umask的设置是在假定文件拥有八进制666权限的基础上进行,文件的权限就是666减去umask的掩码数值。
对于目录来说,umask的设置是在假定文件拥有八进制777权限的基础上进行,目录八进制权限777减去umask的掩码数值。
【例3-6】 设置用户创建文件和目录的默认权限为066。
6.修改文件或目录的拥有者
文件或目录的创建者,一般是该文件或目录的拥有者(所有者或称属主),拥有者对文件具有特别使用权。根据需要,文件和目录的所属关系是可以更改的,所有者或root用户可以将一个文件或目录的所有权转让给其他用户,使其他用户成为该文件或目录的拥有者或所有者。
改变文件的所属关系的命令是chown,该命令可以改变文件或目录的所有者和所属的用户组。chown命令的格式:
参数-R可递归设置指定目录下的全部文件(包括子目录和子目录中的文件)的所属关系。
改变文件属组的命令是chgrp,该命令只能更改指定文件或目录所属的用户组。chgrp命令的格式:
【例3-7】 将abc.txt文件的所有者改为user1用户。
过程如图3-11所示。
图3-11 修改abc.txt文件的所有者为user1用户
【例3-8】 将abc.txt文件所属的用户组改为student组。
过程显示如图3-12所示。
图3-12 将abc.txt文件所属的用户组改为student组
【例3-9】 将abc.txt文件的所有者改回成root,并且将其所属的用户组也改回成root。
过程显示如图3-13所示。
图3-13 修改abc.txt文件的所有者和所属的用户组
chown所接的新的属主和新的属组之间应该以“.”或“:”连接,属主和属组之一可以为空。如果属主为空,应该是“:属组”;如果属组为空,就不需要“.”或“:”了。