mke2fs 忽略 root_owner

mke2fs 忽略 root_owner

正如你知道,如果没有 root_owner 选项,mke2fs 使用运行 mke2fs 的用户的用户和组 ID。让我们在 Ubuntu 22 x86_64 (mke2fs 1.46.5 (30-Dec-2021)) 上测试一下:

  1. 生成图像

    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

  2. 安装图像

    gnome-disk-image-mounter -w diskEmpty.img

但只有root用户才能写入......为什么?

让我们测试 root_owner 选项:

  1. 生成图像

    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

  2. 安装图像

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)。

相关内容