背景
我有一个测试脚本,可以动态创建和销毁文件系统,用于一套性能测试。
为了避免以 root 身份运行脚本,我有/dev/testdisk
一个特定用户拥有的磁盘设备testuser
,以及一个合适的条目/etc/fstab
:
$ ls -l /dev/testdisk
crw-rw---- 1 testuser testuser 21, 1 Jun 25 12:34 /dev/testdisk
$ grep testdisk /etc/fstab
/dev/testdisk /mnt/testdisk auto noauto,user,rw 0 0
这允许普通用户安装和卸载磁盘。
问题
我希望我的脚本(testuser
以/dev/testdisk
testuser
$ mount /dev/testdisk /mnt/testdisk
$ ls -la /mnt/testdisk
total 24
drwxr-xr-x 3 testuser testuser 4096 Jun 25 15:15 .
drwxr-xr-x 3 root root 4096 Jun 23 17:41 ..
drwx------ 2 root root 16384 Jun 25 15:15 lost+found
这可以在不以 root 身份运行脚本并且不诉诸sudo
脚本内的权限提升(使用)的情况下完成吗?
与其他文件系统的比较
使用 ext{2,3,4} 可以创建一个根目录归当前用户所有的文件系统,使用以下命令:
mkfs.ext{2,3,4} -F -E root_owner /dev/testdisk
我想避免的解决方法(如果可能)
我知道我可以使用该btrfs-convert
工具将现有的(可能为空的)ext{2,3,4} 文件系统转换为 btrfs 格式。我可以在我的脚本中使用这个解决方法(首先创建一个 ext4 文件系统,然后立即将其转换为 brtfs),但如果有办法直接创建 btrfs 文件系统,我宁愿避免使用它。