* User accounts
@ 2014-05-13 8:11 Ludovic Courtès
2014-05-13 8:17 ` John Darrington
0 siblings, 1 reply; 4+ messages in thread
From: Ludovic Courtès @ 2014-05-13 8:11 UTC (permalink / raw)
To: guix-devel
Before commit ab6a279, /etc/{group,passwd,shadow} were all created from
a derivation. Thus, /etc contained symlinks to those files, which were
actually in the store. Being in the store, they were all immutable and
world-readable (you can see that in the VM image released with 0.6.)
That was obviously not desirable, because then everyone can read shadow,
and because that prevents passwords from being changed.
So commit ab6a279 changed accounts to be created at “activation
time”—i.e., when booting, or when switching to a new operating system
configuration. What happens is that the activation code checks for all
the user accounts and groups required by the ‘operating-system’
declaration, and invokes ‘useradd’ and ‘groupadd’ for any missing
account/group.
That way, {group,passwd,shadow} are normal state files with the right
permissions, and everything works as expected. NixOS uses the same
strategy.
Ludo’.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: User accounts
2014-05-13 8:11 User accounts Ludovic Courtès
@ 2014-05-13 8:17 ` John Darrington
2014-05-13 12:12 ` Ludovic Courtès
0 siblings, 1 reply; 4+ messages in thread
From: John Darrington @ 2014-05-13 8:17 UTC (permalink / raw)
To: Ludovic Court??s; +Cc: guix-devel
On Tue, May 13, 2014 at 10:11:41AM +0200, Ludovic Court??s wrote:
Before commit ab6a279, /etc/{group,passwd,shadow} were all created from
a derivation. Thus, /etc contained symlinks to those files, which were
actually in the store. Being in the store, they were all immutable and
world-readable (you can see that in the VM image released with 0.6.)
That was obviously not desirable, because then everyone can read shadow,
and because that prevents passwords from being changed.
So commit ab6a279 changed accounts to be created at ???activation
time??????i.e., when booting, or when switching to a new operating system
configuration. What happens is that the activation code checks for all
the user accounts and groups required by the ???operating-system???
declaration, and invokes ???useradd??? and ???groupadd??? for any missing
account/group.
That way, {group,passwd,shadow} are normal state files with the right
permissions, and everything works as expected. NixOS uses the same
strategy.
Does /etc/group now have a "nogroup" group? I was trying to package up GNU cssc,
but one of its tests relies on having a group which no user is a member of.
J'
--
PGP Public key ID: 1024D/2DE827B3
fingerprint = 8797 A26D 0854 2EAB 0285 A290 8A67 719C 2DE8 27B3
See http://sks-keyservers.net or any PGP keyserver for public key.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: User accounts
2014-05-13 8:17 ` John Darrington
@ 2014-05-13 12:12 ` Ludovic Courtès
2014-05-13 12:49 ` John Darrington
0 siblings, 1 reply; 4+ messages in thread
From: Ludovic Courtès @ 2014-05-13 12:12 UTC (permalink / raw)
To: John Darrington; +Cc: guix-devel
John Darrington <john@darrington.wattle.id.au> skribis:
> On Tue, May 13, 2014 at 10:11:41AM +0200, Ludovic Court??s wrote:
> Before commit ab6a279, /etc/{group,passwd,shadow} were all created from
> a derivation. Thus, /etc contained symlinks to those files, which were
> actually in the store. Being in the store, they were all immutable and
> world-readable (you can see that in the VM image released with 0.6.)
>
> That was obviously not desirable, because then everyone can read shadow,
> and because that prevents passwords from being changed.
>
> So commit ab6a279 changed accounts to be created at ???activation
> time??????i.e., when booting, or when switching to a new operating system
> configuration. What happens is that the activation code checks for all
> the user accounts and groups required by the ???operating-system???
> declaration, and invokes ???useradd??? and ???groupadd??? for any missing
> account/group.
>
> That way, {group,passwd,shadow} are normal state files with the right
> permissions, and everything works as expected. NixOS uses the same
> strategy.
>
>
> Does /etc/group now have a "nogroup" group?
No, but it’d be a useful addition.
> I was trying to package up GNU cssc, but one of its tests relies on
> having a group which no user is a member of.
Ah, but that’s a different story: you’re referring to the build
environment, whereas I was talking about the operating system
declarative configuration, for use in the stand-alone system (info
"(guix) System Configuration").
Regarding the build environment, maybe it makes sense to add ‘nogroup’
as well; not completely sure. Any pointers as to how ubiquitous it is,
or other arguments?
Ludo’.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: User accounts
2014-05-13 12:12 ` Ludovic Courtès
@ 2014-05-13 12:49 ` John Darrington
0 siblings, 0 replies; 4+ messages in thread
From: John Darrington @ 2014-05-13 12:49 UTC (permalink / raw)
To: Ludovic Court??s; +Cc: guix-devel
On Tue, May 13, 2014 at 02:12:34PM +0200, Ludovic Court??s wrote:
John Darrington <john@darrington.wattle.id.au> skribis:
> On Tue, May 13, 2014 at 10:11:41AM +0200, Ludovic Court??s wrote:
> Before commit ab6a279, /etc/{group,passwd,shadow} were all created from
> a derivation. Thus, /etc contained symlinks to those files, which were
> actually in the store. Being in the store, they were all immutable and
> world-readable (you can see that in the VM image released with 0.6.)
>
> That was obviously not desirable, because then everyone can read shadow,
> and because that prevents passwords from being changed.
>
> So commit ab6a279 changed accounts to be created at ???activation
> time??????i.e., when booting, or when switching to a new operating system
> configuration. What happens is that the activation code checks for all
> the user accounts and groups required by the ???operating-system???
> declaration, and invokes ???useradd??? and ???groupadd??? for any missing
> account/group.
>
> That way, {group,passwd,shadow} are normal state files with the right
> permissions, and everything works as expected. NixOS uses the same
> strategy.
>
>
> Does /etc/group now have a "nogroup" group?
No, but it???d be a useful addition.
> I was trying to package up GNU cssc, but one of its tests relies on
> having a group which no user is a member of.
Ah, but that???s a different story: you???re referring to the build
environment, whereas I was talking about the operating system
declarative configuration, for use in the stand-alone system (info
"(guix) System Configuration").
Regarding the build environment, maybe it makes sense to add ???nogroup???
as well; not completely sure. Any pointers as to how ubiquitous it is,
or other arguments?
It's probably not too ubiquitous, but one other argument, is that there is
already a "nobody" in the build environment's /etc/passwd. For consistency
there should be a nogroup in /etc/group
J'
--
PGP Public key ID: 1024D/2DE827B3
fingerprint = 8797 A26D 0854 2EAB 0285 A290 8A67 719C 2DE8 27B3
See http://sks-keyservers.net or any PGP keyserver for public key.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-05-13 12:49 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-13 8:11 User accounts Ludovic Courtès
2014-05-13 8:17 ` John Darrington
2014-05-13 12:12 ` Ludovic Courtès
2014-05-13 12:49 ` John Darrington
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).