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
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,