美文网首页
六、Linux档案与目录管理

六、Linux档案与目录管理

作者: 努力爬行中的蜗牛 | 来源:发表于2017-11-27 17:33 被阅读10次

    1、目录与路径

    1.1、相对路径与绝对路径

    • 相对路径:路径的写法一定由根目录/写起,例如/usr/share/doc
    • 绝对路径:路径的写法不是由/写起;
      绝对路径的正确度比较好。

    1.2、目录的相关操作:cd,pwd,mkdir,rmdir

    • . 代表此层目录
    • .. 代表上一层目录
    • - 代表前一个工作目录
    • ~ 代表目前用户身份所在的家目录
      -~ account 代表account这个用户的家目录(account是这个账号的名称)
      cd:变换目录
      pwd:显示目前所在的目录 pwd 【-P】
      mkdir:建立新目录 mkdir 【-mp】
      mkdir test1
      mkdir -m 711 testing
      rmdir:删除空的目录 mkdir 【-p】
      rmdir test1
      注意:rmdir只能删除空的目录

    1.3、关于执行文件路径的变量:$PATH

    1)当我们执行一个指令的时候,例如ls,系统会依照PATH的设定去每个PATH的定义的目录下搜寻文件名为ls的可执行文件,如果在PATH定义的目录中含有多个文件名为ls的可执行文件,那么先搜寻到的同名指令先被执行
    2)echo $PATH 查看哪些目录被定义出来了,$表示后面接的是变量
    3)将/root 加入到PATH目录:PATH="$PATH":/root

    注意:

    • 不同身份使用者预设的PATH不同,默认能够随意执行的指令也不同;
    • PATH是可以修改的,所以一般使用者还是可以透过修改PATH来执行位于/sbin或/usr/sbin下的指令来查询;
    • 使用绝对路径或相对路径直接指定某个指令的文件名来执行,会比搜索PATH来的正确;
    • 指令应该放置到正确的目录下,执行才会比较方便;
    • 本目录(.)最好不要放置到PATH当中;

    2、档案与目录管理

    档案与目录的管理,主要包括显示属性、拷贝、删除档案以及移动档案或目录;

    2.1、档案与目录的检视:ls

    ls 【-aAdfFhilnrRSt】 目录名称
    ls 【--color={never,auto,always}】 目录名称
    ls 【--full-time】 目录名称

    2.2、复制、删除与移动:cp,rm,mv

    • cp:复制档案或目录
      cp 【-adfilprsu】来源文件 目标文件
      cp ~/.bashrc /tmp/bashrc
    • rm:移除档案或目录
      rm 【fir】档案或目录
    • mv:移动档案与目录,或更名
      mv 【fiu】source destination
      注:mv还可以用于变更档名 mv mvtest mvtest2

    2.3、取得路径的文件名与目录名称

    用斜线"/"来分辨档案和目录;
    basename /etc/sysconfig/network 获取到最后的档名
    dirname /etc/sysconfig/network 取得目录名

    3、档案内容查阅

    最长使用的显示档案内容的指令可以说是cat,more和less了。此外,如果要查看一个很大型对的档案(好几百兆),但是我们只需要后端的几行字而已,用tail,才外tac这个指令也可以达到;

    • cat 由第一行开始显示档案内容;
    • tac 从最后一行开始显示,可以看出tac是cat的倒着写;
    • nl 显示的时候,顺道输出行号;
    • more 一页一页的显示档案内容;
    • less与more类似,但比more更好的是,可以往前翻页;
    • head 只看头几行;
    • tail 只看尾巴几行;
    • od 以二进制的方式读取档案内容

    3.1、直接检视档案内容:cat,tac,nl

    • cat cat 【-AbEnTv】档案
    • nl:添加行号打印 nl 【-bnw】 档案

    3.2、可翻页检视:more,less

    • more:一页一页翻动
      例如:more /etc/man.config
      空格键(space):代表向下翻一页
      Enter:代表向下翻一行
      /字符串:代表在这个现实的内容当中,向下搜寻字符串
      :f 立刻显示出文件名机目前显示的行数
      q:离开
      b:代表往回翻页,只对档案有用,对管线无用
    • less:一页一页翻动
      例如:less /etc/man.config
      空格键:向下翻动一页
      pagedown:向下翻动一页
      pageup:向上翻动一页
      /字符串:向下搜寻字符串的功能;
      ?字符串:向上搜寻字符串的功能;
      n:重复前一个搜寻
      N:反向的重复前一个搜寻
      q:离开

    3.3、资料截取:head,tail

    • head:取出前面几行
      head 【-n number】 档案
      例如:head -n 20 /ect/man.config
    • tail:取出后面几行
      tail 【-n number】 档案
      例如:tail /etc/man.config

    3.4、非纯文本:od

    od 【-t TYPE】 档案
    -t:后面可接各种类型的输出;
    a:利用默认的字符来输出;
    c:使用ASCII字符来输出;
    d:利用十进制来输出数据;
    f:利用浮点数来输出数据;
    o:利用八进制来输出数据;
    x:利用十六进制来输出数据;

    3.5、修改档案时间与建制新档:touch

    • modification time (mtime):当改档案的内容数据变更时,就会更新这个时间,内容数据指的是档案的内容,而不是档案的属性或权限;
    • status time (ctime):当该档案状态改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间;
    • access time (atime)当该档案的内容被取用时,就会更显这个读取时间;
      touch 【acdmt】 档案
      功能:建立一个空的档案;将某个档案日期修订为目前(mtime与atime)

    4、档案与目录的默认权限与隐藏权限

    除了基本r,w,x权限外,在Linux的Ext2、Ext3文件系统下,我们还可以设定其他的系统隐藏属性,这部分可以使用chattr来设定,而以lsattr来查看,最重要的属性就是可以设定其不可修改的特性,让档案的拥有者都不能进行修改;

    4.1、档案预设权限:umask

    umask:就是指定用户在建立档案或目录时候的权限默认值;
    umask
    umask -S
    umask的分数指的是该默认值需要减掉的权限;
    预设情况:

    • 若使用者建立为档案,则预设没有可执行x权限,即只有rw这两个项目,也就是最大为666,预设权限:-rw-rw-rw
    • 若用户建立为目录,则由于x与是否可以进入此目录有关,因此默认所有权限均开启,即777分,预设权限:drwxrwxrwx
      例如:umask 002

    4.2、档案隐藏权限:chattr,lsattr

    • chattr:配置文件案隐藏属性
      chattr 【+-=】【ASacdistu】档案或目录名称
    • lsattr:显示档案隐藏属性
      lsattr 【-adR】档案或目录

    4.3、档案特殊权限:SUID,SGID,SBIT权限设定

    • SUID:Set UID
      当 s 这个标志出现在档案拥有者的 x 权限上时
      例如: -rwsr-xr-x
      SUID 权限仅对二进制程序(binary program)有效;
      执行者对于该程序需要具有 x 的可执行权限;
      本权限仅在执行该程序的过程中有效 (run-time);
      执行者将具有该程序拥有者 (owner) 的权限
    • Set GID
      当s标志在档案拥有者的x项目为SUID,那s在群组的x时则称为SGID
      例如:-rwx--s--x
      与 SUID 不同的是,SGID 可以针对档案或目录来设定!如果是对档案来说, SGID 有如下的功能:
      SGID 对二进制程序有用;
      程序执行者对于该程序来说,需具备 x 癿权限;
      执行者在执行的过程中将会获得该程序群组的支持!
      除了 binary program 之外,事实上 SGID 也能够用在目录上,这也是非常常见的一种用途! 当一个 目录设定了 SGID 的权限后,他将具有如下的功能:
      用户若对于此目录具有 r 不 x 的权限时,该用户能够进入此目录;
      用户在此目录下的有效群组(effective group)将会变成该目录的群组;
      用途:若用户在此目录下具有 w 的权限(可以新建档案),则使用者所建立的新档案,该新档案的群组与此目录的群组相同。
    • SBIT:只针对档案有效,对目录已经没有效果了
      当用户对于此目录具有 w, x 权限,亦卲具有写入的权限时;
      当用户在该目录下建立档案或目录时,仅有自己不 root 才有权力删除该档案
    • SUID/SGID/SBIT权限的设定
      在三个数字之前在加上一个数字的话,最前面的那个数字即代表这几个权限了
      SUID:4,SGID:2,SBIT:1
      例如:chmod 4755 filename
      另外还有大S和大T产生的

    4.4、观察文件类型:file

    如果想要知道某个档案的基本数据,例如是属于ASCII或者是data档案,或者是binary,且其中有没有用到动态函式库等信息,就可以用file这个指令来检阅;
    例如:file ~/.bashrc

    5、指令与档案的搜寻

    5.1、脚本文件名的搜寻:which

    which:寻找执行档
    which 【a】 commod

    5.2、档案档名的搜寻:whereis,locate,find

    • whereis:寻找特定档案
      whereis 【-bmsu】 档案或目录名
      Linux系统会将系统内的所有档案都记录在一个数据库档案里面,而当使用whereis或者locate时,都会以此数据库档案的内容为准;
    • locate
      locate 【-ir】keyword
      使用locate是有限制的:
      因为他是经由数据库来搜寻的,而数据库的建立默认是在每天执行一次 (每个 distribution 都不同,CentOS 5.x 是每天更新数据库一次!),所以当你新建立起来的档案, 即还在数 据库更新之前搜寻该档案,那么 locate 会告诉你『找不到!』呵呵!因为必须要更新数据库呀!
      更新数据库方法:updatedb
    • find
      find 【PATH】【option】【action】

    6、权限与指令间的关系(极其重要)

    • 让用户能进入某目录称为可工作目录的基本权限
      可使用的指令:例如 cd 等变换工作目录指令;
      目录所需权限:用户对这个目录至少需要具有 x 的权限
      额外需求:如果用户想要在这个目录内利用 ls 查阅文件名,则用户对此目录还需要 r 的权限。
    • 用户在某个目录内读取一个档案的基本权限为何?
      可使用的指令:例如本章谈到的 cat, more, less 等等
      目录所需权限:用户对这个目录至少需要具有 x 权限;
      档案所需权限:使用者对档案至少需要具有 r 的权限才行!
    • 让使用者可以修改一个档案的基本权限为何?
      可使用的指令:例如 nano 或未来要介绍的 vi 编辑器等;
      目录所需权限:用户在该档案所在的目录至少要有 x 权限;
      档案所需权限:使用者对该档案至少要有 r, w 权限
    • 让一个使用者可以建立一个档案的基本权限为何?
      目录所需权限:用户在该目录要具有 w,x 的权限,重点在 w 啦!
    • 让用户进入某目录并执行该目录下的某个指令之基本权限为何?
      目录所需权限:用户在该目录至少要有 x 的权限;
      档案所需权限:使用者在该档案至少需要有 x 的权限

    相关文章

      网友评论

          本文标题:六、Linux档案与目录管理

          本文链接:https://www.haomeiwen.com/subject/uobpvxtx.html