(七)Linux文件与目录管理
(七)Linux文件与目录管理
1. 目录的相关操作:
cd (Change Directory) pwd (Print Working Directory) mkdir (make directory) rmdir (remove directory)2. 环境变量 PATH
当我们在运行一个命令的时候,举例来说『ls』好了,系统会依照PATH的配置去每个PATH定义的目录下搜寻档名为ls的可运行档。将/root加入PATH:PATH=”$PATH”:/root。
3. 文件与目录的检视(ls)
默认显示非隐藏档的档名、以档名进行排序及档名代表的颜色显示。
-a:全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来
-d:仅列出目录本身,而不是列出目录内的文件数据
-l:长数据串列出,包含文件的属性与权限等等数据
4. 复制、删除与移动:cp, rm, mv
cp (复制文件或目录)-a:相当于 -pdr 的意思,至于 pdr 请参考下列说明
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)
-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身
-r:递回持续复制,用于目录的复制行为
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行
rm (移除文件或目录)-f:就是 force 的意思,忽略不存在的文件,不会出现警告信息
-i:互动模式,在删除前会询问使用者是否动作
-r:递回删除啊!最常用在目录的删除了!
mv (移动文件与目录,或更名)-f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i:若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u:若目标文件已经存在,且 source 比较新,才会升级 (update)
5. 取得路径的文件名称与目录名称:
basename : 取得档名dirname:取得目录名
6. 文件内容查阅
①cat 由第一行开始显示文件内容
②tac 从最后一行开始显示,可以看出 tac 是cat 的倒著写
③nl 显示的时候,顺道输出行号
④more 一页一页的显示文件内容
⑤less 与 more 类似,但是比 more 更好的是,他可以往前翻页
⑥head 只看头几行
⑦tail 只看尾巴几行
⑧od 以二进位的方式读取文件内容
⑴直接检视文件内容
cat (concatenate)-A:相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b:列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E:将结尾的断行字节 $ 显示出来;
-n:列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T:将 [tab] 按键以 ^I 显示出来;
-v:列出一些看不出来的特殊字符
tac (反向列示)cat 是由『第一行到最后一行连续显示在萤幕上』,而 tac 则是『 由最后一行到第一行反向在萤幕上显示出来』,其余 相同。
nl (添加行号列印)-b :指定行号指定的方式,主要有两种:
-ba :表示不论是否为空行,也同样列出行号(类似 cat -n)
-bt :如果有空行,空的那一行不要列出行号(默认值)
-n:列出行号表示的方法,主要有三种:
-n ln :行号在萤幕的最左方显示
-nrn :行号在自己栏位的最右方显示,且不加 0
-nrz :行号在自己栏位的最右方显示,且加 0
-w :行号栏位的占用的位数
⑵可翻页检视
more (一页一页翻动)空白键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f :立刻显示出档名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该文件内容。
b或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less (一页一页翻动)空白键 (space):代表向下翻一页;
[pagedown]:向下翻动一页;
[pageup]: 向上翻动一页;
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关)
N :反向的重复前一个搜寻 (与 / 或 ? 有关)
q :离开 less 这个程序;
⑶数据撷取
head (取出前面几行)-n :后面接数字,代表显示几行
tail (取出后面几行)-n :后面接数字,代表显示几行的意思
-f :持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
⑷非纯文字档
od-t :后面可以接各种『类型 (TYPE)』的输出,例如:
a :利用默认的字节来输出;
c :使用 ASCII 字节来输出 d[size] :利用十进位(decimal)来输出数据,每个整数占用 size bytes ;
f[size]:利用浮点数值(floating)来输出数据,每个数占用 size bytes ;
o[size] :利用八进位(octal)来输出数据,每个整数占用 size bytes ;
x[size]:利用十六进位(hexadecimal)来输出数据,每个整数占用 size bytes ;
7. 修改文件时间或建置新档: touch
modification time (mtime):
当该文件的『内容数据』变更时,就会升级这个时间!内容数据指的是文件的内容,而不是文件的属性或权限.。
status time (ctime):
当该文件的『状态 (status)』改变时,就会升级这个时间,举例来说,像是权限与属性被更改了,都会升级这个时间。
access time (atime):
当『该文件的内容被取用』时,就会升级这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man.config , 就会升级该文件的 atime 了。
8. 文件默认权限:umask(User's MASK)
umask 就是指定 『目前使用者在创建文件或目录时候的权限默认值』,-S以符号类型的方式来显示出权限。若要修改默认权限,umask后空格再加数字即可。
在默认权限的属性上,目录与文件是不一样的。创建文件时,默认没有x。默认权限为-rw-rw-rw-。创建目录时,默认权限为drwxrwxrwx。
注意:umask 的分数指的是『该默认值需要减掉的权限』。例如当umask为022时:
创建文件时:(-rw-rw-rw-) -(-----w--w-) ==> -rw-r--r--
创建目录时:(drwxrwxrwx) -(d----w--w-) ==> drwxr-xr-x
9. 文件隐藏属性
chattr (配置文件隐藏属性)该命令只能在Ext2/Ext3的文件系统上面生效
lsattr (显示文件隐藏属性)
10. 文件特殊权限: SUID, SGID, SBIT
Set UID
当 s 这个标志出现在User的 x 权限上时,就被称为 Set UID,简称为 SUID 的特殊权限。限制和功能如下:
SUID 权限仅对二进位程序(binary program)有效
运行者对于该程序需要具有 x 的可运行权限
本权限仅在运行该程序的过程中有效 (run-time)
运行者将具有该程序Uesr 的权限
例如:/etc/shadow 这个文件存储着所有的账号密码,它的权限为:『-r-------- 1 root root』,即这个文件仅有root可读且仅有root可以强制写入。但是一般使用者也可以修改自己的密码,即修改修改这个文件。这就是 SUID 的功能的体现,passwd的User是root,,所以一般用户运行 passwd 修改密码的过程中,会暂时获得root权限。但是一般用户不能用cat去读取/etc/shadow.
Set GID
当 s 这个标志出现在Group的 x 权限上时,就被称为 Set UID,简称为 SUID 的特殊权限,限制和功能如下:
SGID 对二进位程序有用
程序运行者对于该程序来说,需具备 x 的权限
运行者在运行的过程中将会获得该程序Group的支持
除了 binary program 之外,事实上 SGID 也能够用在目录上,这也是非常常见的一种用途。当一个目录配置了 SGID 的权限后,他将具有如下的功能:
使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录
使用者在此目录下的有效群组(effective group)将会变成该目录的群组
用途:若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同。
Sticky BitSticky Bit, SBIT 目前只针对目录有效,其作用如下:
当使用者对于此目录具有 w, x 权限,亦即具有写入的权限时
当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件
SUID/SGID/SBIT 权限配置数字型态更改权限的方式为『三个数字』的组合,在这三个数字之前再加上一个数字的话,最前面的那个数字就代表这几个权限。
4 为 SUID 2 为 SGID 1 为 SBIT
例如要将一个文件权限改为『-rwsr-xr-x』时,由于 s 在使用者权限中,所以是 SUID ,因此, 在原先的 755 之前还要加上 4 ,也就是:『chmod 4755 filename 』来配置。
注意:文件权限会出现S 和 T 的情况,原因是s 和 t 都是取代 x 权限的,但是当没有 x 存在的时候,若在设置成 SUID , SGID , SBIT ,就会用 S 和 T 来表示 空。
除了数字法之外,你也可以透过符号法来处理。其中 SUID 为 u+s ,而 SGID 为 g+s ,SBIT 则是 o+t 。
11. 观察文件类型:file
12. 命令档名的搜寻:which (寻找『运行档』)
which 用于搜寻命令的完整档名的位置,根据『PATH』这个环境变量所规范的路径,去搜寻『运行档』的档名。
13. 文件档名的搜寻:whereis ,locate,find
通常find不常用,速度慢且直接搜寻硬盘,whereis和locate是利用数据库来搜寻数据,所以相当的快速,而且并没有实际的搜寻硬盘,比较省时间。
whereis (寻找特定文件) locate(文件部分名称)locate寻找数据是由已创建的数据库 /var/lib/mlocate/』 里面的数据所搜寻到的,不用直接在去硬盘当中存取数据。
手动更新数据库的方式:直接输入『 updatedb 』。
updatedb:根据 /etc/updatedb.conf 的配置去搜寻系统硬盘内的档名,并升级/var/lib/mlocate内的数据库文件;
locate:依据 /var/lib/mlocate 内的数据库记载,找出使用者输入的关键字档名。
find
13. 命令与权限之间的关系
一、让使用者能进入某目录成为『可工作目录』的基本权限为何:
· 可使用的命令:例如 cd 等变换工作目录的命令;
· 目录所需权限:使用者对这个目录至少需要具有 x 的权限
· 额外需求:如果使用者想要在这个目录内利用 ls 查阅档名,则使用者对此目录还需要 r 的权限。
二、使用者在某个目录内读取一个文件的基本权限为何?
· 可使用的命令:例如本章谈到的 cat, more, less等等
· 目录所需权限:使用者对这个目录至少需要具有 x 权限;
· 文件所需权限:使用者对文件至少需要具有 r 的权限才行!
三、让使用者可以修改一个文件的基本权限为何?
· 可使用的命令:例如 nano 或未来要介绍的 vi 编辑器等;
· 目录所需权限:使用者在该文件所在的目录至少要有 x 权限;
· 文件所需权限:使用者对该文件至少要有 r, w 权限
四、让一个使用者可以创建一个文件的基本权限为何?
· 目录所需权限:使用者在该目录要具有 w,x 的权限,重点在 w 啦!
五、让使用者进入某目录并运行该目录下的某个命令之基本权限为何?
· 目录所需权限:使用者在该目录至少要有 x 的权限;
· 文件所需权限:使用者在该文件至少需要有 x 的权限
评论暂时关闭