正如你知道,如果没有 root_owner 选项,mke2fs 使用运行 mke2fs 的用户的用户和组 ID。让我们在 Ubuntu 22 x86_64 (mke2fs 1.46.5 (30-Dec-2021)) 上测试一下:
生成图像
mke2fs -t ext2 -I 256 -E 'lazy_itable_init=0,lazy_journal_init=0' -O '^large_file' -O '^huge_file' -L ext2test 'diskEmpty.img' 102400k
安装图像
gnome-disk-image-mounter -w diskEmpty.img
但只有root用户才能写入......为什么?
让我们测试 root_owner 选项:
生成图像
mke2fs -t ext2 -I 256 -E 'root_owner=1000:1000,lazy_itable_init=0,lazy_journal_init=0' -O '^large_file' -O '^huge_file' -L ext2test 'diskEmpty.img' 102400k
安装图像
gnome-disk-image-mounter -w diskEmpty.img
现在我可以写入我的磁盘了。
为什么没有功能就无法写入磁盘root_owner
?
答案1
您链接到的联机帮助页实际上很好地解释了自 1.42 版本以来根目录的 UID:GID 不再默认为运行 mke2fs 的用户的 UID:GID。
如果在 >1.42 版本下您希望根目录的 UID:GID 是运行 mke2fs 的用户的 UID:GID,则必须明确指定root_owner
为功能列表的一部分,最终省略其 uid:gid 可选参数。
这是 T. Ts'o 补丁的结果(mke2fs:不自动设置根目录 UID/GID)其中明确指示:
在 mke2fs 中添加“-E root_owner[=uid:gid]”选项,以便可以为根目录显式指定用户和组。如果未指定“=uid:gid”参数,则从正在运行的进程中提取当前 UID 和 GID,就像过去所做的那样。
答案2
新文件系统的根由 root 所有。默认权限下,只有 root 可以写入。您的会话用户很可能是普通用户(UID 可能为 1000)。