六、Linux档案与目录管理

2017-11-27  本文已影响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这个指令也可以达到;

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 的权限
上一篇下一篇

猜你喜欢

热点阅读