![创建图像时翻译用户 ID](https://linux22.com/image/20863/%E5%88%9B%E5%BB%BA%E5%9B%BE%E5%83%8F%E6%97%B6%E7%BF%BB%E8%AF%91%E7%94%A8%E6%88%B7%20ID.png)
我想从给定的目录层次结构创建一个图像(例如 ext3 图像)。该目录层次结构由给定用户拥有。但在最终图像上,我希望这些文件由超级用户拥有。是否有将用户 uid / gid 转换为 0 的解决方案?
这是一个伪工作流程:
以用户身份创建文件层次结构
/home/user/rootfs
在文件上创建 ext3 img
循环挂载空img(作为用户或root)
/somewhere/loopmount
cp -R --magic_uid_options 500=0 /home/user/rootfs /somewhere/loopmount
或者,第 4 步可以是普通副本,而第 5 步是一个巧妙的发现,可以chown
递归chgrp
地进行。此类问题有众所周知的解决方案吗?
答案1
我不知道--magic_uid_options
该命令的任何“” cp
,您也不需要知道聪明的用于进行递归chown
或chgrp
.
事实上我会:
进行复制时保留尽可能多的文件/目录属性(时间戳,...)
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
。