解析Linux特殊文件
如果您有Dos和Windows,就大概知道系存在若型的文件,如系文件、只文件、含文件等。在Linux/Unix下,文件型比Dos/Windows系多和。本文以RedHat Linux例,旨在使者Linux下的文件型有更多的了解。文中的多容,其他行版的Linux以及Aix、Solaris、Freebsd等操作系也同正。 Linux下可以用ls Cl 命令判文件型,如上 所示。可以依第一列中的10字符判。?
•?
-rw-r—r—指明了1.txt文件是一普通文件,1.txt和myprog04文件都是普通文件。以”-“的都是普通文件,而以”d”的是目文件。?
•?
brw-rw---- 指明了/dev/sda1是一(Block Device)文件。以”b”的文件都是文件。•?
•?
crw-rw----指明了/dev/lp0是一字符(Chartacter Device)文件,以”c”的文件都是字符文件。?
•?
srwxrwxrwx 指明了/var/lib/mysql/mysql.sock是一socket文件。以””的文件都是socket文件。?
•?
prwxr—r--指明了了mypipe 是一管道文件。管道文件的一性是”p”。?
•?
lrwxrwxrwx 指明了softlinKOF1.txt 是一接文件(或符接文件),文件指向了1.txt。以”l”的文件是接文件。?
•?
-rw-r—r—的hard_link_of_1.txt看上去是普通文件,但它上是一硬接文件。?
•?
-rwsr-xr-x指明了myprog01是一setUid的可行文件,是根第四字符”s”判的。?
•?
-rwxr-sr-x指明了myprog03是一setGid的可行文件,是根第七字符中的”s”判的。?
•?
-rwsr-sr-x指明了myprog02是一setUid加setGid的可行文件,是根第四和第七字符中的”s”判的。?
•?
drwxrwxrwt 中的第一”d”字指明了tmp文件是一目,最後一字符”t”指明了目被置了粘著位。 一、文件?
Linux下的/dev 目中有大量的文件。主要是文件和字符文件。?
文件?
在去,在添加新磁後,往往需要手增加文件。在通常我不需要手增加文件,行一下service kudzu start ,系就自您配置相的。的主要特是可以,而最常的就是磁,如/dev/hda1 、/dev/sda2、/dev/fd0等。?
字符文件?
同一,我一般都可以用service kudzu start命令自增加、除或修改字符。最常的字符是打印和端,他可以接受字符流。?
/dev/null是一非常有用的字符文件,送入的所有西都被忽略。如果任何程序的出果重定向到/dev/null,看不到任何出信息。甚至於,您可以某一用的shell指向/dev/null 以禁止其登。?
管道文件?
管道文件有候也被叫做FIFO文件(FIFO是先先出的意思),字面上理解,管道文件就是一流入,另一流出。通常我在其中做一些工作,以到我“吃的是草,出的是奶”的目的,管道文件也有其妙用。?
以前,Unix系文件的最大用量用2GB的限制,然在新版本的Linux、Solaris、FreeBSD等不再有此限制,但理大文件的需求仍然存在,假您想用像(dd命令)的方式份一容量20GB分的分,就生一20GB的文件,根您磁的使用,文件在後可能只有MB到GB,我可以建立一管道文件自程。?
[root@linux236 root]# mknod mypipe p?
[root@linux236 root]# ls -l mypipe?
prw-r--r-- 1 root root 0 Aug 5 23:27 mypipe?
[root@linux236 root]#?
在里,我建立了一叫mypipe的管道文件,用ls -l 命令可以看到它的性是prw-r--r--,用下面的合命令像和:?
[root@linux236 root]# compress <?
mypipe >?
sda6.img.Z &?
[root@linux236 root]# dd if=/dev/sda6 of=mypipe?
[root@linux236 root]# ls sda6.img.Z?
sda6.img.Z?
第一命令使得mypipe管道中流出的文件被sda.img.Z文件,注意命令的尾必使用"&"符。第二命令/dev/sda6分中的料道入管道文件mypipe,句,/dev/sda6分中的入管道,而文件sda6.img.Z文件管道中流出。?
在出Oracle、DB2等大型等常生成很大的文件,熟的管理往往通管道行的方式,於Oracle,我可以使用下的合命令: ,就Oracle出的容直接成eXPdat.dmp.Z文件。?
compress <?
mypipe >?
expdat.dmp.Z &?
exp userid=system file=mypipe owner=scott?
第二章 接文件?
接文件有似於Windows 的所快捷方式,但不完全一。接有方式,接和硬接。?
接文件?
接又叫符接,文件包含了另一文件的路名。可以是任意文件或目,可以接不同文件系的文件。接文件甚至可以接不存在的文件,就生一般之""的(或曰“象"),接文件甚至可以循接自己。似於程言中的。?
[yaoyao@linux236 yaoyao]$ ls -l?
total 0?
lrwxrwxrwx 1 yaoyao yaoyao
5 Aug 6 17:39 1.txt ->?
3.txt?
lrwxrwxrwx 1 yaoyao yaoyao
5 Aug 6 17:38 2.txt ->?
1.txt?
lrwxrwxrwx 1 yaoyao yaoyao
5 Aug 6 17:39 3.txt ->?
2.txt?
上面的三文件形成了一,上有任何作用。系管理避免系出或循接。?
用ln -s 命令可以生成一接,如下:?
[root@linux236 test]# ln -s source_file softlink_file?
在符文件行或操作的候,系自把操作源文件的操作,但除接文件,系除接文件,而不除源文件本身。?
硬接文件?
info ln 命令告您,硬接是已存在文件的另一名字(A "hard link" is another name for an existing file),多少有些令人困惑。硬接的命令是?
ln -d existfile newfile?
硬接文件有限制?
1、不允目建硬接;?
2、只有在同一文件系中的文件之才能建接。?
硬接文件行和除操作候,果和接相同。但如果我除硬接文件的源文件,硬接文件仍然存在,而且保留了有的容。,系就“忘”了它曾是硬接文件。而把他成一普通文件。 三、setUid、setGid文件和粘著位的目文件?
在Linux/Unix下,有一可行文件被setUid,使得任意使用者在行文件,都定了文件有者的限。就好像文件了一把尚方一,setUid文件通常用提升使用者的限.最有代表性的su命令.普通用可以可以行命令,使自己升root。setUid命令的用法是:?
chmod 4755 your_program?
setGid 文件和setUid文件非常似,它使得使得任意使用者在行文件,都定了文件所有的限.setGid的文件非常少用,通常都是即setUid又setGid。不和您猜想的可能有不同。setUid+setGid通常不是用提升限的,而是了定某特殊用及其的特殊限,例如qmail 的外件vpopmail,就使用了一setUid+setGid的程序vchkpw校用名和密。道理和Apache常常以nobody用行一。其目的是了更加安全。?
setGid 命令的用法?
chmod 2755 your_program?
通常使用命令?
chmod 6755 yourprogram?
使得某可行程序同setUid和setGid?
全能的root用然可以任意setUid和setGid。但尚方不能用假旨,普通用只能於自己的文件配置setUid或setGid。由於setUid或setGid文件使普通用提升限,慎的系管理通常留意系中有setUid或setGid文件的化。少安全患。?
在Linux下,/tmp是一存放文件的目,要求是所有用可。但每用都只能除自己有的文件。情下,就可以把目加一粘著位。?
[root@yaoyao /]# ls -l |grep tmp?
drwsrwsrwt 9 root root 4096 8月7 10:50 tmp?
注意第是字符"t",它代表了目被置了粘著位。?
我自行建立一abc的目,使之具有和/tmp相同的特?
chmod 777 abc?
chmod +t abc?
上述的命令合等同於下的一命令:?
chmod 1777 abc?
用ls Cl 看abc 目的性如下:?
[root@yaoyao test]# ls -l?
用量 4?
drwsrwsrwt 2 root root 4096 8月 7 11:32 abc?
和/tmp目相同的需求往往在FTP服器的upload 目中也存在。可以用相同的方式理。 四、socket 文件?
socket文件似於管道,但它是在上面工作的。您到算就是靠它做理的。您可能“Winsock”,那是 Windows 的套接口。我在里不深入有套接口,因如果您不程序,您不用到它,但如果您看到您系里有文件型是s,您知道它是什就行了。?
比如mysql 行的候通常生一socket文件。?
[root@yaoyao tmp]# ls -l /tmp/mysql.sock?
srwxrwxrwx 1 mysql mysql 08月 7 10:03 mysql.sock?
/tmp目下有一些socket文件,多半是行Xwindows的候生的。?
五、疑症--除不掉的文件?
“什有些文件以的("-")做文件名,如何都除不掉,到底什?",您可能您桌的新手的叫喊,希望同的事情不生在您的身上,非常容易解,您只要用路的方法就可以把他除了,假定一文件名"-abc",您可以用:?
rm ./-abc 或者?
rm /home/yaoyao/-abc?
命令其松除,另外您也可以用相同的方式用vi或者其他工具他行修改。?
另一些文件看上去可能一切正常,但您除的候,居然也,就象下一:?
[root@linux236 root]# ls -l 1.txt?
-rw-r--r-- 1 root root 0 Aug 5 23:00 1.txt?
[root@linux236 root]# rm -rf 1.txt?
rm: cannot unlink `1.txt': Operation not permitted 您是全能root用,居然系告您操作不允,是Linux了?然不是,如果您用lsattr命令,就有了答案。?
[root@linux236 root]# lsattr?
---i---------- ./1.txt?
-------------- ./weiqi.ldif?
-------------- ./qi.schema?
秘密於暴露了,在lsattr命令下,1.txt文件有一"i"的性,所以才不可以除。您在可以用下的一系列命令:?
[root@linux236 root]# lsattr 1.txt?
---i---------- 1.txt?
[root@linux236 root]# chattr -i 1.txt?
[root@linux236 root]# rm -rf 1.txt?
[root@linux236 root]#?
成功了,性用保重要的文件不被除,通常的情下,懂得用命令的通常系管理有能力判文件是否可以被除。 如果您想一文件多加保,可以使用下的命令:?
chattr +i filename?
命令,一,想要除文件就要多一步。同,的文件也是不可以和修改的。只有root用才能使用chattr命令。此命令可以在Linux ext2或ext3系上使用。?
似於Dos和Windows文件系,不能意除的文件多半都有其道理,即使您知道如何除,都三思而後行。?
?
Linux/Unix系管理是的工作,掌握和理解Linux/Unix文件型是必的基之一。Linux/Unix有捷,必需通大量的和努力。