Hi all,

to patch systemd to fit some "mistake" in ptxdist seems quite disproportionately.

It is much simpler to change home of root to /root by providing own /projectroot/etc/passwd then undoing a patch.

Oh, it was just a typo of Michael! Great!

I also vote for solution 1: set home for root to /root

Change PTXdist and all places in it that assume the $HOME=/home for root.

Best Regards,
Artur


    
Am 27.07.2016 um 10:55 schrieb David Jander:
Dear Michael,

On Wed, 27 Jul 2016 08:55:13 +0200
Michael Olbrich <m.olbrich@pengutronix.de> wrote:

Hi,

On Tue, Jul 26, 2016 at 04:00:34PM +0200, David Jander wrote:
On Tue, 26 Jul 2016 15:19:59 +0200
Guillermo Rodriguez Garcia <guille.rodriguez@gmail.com> wrote:
  
Wouldn't it be easier to either use a custom /etc/passwd, or create a /root
dir in the filesystem ? That sounds better than patching systemd.  
Maybe it would be better to change the default /etc/passwd (and everywhere
else) in ptxdist then...

The problem is that what /etc/passwd says is mandatory. The home directory has
a special meaning to the user. You can get to the home directory via $HOME
passed in the environment, or via the NS-switch (getent) lookup. They are
supposed to be the same.
systemd has hardcoded defaults in source-code, which by definition is ugly as
hell, but the reason is clearly to avoid potentially expensive, blocking
NSS-lookups in the early boot stages, so it is understandable. It would be a
lot better if there was some configuration setting read from a file I guess,
but alas.
On PTXdist now (with the default, shipped /etc/passwd), a user logging in as
"root" via, say a serial console getty, will have a different $HOME than a
systemd service started with User=root. This is bad, and can potentially do
funny things people will not like.
To solve the problem, there are really only two options AFAICS:

 1.- Change PTXdist and all places in it that assume the $HOME=/home for root.
 No idea how many places that are, nor how many users already depend on this
 historic assumption.

or

 2.- Patch systemd to adapt to the reality of PTXdist.

I agree that option 1 is probably better if PTXdist is more or less the only
place on earth left where $HOME != /root for uid=0. Historically on Unix it
used to be "/", but that is just way too ugly (guess where the name "root"
came from?).

Using a custom /etc/passwd is not an option, because the default PTXdist stays
broken this way.

Creating a /root dir is also broken, because like I explained above, the root
user will become schizophrenic when logging in and running services from
systemd alternately. Think about a user logging in, starting a tool that
writes a config files to ~/.bla, and then configuring the same tool to run as a
system service. I would (did!) get slightly mad when finding the tool to run
with a totally different configuration in the latter case.  
Unless someone comes up with a really good reason, then I think we should go
with option 2. I have actually considered making the change in the past
just to be consistent. But I never got around to do it.
I didn't notice this problem, probably because my rootfs is usually
read-only, and /root and /home are both empty.

It would be great if some more people would speak up. Such a change can
potentially break things, so I'd like to know what others are thinking.
Ok, just so we understand each other, you propose to go with my original patch
in this case (i.e. patch systemd to assume $HOME=/home), right?
In case nobody speaks up against it, will you pick it up as-is, or should I
make a correct patch (i.e. learn how to properly use git-ptxdist-patch to
generate a correct series file) and post it here?

Best regards,