[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