绝对路径与相对路径:
. 代表此层目录 .. 代表上层目录 ~ 代表自己的家目录 ~user 代表到 user 这个人的家目录 |
[root @test /root ]# mkdir [-mp] [目录名称] 参数说明: -m :设定档案的权限喔!直接设定,不需要看 umask 这个内容的脸色! -p :帮助你直接将上面的目录递归建立起来! 范例: [root @test /root]# cd tmp [root @test /tmp]# mkdir test<==建立名称为 test 的目录 [root @test /tmp]# mkdir -p test1/test2/test3/test4 <==直接建立 test2...等上层目录 [root @test /tmp]# mkdir -m 711 testqq <==建立权限为 711 的目录! [root @test /tmp]# ll test* drwxrwxr-x 2 test test 4096 Feb 6 20:47 test/ drwxrwxr-x 3 test test 4096 Feb 6 20:48 test1/ drwx--x--x 2 test test 4096 Feb 6 20:48 testqq/ |
[root @test /root ]# rmdir [-p] [目录名称] 参数说明: -p :将上层的目录也删除吧! 范例: [root @test /root]# rmdir test<==删除名称为 test 的目录 [root @test tmp]# ll drwxrwxr-x 3 test test 4096 Feb 6 20:48 test1/ [root @test tmp]# rmdir test1 rmdir: `test1': Directory not empty [root @test tmp]# rmdir -p test1/test2/test3/test4 [root @test tmp]$ ll |
[root@test root]# echo $PATH /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin |
增加环境变量:
PATH=”$PATH”:/root
档案与目录管理:
档案与目录的管理上,不外乎『显示属性』、『拷贝』、『删除档案』及『移动档案或目录』等等
ls 显示文件名称、属性等
cp 拷贝档案或目录
rm 删除档案或目录
mv 移动档案或目录
cp
语法:说明:
[root @test /root ]# cp [-drsu] [来源档] [目的档]
参数说明:
-d :在进行 copy 的时候,如果是 copy 到 link 档案,若不加任何参数,则预设情况中会将 link 到的源文件
copy 到目的地,若加 -d 时,则 link 档案可原封不动的将 link 这个快捷方式其拷贝到目的地!
-r :可以进行目录的 copy 呦!
-s :做成连结档,而不 copy 之意!与 ln 指令相同功能!
-u, --update:如果来源档比较新,或者是没有目的档,那么才会进行 copy 的动作!可用于备份的动作中!
范例:
[root @test /root]# cp .bashrc bashrc <==将 .bashrc 拷贝成 bashrc 这个档案!
[root @test /root]# cp -r /bin /tmp/bin <==这个功能就好玩啦!这是用来 copy 整个目录的参数!
[root @test /root]# cp -s .bashrc bashrc <==将 .bashrc 建立一个连结档,档名为 bashrc
[root @test /root]# cp -u /home/.bashrc .bashrc <==先检查 /home/.bashrc 是否与 .bashrc 不同,如果不同的话就开始 copy 一份!如果相同则不做任何动作!
这个指令会常用到的呦!因为我们得常常需要 copy 资料呀!所以需要了解一下喔!如果你有些很大档案的需要备份,偏偏这个档案的更新率很低,那么每次备份都需要在 copy 一份吗?看来是不需要了!你可以使用『cp -u 来源档 目的档』来备份呦!如此一来,当档案被改变过后,才会进行 copy 的动作!
rm
语法:说明:
[root @test /root ]# rm [-fir] [檔名]
参数说明:
-i :提供使用者确认(这是默认值)
-r :循环,就是一直杀掉,直到没有东西为止的意思
-f :force ,就是强力杀掉啦!
范例:
[root @test /root]# cp .bashrc bashrc<==建立一个新档案, bashrc
[root @test /root]# rm bashrc <==会显示如下的提示:
rm: remove `bashrc'?
[root @test /root]# mkdir testing
[root @test /root]# cp .bashrc testing
[root @test /root]# rmdir testing
rmdir: `testing': Directory not empty <==由于 testing 里面有 .bashrc ,所以砍不掉!
[root @test /root]# rm -rf testing <==持续删除该目录下的所有档案与目录
这是移除的指令,相当于 dos 下的 del 指令!这里要注意的是,通常在 Linux 系统下,为了怕档案被误杀,所以都已经有 -i 这个参数, -i 是指每个档案被杀掉之前都会让使用者确认一次,以预防误杀档案!而如果要连目录下的东西都一起杀掉的话,例如子目录里面还有子目录时,那就要使用 -rf 这个参数了!不过,使用『 rm -rf 』这个指令之前,请千万注意了,因为,该目录或档案『肯定』会被 root 杀掉!因为系统不会再次询问你是否要砍掉呦! 所以那是个超级严重的指令下达呦!得特别注意!不过,如果你确定该目录不要了,那么使用 rm -rf 来循环杀掉是不错的方式!
mv
语法:说明:
[root @test /root ]# mv [-u] [来源档] [目的档]
参数说明:
-u :同样的,为 update 的简写,当来源档比目的档还新的时后才会动作!
范例:
[root @test /root]# cp .bashrc bashrc
[root @test /root]# mv bashrc bashrc.old
[root @test /root]# mv bashrc bashrc2 /tmp<==将 bashrc 与 bashrc2 移动到 /tmp 这个目录下!请注意,最后一个才是最终的目标,其它的都是 SOURCE
这是搬移的意思!当你要移动档案或目录的时后,呵呵!这个指令就很重要啦!同样的,你也可以使用 -u ( update )才测试新旧档案,看看是否需要搬移啰!另外一个用途就是『变更档名!』,我们可以很轻易的使用 mv 来变更一的档案的档名呢!
basename 就是取最后一个文件名或者目录名
语法:说明:
[root @test /root ]# basename [目录]
参数说明:
范例:
[root @test /root]# basename /usr/local/etc
etc
这个指令会将后面的[目录]仅撷取出最后面的那个目录或档案,
以上面的例子来看, /usr/local/etc 不论 etc 是目录或档案,
他都会被撷取出来,因为他是最后一个出现的咚咚!
这个指令颇有点意思~他可以将一个目录或档案的最后一个咚咚秀出来!所以,未来如果你有要使用变量,并且取出最后一个数据(不论是档案还是目录),那么使用这个玩意儿就对啦! ^_^
dirname 与basename相反,取最后一个文件名或者目录名的前面部分
语法:说明:
[root @test /root ]# dirname [目录]
参数说明:
范例:
[root @test /root]# dirname /usr/local/etc
/usr/local
恰恰与 basename 相反,他仅是秀出来前面的『目录』部分喔!
这个指令恰恰与 basename 相反的啦!呵呵!很好玩吧!这部份也最常用在我们第三部分要讲的 Shell 的学习中喔!用最多的地方应该是 scripts 啦!用这两个宝贝蛋来撷取部分数据的内容!有用的很!
观看档案内容:cat, tac, more, less, head, tail, nl
最常使用的显示档案内容的指令可以说是 cat 与 more 及 less 了
如果我们要查看一个很大型的档案(好几百MB时),但是我们只需要后端的几行字而已,那么该如何是好?呵呵!用 tail 呀,此外, tac 这个指令也可以达到!
cat 由第一行开始显示档案内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
more 一页一页的显示档案内容
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
head 只看头几行
tail 只看尾巴几行
nl 显示的时候,顺道输出 行号!
od 以二进制的方式读取档案内容!
more
语法:说明:
[root @test /root ]# more [檔名]
参数说明:
范例:
[root @test /root]# more ~/.bashrc <==一页一页的显示档案内容
[root @test /]# ls -al | more <==一页一页的将 ls 的内容显示出来
more 真是个很有用的指令!我好喜欢呦!当你的档案太大的时后,那么使用 cat 将没有办法看清楚!这个时候你可以使用 more 来做动作!more 也可以用来做为管线的同时执行之用!例如你在执行 find 这个寻找的指令时,可以同时使用 |more ,则搜寻结果可以一页一页的列出呦!关于管线( pipe )的用法我们在 bash shell 的地方再来谈!
less
语法:说明:
[root @test /root ]# less [檔名]
参数说明:
范例:
[root @test /root]# less ~/.bashrc
less 的用法比起 more 又更加的有弹性,怎么说呢?在 more 的时候,我们并没有办法向前面翻,只能往后面看,但若使用了 less 时,呵呵!就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,您瞧,是不是更容易使用来观看一个档案的内容了呢!?
more 与 less 的用途与用法真的是很广啦!首先,你可以在 more 与 less 的画面中进行『搜寻』的工作!如何进行呢?我们以 less 来说明好了,如果你想要知道 /etc/man.config 这个档案里面有没有一个叫做 GER 的大写字眼,那么可以:
连结档的介绍
ln命令
如果直接用ln passwd passwd-hard 是硬链接
如果使用ln -s passwd passwd-hard 是符号链接
硬链接不能跨分区 符号链接可以
档案与目录权限
由于 Linux 还可以设定其它的系统安全属性,使用 chattr 来设定,而以 lsattr 来查看,最重要的属性就是可以设定其不可修改的特性!让连档案的拥有者都不能进行修改!这个属性可是相当重要的,尤其是在安全机制上面( security )!
chown 改变档案的拥有人
chgrp 改变档案的所属群组
chmod 改变档案的可写、可读、可执行等属性
umask 改变预设的建立档案或目录时的属性
chattr 改变档案的特殊属性
lsattr 显示档案的特殊属性!
- chown
语法:
[root @test /root ]# chown [-R] user:group [目录名称]
参数说明:
-R :循环的将该目录下的所有档案都改成 user 与 group 的名称!
范例:
[root @test /root]# mkdir /home/test/testing <==在 /home/test 这个家目录中建立一个名为 testint 的子目录
[root @test /root]# cp * /home/test/testing
[root @test /root]# chown test /home/test/testing
[root @test /root]# chown -R test:test /home/test/testing<==将该目录下的所有目录或档案均变为 test 拥有
说明 :
前一个章节才刚讲完,应该不会就这样忘记了吧?!由于 chown 的使用范围较广,所以这里再次的给他复习一下 chown 就好, chgrp 请回前一章内容观看呦!
记得档案有『 拥有人』及『 拥有群组』吧,这个 chown 就是在改变拥有者的指令。刚接触 Linux 的朋友最容易犯的一个错误在哪里呢?就是以 root 的身份 copy 一个档案(或路径)给一般使用者(假设为 test )时,忘记将该档案的所有人改成 test 了!由于复制者是 root 所以该档案也会是 root 所有!那么 test 当然也就不能修改该档案了!
在上面的例子中,『 chown test /home/test/testing 』这个指令只会将该目录变成 test 的,但是 group 仍然是 root 的呦!所以你可以使用『 chown test:test /home/test/testing 』,连使用者群组都给他改变一下啰!不过需要注意的是,这两个指令都只改变了『目录』 的所有权而已!那么在这个目录下的东西也要改变的话,该如何?!呵呵,就使用 -R 这个参数即可!
- chmod
语法:
[root @test /root ]# chmod [-R] [parameter] [目录名称]
参数说明:
-R :循环的一直将该目录的档案均改变之!
范例:
[root @test /root]# chmod 777 .bashrc
- umask
OK!那么现在我们知道如何建立或者是改变一个目录或档案的属性了,不过,您知道当你建立一个新的档案或目录时,他的预设属性会是什么吗?呵呵!那就与 umask 有关了!那么 umask 是在搞什么呢?基本上, umask 就是指定『目前使用者在建立档案或目录时候的属性默认值』,那么如何得知或设定 umask 呢?他的指定条件以底下的方式来指定:
语法:说明:
[root @test root]# umask
0022
[root@vbird test]# umask 002 <==后面接 3 个数字!
[root@vbird test]# umask
0002
查看 umask 数值为直接输入 umask 即可,而设定呢?没错!就是 umask 之后接三个数字!那么如何来指定呢?主要还是跟 Linux 的档案属性(那九个属性, r, w, x )有关的,而且是以分数的那一个关系为例的,而有底下的规则为辅:
- 若使用者建立为『档案』则预设『没有可执行 ( x ) 项目』,亦即只有 rw 这两个项目,也就是最大为 666 分
--rw-rw-rw-- 若使用者建立为『目录』,则由于 x 与是否可以进入此目录有关,因此预设为所有权限均开放,亦即为 777 分
drwxrwxrwx
那么 umask 指定的是『该默认值需要减掉的权限!』因为 r、w、x 分别是 4、2、1 分,所以啰!也就是说,当要拿掉能写的权限,就是输入 2 分,而如果要拿掉能读的权限,也就是 4 分,那么要拿掉读与写的权限,也就是 6 分,而要拿掉执行与写入的权限,也就是 3 分,这样了解吗?请问您, 5 分是什么?呵呵!就是读与执行的权限啦!如果以上面的例子来说明的话,因为 umask 为 002 ,所以 user, group 并没有被拿掉属性,不过 others 的属性被拿掉了 2 ( 也就是 w 这个属性 ),那么由于当使用者:
- 建立档案时:(-rw-rw-rw-) – (--------w-) ==> -rw-rw-r--
- 建立目录时:(drwxrwxrwx) – (--------w-) ==> drwxrwxr-x
不相信吗?你只要使用 touch test 然后看看这个 test 的档案属性,就可以知道了!那么如何看你这个使用者目前的 umask 呢?直接下达 umask 即可!实作看看先:
[root@vbird test]# umask
0002
[root@vbird test]# touch test1
[root@vbird test]# mkdir test2
[root@vbird test]# ls -l
-rw-rw-r-- 1 root root 0 Oct 22 00:00 test1
drwxrwxr-x 2 root root 4096 Oct 22 00:00 test2/
发现了什么?呵呵! Test1 的属性为 666-002 = 664 !正确吗?是的!正确!
而 test2 这个目录呢?就是 777-002 = 775 !也正确![root@vbird test]# umask 003
[root@vbird test]# touch test3
[root@vbird test]# mkdir test4
[root@vbird test]# ll
-rw-rw-r-- 1 root root 0 Oct 22 00:03 test3
drwxrwxr-- 2 root root 4096 Oct 22 00:03 test4/
嘿!属性又跟刚刚的不一样啰!仔细推敲一下为什么呦!test3 666-003 =663,这是怎么一回事?! 663 应该是 -rw-rw--wx 才对啊!怎么会是上面的属性!呵呵!这里就要特别的给他强调了!『尽量不要以数字相加减啦!』容易造成类似上面的问题!你应该要这样想(-rw-rw-rw-) - (--------wx)=-rw-rw-r--这样就对啦!了解了吗?不要用十进制的数字喔!够能力的话,用二进制来算,不晓得的话,用 rwx 来算喔! ^_^
由上面的例子您应该很轻易的就可以发现 umask 的用途!而这个 umask 可以在 /etc/bashrc 里面进行修改喔!预设的情况之下, root 的 umask 为 022 而一般使用者则为 002 ,因为可写的权限蛮严重的,因此预设都会拿掉这个权限!此外,因为 root 比较重要!所以为了安全的需求,其同群组的写入属性就被拿掉了!这东西对于安全性也有一定程度的贡献呦!
- chattr
语法:说明:
[root @test /root ]# chattr [+-=][ASacdistu] [档案或目录名称]
参数说明:
+-= :分别为 [+ 增加] [- 减少] [= 设定] 属性的意思
A :当设定了 A 这个属性时,这个档案(或目录)的存取时间 atime (access) 将不可被修改,
可避免例如手提式计算机容易有磁盘 I/O 错误的情况发生!
S :这个功能有点类似 sync 的功能!就是会将数据同步写入磁盘当中!可以有效的避免数据流失!
a :当设定 a 之后,这个档案将只能增加数据,而不能删除,只有 root 才能设定这个属性。
c :这个属性设定之后,将会自动的将此档案『压缩』,在读取的时候将会自动解压缩出来!
但是在储存的时候,将会先进行压缩之后再储存(看来对于大档案似乎蛮有用的!)
d :当 dump (备份)程序被执行的时候,设定 d 属性将可使该档案(或目录)具有 dump 功效!
i :这个 i 可就很厉害了!他可以让一个档案『不能被删除、改名、设定连结也无法写入或新增数据!』
对于系统安全性有相当大的帮助!
j :当使用 ext3 这个档案系统格式时,设定 j 属性将会使档案在写入时先记录在 journal 中!
但是当 filesystem 设定参数为 data=journalled 时,由于已经设定了日志了,所以这个属性无效!
s :当档案设定了 s 参数时,他将会被完全的移除出这个硬盘空间。
u :与 s 相反的,当使用 u 来设定档案时,则数据内容其实还存在磁盘中,可以使用来 undeletion.
范例:
[root @test /root]# chattr +i /etc/shadow<==呵呵!如此则无法更动这个档案啰!
[root @test /root]# chattr -i /etc/shadow <==解除该属性!
这这个指令是重要的,尤其是在系统的安全性上面!由于这些属性是隐藏的性质,所以需要以 lsattr 才能看到该属性呦!其中,个人认为最重要的当属 +i 这个属性了,因为他可以让一个档案无法被更动,对于需要强烈的系统安全的人来说,真是相当的重要的!里头还有相当多的属性是需要 root 才能设定的呢!此外,如果是 log file 这种的登录档,就更需要 +a 这个可以增加,但不会被杀掉的参数了!怎样?很棒吧!未来提到登录档的认知时,我们再来聊一聊如何设定他吧!
- lsattr
语法:说明:
[root @test /root ]# lsattr [-aR]
参数说明:
-a :将隐藏文件的属性也秀出来;
-R :连同子目录的数据也一并列出来!
范例:
[root @test /root]# chattr +i .bash_logout
[root @test /root]# lsattr -a
-------------- ./.
-------------- ./..
---i---------- ./.bash_logout
-------------- ./.bash_profile
-------------- ./.bashrc
-------------- ./.emacs
-------------- ./.screenrc
这两个指令在使用上必须要特别小心,例如:某天你心情好,突然将 /etc/shadow 这个重要的密码记录档案给他设定成为具有 i 的属性,那么过了若干天之后,你突然要新增使用者,却一直无法新增!别怀疑,赶快去将 i 的属性拿掉吧!
搜寻档案或目录
档案的搜寻可就厉害了!因为我们常常需要知道那个档案放在哪里,所以来谈一谈怎么搜寻吧!在 Linux 底下也有相当优异的搜寻系统呦!通常 find 不很常用的!因为速度慢之外,也很操硬盘!通常我们都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,才以 find 来搜寻呦!为什么呢?因为 whereis 与 locate 是利用数据库来搜寻数据,所以相当的快速,而且并没有实际的搜寻硬盘,比较省时间啦!
which 查看可执行档案的位置
whereis 查看档案的位置
locate 配合数据库查看档案位置
find 实际搜寻硬盘去查询文件名称
which
语法:说明:
[root @test /root ]# which [文件名称]
参数说明:
范例:
[root @test /root]# which passwd
/usr/bin/passwd
which 的基本功能是『藉由 PATH 这个环境变量的内容,去该路径内寻找可执行文件』,所以基本的功能在于『寻找执行档』啰!
whereis
语法:说明:
[root @test /root ]# whereis [-bmsu] [目录名称]
参数说明:
-b :只找 binary 的档案
-m :只找在说明文件 manual 路径下的档案
-s :只找 source 来源档案
-u :没有说明档的档案!
范例:
[root @test /root]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.bz2
将 passwd 相关字眼的档案或目录都列出来![root @test /root]# whereis -b passwd
passwd: /usr/bin/passwd /etc/passwd
仅列出binary 档案![root @test /root]# whereis -m passwd
passwd: /usr/share/man/man1/passwd.1.bz2
仅搜寻 man page 所在的目录!
如果使用 find 太麻烦,而且时间花用的很大!(因为如果你的硬盘比较老旧的话,嘿嘿!有的等的!)这个时候 whereis 就相当的好用了!另外, whereis 可以加入参数来找寻相关的资料,例如如果你是要找可执行档( binary )那么加上 -b 就可以啦!例如上面的范例针对 passwd 这支程序来说明!如果不加任何参数的话,那么就将所有的数据列出来啰!那么 whereis 到底是使用什么咚咚呢?为何搜寻的速度会比 find 快这么多?!其实那也没有什么!这是因为 Linux 系统会将系统内的所有档案都记录在一个数据库档案里面,而当使用 whereis 或者是底下要说的 locate 时,都会以此数据库档案的内容为准,因此,有的时后你还会发现使用这两个执行档时,会找到已经被杀掉的档案!这就是因为他是一个『数据库』档案呀!另外,基本上 Linux 每天会针对 Linux 主机进行 updatedb (就是那一个数据库档案啰!)的动作,你可以在 /etc/cron.weekly/slocate.cron 这个档案找到相关的机制呦!当然,也可以直接使用 /usr/bin/updatedb 来更新数据库档案呢!
locate
语法:说明:
[root @test /root ]# locate [目录名称]
参数说明:
范例:
[root @test /root]# locate root
……一大堆跟 root 有关字眼的档案都出来了 @_@[root @test /root]# updatedb <==立刻更新数据库
locate 的使用方式就更简单了!直接键入你要找的档名即可!但是,这个东西还是有使用上的限制呦!为什么呢?您会发现使用 locate 来寻找数据的时候特别的快,这是因为 locate 寻找的数据是由『已建立的数据库 /var/lib/slocate』里面的数据所搜寻到的,所以不用直接在去硬盘当中存取数据,呵呵!当然是很快速啰!那么有什么限制呢?就是因为他是经由数据库来搜寻的,而数据库的建立预设是在每个礼拜执行一次,所以当您新建立起来的档案,却还在数据库更新之前搜寻该档案,那么 locate 会告诉您『找不到!』呵呵!因为必须要更新数据库呀!
那么我到底要建立哪些数据库呢?是否全部都要建立?似乎不需要,这个时候,你可以自己选择需要建立档案数据库的目录呢!在 /etc/updatedb.conf 这个内即可设定了!
[root @test root]# more /etc/updatedb.conf
## Linux-Mandrake configuration.
# 由何处开始查询数据,当然是由根目录啦!所以填入 / 即可
FROM="/"# 哪些目录不想要建立档案搜寻数据,呵呵!就是那些不要的数据嘛!
# 忘记的话,记得回上一章去看看内容,就知道为何如此设定了!
PRUNEPATHS="/proc,/tmp,/var/tmp,/usr/tmp,/net,/afs,/mnt"# 安全等级
# 0 代表关闭安全检验,速度上面较快速,但较不安全;
# 1 启动安全简易,这是系统的默认值;
SECURITY="1"# 查询的时候是否要由屏幕输出?当然不要,否则多麻烦?
VERBOSE="NO"# 数据库所在处!这是默认值,不要随意移动,否则会找不到!
DATABASE="/var/lib/slocate/slocate.db"# 哪些档案系统我们也不搜寻建立?就是光盘啦、非 Linux 的档案格式啦,
# 我们都不要进行搜寻信息的建立啦!
PRUNEFS="nfs,smbfs,ncpfs,proc,devpts,supermount,vfat,iso9660,udf,usbdevfs,devfs"
find
语法:说明:
[root @test /root ]# find [路径] [参数]
参数说明:
1. 时间:
-atime n :在 n*24 小时内被 access 即存取过的档案列出来!
-ctime n :在 n*24 小时内被 changed 即改变、新增的档案或目录印出
-mtime n :在 n*24 小时内被 modified 即修改过的档案印出
-newer file :比 file 还要新的档案就列出来!
2. 使用名称:
-gid n :寻找 群组 ID 为 n 的档案
-group name :寻找群组名称为 name 的档案
-uid n :寻找拥有者 ID 为 n 的档案
-user name :寻找使用者名称为 name 的档案
-name file :寻找档名为 file 的文件名称(可以使用万用字符)
-type type :寻找档案属性为 type 的档案,type 包含了 b, c, d, p, l, s,
这些与前一章的属性相同!例如 l 为 Link 而 d 为路径之意!
范例:
[root @test /root]# find / -name testing <==寻找档名为 testing
[root @test /root]# find / -name 'test*' <==寻找档名包含 test 的!
[root @test /root]# find . -ctime 1 <==寻找目前目录下一天内新增的目录或档案
[root @test /root]# find /home/test -newer .bashrc <==寻找 /home/test 目录下比 .bashrc 还要新的档案
[root @test /root]# find /home -user test <==寻找 /home 底下拥有者为 test 的档案
[root @test /root]# find /dev -type b <==寻找 /dev 这个目录下,档案属性为 b 的档案
如果你要寻找一个档案的话,那么使用 find 会是一个不错的主意!他可以根据不同的参数来给予档案的搜寻功能!例如你要寻找一个档名为 httpd.conf 的档案,你知道他应该是在 /etc 底下,那么就可以使用『 find /etc -name httpd.conf 』噜!那如果你记得有一个档案档名包含了 httpd ,但是不知道全名怎办?!呵呵,就用万用字符 * 吧,如上以:『 find /etc -name '*httpd*' 』就可将档名含有 httpd 的档案都列出来啰!不过,由于 find 在寻找数据的时后相当的耗硬盘!所以没事情不要使用 find 啦!有更棒的指令可以取代呦!那就是 whereis 与 locate 啰!!
SetUID, SetGID, Sticky bit 与 file 指令
[test@test test]$ ls -l /usr/bin/passwd -r-s--x--x 1 root root 13476 Aug 7 2001 /usr/bin/passwd |
[test@test test]$ ls -l /usr/bin/passwd /etc/shadow -r-s--x--x 1 root root 13476 Aug 7 2001 /usr/bin/passwd -rw------- 1 root root 2423 Jun 25 14:29 /etc/shadow |
[test@test test]$ ls -l / drwxrwxrwt 2 root root 4096 Jul 18 13:08 tmp |
[root@test tmp]# touch test [root@test tmp]# ll total 0 -rw-r--r-- 1 root root 0 Feb 6 23:08 test [root@test tmp]# chmod 4755 test [root@vbird tmp]# ll total 0 -rwsr-xr-x 1 root root 0 Feb 6 23:08 test* [root@test tmp]# chmod 6755 test [root@test tmp]# ll total 0 -rwsr-sr-x 1 root root 0 Feb 6 23:08 test* [root@test tmp]# chmod 1755 test [root@test tmp]# ll total 0 -rwxr-xr-t 1 root root 0 Feb 6 23:08 test* 上面的三个例子应该都很好说明啊!就是直接将 x 以 s 或者是 t 来取代就是了!也就是分别为 SUID, SGID 及 sticky bit 的设定方法啦! [root@test tmp]# chmod 7666 test |
[root @test /root ]# file [檔名] 参数说明: 范例: [root @test /root]# file ~/.bashrc /root/.bashrc: ASCII text <==表示这个档案是 ASCII 纯文字文件 [root @test /root]# file /usr/bin/passwd |