From: Ben Stuyts <ben@altesco.nl>
To: ptxdist@pengutronix.de
Cc: Michael Olbrich <m.olbrich@pengutronix.de>,
Guillermo Rodriguez Garcia <guille.rodriguez@gmail.com>,
David Jander <david@protonic.nl>
Subject: Re: [ptxdist] Resend: Home dir fixup for root in systemd
Date: Tue, 26 Jul 2016 17:13:59 +0200 [thread overview]
Message-ID: <61818BCC-0767-4412-A47F-27420AE2AF60@altesco.nl> (raw)
In-Reply-To: <20160726160034.40ee8b05@erd980>
Hi David :)
> On 26 Jul 2016, at 16:00, David Jander <david@protonic.nl> wrote:
>
>
> Dear Guillermo,
>
> Thanks for your reply.
>
> 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…
Perhaps a Q&D solution would be to create a symbolic link from /root to /home (or v.v.)? Then at least whatever mechanism is used, it would end up pointing to the same directory.
Kind regards,
Ben
>
> 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.
>
>> Guillermo
>>
>> 2016-07-26 14:09 GMT+02:00 David Jander <david.jander@protonic.nl>:
>>
>>>
>>> Dear Michael,
>>>
>>> I have prepared a patch against ptxdist git for the package systemd-230.
>>> I would like to know the right way to proceed to submit this patch, since
>>> I am
>>> not a ptxdist developer and am not familiar with how tools like
>>> git-ptxdist-patch are supposed to be used (to generate the correct series
>>> file
>>> in this case).
>>>
>>> The patch is really trivial and I don't know if it deserves so much work (I
>>> suspect that I have to clone the git repository of systemd first and apply
>>> all
>>> patches there, right?).
>>>
>>> What I am trying to fix here is the notion that systemd has about what the
>>> $HOME directory of the user 'root' (uid=0) should be. As it seems, in
>>> systemd
>>> this is hardcoded to be "/root", while ptxdist by default seems to insist
>>> in
>>> "/home" for some reason (according to shipped /etc/passwd). Here's the gist
>>> of what the patch does:
>>>
>>> --- systemd-230.orig/src/basic/user-util.c
>>> +++ systemd-230/src/basic/user-util.c
>>> @@ -123,7 +123,7 @@ int get_user_creds(
>>> *gid = 0;
>>>
>>> if (home)
>>> - *home = "/root";
>>> + *home = "/home";
>>>
>>> if (shell)
>>> *shell = "/bin/sh";
>>>
>>> Without this patch, things like services that declare "User=root" get
>>> screwed
>>> up with the wrong home directory for example.
>>>
>>> Thanks.
>>>
>>> Best regards,
>>>
>>> --
>>> David Jander
>>> Protonic Holland.
>>>
>>> _______________________________________________
>>> ptxdist mailing list
>>> ptxdist@pengutronix.de
>>
>>
>>
>>
>
> Best regards,
>
> --
> David Jander
> Protonic Holland.
> tel.: +31 (0) 229 212928
> fax.: +31 (0) 229 210930
> Factorij 36 / 1689 AL Zwaag
>
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de
>
_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
next prev parent reply other threads:[~2016-07-26 15:13 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-26 12:09 David Jander
2016-07-26 13:19 ` Guillermo Rodriguez Garcia
2016-07-26 14:00 ` David Jander
2016-07-26 15:13 ` Ben Stuyts [this message]
2016-07-27 5:41 ` David Jander
2016-07-26 17:50 ` Guillermo Rodriguez Garcia
2016-07-27 5:51 ` David Jander
2016-07-27 12:04 ` Guillermo Rodriguez Garcia
2016-07-27 6:55 ` Michael Olbrich
2016-07-27 8:55 ` David Jander
2016-07-27 9:04 ` Michael Olbrich
2016-07-27 9:11 ` Artur Wiebe
2016-07-27 9:29 ` David Jander
2016-07-27 10:43 ` Michael Olbrich
2016-07-27 11:24 ` David Jander
2016-07-29 8:07 ` Tim Sander
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=61818BCC-0767-4412-A47F-27420AE2AF60@altesco.nl \
--to=ben@altesco.nl \
--cc=david@protonic.nl \
--cc=guille.rodriguez@gmail.com \
--cc=m.olbrich@pengutronix.de \
--cc=ptxdist@pengutronix.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox