第7章 Linux档案与目录管理
**相对路径与绝对路径**
绝对路径:路径的写法一定由根目录写起,例如:/usr/share/doc这个目录
相对路径:路径的写法不是由根目录写起,例如由/usr/share/doc要到/usr/share/man可以写成:cd ../man
相对路径可以减少寻找路径时的输入量,而绝对路径可以保证正确性
***目录的相关操作: .代表此层目录; ..代表上一层目录; -代表前一个工作目录; ~代表目前用户的根目录; ~account代表account这个用户的根目录
根目录的上一层和自己是同一个目录,属性和权限完全一致
处理目录的指令: cd:变换目录; pwd:显示当前目录; mkdir:建立一个新的目录; rmdir:删除一个空的目录
关于 -p
如果写出 mkdir -p /home/bird/testing/test1的指令能自动建立一系列的目录……但是这样如果打错字很容易造成目录的比较严重的错误,所以还是一个个按顺序自己建立吧
umask能让我们了解到新建目录的权限
rmdir只能删除“空”的目录哦,目录要从底到上一层层地删除, 如果要清空当前目录,用 rm -r test就好,不过比较危险的说
执行文件路径的变量:$PATH————————————————————————————
PATH是为了要下达一些指令比如说ls这样的,就搜寻一个目录里面可以执行的文件显示给用户了
用户当前目录是不会假如PATH搜寻的目标目录的,因为要防止恶意用户了
1、不同身份的用户默认的PATH不同,默认能够随意执行的指令也不同
2、PATH是可以修改的,所以一般用户可以通过修改PATH来执行某些位于/sbin或者/usr/sbin下的指令来查询
3、使用绝对路径或相对路径指定某个指令的文件名来执行,会比搜寻PATH来得正确
4、指令要放在正确的目录下,执行才会比较方便
5、本目录(.)最好不要放到PATH当中
-----------------------------------------------------------------------------------------------
档案和目录的查看: ls
ls在linux系统中,就相当于dir在windows系统中
要复制档案的话,就使用cp指令
不过cp也不是能够随便执行的了,在复制之前必须了解清楚被复制文件是否需要完整保留,是否为连接档,是否为特殊档案,是否为目录等
rm(移除档案或目录) mv(移动档案或目录,或更名) -u可以用来测试新旧档案,rename可以用来更改文件名
basename +路径,得到的是档案名,dirname +路径,得到的是目录名
------------------------------------------------------------------------
档案内容查阅:
cat(concatenate) 由第一行开始显示档案内容(后面可以加一些选项与参数的哦)
| ||||||
tac 从最后一行开始显示,可以看出tac是cat的倒写 | ||||||
nl 显示的时候,顺便输出行号 -b (a 列出空行行号; b 不列出空行行号) -n (ln左方显示;rn右方显示不加0;rz右方显示加0) -w (行号占用位数) | ||||||
more 一页一页的显示档案内容 | ||||||
less 与more相似,但是比more更好的是,他可以往前翻页 | ||||||
head 只看头几行 | ||||||
tail 只看最后几行 | ||||||
od 以二进制的方式读取档案内容 |
------------------------------------------
修改档案时间或新建档案: touch
一个档案下面,是有三个主要的时间哦——modification time(mtime)内容数据status time(ctime)状态时间access time(atime)读取时间
touch这个指令最常被用来使用:建立一个空的档案,将某个档案日期修订为目前
------------------------------------------------------------------
档案与目录的默认权限与隐藏权限
chattr可以设定系统的隐藏属性,而lsattr可以用来查看……
关于权限问题,看一下第六章的一个内容:如果系统有一个一般用户dmtsai,他的群组属于users,他的家目录在/home/dmtsai,作为root如果想要将~/.bashc复制给他,那么可以执行如下指令: 复制档案: cp ~/.bashrc ~dmtsai/bashrc 修改属性:chown dmtsai:users ~dmtsai/bashrc
chmod是什么指令呢?说是前一章有比较详细的介绍,不知道哦……待会儿去看看吧。?????
----------------------------------------------------------------------------
档案默认权限:umask(关于分数的一些计算方法)
直接输入这个指令出来一个四位数字表示数字形态的权限设定分数(一般权限有关的是后三位),加入一个-S(Symbolic)就会以符号类型的方式来显示出权限了。
若用户建立【档案】,则默认没有可执行权限x,那么最大值为666分 -rw-rw-rw-;
若用户建立【目录】,则默认为所有权限都开放,那么最大值为777分 drwxrwxrwx;
umask指的是“该默认值需要减掉的权限”,因为r、w、x分别是4、2、1分,所以输入的分数对应该位置上要禁止的权限。
----------------------------------------------------------------------------
档案的隐藏属性(chattr指令——配置文件隐藏属性只能在Ext2/Ext3文件系统上生效)
lsattr(显示文件隐藏属性) lsattr [-adR] 文件或目录
-a:显示隐藏文件的属性
-d:如果连接的是目录,仅列出目录本身的属性而非目录内的文件名
-R:同子目录的数据也一并列出来
----------------------------------------------------------------------------
档案特殊权限:SUID,SGID,SBIT
Set UID,即SUID是当s这个标志出现在档案拥有者的x权限上时。对于目录无效……它的限制与功能如下:1、SUID权限仅对二进制程序有效,2、执行者对于该程序需要具有x的权限,3、本权限仅在执行该程序的过程中有效,4、执行者将具有该程序拥有者的权限
Set GID,即SGID是当s这个标志出现在群组的x权限上时。它对于档案的限制与功能如下:1、SGID仅对二进制程序有效,2、程序执行着对于该程序具备x的权限,3、执行者在执行程序的过程中将会获得该程序群组的支持。 对于目录的功能:1、用户若对此目录具有r与x权限时,该用户能够进入此目录,2、用户在此目录下的有效群组将会变成该目录的群组,3、若用户在此目录下具有w的权限(可以新建档案),新档案的群组与该目录的群组相同。
Sticky Bit,即SBIT只对目录有效。它的限制与功能有:1、当用户对于此目录具有w和x权限,亦即具有写入的权限时,2.当用户在该目录下建立档案或目录时,仅有自己与root才有权力删除该档案
SUID/SGID/SBIT的权限设定
数字设定方法就是在三位数字形态的权限前面加一个数字:4为SUID,2为SGID,1为SBIT
------------------------------------------------------------------------
观察文件类型:file
脚本文件名的搜寻: which type(cd)
档案名称的搜寻: 通常使用whereis或者locate来检查,实在不行采用find
whereis和locate是在数据库中搜寻文件,相当快速,但是数据库的建立默认是经常有更新(不同distribution不一样,CentOS 5.x是每天一次),所以可能搜不到
手动更新数据库:updatedb
***********************************************************************************%¥#@
权限与指令间的关系:(极重要)
一、让用户能进入某目录成为【可工作目录】的基本权限:
1.可使用的指令,2.目录所需权限(至少x),3.额外需求
二、用户在某个目录内读取一个档案的基本权限:
1.可使用的指令,2.目录所需权限(至少x),3.档案所需权限(用户需要r)
三、让用户可以修改一个档案的基本权限:
1.可使用的指令,nano或vi等,2.目录所需权限(至少x),3.档案所需权限(用户至少需要r和w)
四、让用户可以建立一个档案的基本权限:
1.目录所需权限(用户在该目录需要x,w的权限,重在w)
五、让用户进入某目录并执行该目录下的某个指令的基本权限:
1.目录所需权限(至少x),2.档案所需权限(至少x)