一、实验目的
1. 学习和掌握文件系统的基本概念
2. 学习对文件和文件系统的观察和操作
3. 学习和使用文件系统的权限控制
二、预备知识
1. 基本命令
命令名 | 主要选项 | 功能说明 |
ls | -a, -l, -i | 列出指定文件 |
stat | 显示文件系统信息 | |
cd | 切换目录 | |
pwd | 报告当前路径 | |
touch | -a, -m | 创建新文件 |
mv | -i, -u | 移动 |
cp | -a, -i, -l, -s, -R | 复制 |
rm | -i,-r | 删除文件 |
mkdir | -p | 创建目录 |
rmdir | 删除目录(空目录) | |
ln | -s | 建立链接 |
find | -type, -name, -ctime | 查找文件 |
locate | 快速查找文件 | |
grep | -i,-l, -r, -v, -n | 查找文件内容 |
chmod | -R | 添加、删除、指派文件或目录的权限 |
chown | 改变文件属主 | |
chgrp | 改变文件组 | |
umask | 查看、设置权限掩码 | |
mkfs | -t | 创建文件系统 |
mke2fs | -j, -b, -i | 创建ext2/ext3文件系统 |
mount | -t, -o, -a | 挂载文件系统 |
umount | 卸载文件系统 | |
df | -i, -h, -k, -a | 提供硬盘及其分区、其它驱动器在文件系统中的装入位置以及它们所占用的空间大小等信息。 |
du | -c, -h | 提供关于文件和目录所占空间的信息 |
fsck | 检查文件系统 |
2. 文件类型
类型 | 说明 |
普通文件 | 一组连续的数据用一个名称表示 |
目录 | 实施了分级文件系统的结构 |
设备文件 | 要访问硬件的每个程序都必须通过对应的设备文件来访问硬件 |
链接 | 对存储在文件系统中其他点的文件的引用 |
套接字 | 通过文件系统实施两个本地运行的进程之间的数据交换 |
FIFO | 在进程之间交换数据 |
3. 文件和目录的权限保护
每个文件和目录都具有一定的访问权限。指派的权限决定给定用户的访问级别。
权限的指派分为三个级别:
用户(u,owner):指派给文件或目录所有者的权限决定了所有者的访问级别。
组(group):为组指派的权限确定了组成员对文件或目录的访问级别。
其他(other):指派给该实体的权限用于已鉴定的用户,这些用户本身不是组的成员但已和文件或目录相关联。
可以对文件或目录指派以下三种权限:
读 (r):该权限允许读取文件并列出目录内容。
写 (w):该权限允许修改文件。还允许在目录内创建或删除文件。
执行 (x):该权限允许执行文件。还允许访问目录。
可以使用命令 ls -l 显示当前目录中的内容以及指派的对每个文件或子目录的访问权限。
每个文件和目录都指定有数字权限值。该值有3位数字。第一位数字表示指派给文件或目录所有者的权限。第二位数字表示指派给和文件及目录相关的组的权限。第三位数字表示指派给其他用户的权限。
每位数字都是指派的以下三个值的和:读: 4;写: 2;执行: 1。
默认情况下系统以访问方式666创建文件,并以访问方式777创建目录。要修改(限制)这些默认访问方式设置,可以使用命令 umask。该命令将和3位数字值(如 022)一起使用,从默认权限中删除在 umask 中设置的权限。
此外,还有三种特殊的文件权限:
字母 | 编号 | 名称 | 文件 | 目录 |
t 或 T | 1 | 粘滞位(stick bit) | 不适用 | 只有文件的所有者、根用户或目录所有者可以删除文件。通常应用于目录 /tmp/。 |
s 或 S | 2 | SGID (SetGID) | 运行程序时将进程的组ID设置为文件组的组ID。 | 在此目录下创建的文件属于目录所在的组,而不属于用户的主组。 在此目录下创建的新目录将继承SGID 位。 |
s 或 S | 4 | SUID (SetUserID) | 运行程序时将进程的用户ID设置为文件所有者的用户ID。 | 不适用 |
三、实验内容
1. 分别以root和普通用户身份登录并进入各自的主目录,通过命令报告你的当前路径。
pwd:报告当前路径
2. 在一个目录下执行ls命令,验证-l,-a,-i选项的作用,什么时候会列出”.”和”..”目录?设计一个关于使用命令的实验,验证这两个目录的含义和作用。
执行ls -a命令时会列出”.”和”..”目录。
. 与 .. 是文件系统中的特殊字符。目录中的各个名字称为文件名,创建新目录时会自动创建两个文件名:.(称为点)和 ..(称为点点)。其中点指向当前目录,点点指向父目录,在最高层次的根目录中,点点和点相同。
3. 创建一个目录,并在其中创建几个文件,分别用rm和rmdir删除目录,观察有何不同。
rm和rmdir是linux里面的删除文件和文件夹的命令行命令
rm 文件名 :可以删除文件和目录。如果目录不为空的话,使用rm命令,配置必要的选项就能够实现删除非空目录。如 -v选项,可以直接删除一个或者多个文件,并且使用-v选项给予提示,也可以使用通配符指定要删除的文件。
rmdir 目录名:可以删除目录,但是目录不为空的话命令无法执行。
4. 以root身份创建一个新文件,观察其默认的权限;然后用vi编辑该文件;将该文件权限改为只有用户可读,其他权限均无;以root身份创建一个脚本,该脚本使用cat命令在屏幕上显示前面创建文件的内容;将脚本文件按设置为所有用户可执行;分别以root和普通用户身份登录,执行脚本,观察结果;为cat文件加SUID权限,再重复前一步操作,观察结果,说明原因。
1)以root身份创建一个新文件,观察其默认的权限;
可以看到,新文件的默认权限是rw-r--r--,即用户和组拥有读写权限,其他用户只有读取权限。
2)用vi编辑该文件;
3)将该文件权限改为只有用户可读,其他权限均无;
4)以root身份创建一个脚本,该脚本使用cat命令在屏幕上显示前面创建文件的内容;
5)将脚本文件设置为所有用户可执行;
6)分别以root和普通用户身份登录,执行脚本,观察结果;
可以发现,以root身份执行脚本文件会将test.txt
文件的内容显示在终端上,但是以普通用户身份执行脚本文件时,会提示权限不足而无法显示文件内容。
7)为cat文件加SUID权限,再重复前一步操作,观察结果,说明原因。
4755添加suid权限,-rwsr-xr-x 表示设置了suid,且拥有者有可执行权限。
或者使用 +s 命令
现在,/bin/cat
文件的权限包含了SUID位(s),表示在执行此文件时,该进程将使用该文件的所有者身份运行。因此,我们期望普通用户现在能够执行show.sh
并查看test.txt
文件的内容。
现在可以发现,以普通用户身份运行脚本文件会以root用户名的身份显示test.txt
文件的内容,因此,SUID权限允许普通用户以root用户的特权执行命令。需要注意的是,使用SUID权限需要非常小心,应该只赋予必要的命令,并且必须确保安全性并防止滥用。
5. 为一个已经存在的文件分别创建多个个硬链接和多个符号链接,观察二者的不同,删除链接时又有何不同?为什么?
由下可知:二者都不能链接已存在的文件。
硬链接:ln 源文件 目标文件
软链接:ln -s 源文件 目标文件
删除链接:rm -rf [软、硬链接地址]
在创建和删除软硬链接时,它们之间存在以下不同之处:
创建:
- 硬链接仅需要使用文件系统的inode表创建一个新的链接,而不需要创建一个新的文件。因此,如果原始文件被更改,所有硬链接都会反映这些更改。
- 软链接是一个指针文件,它指向目标文件或目录,并需要创建一个新的文件。因此,软链接可以跨越不同的文件系统并指向目录。
删除:
- 删除硬链接只会删除文件系统inode表中的一个连接关系,而不会删除任何数据,只要剩余硬链接或文件本身仍然存在,原始数据仍然可以访问。
- 删除软链接只会删除指针文件,不会影响目标文件或目录。但是,如果目标文件或目录被删除,则所有指向该文件的软链接都将失效。
总体看来:
- 硬链接共享inode表,因此不能超出文件系统,每个文件只能有一个硬链接
- 软链接可以超出文件系统,因此可以跨越文件系统,并且文件或目录可以有多个软链接。
6. 报告你当前使用的系统已经挂载了那些文件系统,挂载点、文件系统类型和对应设备文件以及设备和分区分别是什么?硬盘的当前使用情况(数据及索引节点)。
1)使用mount命令查看当前使用的系统已经挂载的文件系统,该命令将列出当前挂载的所有文件系统,包括挂载点、文件系统类型和对应设备文件
2)要检查硬盘的当前使用情况,可以使用以下命令:df -h ,该命令将显示文件系统的使用情况,包括磁盘使用率、已用空间、可用空间和挂载点。
在上面的图片中,/dev/sda1对应的是硬盘设备文件,它的总大小为20G,已经使用了9.2G(51%),剩余的8.9G可用。
3)可以使用-i选项来查看硬盘上索引节点的使用情况。