[OE-core] [PATCH] useradd-staticids: don't create username-group if gid is specified

André Draszik git at andred.net
Thu Sep 21 08:23:58 UTC 2017


On Wed, 2017-09-20 at 14:20 +0000, Peter Kjellerstedt wrote:
> > -----Original Message-----
> > From: André Draszik [mailto:git at andred.net]
> > Sent: den 20 september 2017 11:29
> > To: Peter Kjellerstedt <peter.kjellerstedt at axis.com>; openembedded-
> > core at lists.openembedded.org
> > Subject: Re: [OE-core] [PATCH] useradd-staticids: don't create
> > username-group if gid is specified
> > 
> > ping
> 
> Sorry, I forgot to reply to this.
> 
> > On Tue, 2017-09-05 at 08:40 +0100, André Draszik wrote:
> > > On Mon, 2017-09-04 at 10:22 +0000, Peter Kjellerstedt wrote:
> > > > > 
> > > 
> > > [...]
> > > > > diff --git a/meta/classes/useradd-staticids.bbclass
> > > > > b/meta/classes/useradd-staticids.bbclass
> > > > > index ce4ac62ab5..1b61a8bf9b 100644
> > > > > --- a/meta/classes/useradd-staticids.bbclass
> > > > > +++ b/meta/classes/useradd-staticids.bbclass
> > > > > @@ -102,7 +102,7 @@ def update_useradd_static_config(d):
> > > > >              # So if the implicit username-group creation is on,
> > > > > then the implicit groupname (LOGIN)
> > > > >              # is used, and we disable the user_group option.
> > > > >              #
> > > > > -            user_group = uaargs.user_group is None or
> > > > > uaargs.user_group is True
> > > > > +            user_group = uaargs.gid is None or uaargs.user_group
> > > > > is True
> > > > 
> > > > Hmm, I believe that should be:
> > > > 
> > > >             user_group = uaargs.gid is None and uaargs.user_group is
> > > > None or uaargs.user_group is True
> > > > 
> > > > I.e., if neither --gid nor --user-group is specified, then it should
> > > > treat it as if --user-group was specified.
> > > 
> > > Hm, isn't this still the same as
> > > 
> > > user_group = uaargs.gid is None or uaargs.user_group is True
> 
> No, because uaargs.user_group may be False if --no-user-group is 
> specified (which I of course should have mentioned in my previous 
> reply). With your version, you would still get a user group even 
> if --no-user-group is specified.

OK, this is how useradd behaves:

useradd --system --home /dev/null --no-create-home --no-user-group distcc
  -> will add the new user to the group 'users' (as per GROUP from /etc/default/useradd)

useradd --system --home /dev/null --no-create-home --gid foo --user-group distcc
  -> --gid and --user-group together conflict

useradd --system --home /dev/null --no-create-home --user-group distcc
useradd --system --home /dev/null --no-create-home distcc
 -> in both cases distcc user and group are created


Sp, what about this instead:

            if uaargs.gid:
                uaargs.groupname = uaargs.gid
                uaargs.groupid = field[3] or uaargs.gid 
            elif uaargs.user_group is not False:
                uaargs.groupname = uaargs.LOGIN
                uaargs.groupid = field[3] or uaargs.LOGIN
            else:
                uaargs.groupname = 'users'
                uaargs.groupid = field[3] or 'users'

Cheers,
Andre'

> > > ? If neither --gid nor --user-group is specified, then gid is None, so
> > > it
> > > will do what you want already. IOW, unless the group name (gid) is
> > > specified, a username-group is being created.
> > > 
> > > 
> > > Cheers,
> > > Andre'
> 
> //Peter
> 



More information about the Openembedded-core mailing list