创建图像时翻译用户 ID

创建图像时翻译用户 ID

我想从给定的目录层次结构创建一个图像(例如 ext3 图像)。该目录层次结构由给定用户拥有。但在最终图像上,我希望这些文件由超级用户拥有。是否有将用户 uid / gid 转换为 0 的解决方案?

这是一个伪工作流程:

  1. 以用户身份创建文件层次结构/home/user/rootfs

  2. 在文件上创建 ext3 img

  3. 循环挂载空img(作为用户或root)/somewhere/loopmount

  4. cp -R --magic_uid_options 500=0 /home/user/rootfs /somewhere/loopmount

或者,第 4 步可以是普通副本,而第 5 步是一个巧妙的发现,可以chown递归chgrp地进行。此类问题有众所周知的解决方案吗?

答案1

我不知道--magic_uid_options该命令的任何“” cp,您也不需要知道聪明的用于进行递归chownchgrp.

事实上我会:

  • 进行复制时保留尽可能多的文件/目录属性(时间戳,...)

    cp -pR /home/users/rootfs /somewhere/loopmount/
    
  • chown全部到root:root

    chown -R root:root /somewhere/loopmount
    

答案2

您可以以 root 身份执行步骤 4:

cd /home/user/rootfs
pax -rw -pp . /somewhere/loopmount

-pp保留模式和时间,但创建由运行的用户和组拥有的文件pax

相关内容