1、文件类型
Linux支持长文件名(前面在学文件系统的时候就了解了ext2支256个字节的长文件名),不论是文件名还是目录名,最长可以达到256个字节。Linux的文件名中不能含有空格和一些对shell来说有特殊含义的字符,如:
! @ # $ % ~ & * ( ) [ ] { } ' " / / | ; < >> >> >
Linux的文件和命令均要区分大小写。
Linux的文件类型大致可分为普通文件、可执行文件、链接文件和设备文件。在Linux中,若文件名以"."开头,则该文件就成为隐藏文件,需要使用Ls -a命令才能查看到。
在Linux中,文件是否是可执行文件,不是由扩展名来决定,而是由文件的属性来决定,与DOS和Windows系统采用扩展名来标识可执行文件的做法是不相同的。
链势头文伯类似于Windows系统的快捷键文件。有时需要在多个不同的目录中,都需要存放某一个文件,为节省磁盘空间,可在某一个目录中存放该文件,然后在其它也需要该文件的目录,创建一个指向该真实文件的一个符号链接文件即可。访问该符号链接文件,实质也就是访问它所链接到的原始文件。
在文本控制台下使用ls或ll命令显示时,普通文件显示为白色,在图形界面中的仿真终端中,普通文件显示为黑色(背景为白色),目录显示为蓝色,可执行文件显示为绿色,链接文件显示为青色,通过颜色,就可以很快区分文件的类型。
2、查看文件类型和信息详解。
使用ls -l 或ll命令,可列出文件和目录的详细信息。其显示格式及各列的含义如下所示。为便于详解,以下所列的文件来源于不同目录,此处将其汇合在了一起。
lrwxrwxrwx | 1 | root | root | 11 | jul 2 10:18 | init.d->rc.d/init.d |
drwxr-xr-x | 3 | root | root | 4096 | jul 2 10:21 | PEMCIA |
drwxr-xr-x | 2 | root | root | 4096 | jul 2 10:42 | vsftpd |
-rw-r--r-- | 1 | root | root | 26940 | Feb 25 2003 | php.ini |
-rwxr-xr-x | 1 | root | root | 456108 | Feb 12 2003 | vi |
lrwxlwxrwx | 1 | root | root | 2 | Jul 2 10:20 | view->vi |
文件属性 | 文件数 | 拥有者 | 所属组 | 文件大小 | 建档月份 日 年或时间 | 文件名 |
文件和目录的详细信息分为7列显示,其中第6列用于显示文档创建的日期或时间,下面分别作一个简单介绍:
(1)第1列显示文件属性。文件属性占用10个字节,由3组权限属性和一个文件类型标识组成,其构成如下:
标识符 | r w x | r w x | r w x |
文件拥有者对该文件的权限 | 与拥有者属于同一组的用户对该文件的权限 | 其它用户对该文件的权限 |
在Linux中,用户对文件的操作权限分为可读、可写、可执行三种,分别用r、w、x表示。若用户无某个权限,则在相应权限位置用"-"代表,表示无此权限。
若某文件具有x属性,则该文件就可执行,属于可执行文件。具有x属性的文件一般是二进制程序文件或可执行的脚本文件。二进制可执行程序是真正包含可执行代码的程序文件上,可执行脚本文件本身仍是文本文件,但文件中包含有相应的脚本命令,它相当于Dos系统下的.bat批处理文件。
对于目录,若拥有可执行权限,则表示允许打开该目录中的文件,并且可用cd命令进入该目录。
类型标识用于说明该文件的类型是普通文件、链接文件还是目录。对于普通文件,第一个类型标识处显示为"-",若是链接文件,则该位置的标识为l(L的小写);若是目录,则该位置的标识为d。
比如上面的vi文件,其文件属性为-rwxr-xr-x,其第1个标识位为-,说明是一个文件,第1组权限为rwx,说明该文件的拥有者对该文件具有可读、可写和执行权限;第2组权限为r-x,则说明与文件拥有者属同一组的用户,对该文件具有读和执行权限,但不能对该文件进行写操作;第3组权限为r-x,说明其它用户对该文件具有读和执行的权限,无写权限。其它用户指文件拥有者和拥有者所属的组以外的用户。
另外,有一些程序命令文件的属性的执行部分不是x,而是s,这表示执行这个程序的使用者,临时可获得与该文件的拥有者一样的权力来运行该程序。这种情况,一般出现在系统管理类的命令程序中,如/bin目录下ping/su/mount和umount,该类文件在显示时,其背景是红色显示的。
(2)第2列表示文件个数,对于文件值为1,若为目录,则表示该目录下的文件数。
(3)第3列表示该文件或目录的拥有者。
(4)第4列表示该文件所属的组。
(5)第5列表示文件的大小。默认用B为单位,空目录一般为1024B
(6)第6列表示文件创建的日期和时间。对于目录和链接文件,显示的是"月 日 时间",对于普通文件,显示的是“月 日 年”
(7)第7列表示文件名,根据文件类型的不同,将显示成不同的颜色。
3、修改文件的属性
对于文件属性的修改包括修改文件的拥有者和修改用户对文件的权限两个方面。
(1)修改文件或目录的拥有者
文件或目录的创建者,一般是该文件或目录的拥有者(所有者或称属主),拥有地文件具有特别的使用权。要据需要,文件或目录的所属关系是可以更改的,所有者或root用户可以将一个文件或目录的所有权转让给其它用户,使其他用户成为该文件或目录的拥有者。
在Linux中,使用chown命令可改变文件或目录的所有者和所属的用户组,利用参数-R,可递归设置指定目录下的全部文件(包括子目录和子目录中的文件)的所属关系;chgrp命令只能更改指定文件或目录所属的用户组。其命用法为:
chown [-R] 新所有者.新用户组 要改变的文件名或目录
chgrp 新用户组 要改变所属用户组的目录或文件
具体用户可以用chown -help/chgrp -help了解.
(2)改变文件的权限
文件权限是与用户账户和用户组紧密联系在一直的,在Linux中,可使用chmod命令来重新设置或修改文件或目录的权限,但只有文件或目录的拥有者或root用户才有此更改权。
A、权限的表示方法
权限除了可用r、w、x来表示外,也可用一个3位的数字表示,比如644,其百位上的数代表拥有者的权限,十位上代表拥有者所属的组中的用户的权限,个位上的数代表其它用户对该文件的权限。这种采用数字来表示权限的方法,称为绝对权限表示法。
由于用户的权限是用rwx来表示的,没有的权限对应的位置上"-"表示,因此可用一个3位遁形进制数来表示用户的权限,有权限的位置用1表示,没有权限的位置用0表示,这样就会形成一个3位的二进制数编码,然后将该二进制数转换成对应的十进制数,这样就得到一个0~7的数,从而就可实现用十进制数来表示用户对文件的权限。
比如某一个文件的权限为: rw- r-- r--
若用二进制数表示,则为: 110 100 100
将每部分转换成对应的十进制,则为: 6 4 4
恩此,该文件的权限(rw-r--r--)用数字来表示,则为644
rwx表示的权限与用数字表示的权限对照如下表所示。
rwx表示的权限 | 二进制表示 | 权限的十进制数表示 | 权限含 义 |
--- | 000 | 0 | 无任何权限 |
--x | 001 | 1 | 可执行 |
-w- | 010 | 2 | 可写 |
-wx | 011 | 3 | 可写和可执行 |
r-- | 100 | 4 | 可读 |
r-x | 101 | 5 | 可读和可执行 |
rw- | 110 | 6 | 可读和可写 |
rwx | 111 | 7 | 可读可写和可执行 |
文件的权限除了r,w和x外,还有一种称为s的权限,具有s权限的文件一般是可执行文件,具有该权限的用户在执行该文件时,根据需要可获得与root用户相同的权限。
s权限也可用数字来表达。由于文件的权限包括文件的所有者、所属的用户组和其它用户三个方面,因些可用一个三位的二进帛数来表示这三类用户对s权限的拥有情况,有s权限的用1表示,没有的用0表示,如表下表所示。
所有者有s权限 | 所属组有s权限 | 其他用户有s权限 | s权限对应的十进制数值 |
0 | 0 | 0 | 0 |
1 | 0 | 0 | 4 |
1 | 1 | 0 | 6 |
1 | 1 | 1 | 7 |
要表示各用户对s权限的拥有情况,可在原有的三位十进制数的前面,再增加一个数字来表示s权限,比如4755中的4,就用来表达s权限,表示文件 的所有者拥有s权限,所属的用户组和其它用户没有s权限。755中的7代表文件的所有者真有读写和执行权限,由于此时它同时拥有了s权限,因此在最后显示时,其权限将显示为rws;755中间的5代表所属的用户组的权限是具有读和执行权限,最后的5代表其它用户的权限也是读和执行权限。
B、改变文件 或目录的权限
由于权限有两种表示法,因些改变权限的chmod命令的具体用法也有两种。
chomd用法(可加-help了解详情):
chmod [-R] 绝对权限值 要改变的文件或目录名
参数-R代表递归设置指定目录下的所有文件的权限。
比如:myfile.txt文件目前的权限为rw-r--r--,若要更改为rw-rw-r--,其实现的命令为:
[root@rh9 root]# chmod 644 /home/liyang/myfile.txt
若要设置s权限则实现命令如:
[root@rh9 root]# chmod 4755 /home/liyang/myfile.txt
若通过r、w、x、s表示方式来更改权限,则只需在chmod命令中表达出权限需要改变的部分即可,该方法可视为是相对修改法。此时用u表示修改文件或目录的拥有者的权限,用g表示修改文件拥有者所属的用户组的权限,用o表示修改其他用户的权限。若要增加某项权限,则用"+"表示,若要去掉某项权限,则用"-"表示,若只赋予该项权限,则用"="表示。
如,假设/home/liyang/myfile.txt文件的权限为rw-rw-r--,若要修改为rw-r-----,则更改命令为:
chmod g-w /home/liyang/myfile.txt
chmod o-r /home/liyang/myfile.txt
ll /home/liyang/myfile.txt
若要给其他用户增加读的权限,则实现命令为:
chmod o+r /home/liyang/myfile.txt
若要同时去掉用户组和其它用户对该文件的读权限,则实现命令为:
chmod go-r /home/liyang/myfile.txt
若文件拥有者、用户组和其它用户都只赋予读的权限,则实现信命令为:
chmod ugo=r /home/liyang/myfile.txt
若要为文件的拥有者和所属的组增加s权限,则设置命令为:
chmod ug+s /home/liyang/myfile.txt