《鸟哥的Linux私房菜基础学习篇》总结,本文为第二部分:Linux文件、目录与磁盘格式(5-8章)
5 Linux的文件权限与目录配置
- Linux 的每个文件中,可分别给予使用者、用户组与其他人三种身份个别的 rwx 权限;
- 用户组最有用的功能之一,就是当你在团队开发资源的时候,且每个账号都可以有多个用户组的支持;
- 利用 ls -l 显示的文件属性中,第一个字段是文件的权限,共有十个位,第一个位是文件类型, 接下来三个为一组共三组,为使用者、用户组、其他人的权限,权限有 r,w,x 三种;
- 如果档名之前多一个
.
,则代表这个文件为隐藏文件; - 若需要 root 的权限时,可以使用
su
这个指令来切换身份。处理完毕则使用 exit 离开 su 的指令环境。 - 更改文件的用户组支持可用
chgrp
,修改文件的拥有者可用chown
,修改文件的权限可用chmod
; chmod
修改权限的方法有两种,分别是符号法与数字法,数字法中 r,w,x 分数为 4,2,1;- 对文件来讲,权限的性能为:
- r:可读取此一文件的实际内容,如读取文本文件的文字内容等;
- w:可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
- x:该文件具有可以被系统执行的权限;
- 对目录来说,权限的性能为:
- r :读取目录中的内容;
- w:修改目录中的内容;
- x:访问目录;
- 要开放目录给任何人浏览时,应该至少也要给予 r 及 x 的权限,但 w 权限不可随便给;
- 能否读取到某个文件内容,跟该文件所在的目录权限也有关系 (目录至少需要有 x 的权限);
- Linux 档名的限制为:单一文件或目录的最大容许文件名为 255 个英文字符或 128 个汉字字符;
- 根据 FHS 的官方文件指出, 他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下;
- FHS 制定出来的四种目录为:shareable, unshareable, static, variable;
- FHS 所定义的三层主目录为:/, /var, /usr;
- 绝对路径文件名为从根目录 / 开始写起,否则都是相对路径的文件名。
6 Linux文件与目录管理
第一部分 权限与指令间的关系
- 让用户能进入某目录成为可工作目录的基本权限?
- 可使用的指令:例如 cd 等变换工作目录的指令;
- 目录所需权限:用户对这个目录至少需要具有 x 的权限;
- 额外需求:如果用户想要在这个目录内利用 ls 查阅文件名,则用户对此目录还需要 r 的权限;
- 用户在某个目录内读取一个文件的基本权限?
- 可使用的指令:例如本章谈到的 cat, more, less 等等;
- 目录所需权限:用户对这个目录至少需要具有 x 权限;
- 文件所需权限:使用者对文件至少需要具有 r 的权限;
- 让用户可以修改一个文件的基本权限?
- 可使用的指令:例如 nano 或未来要介绍的 vi 编辑器等;
- 目录所需权限:用户在该文件所在的目录至少要有 x 权限;
- 文件所需权限:使用者对该文件至少要有 r, w 权限
- 让一个用户可以建立一个文件的基本权限为何?
- 目录所需权限:用户在该目录要具有 w,x 的权限,重点在 w;
- 让用户进入某目录并执行该目录下的某个指令之基本权限?
- 目录所需权限:用户在该目录至少要有 x 的权限;
- 文件所需权限:使用者在该文件至少需要有 x 的权限。
第二部分 重点回顾
- 绝对路径:一定由根目录
/
写起,相对路径:不由 / 写起,而是由相对当前目录写起; - 特殊目录有:., …, -, ~, ~account 需要注意;
- 与目录相关的指令有:
cd, mkdir, rmdir, pwd
等重要指令;rmdir
仅能删除空目录,要删除非空目录需使用rm -r
指令;
- 用户能使用的指令是依据 PATH 变量所规定的目录去搜寻的;
ls
可以检视文件的属性,尤其 -d, -a, -l 等选项特别重要;- 文件的复制、删除、移动可以分别使用:
cp, rm , mv
等指令来操作; - 读文件可使用的指令包括有:
cat, tac, nl, more, less, head, tail, od
等;- cat -n 与 nl 均可显示行号,但默认的情况下,空白行会不会编号并不相同;
- touch 的目的在修改文件的时间参数,但亦可用来建立空文件;
- 一个文件记录的时间参数有三种,分别是 access time(atime), status time (ctime), modification time(mtime),ls默认显示的是 mtime;
- 除了传统的 rwx 权限之外,在 Ext2/Ext3/Ext4/xfs 文件系统中,还可以使用 chattr 与 lsattr 设定及观察隐藏属性。 常见的包括只能新增数据的 +a 与完全不能更动文件的 +i 属性;
- 新建文件/目录时,新文件的预设权限使用 umask 来规范,默认目录完全权限为 drwxrwxrwx, 文件则为-rw-rw-rw-。
- 文件具有 SUID 的特殊权限时,代表当用户执行此一 binary 程序时,在执行过程中用户会暂时具有程序拥有者的权限
- 目录具有 SGID 的特殊权限时,代表用户在这个目录底下新建的文件之群组都会与该目录的组名相同。
- 目录具有 SBIT 的特殊权限时,代表在该目录下用户建立的文件只有自己与 root 能够删除!
- 观察文件的类型可以使用
file
指令来观察; - 搜寻指令的完整文件名可用
which 或 type
,这两个指令都是通过 PATH 变量来搜寻文件名; - 搜寻文件的完整档名可以使用
whereis
找特定目录或locate
到数据库去搜寻,而不实际搜寻文件系统; - 利用
find
可以加入许多选项来直接查询文件系统,以获得自己想要知道的档名。
7 Linux磁盘与文件系统管理
- 一个可以被挂载的数据通常称为文件系统(filesystem),而不是分区 (partition) ;
- 挂载:利用一个目录当成进入点,将磁盘分区/文件系统的数据放置在该目录下,也就是进入该目录就可以读取分区;
- Linux 的传统文件系统为 Ext2 ,该文件系统内的信息主要有:
- superblock:记录此 filesystem 的整体信息,包括 inode/block 的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;
- inode:记录文件的属性,一个文件占用一个 inode,同时记录此文件的数据所在的 block 号码;
- block:实际记录文件的内容,若文件太大时,会占用多个 block ;
- Ext2 文件系统的数据存取为索引式文件系统(indexed allocation);
- 需要碎片整理的原因就是文件写入的 block 过于离散,此时文件读取的性能将会变的很差,这个
- 时候可以透过碎片整理将同一个文件所属的 blocks 汇整在一起;
- Ext2 文件系统主要有:boot sector, superblock, inode bitmap, block bitmap, inode table, data block 等六大部分;
- data block 是用来放置文件内容数据地方,在 Ext2 文件系统中所支持的 block 大小有 1K, 2K 及 4K 三种;
- inode 记录文件的属性/权限等数据,其他重要项目为: 每个 inode 大小均为固定,有 128/256bytes 两种基本容量,每个文件都仅会占用一个 inode ; 因此文件系统能够建立的文件数量与 inode 的数量有关;
- 文件的 block 记录文件的实际数据,目录的 block 则记录该目录底下文件名与其 inode 号码的对照表;
- 日志式文件系统 (journal) 会多出一块记录区,随时记载文件系统的主要活动,可加快系统复原时间;
- Linux 文件系统为增加性能,会让内存作为大量的磁盘高速缓存;
- 链接:
- 硬链接只是多了一个文件名对该 inode 号码的链接而已;
- 符号链接就类似 Windows 的快捷方式功能;
- 磁盘的使用必需要经过:分区、格式化与挂载,分别惯用的指令为:gdisk, mkfs, mount 三个指令;
- 开机自动挂载可参考/etc/fstab 的设定,设定完毕务必使用 mount -a 测试语法正确否。
8 文件与文件系统的压缩
- 压缩指令为通过一些运算方法去将原本的文件进行压缩,以减少文件所占用的磁盘容量。 压缩前与压缩后的文件所占用的磁盘容量比值, 就可以被称为是压缩比;
- 压缩文件案的扩展名大多是:*.gz, *.bz2, *.xz, *.tar, *.tar.gz, *.tar.bz2, *.tar.xz;
- 常见的压缩指令有 gzip, bzip2, xz,压缩率最佳的是 xz,若可以不计时间成本,建议使用 xz 进行压缩;
tar
可以用来进行文件打包,并可支持 gzip, bzip2, xz 的压缩;- 压缩:
tar -Jcv -f filename.tar.xz 要被压缩的文件或目录名称
; - 查询:
tar -Jtv -f filename.tar.xz
; - 解压缩:
tar -Jxv -f filename.tar.xz -C 欲解压缩的目录
;
- 压缩:
xfsdump
指令可备份文件系统或单一目录;xfsdump
的备份若针对文件系统时,可进行 0-9 的 level 差异备份,其中 level 0 为完整备份;xfsrestore
指令可还原被xfsdump
创建的备份文件;- 要建立光盘刻录数据时(即iso镜像文件),可通过
mkisofs
指令来创建; - 可通过
wodim
来写入 CD 或 DVD 刻录机; dd
可备份完整的硬盘或硬盘分区,因为 dd 可读取磁盘的扇区表面数据;cpio
为相当优秀的备份指令,不过必须要搭配类似find
指令来读入欲备份的文件名数据,方可进行备份操作。