001d目录。l符号链接(指向另一个文件)。s套接字文件。b块设备文件。c字符设备文件。p命名管道文件。对于文件属主来说,在只有读权限位被置位的情况下,仍然可以通过文件重定向的方法向该文件写入。chmod命令的一般格式为:chmod[who]operator[permission]filenamewho的含义是:u文件属主权限。g同组用户权限。o其他用户权限。a所有用户(文件属主、同组用户及其他用户)。operator的含义:+增加权限。-取消权限。=设定权限。permission的含义:r读权限。w写权限。x执行权限。s文件属主和组set-ID。t粘性位*。l给文件加锁,使其他用户无法访问。u,g,o针对文件属主、同组用户及其他用户的操作。如果在文件列表时看到“t”,那么这就意味着该脚本或程序在执行时会被放在交换区(虚存)。不过由于当今的内存价格如此之低,大可不必理会文件的“t”的使用。r=4w=2x=1如果希望一次设置目录下所有文件的权限,可以用:chmod644*这将使文件属主和同组用户都具有读和写的权限,其他用户只具有读权限。“t”代表了粘性位。如果在一个目录上出现*在列文件或目录时,有时会遇到“t”位。“t”位,这就意味着该目录中的文件只有其属主才可以删除,即使某个同组用户具有和属主同等的权限。不过有的系统在这一规则上并不十分严格。还可以通过使用-R选项连同子目录下的文件一起设置:chmod-R664/usr/local/home/dave/*这样就可以一次将/usr/local/home/dave目录下的所有文件连同各个子目录下的文件的权限全部设置为文件属主和同组用户可读和写,其他用户只读。使用-R选项一定要谨慎,只有在需要改变目录树下全部文件权限时才可以使用。目录的读权限位意味着可以列出其中的内容。写权限位意味着可以在该目录中创建文件,如果不希望其他用户在你的目录中创建文件,可以取消相应的写权限位。执行权限位则意味着搜索和访问该目录chmod-R-hownerfile-R选项意味着对所有子目录下的文件也都进行同样的操作。-h选项意味着在改变符号链接文件的属主时不影响该链接所指向的目标文件如果你希望知道自己属于哪些用户组,可以用如下的命令:group或者用id命令为了找出其他用户所属于的组,可以用如下的命令:groupJacky当最初登录到系统中时,umask命令确定了你创建文件的缺省模式。这一命令实际上和chmod命令正好相反。你的系统管理员必须要为你设置一个合理的umask值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。在已经登录之后,可以按照个人的偏好使用umask命令来改变文件创建的缺省权限。相应的改变直到退出该shell或使用另外的umask命令之前一直有效。一般来说,umask命令是在/etc/profile文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。如果希望永久性地设置自己的umask值,那么就把它放在自己$HOME目录下的.profile或.bash_profile文件中。umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7。该命令的一般形式为:umasknnn其中nnn为umask置000-777。例如,umask值002所对应的文件和目录创建缺省权限分别为664和775umask值与权限umask文件目录067166245344423522601700对于umask值002,相应的文件和目录缺省创建权限是什么呢?第一步,我们首先写下具有全部权限的模式,即777(所有用户都具有读、写和执行权限)。第二步,在下面一行按照umask值写下相应的位,在本例中是002。第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。稍加练习就能够记住这种方法。第四步,对于文件来说,在创建时不能具有文件权限,只要拿掉相应的执行权限比特即可。这就是上面的例子,其中umask值为002:1)文件的最大权限rwxrwxrwx(777)2)umask值为002-------w-3)目录权限这就是目录创建缺省权限rwxrwxr-x(775)4)文件权限这就是文件创建缺省权限rw-rw-r--(664)下面是另外一个例子,假设这次umask值为022:1)文件的最大权限rwxrwxrwx(777)2)umask值为022----w--w-3)目录权限这就是目录创建缺省权限rwxr-xr-x(755)4)文件权限这就是文件创建缺省权限rw-r--r--(644)如果想知道当前的umask值,可以使用umask命令:wangjian@wangjian-laptop:~$umask0022存在两种不同类型的链接,软链接和硬链接,这里我们只讨论软链接。软链接实际上就是一个指向文件的指针。你将会发现这种软链接使用起来非常方便。下面我们就解释一下符号链接是怎么回事。比方说在/usr/local/admin/sales目录下有一个含有销售信息的文件,销售部门的每一个人都想看这份文件。你可以在每一位用户的$HOME目录下建立一个指向该文件的链接,而不是在每个目录下拷贝一份。这样当需要更改这一文件时,只需改变一个源文件即可。每个销售$HOME目录中的链接可以起任何名字,不必和源文件一致。如果有很多子目录,而进入这些目录很费时间,在这种情况下链接也非常有用。可以针对$HOME目录下的一个很深的子目录创建一个链接。还有,比如在安装一个应用程序时,它的日志被保存到/usr/opt/app/log目录下,如果想把它保存在另外一个你认为更方便目录下,可以建立一个指向该目录的链接。该命令的一般形式为:ln[-s]source_pathtarget_path其中的路径可以是目录也可以是文件。假如系统中有40个销售和管理用户,销售用户使用一个销售应用程序,而管理用户使用一个管理应用程序。我作为系统管理员该怎么做呢?首先删除它们各自$HOME目录下的所有.profile文件。然后在/usr/local/menus/目录下创建两个profile文件,一个是sales.profile,一个是admin.profile,它们分别为销售和管理人员提供了所需的环境,并引导他们进入相应的应用程序。现在我在所有销售人员的$HOME目录下分别创建一个指向sales.profile的链接,在所有管理人员的$HOME目录下分别创建一个指向admin.profile文件的链接。注意,不必在上面命令格式中的target_path端创建相应文件,如果不存在这样一个文件,ln命令会自动创建该文件。下面就是我对销售人员matty所做的操作。下面是另外一个例子。我所管理的系统中有一个网络监视器,它将日志写在/usr/opt/monitor/regstar目录下,但其他所有的日志都保存在/var/adm/logs目录下,这样只需在该目录下建立一个指向原有文件的链接就可以在一个地方看所有的日志了,而不必花费很多时间分别进入各个相应的目录。下面就是所用的链接命令:$ln-s/usr/opt/monitor/regstar/reg.log/var/adm/logs/monitor.log在创建链接的时候,不要忘记在原有目录设置执行权限。链接一旦创建,链接目录将具有权限777或rwxrwxrwx,但是实际的原有文件的权限并未改变。在新安装的系统上,通常要进行这样的操作,在/var目录中创建一个指向/tmp目录的链接,因为有些应用程序认为存在/var/tmp目录(然而它实际上并不存在),有些应用程序在该目录中保存一些临时文件。为了使所有的临时文件都放在一个地方,可以使用ln命令在/var目录下建立一个指向/tmp目录的链接。ln-s/tmp/var/tmp002Find命令的一般形式为:findpathname-options[-print-exec-ok]让我们来看看该命令的参数:pathnamefind命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。-printfind命令将匹配的文件输出到标准输出。-execfind命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'comm-and'{}\;,注意{}和\;之间的空格。-ok和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。find命令有很多选项或表达式,每一个选项前面跟随一个横杠-。让我们先来看一下该命令的主要选项,然后再给出一些例子。-name按照文件名查找文件。-perm按照文件权限来查找文件。-prune使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用了-depth选项,那么-prune选项将被find命令忽略。-user按照文件属主来查找文件。-group按照文件所属的组来查找文件。-mtime-n+n按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。Find命令还有-atime和-ctime选项,但它们都和-mtime选项相似,所以我们在这里只介绍-mtime选项。-nogroup查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。-nouser查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。-newerfile1!file2查找更改时间比文件file1新但比文件file2旧的文件。-type查找某一类型的文件,诸如:b-块设备文件。d-目录。c-字符设备文件。p-管道文件。l-符号链接文件。f-普通文件。-sizen[c]查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件-fstype/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。-mount在查找文件时不跨越文件系统mount点。-follow如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。-cpio对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。不管当前路径是什么,如果想要在自己的根目录$HOME中查找文件名符合*.txt的文件,使用~作为'pathname参数,波浪号~代表了你的$HOME目录。$find~-name*.txt-print想要在当前目录及子目录中查找所有的‘*.txt’文件,可以用:$find.-name*.txt-print想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用:$find.-name[A-Z]*-print想要在/etc目录中查找文件名以host开头的文件,可以用:$find/etc-namehost*-print想要查找$HOME目录中的文件,可以用:$find~-name*-pri或find.-printnt要想让系统高负荷运行,就从根目录开始查找所有的文件。如果希望在系统管理员那里保留一个好印象的话,最好在这么做之前考虑清楚!$find/-name*-print如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是*.txt的文件,下面的命令就能够返回名为ax37.txt的文件:$find.-name[a-z][a-z][0--9][0--9].txt-print如果希望按照文件权限模式来查找文件的话,可以采用-perm选项。你可能需要找到所有用户都具有