1. 实验介绍1.1 实验内容本节实验从全局来了解 Linux 文件系统,主要介绍了 Linux 的 目录结构、文件存储、文件类型和属性、以及 常用的文件基本操作 。相信了解相关的知识之后对后面深入学习 Linux 会有很大的帮助。 1.2 实验知识点
2. Linux 文件系统2.1 文件系统介绍Linux 文件系统作为一个系统不仅包含了文件中的数据而且还有文件系统的这样的结构。且文件系统中的文件是数据的一个集合,所有 Linux 用户和程序看到的 文件、目录、软连接 及 文件保护信息 等存储在其中。 Linux 主要采用的是树形结构,与 windows 不同(每个分区都是一颗文件树,根节点为盘符),它是单一的一棵树,无论有多少分区,都包含在以 / 为根节点的树结构上。其中分区是物理的分区,目录则是逻辑上的区分。Linux 中每个分区都要挂载到目录树中一个具体的目录下才能访问,其中根目录必须挂载一个分区。 对于挂载就是 Linux 文件系统与一个存储设备关联起来的过程(后面会着重介绍)。 因为 Linux 是一个多用户系统,一个规范的目录有助于对系统文件和不同的用户文件进行统一管理。 2.2 文件系统组成
主要给事物对象命名,并按照一种层次结构来组织
主要用于查询和操作对象的一种系统调用
主要用于保护、共享和隐藏对象
主要用于逻辑模型和硬件系统连接起来 3. Linux 目录结构3.1 路径我们了解到 Linux 的目录结构是树形结构,最顶级的目录为根目录 /。而其他目录可以通过挂载将它们添加到树中,通过接触挂载溢出。所以在开始之前,我们先了解一些什么是绝对路径和相对路径。 在 Linux 实验环境操作中,我们和通过 cd 命令来切换路径,. 表示当前目录,.. 表示上一级目录,- 表示上一次所在目录,~ 通常表示当前用户的 home 目录。可以使用 pwd 命令可以获取当前所在路径(绝对路径)。 进入用户主目录:
转到上一级目录:
获取当前路径:
3.1.1 绝对路径在 Linux 中,绝对路径是从 / (也被称为根目录)开始的完整路径,比如:/usr、/etc/X11。
3.1.2 相对路径相对路径是以 . 或 .. 开始的,表示用户当前操作所处的位置,而 .. 表示上级目录,表示用户当前所处的目录。
3.2 文件树文件结构是文件存放在磁盘等存储设备上的组织方法。主要体现在对文件和目录的组织上。 Linux 的目录结构采用的是树形结构。最上层是根目录,其他的所有目录都是从根目录处罚而生成的。微软的 DOS 和 windows 也是采用树型结构,但是在 DOS 和 windows 中这样的树型结构的根是磁盘分区的盘符,有几个分区就有几个树型结构,他们之间的关系是并列的。但是在 Linux 中,无论操作系统管理几个磁盘分区,这样的目录树只有一个。从结构上将,各个磁盘分区上的树型目录不一定是并列的。 在 Linux 的目录结构中,用户的主目录通常是保存在一个单独的文件系统上,然后挂载到根目录下的一个目录。而像这样的文件系统布局都是遵守了文件系统层次结构标准(FHS,Filesystem Hierarchy Standard)。FHS 定义了系统中每个区域的用途、所需要的最小构成文件的目录同时还给出了例外处理与矛盾处理。 FHS 标准定义了 两层 规范: 第一层是:/ 下面的各个目录应该放什么文件数据,例如 /etc 应放置配置文件,/bin 与 /sbin 则应该放置可执行文件等。 第二层是:针对 /usr 和 /var 这两个目录的子目录来定义。例如 /var/log 放置系统登录文件,/usr/share 放置共享数据等等。 FHS 标准图
除了概念上去理解文件树,我们还可以通过命令来直观的来体会一下:
4. Linux 文件属性首先,我们先用命令 ls -al 来查看一下文件的详细信息。
从屏幕打印出来的信息我们可以知道,从左到右依次表示:文件类型和权限、硬连接数、所有者、所属组、文件大小、最后修改时间、文件名。 还有一个比较重要的概念就是 Linux 里面一切皆文件。 4.1 文件类型第一个字符代表的就是这个文件的类型,文件类型主要分为以下 7 种类型:
文本文件、数据文件、可执行程序等等都可作为普通文件存储。
目录中按照名字来对其他文件进行引用,用户通过 mkdir 创建目录,用 rmdir 来删除空目录,用 rm -r 来删除非空目录。
字符设备文件让相关的驱动程序作为输入输出的缓冲。
块设备文件有处理块数据的 I/O 的驱动程序使用,同时让内核提供缓冲。
实现进程间通信的连接,本地域套接口由系统调用 socket 创建,用 rm 或 unlink 删除。
让运行在同一主机上的两个进程相互通信,和 socket 相似,用 mknod 创建,用 rm 来删除。
也叫作 软连接,通过名字指向文件。用 ln -s 创建,用 rm 来删除。 4.2 Linux 文件权限4.2.1 概念接下来的字符,以三个为一组,且均为 rwx 的三个参数的组合,代表了 Linux 的读、写、执行三种权限控制。( r 代表可读(read)、w 代表可写(write)、x 代表可执行(execute),要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 。) 其中三为一组分别是所有者的权限(U,即 user)、所属组的权限(G,即group)、其他用户的权限(O、即 other)。 4.2.2 权限编码表 4-1
表 4-2
4.2.3 chmod:改变文件或目录权限语法
选项说明: —reference=RFILE:根据参考文档设置权限 -R:递归的将权限应用于所有的子目录和子文件
我们首先通过 ls -l 命令来查看一下 install.log 的文件,然后用 chmod 命令的三种不同的形式来修改文件所有权、所属组权限和其他人权限。
在 chmod 命令参数中,u 代表所有者,g 代表所属组,o 代表其他用户,a 代表所有人。 修改 install.log 文件的权限设置成为全部为可读、可写、可执行。
操作符形式是在字符形式的基础上来对文件或目录使用 +/- 操作符来设置权限。 通过 + 符号增加相应的权限,- 符号减去相应的权限。
4.2.4 chown:改变归属关系chown 命令主要用于改变属主的所有权,语法和 chmod 类似。
4.2.5 chgrp:改变归属组chgrp 命令是改变文件或目录的数组的所有权,语法和 chmod 类似。
补充: chown 可以一次同时改变所属者和所属组。
4.2.6 umask:默认权限umask 主要用来设置用户创建文件的默认权限,它与 chmod 的效果刚好相反,umask 设置的是权限"补码",而 chmod 设置的是文件权限码。一般在 /etc/profile、$[HOME]/.bash_profile 或 $[HOME]/.profile 中设置 umask 值。 那么如何计算 umask 值相应的文件和睦路缺省创建权限是多少呢? 具体步骤如下: 第一步,先写下具有全部权限的模式,即 777 (所有用户都具有读、写和执行权限)。 第二步,在下面一行按照 umask 值写下相应的位。 第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。 第四步,而对于文件来说,在创建时不能具有执行权限,只要拿掉相应的执行权限即可。 eg:我们来做个联系,假设 umask 值为 022:
5. Linux 文件操作5.1 查看文件5.1.1 ls 命令在这之前我们已经多次接触了这个命令,如你所见,他的主要作用就是用来显示当前目录下的文件信息,当然在带参数的情况下,他就能用来查看文件权限或者其他更为详细的信息。 用长格式来显示文档的详细信息。(包括文件的类型和权限、硬链接数、所有者、所属组、文件大小、最后修改时间和文件名)
显示所有,包括隐藏文件和目录
5.1.2 cat 命令用来查看文件的命令 查看文件 /etc/passwd,参数 -n 表示显示行号,包括空白行。
5.1.3 tac命令用来打印文件内容到标准输出(终端),和 cat 正好相反,为倒序显示。
5.1.4 more & less 命令这两个命令都是分页查看文件内容,通过空格键查看下一页,q 键退出,不过 less 还可以通过方向键来上下回翻。不过和前面的 cat 相比这两个命令更像是一个用来阅读文件内容的。
5.1.5 grep 命令查找关键字并打印匹配的行。 在 /etc/passwd 文件中过滤出包含 sh 的行。
5.1.6 head & tail 命令head 用来显示文件的开头的内容。在默认情况下,head 命令显示文件的前 10 行内容。 语法
eg:显示前 3 行内容
tail 用来输入文件中的尾部内容,tail 命令默认在屏幕上显示指定文件的末尾 10 行。 语法
eg:显示末尾 3 行内容
5.2 操作文件5.2.1 touch 命令用来创建空白文件,也可以用来更改已有文件的时间戳。
5.2.2 mkdir 命令用来创建一个空目录,也可以指定创建目录的权限属性。
5.2.3 cp 命令用来复制文件和目录 将之前创建的 hello.txt 文件复制到 /home/shiyanlou/hello/shi/yan/lou 目录中。
直接复制目录的时候会出现一些错误,所以需要加上 -r 或 -R 参数,表示递归复制。
5.2.4 rm 命令用来删除文件或目录 删除文件 hello.txt
有时候使用删除命令时,会出现一些提示,若想忽略不提示,则使用参数 -f 来强制删除。
删除目录和复制的操作相似,都需要加上 -r 或 -R 参数
5.2.5 mv 命令移动或者重命名文件或目录
重命名文件
5.2.6 du 命令用于计算机文件或目录的数量 查看 /home 目录机子目录的容量信息
使用参数 -s 查看 /root 所占磁盘的空间总和
5.2.7 stat 命令查看文件的状态
5.3 链接文件在 Linux 中链接文件可以分为软链接和硬链接两种。 创建方法:
5.3.1 软链接软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
5.3.2 硬链接硬链接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode)。在 Linux 中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬链接。
5.3.3 两种链接的区别硬链接文件有两个限制:
软链接没有硬链接以上的两个限制,因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行连接。但是软链接的缺点在于:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移。还有它要系统分配额外的空间用于建立新的索引点和保存原文件的路径。 软链接可以跨分区,但源文件不能删除,硬链接不能跨分区,但可以删除源文件。 6 Linux 访问控制6.1 ACL--访问控制列表ACL 是 Access Control List 的缩写,主要目的是在提供传统的 owner、group、others 的 read、write、execute 权限之外的权限配置。ACL 可以针对单一使用者,单一文件或目录来进行 r、w、x 的权限规范,对于需要特殊权限的使用状况非常有帮助。
6.2 ACL 安装首先,我们需要安装工具来管理 ACL。 在 Ubuntu/Debian 中 (实验楼环境为 ubuntu);
在 CentOS/Fedora/RHEL 中;
6.3 ACL 权限开启由于实验楼环境的原因,可以跳过此步,但是在本地学习记得用 mount 命令来查看 ACL 是否已经开启 开启 ACL 权限 临时开启指定分区的 ACL 权限;
永久开启指定分区的 ACL 权限:修改文件(/etc/fstab),在挂载选项部分添加ACL。 6.4 相关命令dumpe2fs:获取 ext2,ext3 或 ext4 文件系统的信息; getfacl:获取指定文件的 ACL 权限; setfacl:设置指定文件的 ACL 权限; 6.5 ACL 权限简单应用添加和修改 首先创建一个文件
查看文件缺省的 ACL,此时的文件通常只有 UGO 的权限,还没有 ACL。
添加用户和设置密码,方便后续对它们进行权限操作。
测试一下,你会发现 file1 文件是不允许除了超级用户以外的用户来写。
所以,我们通过 ACL 来赋予 u1 足够的权限:
修改成功后,用户 u1 就具有读写的权限。 通过 ls 命令来看一下:
从打印出来的信息可以发现,在全县位旁边多了一个 + ,这就说明了我们设置 ACL 成功了。 7. 总结通过本节实验我们掌握了 LInux 文件系统中包含了 Linux 目录结构、文件存储、文件类型和属性、以及常用的文件基本操作。希望通过熟练的运用能够为后面学习 Linux 大虾坚实的基础。 (责任编辑:admin) |