用于安全和访问控制的挂载选项
在此步骤中,你将学习如何使用挂载选项来控制如何访问文件系统。挂载选项提供了对文件系统行为的额外控制,例如限制执行权限或使文件系统只读。
卸载当前文件系统
在应用新的挂载选项之前,你需要卸载当前文件系统:
sudo umount ~/project/mount_point
如果收到一条错误消息,提示设备正忙,请确保你当前不在挂载点目录中:
cd ~/project
然后再次尝试卸载。
使用 noexec 选项挂载
noexec 挂载选项阻止在已挂载的文件系统上执行任何二进制文件。这是一项安全功能,可以防止恶意脚本或程序运行。
使用 noexec 选项挂载文件系统:
sudo mount -t ext4 -o noexec storage_device.img ~/project/mount_point
-o noexec 部分告诉 mount 命令使用 noexec 选项。
测试 noexec 选项
让我们在已挂载的文件系统上创建一个简单的 shell 脚本,并尝试执行它:
echo '#!/bin/bash' | sudo tee ~/project/mount_point/test_script.sh > /dev/null
echo 'echo "This script is running"' | sudo tee -a ~/project/mount_point/test_script.sh > /dev/null
使脚本可执行:
chmod +x ~/project/mount_point/test_script.sh
现在尝试执行该脚本:
~/project/mount_point/test_script.sh
你应该看到类似以下的错误消息:
bash: /home/labex/project/mount_point/test_script.sh: Permission denied
这证实了 noexec 选项正在阻止脚本执行。
卸载并使用只读选项重新挂载
现在,让我们尝试将文件系统挂载为只读。首先,卸载它:
sudo umount ~/project/mount_point
然后,使用只读选项挂载它:
sudo mount -t ext4 -o ro storage_device.img ~/project/mount_point
-o ro 部分告诉 mount 命令使用只读选项。
测试只读选项
尝试在已挂载的文件系统上创建一个新文件:
touch ~/project/mount_point/new_file.txt
你应该看到类似以下的错误消息:
touch: cannot touch '/home/labex/project/mount_point/new_file.txt': Read-only file system
这证实了文件系统已挂载为只读。
检查挂载选项
你可以使用 mount 命令验证当前的挂载选项:
mount | grep mount_point
你应该看到包含 ro 的输出,表明只读选项处于活动状态:
/home/labex/project/storage_device.img on /home/labex/project/mount_point type ext4 (ro,relatime)
组合挂载选项
你可以通过用逗号分隔来组合多个挂载选项。让我们卸载文件系统,然后使用 noexec 和 ro 选项重新挂载它:
sudo umount ~/project/mount_point
sudo mount -t ext4 -o ro,noexec storage_device.img ~/project/mount_point
验证挂载选项:
mount | grep mount_point
你应该在输出中看到这两个选项:
/home/labex/project/storage_device.img on /home/labex/project/mount_point type ext4 (ro,noexec,relatime)
了解挂载选项
你已探索的挂载选项对于安全和控制访问非常重要:
noexec 阻止执行二进制文件,这可以防止恶意代码
ro (read-only,只读) 阻止对文件系统进行更改,这可以保护数据完整性
这些选项通常在生产环境中使用,以实现最小权限原则(principle of least privilege),仅向系统和用户提供他们需要的访问权限。