欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Linux与Unix shell编程指南.pdf

    • 资源ID:70014853       资源大小:19.52MB        全文页数:356页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Linux与Unix shell编程指南.pdf

    下载第1章 文件安全与权限为了防止未授权用户访问你的文件,可以在文件和目录上设置权限位。还可以设定文件在创建时所具有的缺省权限:这些只是整个系统安全问题中的一小部分。在这里我们并不想对系统安全问题的方方面面进行全面的探讨,只是介绍一下有关文件和目录的安全问题。本章包含以下内容:文件和目录的权限。setuid。chown和c h g r p。umask。符号链接。创建文件的用户和他(她)所属于的组拥有该文件。文件的属主可以设定谁具有读、写、执行该文件的权限。当然,根用户或系统管理员可以改变任何普通用户的设置。一个文件一经创建,就具有三种访问方式:1)读,可以显示该文件的内容。2)写,可以编辑或删除它。3)执行,如果该文件是一个s h e l l脚本或程序。按照所针对的用户,文件的权限可分为三类:1)文件属主,创建该文件的用户。2)同组用户,拥有该文件的用户组中的任何用户。3)其他用户,即不属于拥有该文件的用户组的某一用户。1.1 文件当你创建一个文件的时候,系统保存了有关该文件的全部信息,包括:文件的位置。文件类型。文件长度。哪位用户拥有该文件,哪些用户可以访问该文件。i节点。文件的修改时间。文件的权限位。让我们使用ls-l命令,来看一个典型的文件:第一部分s h e l l下面让我们来分析一下该命令所得结果的前面两行,看看都包含了哪些信息:total 4232:这一行告诉我们该目录中所有文件所占的空间。-r w x r-x r-x:这是该文件的权限位。如果除去最前面的横杠,这里一共是 9个字符,他们分别对应9个权限位。通过这些权限位,可以设定用户对文件的访问权限。这 9个字符可以分为三组:r w x:文件属主权限这是前面三位r-x:同组用户权限这是中间三位r-x:其他用户权限这是最后三位后面我们还将对这些权限位作更详细的介绍。出现在 r、w、x位置上的横杠表示相应的访问权限被禁止。1 该文件硬链接的数目。root 文件的属主。root 文件的属主r o o t所在的缺省组(也叫做r o o t)。3578 用字节来表示的文件长度,记住,不是 K字节!Oct 14 04:44 文件的更新时间。dmesg 文件名。1.2 文件类型还记得前面一节所提到的文件权限位前面的那个字符吗?我们现在就解释一下这个横杠所代表的意思,文件类型有七种,它可以从 ls-l命令所列出的结果的第一位看出,这七种类型是:d 目录。l 符号链接(指向另一个文件)。s 套接字文件。b 块设备文件。c 字符设备文件。p 命名管道文件。-普通文件,或者更准确地说,不属于以上几种类型的文件。1.3 权限让我们用t o u c h命令创建一个文件:$touch myfile现在对该目录使用ls-l命令:2第一部分 shell下载我们已经创建了一个空文件,正如我们所希望的那样,第一个横杠告诉我们该文件是一个普通文件。你将会发现所创建的文件绝大多数都是普通文件或符号链接文件(后面将会出现更多的符号链接文件)。文件属主权限组用户权限其他用户权限r w-r-r接下来的三个权限位是文件属主所具有的权限;再接下来的三位是与你同组用户所具有的权限,这里是a d m i n组;最后三位是其他用户所具有的权限。在该命令的结果中,我所属于的缺省组也显示了出来。下面是对该文件权限的精确描述:表1-1 ls-l命令输出的含义(第一个字符)-普通文件(接下来的三个字符)r w-文件属主的权限(再接下来的三个字符)r-同组用户的权限(最后三个字符)r-其他用户的权限因此,这三组字符(除了第一个字符)分别定义了:1)文件属主所拥有的权限。2)文件属主缺省组(一个用户可以属于很多的组)所拥有的权限。3)系统中其他用户的权限。在每一组字符中含有三个权限位:r 读权限w 写/更改权限x 执行该脚本或程序的权限这里我们采用另外一种方式来表示刚才所列出 m y f i l e的文件权限:-r w-r-r-文件类型为普通文件文件属主可以读、写同组用户可以读其他用户可以读你可能已经注意到了,m y f i l e在创建的时候并未给属主赋予执行权限,在用户创建文件时,系统不会自动地设置执行权限位。这是出于加强系统安全的考虑。必须手工修改这一权限位:后面讲到u m a s k命令时,你就会明白为什么没有获得执行权限。然而,你可以针对目录设置执行权限位,但这与文件执行权限位的意义有所不同,这一点我们将在后面讨论。上面这段关于权限位的内容可能不太好理解,让我们来看几个例子(见表1-2)。更令人迷惑的是,对于文件属主来说,在只有读权限位被置位的情况下,仍然可以通过文件重定向的方法向该文件写入。过一会儿我们就会看到,能否删除一个文件还依赖于该文件所在目录权限位的设置。表1-2 文件权限及含义权限所代表的含义r-文文件属主可读,但不能写或执行r-r-文文件属主和同组用户(一般来说,是文件属主所在的缺省组)可读r-r-r-文任何用户都可读,但不能写或执行rwx r-r-文文件属主可读、写、执行,同组用户和其他用户只可读rwx r-x-文文件属主可读、写、执行,同组用户可读、执行第1章 文件安全与权限3下载(续)权限所代表的含义rwx r-x r-x文文件属主可读、写、执行,同组用户和其他用户可读、执行rw-rw-文文件属主和同组用户可读、写rw-rw-r-文文件属主和同组用户可读、写,其他用户可读rw-rw-文文件属主和同组用户及其他用户读可以读、写,慎用这种权限设置,因为任何用户都可以写入该文件1.4 改变权限位对于属于你的文件,可以按照自己的需要改变其权限位的设置。在改变文件权限位设置之前,要仔细地想一想有哪些用户需要访问你的文件(包括你的目录)。可以使用c h m o d命令来改变文件权限位的设置。这一命令有比较短的绝对模式和长一些的符号模式。我们先来看一看符号模式。1.4.1 符号模式c h m o d命令的一般格式为:chmod who operator permission filenamew h o的含义是:u 文件属主权限。g 同组用户权限。o 其他用户权限。a 所有用户(文件属主、同组用户及其他用户)。o p e r a t o r的含义:+增加权限。-取消权限。=设定权限。p e r m i s s i o n的含义:r 读权限。w 写权限。x 执行权限。s 文件属主和组s e t-I D。t 粘性位*。l 给文件加锁,使其他用户无法访问。u,g,o 针对文件属主、同组用户及其他用户的操作。*在列文件或目录时,有时会遇到“t”位。“t”代表了粘性位。如果在一个目录上出现“t”位,这就意味着该目录中的文件只有其属主才可以删除,即使某个同组用户具有和属主同等的权限。不过有的系统在这一规则上并不十分严格。如果在文件列表时看到“t”,那么这就意味着该脚本或程序在执行时会被放在交换区(虚存)。不过由于当今的内存价格如此之低,大可不必理会文件的“t”的使用。4第一部分 shell下载1.4.2 chmod命令举例现在让我们来看一些使用 c h m o d命令的例子。假定 m y f i l e文件最初具有这样的权限:r w xrwx rwx:命令结果含义chmod a-x myfilerw-rw-rw-收回所有用户的执行权限chmod og-w myfilerw-r-r-收回同组用户和其他用户的写权限chmod g+w myfilerw-rw-r-赋予同组用户写权限chmod u+x myfilerwx rw-r-赋予文件属主执行权限chmod go+x myfilerwx rwx r-x赋予同组用户和其他用户执行权限当创建m y f i l e文件时,它具有这样的权限:如果这是我写的一个脚本,我希望能够具有执行权限,并取消其他用户(所有其他用户)的写权限,可以用:$chmod u+x o-w myfile这样,该文件的权限变为:现在已经使文件属主对 m y f i l e文件具有读、写执行的权限,而 a d m i n组的用户对该文件具有读权限。如果希望某个脚本文件对你自己来说可执行,而且你对该文件的缺省权限很放心,那么只要使它对你来说具有执行权限即可。$chmod u+x dt1.4.3 绝对模式c h m o d命令绝对模式的一般形式为:chmod mode file其中m o d e是一个八进制数。在绝对模式中,权限部分有着不同的含义。每一个权限位用一个八进制数来代表,如表1-3所示。表1-3 八进制目录/文件权限表示八 进 制 数含义八 进 制 数含义0 4 0 0文件属主可读0 0 1 0同组用户可执行0 2 0 0文件属主可写0 0 0 4其他用户可读0 1 0 0文件属主可执行0 0 0 2其他用户可写0 0 4 0同组用户可读0 0 0 1其他用户可执行0 0 2 0同组用户可写在设定权限的时候,只需按照表 1-3查出与文件属主、同组用户和其他用户所具有的权限相对应的数字,并把它们加起来,就是相应的权限表示。从表1-3中可以看出,文件属主、同组用户和其他用户分别所能够具有的最大权限值就是7。第1章 文件安全与权限5下载再来看看前面举的例子:相应的权限表示应为6 4 4,它的意思就是:0 4 0 0+0 2 0 0(文件属主可读、写)=0 6 0 00 0 4 0(同组用户可读)=0 0 4 00 0 0 4(其他用户可读)=0 0 0 40 6 4 4有一个计算八进制权限表示的更好办法,如表 1-4所示:表1-4 计算权限值文 件 属 主同 组 用 户其 他 用 户r w xr w xr w x4+2+14+2+14+2+1使用表1-4,可以更容易地计算出相应的权限值,只要分别针对文件属主、同组用户和其他用户把相应权限下面的数字加在一起就可以了。m y f i l e文件具有这样的权限:r w -r -r -4+244把相应权限位所对应的值加在一起,就是 6 4 4。1.4.4 chmod命令的其他例子以下是一些c h m o d命令绝对模式的例子:命令结果含义chmod 666rw-rw-rw-赋予所有用户读和写的权限chmod 644rw-r-r-赋予所有文件属主读和写的权限,所有其他用户读权限chmod 744rwx r-r-赋予文件属主读、写和执行的权限,所有其他用户读的权限chmod 664rw-rw-r-赋予文件属主和同组用户读和写的权限,其他用户读权限chmod 700rwx-赋予文件属主读、写和执行的权限chmod 444r-r-r-赋予所有用户读权限下面举一个例子,假定有一个名为 y o a的文件,具有如下权限:我现在希望使自己对该文件可读、写和执行,a d m i n组用户对该文件只读,可以键入:如果希望自己对该文件可读、写和执行,对其他所有用户只读,我可以用:如果希望一次设置目录下所有文件的权限,可以用:chmod 644*这将使文件属主和同组用户都具有读和写的权限,其他用户只具有读权限。6第一部分 shell下载还可以通过使用-R选项连同子目录下的文件一起设置:chmod-R 664/usr/local/home/dave/*这样就可以一次将/u s r/l o c a l/h o m e/d a v e目录下的所有文件连同各个子目录下的文件的权限全部设置为文件属主和同组用户可读和写,其他用户只读。使用-R选项一定要谨慎,只有在需要改变目录树下全部文件权限时才可以使用。1.4.5 可以选择使用符号模式或绝对模式上面的例子中既有绝对模式的,也有符号模式的,我们可以从中看出,如果使用该命令的符号模式,可以设置或取消个别权限位,而在绝对模式中则不然。我个人倾向于使用符号模式,因为它比绝对模式方便快捷。1.5 目录还记得在前面介绍c h m o d命令时讲过,目录的权限位和文件有所不同。现在我们来看看其中的区别。目录的读权限位意味着可以列出其中的内容。写权限位意味着可以在该目录中创建文件,如果不希望其他用户在你的目录中创建文件,可以取消相应的写权限位。执行权限位则意味着搜索和访问该目录(见表 1-5、表1-6)。表1-5 目录权限rwx可以列出该目录中的文件可以在该目录中创建或删除文件可以搜索或进入该目录表1-6 目录权限举例权限文 件 属 主同 组 用 户其 他 用 户drwx rwx r-x(7 7 5)读、写、执行读、写、执行读、执行drwx r-x r-(7 5 4)读、写、执行读、执行读drwx r-x r-x(7 5 5)读、写、执行读、执行读、执行如果把同组用户或其他用户针对某一目录的权限设置为-x,那么他们将无法列出该目录中的文件。如果该目录中有一个执行位置位的脚本或程序,只要用户知道它的路径和文件名,仍然可以执行它。用户不能够进入该目录并不妨碍他的执行。目录的权限将会覆盖该目录中文件的权限。例如,如果目录 d o c s具有如下的权限:而其中的文件p a y的权限为:那么a d m i n组的用户将无法编辑该文件,因为它所属的目录不具有这样的权限。该文件对任何用户都可读,但由于它所在的目录并未给 a d m i n组的用户赋予执行权限,所以该组的用户都将无法访问该目录,他们将会得到“访问受限”的错误消息。1.6 suid/guid我们在前面曾经提到过s u i d和g u i d。这种权限位近年来成为一个棘手的问题。很多系统供第1章 文件安全与权限7下载应商不允许实现这一位,或者即使它被置位,也完全忽略它的存在,因为它会带来安全性风险。那么人们为何如此大惊小怪呢?s u i d意味着如果某个用户对属于自己的 s h e l l脚本设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。于是,如果根用户的某一个脚本设置了这样的权限,那么其他普通用户在执行它的期间也同样具有根用户的权限。同样的原则也适用于g u i d,执行相应脚本的用户将具有该文件所属用户组中用户的权限。1.6.1 为什么要使用suid/guid为什么要使用这种类型的脚本?这里有一个很好的例子。我管理着几个大型的数据库系统,而对它们进行备份需要有系统管理权限。我写了几个脚本,并设置了它们的g u i d,这样我指定的一些用户只要执行这些脚本就能够完成相应的工作,而无须以数据库管理员的身份登录,以免不小心破坏了数据库服务器。通过执行这些脚本,他们可以完成数据库备份及其他管理任务,但是在这些脚本运行结束之后,他们就又回复到他们作为普通用户的权限。有相当一些U N I X命令也设置了s u i d和g u i d。如果想找出这些命令,可以进入/b i n或/s b i n目录,执行下面的命令:$ls-l|grep.s上面的命令是用来查找s u i d文件的;$ls-l|grep.s.s上面的命令是用来查找s u i d和g u i d的。现在我们明白了什么是s u i d,可是如何设置它呢?下面就来介绍这个问题。如果希望设置s u i d,那么就将相应的权限位之前的那一位设置为4;如果希望设置g u i d,那么就将相应的权限位之前的那一位设置为2;如果希望两者都置位,那么将相应的权限位之前的那一位设置为4+2。一旦设置了这一位,一个 s将出现在x的位置上。记住:在设置 s u i d或g u i d的同时,相应的执行权限位必须要被设置。例如,如果希望设置 g u i d,那么必须要让该用户组具有执行权限。如果想要对文件 l o g i n设置s u i d,它当前所具有的权限为 rwx rw-r-(741),需要在使用c h m o d命令时在该权限数字的前面加上一个 4,即chmod 4741,这将使该文件的权限变为 r w srw-r-。$chmod 4741 logit 1.6.2 设置suid/guid的例子下面给出几个例子:表1-7 设置s u i d/g u i d命令结果含义chmod 4755rws r-x r-x文文件被设置了s u i d,文件属主具有读、写和执行的权限,所有其他用户具有读和执行的权限chmod 6711rws-s-s文文件被设置了 s u i d和g u i d,文件属主具有读、写和执行的权限,所有其他用户具有执行的权限chmod 4764rws rw-r-文文件被设置了s u i d,文件属主具有读、写和执行的权限,同组用户具有读和执行的权限,其他用户具有读权限8第一部分 shell下载还可以使用符号方式来设置 s u i d/g u i d。如果某个文件具有这样的权限:rwx r-x r-x,那么可以这样设置其s u i d:chmod u+s 于是该文件的权限将变为:rws r-x r-x 在查找设置了s u i d的文件时,没准会看到具有这样权限的文件:rwS r-x r-x,其中S为大写。它表示相应的执行权限位并未被设置,这是一种没有什么用处的s u i d设置,可以忽略它的存在。注意,c h m o d命令不进行必要的完整性检查,可以给某一个没用的文件赋予任何权限,但chmod 命令并不会对所设置的权限组合做什么检查。因此,不要看到一个文件具有执行权限,就认为它一定是一个程序或脚本。1.7 chown和chgrp当你创建一个文件时,你就是该文件的属主。一旦你拥有某个文件,就可以改变它的所有权,把它的所有权交给另外一个/e t c/p a s s w d文件中存在的合法用户。可以使用用户名或用户I D号来完成这一操作。在改变一个文件的所有权时,相应的 s u i d也将被清除,这是出于安全性的考虑。只有文件的属主和系统管理员可以改变文件的所有权。一旦将文件的所有权交给另外一个用户,就无法再重新收回它的所有权。如果真的需要这样做,那么就只有求助于系统管理员了。c h o w n命令的一般形式为:chmod-R-h owner file-R选项意味着对所有子目录下的文件也都进行同样的操作。-h选项意味着在改变符号链接文件的属主时不影响该链接所指向的目标文件。1.7.1 chown举例这里给出几个例子:文件p r o j e c t的所有权现在由用户l o u i s e交给了用户p a u l i n e。1.7.2 chgrp举例c h g r p命令和c h o w n命令的格式差不多,下面给出一个例子。用户p a u l i n e现在把该文件所属的组由a d m i n变为s y b a d m i n(系统中的另外一个用户组)。1.7.3 找出你所属于的用户组如果你希望知道自己属于哪些用户组,可以用如下的命令:第1章 文件安全与权限9下载或者可以使用i d命令:1.7.4 找出其他用户所属于的组为了找出其他用户所属于的组,可以用如下的命令:上面的命令告诉我们用户m a t t y属于s y b a d m i n、a p p s g e n和p o s t用户组。1.8 umask当最初登录到系统中时,u m a s k命令确定了你创建文件的缺省模式。这一命令实际上和c h m o d命令正好相反。你的系统管理员必须要为你设置一个合理的 u m a s k值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。在已经登录之后,可以按照个人的偏好使用 u m a s k命令来改变文件创建的缺省权限。相应的改变直到退出该s h e l l或使用另外的u m a s k命令之前一直有效。一般来说,u m a s k命令是在/e t c/p r o f i l e文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的 u m a s k,可以在该文件中加入相应的条目。如果希望永久性地设置自己的u m a s k值,那么就把它放在自己$H O M E目录下的.p r o f i l e或.b a s h _ p r o f i l e文件中。1.8.1 如何计算umask值u m a s k命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的u m a s k值中的数字。对于文件来说,这一数字的最大值分别是 6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用c h m o d命令增加这一权限。目录则允许设置执行权限,这样针对目录来说,u m a s k中各个数字最大可以到7。该命令的一般形式为:umask nnn其中n n n为u m a s k置0 0 0-7 7 7。让我们来看一些例子。计算出你的u m a s k值:可以有几种计算u m a s k值的方法,通过设置u m a s k值,可以为新创建的文件和目录设置缺省权限。表1-8列出了与权限位相对应的u m a s k值。在计算u m a s k值时,可以针对各类用户分别在这张表中按照所需要的文件/目录创建缺省权限查找对应的u m a s k值。例如,u m a s k值002 所对应的文件和目录创建缺省权限分别为 6 6 4和7 7 5。还有另外一种计算u m a s k值的方法。我们只要记住 u m a s k是从权限中“拿走”相应的位即可。10第一部分 shell下载表1-8 umask值与权限u m a s k文件目录067166245344423522601700例如,对于u m a s k值0 0 2,相应的文件和目录缺省创建权限是什么呢?第一步,我们首先写下具有全部权限的模式,即 7 7 7(所有用户都具有读、写和执行权限)。第二步,在下面一行按照u m a s k值写下相应的位,在本例中是0 0 2。第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。稍加练习就能够记住这种方法。第四步,对于文件来说,在创建时不能具有文件权限,只要拿掉相应的执行权限比特即可。这就是上面的例子,其中u m a s k值为0 0 2:1)文件的最大权限rwx rwx rwx(777)2)umask值为0 0 2-w-3)目录权限rwx rwx r-x(775)这就是目录创建缺省权限4)文件权限rw-rw-r-(664)这就是文件创建缺省权限下面是另外一个例子,假设这次u m a s k值为0 2 2:1)文件的最大权限rwx rwx rwx(777)2)u m a s k值为0 2 2-w-w-3)目录权限rwx r-x r-x(755)这就是目录创建缺省权限4)文件权限rw-r-r-(644)这就是文件创建缺省权限1.8.2 常用的umask值表1-9列出了一些u m a s k值及它们所对应的目录和文件权限。表1-9 常用的u m a s k值及对应的文件和目录权限u m a s k值目录文件0 2 27 5 56 4 40 2 77 5 06 4 00 0 27 7 56 6 40 0 67 7 16 6 00 0 77 7 06 6 0如果想知道当前的umask 值,可以使用u m a s k命令:第1章 文件安全与权限11下载如果想要改变u m a s k值,只要使用u m a s k命令设置一个新的值即可:$umask 002确认一下系统是否已经接受了新的 u m a s k值:在使用u m a s k命令之前一定要弄清楚到底希望具有什么样的文件/目录创建缺省权限。否则可能会得到一些非常奇怪的结果;例如,如果将 u m a s k值设置为6 0 0,那么所创建的文件/目录的缺省权限就是0 6 6!1.9 符号链接存在两种不同类型的链接,软链接和硬链接,这里我们只讨论软链接。软链接实际上就是一个指向文件的指针。你将会发现这种软链接使用起来非常方便。1.9.1 使用软链接来保存文件的多个映像下面我们就解释一下符号链接是怎么回事。比方说在/u s r/l o c a l/a d m i n/s a l e s目录下有一个含有销售信息的文件,销售部门的每一个人都想看这份文件。你可以在每一位用户的$H O M E目录下建立一个指向该文件的链接,而不是在每个目录下拷贝一份。这样当需要更改这一文件时,只需改变一个源文件即可。每个销售$H O M E目录中的链接可以起任何名字,不必和源文件一致。如果有很多子目录,而进入这些目录很费时间,在这种情况下链接也非常有用。可以针对$H O M E目录下的一个很深的子目录创建一个链接。还有,比如在安装一个应用程序时,它的日志被保存到/u s r/o p t/a p p/l o g目录下,如果想把它保存在另外一个你认为更方便目录下,可以建立一个指向该目录的链接。该命令的一般形式为:ln-s source_path target_path其中的路径可以是目录也可以是文件。让我们来看几个例子。1.9.2 符号链接举例假如系统中有4 0个销售和管理用户,销售用户使用一个销售应用程序,而管理用户使用一个管理应用程序。我作为系统管理员该怎么做呢?首先删除它们各自$H O M E目录下的所有.p r o f i l e文件。然后在/u s r/l o c a l/m e n u s/目录下创建两个p r o f i l e文件,一个是s a l e s.p r o f i l e,一个是a d m i n.p r o f i l e,它们分别为销售和管理人员提供了所需的环境,并引导他们进入相应的应用程序。现在我在所有销售人员的$H O M E目录下分别创建一个指向s a l e s.p r o f i l e的链接,在所有管理人员的$H O M E目录下分别创建一个指向 a d m i n.p r o f i l e文件的链接。注意,不必在上面命令格式中的t a rg e t _ p a t h端创建相应文件,如果不存在这样一个文件,l n命令会自动创建该文12第一部分 shell下载件。下面就是我对销售人员m a t t y所做的操作。(你所看到的可能会与此稍有差别)。这就是我所要做的全部工作;对于管理人员也是如此。而且如果需要作任何修改的话,只要改变销售和管理人员的p r o f i l e文件即可,而不必对4 0个用户逐一进行修改。下面是另外一个例子。我所管理的系统中有一个网络监视器,它将日志写在/u s r/o p t/m o n i t o r/r e g s t a r目录下,但其他所有的日志都保存在/v a r/a d m/l o g s目录下,这样只需在该目录下建立一个指向原有文件的链接就可以在一个地方看所有的日志了,而不必花费很多时间分别进入各个相应的目录。下面就是所用的链接命令:$ln-s/usr/opt/monitor/regstar/reg.log/var/adm/logs/monitor.log如果链接太多的话,可以删掉一些,不过切记不要删除源文件。不管是否在同一个文件系统中,都可以创建链接。在创建链接的时候,不要忘记在原有目录设置执行权限。链接一旦创建,链接目录将具有权限 7 7 7或rwx rwx rwx,但是实际的原有文件的权限并未改变。在新安装的系统上,通常要进行这样的操作,在/v a r目录中创建一个指向/t m p目录的链接,因为有些应用程序认为存在/v a r/t m p目录(然而它实际上并不存在),有些应用程序在该目录中保存一些临时文件。为了使所有的临时文件都放在一个地方,可以使用 l n命令在/v a r目录下建立一个指向/t m p目录的链接。现在如果我在/v a r目录中列文件,就能够看到刚才建立的链接:1.10 小结本章介绍了一些有关文件安全的基本概念。如果这些命令能够使用得当而且使用得比较谨慎,应该不会有什么问题。手指轻轻一敲就有可能输入 chmod-R这样的命令,它将改变整个文件系统的权限,如果没有做备份的话,没有几年的时间恐怕是无法恢复了,所以在输入这些命令时,千万不要在手指上贴膏药!是否使用设置了s u i d的脚本完全取决于你自己。如果使用的话,一定要确保能够监控它的使用,而且不要以根用户身份设置 s u i d。第1章 文件安全与权限13下载下载第2章 使用find和xargs有时可能需要在系统中查找具有某一特征的文件(例如文件权限、文件属主、文件长度、文件类型等等)。这样做可能有很多原因。可能出于安全性的考虑,或是一般性的系统管理任务,或许只是为了找出一个不知保存在什么地方的文件。F i n d是一个非常有效的工具,它可以遍历当前目录甚至于整个文件系统来查找某些文件或目录。在本章中,我们介绍以下内容:find命令选项。使用f i n d命令不同选项的例子。配合f i n d使用x a rg s命令的例子。由于f i n d具有如此强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统(N F S),f i n d命令在该文件系统中同样有效,只要你具有相应的权限。在运行一个非常消耗资源的 f i n d命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指3 0 G字节以上的文件系统)。F i n d命令的一般形式为:find pathname-options-print-exec-ok让我们来看看该命令的参数:pathname find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。-print find命令将匹配的文件输出到标准输出。-exec find命令对匹配的文件执行该参数所给出的 s h e l l命令。相应命令的形式为 c o m m-and ;,注意 和;之间的空格。-ok 和-e x e c的作用相同,只不过以一种更为安全的模式来执行该参数所给出的 s h e l l命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。2.1 find命令选项f i n d命令有很多选项或表达式,每一个选项前面跟随一个横杠-。让我们先来看一下该命令的主要选项,然后再给出一些例子。-name 按照文件名查找文件。-perm 按照文件权限来查找文件。-prune 使用这一选项可以使f i n d命令不在当前指定的目录中查找,如果同时使用了-d e p t h选项,那么-p r u n e选项将被f i n d命令忽略。-user 按照文件属主来查找文件。-group 按照文件所属的组来查找文件。-mtime-n+n 按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。F i n d命令还有-a t i m e和-c t i m e选项,但它们都和-m t i m e选项相似,所以我们在这里只介绍-m t i m e选项。-nogroup 查找无有效所属组的文件,即该文件所属的组在/e t c/g r o u p s中不存在。-nouser 查找无有效属主的文件,即该文件的属主在/e t c/p a s s w d中不存在。-newer file1!file2 查找更改时间比文件f i l e 1新但比文件f i l e 2旧的文件。-type 查找某一类型的文件,诸如:b-块设备文件。d-目录。c-字符设备文件。p-管道文件。l-符号链接文件。f-普通文件。-size nc 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。-fstype 查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/e t c/f s t a b中找到,该配置文件中包含了本系统中有关文件系统的信息。-mount 在查找文件时不跨越文件系统m o u n t点。-follow 如果f i n d命令遇到符号链接文件,就跟踪至链接所指向的文件。-cpio 对匹配的文件使用c p i o命令,将这些文件备份到磁带设备中。2.1.1 使用name选项文件名选项是f i n d命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。不管当前路径是什么,如果想要在自己的根目录$H O M E中查找文件名符合*.t x t的文件,使用作为 p a t h n a m e参数,波浪号代表了你的$H O M E目录。$find -name*.txt-print想要在当前目录及子目录中查找所有的*.t x t文件,可以用:$find.-name*.txt-print想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用:$find.-name A-Z*-print想要在/e t c目录中查找文件名以h o s t开头的文件,可以用:$find/etc-name host*-print想要查找$H O M E目录中的文件,可以用:$find -name*-print 或find.-print要想让系统高负荷运行,就从根目录开始查找所有的文件。如果希望在系统管理员那里保留一个好印象的话,最好在这么做之前考虑清楚!$find/-name*-print如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是*.t x t的文件,下面的命令就能够返回名为a x 3 7.t x t的文件:第2章 使用f i n d和x a rg s15下载$find.-name a-za-z0-90-9.txt-print2.1.2 使用perm选项如果希望按照文件权限模式来查找文件的话,可以采用-p e r m选项。你可能需要找到所有用户都具有执行权限的文件,或是希望查看某个用户目录下的文件权限类型。在使用这一选项的时候,最好使用八进制的权限表示法。为了在当前目录下查找文件权限位为 7 5 5的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用:$find.-perm 755-print如果希望在当前目录下查找所有用户都可读、写、执行的文件(要小心这种情况),我们可以使用f i n d命令的-p e r m选项。在八进制数字前面要加一个横杠-。在下面的命令中-p e r m代表按照文件权限查找,而0 0 7和你在c h m o d命令的绝对模式中所采用的表示法完全相同。$find.-perm-007-print2.1.3 忽略某个目录如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,那么可以使用-p r u n e选项来指出需要忽略的目录。在使用-p r u n e选项时要当心,因为如果你同时使用了-d e p t h选项,那么-p r u n e选项就会被f i n d命令忽略。如果希望在/a p p s目录下查找文件,但不希望在/a p p s/b i n目录下查找,可以用:$find/apps-name/apps/bin-prune-o-print2.1.4 使用user和nouser选项如果希望按照文件属主查找文件,可以给出相应的用户名。例如,在$H O M E目录中查找文件属主为d a v e的文件,可以用:$find -user dave-print在/e t c目录下查找文件属主为u u c p的文件:$find/etc-user uucp-print为了查找属主帐户已经被删除的文件,可以使用-n o u s e r选项。这样就能够找到那些属主在/e t c/p a s s w d文件中没有有效帐户的文件。在使用-n o u s e r选项时,不必给出用户名;f i n d命令能够为你完成相应的工作。例如,希望在/h o m e目录下查找所有的这类文件,可以用:$find/home-nouser-print2.1.5 使用group和nogroup选项就像u s e r和n o u s e r选项一样,针对文件所属于的用户组,f i n d命令也具有同样的选项,为了在/a p p s目录下查找属于a c c t s用户组的文件,可以用:$find/apps-group accts-print要查找没有有效所属用户组的所有文件,可以使用 n o g r o u p选项。下面的f i n d命令从文件系统的根目录处查找这样的文件$fi

    注意事项

    本文(Linux与Unix shell编程指南.pdf)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开