[yocto] preserving file owners in do_package

Davide Soldan davide.soldan at kynetics.it
Tue Oct 15 09:12:42 PDT 2013


In data martedì 15 ottobre 2013 11:38:21, Paul Eggleton ha scritto:
> Hi Davide,
> 
> On Tuesday 15 October 2013 12:02:20 Davide Soldan wrote:
> > in my recipe I want to change owner and permission of a file, so I wrote:
> > 
> > do_install() {
> >         ls -la ${D}/opt/user
> >         chown -R user ${D}/opt/user
> >         chgrp -R user ${D}/opt/user
> >         ls -la ${D}/opt/user
> >         chmod 754 ${D}/opt/user/user.sh
> >         ls -la ${D}/opt/user
> > }
> > 
> > the output of ls commands is:
> > 
> > drwxr-xr-x 8 root root   4096 Oct 15 11:13 .
> > drwxr-xr-x 3 root root   4096 Oct 15 11:13 ..
> > -rw-r--r-- 1 *root root*  55753 Aug  2 08:48 user.sh
> > 
> > drwxr-xr-x 8 user user   4096 Oct 15 11:13 .
> > drwxr-xr-x 3 root     root       4096 Oct 15 11:13 ..
> > -rw-r--r-- 1 *user user*  55753 Aug  2 08:48 user.sh
> > 
> > drwxr-xr-x 8 user user   4096 Oct 15 11:13 .
> > drwxr-xr-x 3 root     root       4096 Oct 15 11:13 ..
> > *-rwxr-xr--* 1 user user  55753 Aug  2 08:48 user.sh
> > 
> > So the change of owner and permission works fine in do_install phase.
> > Opening the final rootfs tarball, however, the file user.sh has still 754
> > permission but root as owner...so do_package doesn't preserve owner change
> > done in do_install? Or maybe I'm doing something wrong in changing file
> > owner? Any ideas? Thanks to all!
> 
> Does your recipe create the specified user via useradd.bbclass?
> 
> Cheers,
> Paul
> 
> 
I solved with a postinstall script (that run at boot):

pkg_postinst_${PN}() {
        #!/bin/sh -e
        if [ x"$D" = "x" ]; then
          chown -R user /opt/user
          chgrp -R user /opt/user
        else
          exit 1
        fi
}

Cheers
Davide



More information about the yocto mailing list