On Wed, Feb 20, 2019 at 9:42 AM Michael Olbrich <m.olbrich@pengutronix.de> wrote:
On Wed, Feb 20, 2019 at 09:09:18AM -0500, Jon Ringle wrote:
> On Wed, Feb 20, 2019 at 8:22 AM Ian Abbott <abbotti@mev.co.uk> wrote:
>
> > On 20/02/2019 13:17, Ian Abbott wrote:
> > > On 20/02/2019 00:59, Jon Ringle wrote:
> > >> I've got a strange permission problem when I build on our build server
> > >> that was recently updated from Ubuntu-14.04 to Ubuntu-16.04.
> > >>
> > >> On our Ubuntu-16.04 server, on most of the platform/packages/
> > >> subdirectories the packages are getting created with other having no
> > >> permissions at all:
> > >>
> > >> rootfs/platform-ec1c/packages$ tree -d -L 1 -p
> > >> .
> > >> ├── [drwxr-x---]  attr-2.4.47
> > >> ├── [drwxr-x---]  avahi-0.7
> > >> ├── [drwxr-x---]  bash-4.3.30
> > >> ├── [drwxr-x---]  boost_1_67_0
> > >> ├── [drwxr-x---]  busybox-1.29.3
> > >> ├── [drwxr-x---]  coreutils-8.29
> > >> ...
> > >>
> > >> This results in all files contained within those directories to also
> > >> have no perms for other, and get installed on my target in the same
> > >> way. This in turn then causes permission problems to occur.
> > >>
> > >> I'm at a loss as to what to look for to resolve this problem.
> > >>
> > >> Suggestions?
> > >
> > > I think you are building with umask 0027, so files are created with no
> > > permissions for 'other' users.  This should not affect the contents of
> > > the platform-ec1c/packages/*.ipk files, or the contents of the
> > > platform-ec1c/root/ directory, or the contents of the
> > > platform-ec1c/images/root.* images, which should all contain files with
> > > the correct permissions for the target.
> >
> > Correction: The platform-ec1c/root/ directory contents do not have the
> > correct ownership for the target, but the file mode bits should be correct.
> >
> >
> I also thought that perhaps it was a umask issue, but as you can see below,
> umask is 0022, which should be ok.
> The permission problem that I am having on the target is that
> systemd-networkd.service won't start because it can't read the
> configuration files below. These files are installed in systemd.make via:
>
> ifdef PTXCONF_SYSTEMD_NETWORK
>         @$(call install_tree, systemd, 0, 0, -, /usr/lib/systemd/network)
>         @$(call install_alternative_tree, systemd, 0, 0,
> /usr/lib/systemd/network)
> endif
>         @$(call install_alternative, systemd, 0, 0, 0644, \
>                 /usr/lib/systemd/network/99-default.link)

Right, install_alternative_tree picks the source file permissions. The
question is, why are those incorrect?

I've come across some issues with fakeroot and permissions elsewhere. Can
you run the attached script with the fakeroot from sysroot-host/ and send
the results?


jringle@dev-atl-bamb01:/srv/gpec-build/rootfs/platform-ec1c/sysroot-host/bin$ ./fakeroot ~/fake-test 
fakeroot: preload library `libfakeroot.so' not found, aborting.
jringle@dev-atl-bamb01:/srv/gpec-build/rootfs/platform-ec1c/sysroot-host/bin$ cd ../../..
jringle@dev-atl-bamb01:/srv/gpec-build/rootfs$ ptxdist bash
[ptx] jringle@dev-atl-bamb01:/srv/gpec-build/rootfs$ which fakeroot
/srv/gpec-build/rootfs/platform-ec1k/sysroot-host/bin/fakeroot
[ptx] jringle@dev-atl-bamb01:/srv/gpec-build/rootfs$ fakeroot ~/fake-test 
-rw-r--r-- 1 0 0 0 Feb 20 15:08 empty
-rw-r--r-- 1 0 0 0 Feb 20 15:08 empty-a
-rw-r--r-- 1 0 0 0 Feb 20 15:08 empty-r
# file: empty
# owner: 0
# group: 0
user::rw-
group::r--
other::r--

# file: empty-a
# owner: 0
# group: 0
user::rw-
group::r--
other::r--

# file: empty-r
# owner: 0
# group: 0
user::rw-
group::r--
other::r--

[ptx] jringle@dev-atl-bamb01:/srv/gpec-build/rootfs$ exit
exit
jringle@dev-atl-bamb01:/srv/gpec-build/rootfs$ which fakeroot
/usr/bin/fakeroot
jringle@dev-atl-bamb01:/srv/gpec-build/rootfs$ fakeroot ~/fake-test 
-rw-r--r-- 1 0 0 0 Feb 20 15:08 empty
-rw-r--r-- 1 0 0 0 Feb 20 15:08 empty-a
-rw-r--r-- 1 0 0 0 Feb 20 15:08 empty-r
# file: empty
# owner: 0
# group: 0
user::rw-
group::r--
other::r--

# file: empty-a
# owner: 0
# group: 0
user::rw-
group::r--
other::r--

# file: empty-r
# owner: 0
# group: 0
user::rw-
group::r--
other::r--