On 6/29/23 14:50, Richard W.M. Jones wrote: > This currently only works with numeric UID.GID. In theory in future > we could look up IDs from the guest password file (eg. using Augeas) > and do the right thing, but that's a bunch more work. > > For example: > > $ ./builder/virt-builder fedora-36 --chown 1.1:/var/tmp > [ 1.0] Downloading: http://builder.libguestfs.org/fedora-36.xz > [ 1.5] Planning how to build this image > [ 1.5] Uncompressing > [ 3.4] Opening the new disk > [ 7.3] Setting a random seed > [ 7.3] Changing owner of /var/tmp to 1.1 > [ 7.3] Setting passwords > virt-builder: Setting random password of root to x8fu6z7QNEdPeZHF > [ 7.8] SELinux relabelling > [ 12.0] Finishing off > Output file: fedora-36.img > Output size: 6.0G > Output format: raw > Total usable space: 6.0G > Free space: 4.7G (79%) > > $ guestfish -a fedora-36.img -i ll /var > total 8 > drwxr-xr-x. 18 root root 4096 May 12 2022 . > dr-xr-xr-x. 18 root root 235 May 12 2022 .. > drwxr-xr-x. 2 root root 6 Jan 20 2022 adm > drwxr-xr-x. 9 root root 101 May 12 2022 cache > drwxr-xr-x. 3 root root 18 May 12 2022 db > drwxr-xr-x. 2 root root 6 Jan 20 2022 empty > drwxr-xr-x. 2 root root 6 Jan 20 2022 ftp > drwxr-xr-x. 2 root root 6 Jan 20 2022 games > drwxr-xr-x. 3 root root 18 Apr 5 2022 kerberos > drwxr-xr-x. 24 root root 4096 May 12 2022 lib > drwxr-xr-x. 2 root root 6 Jan 20 2022 local > lrwxrwxrwx. 1 root root 11 May 12 2022 lock -> ../run/lock > drwxr-xr-x. 8 root root 105 May 12 2022 log > lrwxrwxrwx. 1 root root 10 Jan 20 2022 mail -> spool/mail > drwxr-xr-x. 2 root root 6 Jan 20 2022 nis > drwxr-xr-x. 2 root root 6 Jan 20 2022 opt > drwxr-xr-x. 2 root root 6 Jan 20 2022 preserve > lrwxrwxrwx. 1 root root 6 May 12 2022 run -> ../run > drwxr-xr-x. 5 root root 45 May 12 2022 spool > drwxrwxrwt. 2 bin bin 6 May 12 2022 tmp > drwxr-xr-x. 2 root root 6 Jan 20 2022 yp > > Fixes: https://github.com/rwmjones/guestfs-tools/issues/12 > --- > common | 2 +- > customize/customize_run.ml | 11 +++++++++++ > 2 files changed, 12 insertions(+), 1 deletion(-) > > diff --git a/common b/common > index 420892e660..bbb54714ce 160000 > --- a/common > +++ b/common > @@ -1 +1 @@ > -Subproject commit 420892e660726c7184c000b9b86b11f491a5a126 > +Subproject commit bbb54714ce24c76e5761d96a0227a753896dc4c4 > diff --git a/customize/customize_run.ml b/customize/customize_run.ml > index f03774e003..409b46edc6 100644 > --- a/customize/customize_run.ml > +++ b/customize/customize_run.ml > @@ -153,6 +153,17 @@ let run (g : G.guestfs) root (ops : ops) = > let mode = if String.is_prefix mode "0" then "0o" ^ mode else mode in > g#chmod (int_of_string mode) path > > + | `Chown (uid_gid, path) -> > + let uid, gid = String.split "." uid_gid in > + let uid, gid = > + try int_of_string uid, int_of_string gid > + with Failure _ -> > + error (f_"--chown: could not parse numeric UID.GID from \ > + %s") uid_gid in > + > + message (f_"Changing owner of %s to %d.%d") path uid gid; > + g#chown uid gid path > + > | `Command cmd -> > message (f_"Running: %s") cmd; > do_run ~display:cmd cmd
I've not looked at the context beyond this patch; the patch does look good. Acked-by: Laszlo Ersek <ler...@redhat.com> _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs