From: "Peter A. Bigot" <pab@pabigot.com>
To: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH 0/3] pseudo+image.bbclass: changes to avoid host contamination
Date: Fri, 31 Oct 2014 23:15:56 -0500 [thread overview]
Message-ID: <54545E7C.2060804@pabigot.com> (raw)
In-Reply-To: <20141013173545.0d2c5de0@e6410-2>
On 10/13/2014 05:35 PM, Peter Seebach wrote:
> On Mon, 13 Oct 2014 17:29:26 -0500
> "Peter A. Bigot" <pab@pabigot.com> wrote:
>
>> Basically, even if "root" is a special case, taking this path means
>> making assumptions about what the application is doing based on what
>> system/libc functions it invokes. Too often when somebody assumes a
>> general tool will only be used specific ways, somebody else will prove
>> them wrong.
> True.
>
> For the oe-core case, it seems like it might be reasonable for us to set
> pseudo up to, by default, get configured with preloaded things which match
> the expected configuration of base-passwd. If people then go overriding
> base-passwd in strange ways, they could break that, but we at least know what
> the default configuration would be, and could possibly even make base-passwd
> check whether pseudo's configuration matches its answers, and blow up if
> there's a mismatch there.
I've discovered a few more cases where OE packages get the wrong target
username/group for files, at least in RPM packages.
First, revisiting the discussion above I've played with using
--without-passwd-fallback and adding base-passwd as an explicit
dependency. This won't work: glibc-initial requires base-passwd for
group name lookups, and base-passwd includes update-passwd as an
executable which requires glibc.
The options seem to be to split base-passwd into separate recipes for
the data files and the utility to break the circular dependency, or
having pseudo synthesize a fallback passwd/group. Prior to gaining
experience I didn't like the second choice, but I like the first even
less. As long as pseudo emits a note saying what it's doing so we can
add the DEPENDS=base-passwd where that's not circular (as with tzdata),
my vote goes toward pseudo synthesis. I'm hoping somebody disagrees and
comes up with a better, third alternative.
However, I've also discovered another issue, possibly related to:
http://lists.openembedded.org/pipermail/openembedded-core/2011-December/053866.html
On my development machine my uid:gid are both 1000 and correspond to
pab:pab. Using poky master with MACHINE=beaglebone building
core-image-sato the corresponding user:group is xuser:xuser.
Running the following script:
find tmp/deploy/ -name '*.rpm' \
| while read f ; do \
rpm -qlvp ${f} 2>/dev/null \
| awk '$3~/pab|xuser/ || $4~/pab|xuser/ {print;}' \
> /tmp/c$$ ; \
if [ -s /tmp/c$$ ] ; then \
echo ; \
echo $f; \
cat /tmp/c$$ ; \
fi ; \
done
I find the following packages include files that are given group or user
xuser, indicating that the files were installed with user:group set to
the host value 1000:1000 instead of being remapped to 0:0 by pseudo, but
when packaging pseudo does "correctly" interpret the uid:gid using the
target passwd/group files:
tmp/deploy/rpm/cortexa8hf_vfp_neon/attr-ptest-2.4.47-r0.0.cortexa8hf_vfp_neon.rpm
tmp/deploy/rpm/cortexa8hf_vfp_neon/acl-ptest-2.2.52-r0.0.cortexa8hf_vfp_neon.rpm
tmp/deploy/rpm/cortexa8hf_vfp_neon/systemd-216+git0+5d0ae62c66-r0.0.cortexa8hf_vfp_neon.rpm
tmp/deploy/rpm/cortexa8hf_vfp_neon/perl-ptest-5.20.0-r1.0.cortexa8hf_vfp_neon.rpm
For example:
llc[11]$ rpm -qlvp
tmp/deploy/rpm/cortexa8hf_vfp_neon/perl-ptest-5.20.0-r1.0.cortexa8hf_vfp_neon.rpm
-r--r--r-- 1 xuser xuser 45590 May 26 08:34
/usr/lib/perl/ptest/AUTHORS
-r--r--r-- 1 xuser xuser 6321 Jan 31 2014
/usr/lib/perl/ptest/Artistic
-r--r--r-- 1 xuser xuser 3168 Jan 31 2014
/usr/lib/perl/ptest/Changes
-r-xr-xr-x 1 xuser xuser 552838 Oct 31 15:34
/usr/lib/perl/ptest/Configure
Further, this one even manages to get the user:group names from the host:
llc[12]$ rpm -qlvp
tmp/deploy/rpm/cortexa8hf_vfp_neon/libgcc-s-dev-4.9.1-r0.0.cortexa8hf_vfp_neon.rpm
| grep pab
lrwxrwxrwx 1 pab pab 22 Oct 31 15:17
/usr/lib/arm-poky-linux -> arm-poky-linux-gnueabi
My tentative conclusion is that these new behaviors aren't related to
the pseudo falling back to host /etc files, but probably instead by
files getting installed (and in one case somehow packaged) without using
pseudo. I have no idea why that's happening, but it does appear
something's not working right.
Peter
next prev parent reply other threads:[~2014-11-01 4:15 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-12 23:49 [PATCH 0/3] pseudo+image.bbclass: changes to avoid host contamination Peter A. Bigot
2014-10-12 23:49 ` [PATCH 1/3] pseudo: support --without-passwd-fallback configuration option Peter A. Bigot
2014-10-13 1:23 ` Peter Seebach
2014-10-12 23:49 ` [PATCH 2/3] pseudo: support multiple search directories in PSEUDO_PASSWD Peter A. Bigot
2014-10-13 1:30 ` Peter Seebach
2014-10-12 23:49 ` [PATCH 3/3] image.bbclass: search both rootfs and staging dir for passwd files Peter A. Bigot
2014-10-13 21:28 ` [PATCH 0/3] pseudo+image.bbclass: changes to avoid host contamination Peter Seebach
2014-10-13 22:29 ` Peter A. Bigot
2014-10-13 22:35 ` Peter Seebach
2014-11-01 4:15 ` Peter A. Bigot [this message]
2014-11-01 17:11 ` Peter A. Bigot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54545E7C.2060804@pabigot.com \
--to=pab@pabigot.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.