您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > Linux档案属性与目录配置(二)
一、相对路径与绝对路径绝对路径:路径的写法【一定由根目录/写起】,例如:/usr/share/doc这个目录。相对路径:路径的写法【不是由/写起】,例如/usr/share/doc要到/usr/share/man底下时,可以写成:【cd../man】这就是相对路径的写法。相对路径意指【相对于目前工作目录的路径!】一般来说,在写程序(shellscripts)的条件下,务必使用绝对路径的写法,因为这个写法绝对不会有问题。二、目录的相关操作1.cd(变换目录)2.pwd(显示目前所在的目录)3.mkdir(建立新目录)仔细看上面的权限部分,如果没有加上–m来强制设定属性,系统会使用预设属性。4.rmdir(删除【空】的目录)如果要将所有目录下的东西都删除,就必须使用rm–rftest,不过使用rmdir比较不危险。三、关于执行文件路径的变量:$PATH当我们在执行一个指令的时候,系统会依照PATH的设定去每个PATH定义的路径下搜寻执行文件,先搜寻到的指令先被执行之。如下,echo$PATH,echo有【显示、印出】的意思,而PATH前面加的$表示后面接的是变量,所以会显示出目前的PATH了。四、档案与目录管理1.档案与目录的检视:ls范例一:将家目录下的所有档案列出来(含属性与隐藏文件)范例二:承上题,不显示颜色,但在文件名末显示出该文件名代表的类型(type)范例三:完整地呈现档案的修改时间*(modificationtime)2.cp(复制档案或目录)在复制时,你必须要清楚地了解到:是否需要完整地保留来源档案的信息?来源档案是否为连结档(symboliclinkfile)?来源档是否为特殊的档案,例如FIFO,socket等?来源文件是否为目录?范例一:将家目录下的.bashrc复制到/tmp下,并更名为bashrc范例二:将/var/log/wtmp复制到/tmp底下范例三:复制/etc/这个目录下的所有内容到/tmp底下范例四:将范例一复制的bashrc建立一个边连结档(symboliclink)范例五:若~/.bashrc比/tmp/bashrc新才复制过来范例六:将范例四造成的bashrc_slink复制成为bashrc_slink_2范例七:将家目录的的.bashrc及.bash_history复制到/tmp底下3.rm(移除档案或目录)范例一:建立一档案后予以删除范例二:删除一个不为空的目录范例三:删除一个带有—开头的档案4.mv(移动档案与目录,或更名)范例一:复制一档案,建立一目录,将档案移动到目录中范例二:将刚刚的目录名称更改为mvtest2范例三:再建立两个档案,再全部移动到/tmp/mvtest2当中5.取得路径的文件名称与目录名称(basename与dirname)6.档案内容查阅cat由第一行开始显示档案内容tac从最后一行开始显示,可以看出tac是cat的倒着写nl显示的时候,顺道输出行号more一页一页地显示档案内容less与more类似,但是比more更好的是,它可以往前翻页head只看头几行tail只看尾巴几行od以二进制的方式读取档案内容1)more在这个程序的动作过程中,有几个键是可以使用的:空格键(space):代表向下翻一页;Enter:代表向下翻一行;/字符串:代表在这个显示的内容当中,向下搜寻【字符串】;:f:立刻显示出文件名以及目前显示的行数;q:代表立刻离开more,不再显示该档案内容;2)非纯文字文件:od如果我们想查阅非文字文件(非ASCII格式的档案)时,比如/usr/bin/passwd这个执行档的内容时,可以利用od这个指令来读取。范例:7.创建档案时间与建置新档:touch我们在ls这个指令的介绍时,有稍微提到每个档案在Linux底下都会记录三个主要的变动时间,分别为:Modificationtime(mtime):当该档案的【内容数据】变更时,就会更新这个时间!内容数据指的是档案的内容,而不是档案的属性。Statustime(ctime):当该档案状态改变时,就会更新这个时间,像是权限与属性被更改了,都会更新这个时间。Accesstime(atime):当【该档案的内容被取用】时,就会更新这个读取时间。如我们使用cat去读取~/.bashrc,就会更新atime了。范例:档案的时间是很重要的,因为,如果档案的时间误判的话,可能会造成某些程序无法顺利地动作。比如我们发现一个档案来自未来(很多时候会有这个问题的,这个我们在安装的时候,提到的GMT时间就是那个意思),我们就可以用【touch】这个指令来修改即可。范例一:新建一个空的档案范例二:将~/.bashrc复制成为bashrc,假设复制完全的属性,检查其日期范例三:修改案例二的bashrc档案,将日期调整为二天前范例四:将上个范例的bashrc日期改为2005/07/152:028.档案与目录的预设权限与隐藏权限由于Linux还可以设定其它的系统安全属性,使用chattr来设定,而以lsattr来查看,最重要的属性就是可以设定其不可修改的特性!让连档案的拥有者都不能进行修改!这个属性相当重要,尤其是在安全机制上面!档案预设权限:umask基本上,umask就是【目前使用者在建立档案或目录时候的属性默认值】,它的指定条件以底下的方式来指定:查阅的方式有两种,一种可以直接输入umask,就可以看到数字型态的权限设定分数,一种是加入–S(Symbolic)这个参数,就会以符号类型的方式显示出权限了。在预设情况中,档案是没有可执行(x)权限的。因此:若使用者建立为【档案】则预设【没有可执行(x)项目】,亦即只有rw这两个项目,也就是最大为666分,预设属性如下:-rw-rw-rw-若使用者建立为【目录】,则由于x与是否可以进入此目录有关,因此预设为所有权限开放,亦即为777分,预设属性如下:Drwxrwxrwx那么umask指定的是【该默认值需要减掉的权限!】,因为r、w、x分别是4、2、1分,以上面的例子来说明,因为umask为022,所以user并没有被拿掉属性,不过group与others的属性被拿掉了2(也就是w这个属性),那么由于当使用者:建立档案时:(-rw-rw-rw)-(-----w--w-)==-rw-r--r--建立目录时:(drwxrwxrwx)-(d----w--w-)==drwxr–xr–x我们来测试看看:如果我们希望让users同群组的人也可以存取,也就是-rw–rw–r--的模样,umask应该为002才好,我们可以这样设定umask,直接在umask后面输入002就好了。这个umask对于档案与目录的预设权限是很有关系的,这个概念可以用在任何服务器上,尤其是未来在你架设档案服务器,如SAMBAServer或者FTPserver时,都是很重要的观念。9.档案隐藏属性1、Chattr(设定档案隐藏属性)范例:2、Lsattr(显示档案隐藏属性)3、档案特殊权限:SUID/SGID/StickyBit档案的重要权限,就是rwx这三个读、写、执行的权限。但是我们的/tmp权限还有那个/usr/bin/passwd权限很奇怪。SetUID会制作出s与t的权限,是为了让一般使用者在执行某些程序的时候,能够暂时地具有该程序拥有者的权限。比如,我们知道账号与密码的存放档案其实是/etc/passwd与/etc/shadow。而/etc/shadow这个档案的权限是什么呢?是【-r--------】。且它的拥有者是root。在这个权限中,仅有root可以【强制】储存,其它人都没法看。但我们使用dmtsai这个一般身份使用者去更新自己的密码时,使用的就是/usr/bin/passwd这个程序,却可以更新自己的密码,这就是s这个权限的帮助啦。当s这个权限在user的x时,也就是类似上表的-r-s--x--x,称为SetUID,简称SUID,这个UID代表的是User的ID,而User代表的则是这个程序(/usr/bin/passwd)的拥有者root。因此当dmtsai这个使用者执行/usr/bin/passwd时,他就会【暂时】地得到档案拥有人root的权限。SUID仅可用在【二进制档案(binaryfile)】上,SUID因为是程序在执行的过程中拥有档案拥有者的权限,因此,他仅可用于binaryfile,不能够用在批次档(shellscript)上面。这是因为shellscript只是将很多的binary执行档叫进来执行而已。所以SUID的权限部分,还是要看shellscript呼叫进来的程序的设定,而不是shellscript本身。当然SUID对于目录也是无效的。SetGID如果s的权限是在group时,那么就是SetGID,简称SGID。它可分两个部分。档案:如果SGID是设定在binaryfile上面,则不论使用者是谁,在执行该程序的时候,他的有效群组(effectivegroup)将会变成该程序的群组所有人(groupid)。目录:如果SGID是设定在A目录上,则在该A目录内所建立的档案或目录的group,将会是此A目录的group。SBIT这个目前只针对目录有效,对于档案已经没有效果了。它对于目录的作用是:【在具有SBit的目录下,使用者若在该目录下具有w及x的权限,则当使用者在该目录下建立档案或目录时,只有档案拥有者与root才有权限删除】。举例来说,/tmp本身的权限是【drwxrwxrwx】,在这样的权限下,任何人都可以在/tmp内新增、修改档案,但仅有该档案/目录建立者与root能够删除自己的目录或档案。我们可以做个简单的测试:以root进入/tmp当中:touchtest,并且更改test权限成为777;以一般使用者登入,并进入/tmp;尝试删除test这个档案!4、SUID/SGID/SBIT权限设定4为SUID2为SGID1为SBIT假设要将一个档案属性改为【-rwsr-xr-x】时,由于s在使用者权限中,所以是SUID,因此在原先的755之前还要加上4,也就是:【chmod4755filename】来设定。此外,还有大S与大T的产生。10.档案类型:file这个指令可以知道某个档案的基本数据类型11.档案的搜寻:which,whereis,locate,find通常我们都是先使用whereis或者locate来检查,如果真的找不到,才以find来搜寻,因为whereis与locate是利用数据库来搜寻数据,所以相当地快速,而且并没有实际的搜寻硬盘,比较省时间。Which(寻找【执行档】)这个指令是根据【PATH】这个环境变量所规范的路径,去搜寻【执行档】的档名,重点是找出【执行档】而已!且which后面接的是【完整档名】。若加上–a参数,则可以列出所有的可以找到的同名执行文件,而非仅显示第一个而已!Whereis(寻找特定档案)因为Linux系统会将系统内所有档案都记录在一个数据库里面,当使用whereis或者是底下要说的locate时,都会以此数据库的内容为准,因此,有时候使用这两个执行档时,会找到已经被杀掉的档案,而且也找不到最新的刚刚建立的档案。另外,基本上Linux每天会针对主机上所有档案的所在进行搜寻数据库的更新,更新的程序就是updatedb,当然,也可以直接使用/usr/bin/updatedb来更新数据库档案。locate这个locate的使用更简单,直接在后面输入【档案的名称】后,就能得到结果。比如输入locatepasswd,那么在完整文件名(包含路径名称)当中,只要有passwd在其中,就会被显示出来的。这个指令还有使用上的限制,因为它是经由数据库来搜寻的,而数据库的建立是预设在每一天执行一次(每个distribution都不同),所以你新建立起来的档案,却还在数据库更新之前搜寻该档案,那么locate就会提示找不到。find范例一:将过去系统上面2
本文标题:Linux档案属性与目录配置(二)
链接地址:https://www.777doc.com/doc-2884918 .html