[PATCH] Re: Question about adduser in Busybox

Tito farmatito at tiscali.it
Sat Jan 9 21:38:53 UTC 2010


On Saturday 09 January 2010 22:01:11 Denys Vlasenko wrote:
> On Saturday 09 January 2010 21:53, Tito wrote:
> > shouldn't we also do:
> > 
> > -- loginutils/adduser_orig.c	2010-01-09 21:39:03.000000000 +0100
> > +++ loginutils/adduser.c	2010-01-09 21:51:38.000000000 +0100
> > @@ -69,8 +69,11 @@
> >  {
> >  	char *cmd;
> >  
> > -	cmd = xasprintf("addgroup '%s' '%s'",
> > -			p->pw_name, group_name);
> > +	if (group_name) /* Add user to existing group */
> > +		cmd = xasprintf("addgroup '%s' '%s'", p->pw_name, group_name);
> > +	else	/* Add user to his own group with the first free gid found in passwd_study */
> > +		cmd = xasprintf("addgroup -g %u '%s'", (unsigned)p->pw_gid, p->pw_name);
> > +	/* Warning: to be compatible with external addgroup programs we should use --gid instead */
> >  	system(cmd);
> >  	free(cmd);
> >  }
> > @@ -191,8 +194,7 @@
> >  	/* add to group */
> >  	/* addgroup should be responsible for dealing w/ gshadow */
> >  	/* if using a pre-existing group, don't create one */
> > -    	if (usegroup)
> > -		addgroup_wrapper(&pw, usegroup);
> > +	addgroup_wrapper(&pw, usegroup);
> >  
> >  	/* clear the umask for this process so it doesn't
> >  	 * screw up the permissions on the mkdir and chown. */
> > 
> > 
> > Just compile tested. 
> 
> I don't know whether it would do the right thing, please run-test it.
> --
> vda
> 
Tested against real addgroup

./busybox adduser -G tito prova
Adding user `prova' to group `tito' ...
Adding user prova to group tito
Done.
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

grep prova /etc/group
tito:x:1000:prova

grep prova /etc/passwd
prova:x:1004:1000:Linux User,,,:/home/prova:/bin/sh

./busybox adduser prova
Adding group `prova' (GID 1006) ...
Done.
adduser: /home/prova: File exists
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

grep prova /etc/passwd
prova:x:1006:1006:Linux User,,,:/home/prova:/bin/sh

grep prova /etc/group
prova:x:1006:


 ./busybox adduser -S  prova
Adding user `prova' to group `nogroup' ...
Adding user prova to group nogroup
Done.
adduser: /home/prova: File exists

grep prova /etc/passwd
prova:x:113:65534:Linux User,,,:/home/prova:/bin/false

grep prova /etc/group
nogroup:x:65534:prova

Seems to work fine for me, unless i overlooked something...  ;-)

Ciao,
Tito


More information about the busybox mailing list