解析Linux特殊文件( 二 )


在导出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 yaoyao5 Aug; 6 17:39 1.txt -> 3.txt
lrwxrwxrwx 1 yaoyao yaoyao5 Aug; 6 17:38 2.txt -> 1.txt
lrwxrwxrwx 1 yaoyao yaoyao5 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是一个存放临时文件的目录,要求是对所有用户可写 。但每个用户都只能删除自己拥有的文件 。这种情况下,就可以把目录加一个粘着位 。

推荐阅读