adduser: prefer to call addgroup --gid, not non-std addgroup -g

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2011-05-21 19:57:58 +02:00
parent b808614785
commit 569e930768

View File

@@ -67,6 +67,7 @@ static void passwd_study(struct passwd *p)
} }
if (p->pw_uid == max) { if (p->pw_uid == max) {
bb_error_msg_and_die("no %cids left", 'u'); bb_error_msg_and_die("no %cids left", 'u');
/* this format string is reused in adduser and addgroup */
} }
p->pw_uid++; p->pw_uid++;
} }
@@ -92,9 +93,16 @@ static void addgroup_wrapper(struct passwd *p, const char *group_name)
argv[3] = (char*)group_name; argv[3] = (char*)group_name;
argv[4] = NULL; argv[4] = NULL;
} else { } else {
/* Add user to his own group with the first free gid found in passwd_study */ /* Add user to his own group with the first free gid
//TODO: to be compatible with external addgroup programs we should use --gid instead... * found in passwd_study.
* We try to use --gid, not -g, because "standard" addgroup
* has no such short option, it has only long --gid.
*/
#if ENABLE_FEATURE_ADDGROUP_LONG_OPTIONS
argv[1] = (char*)"--gid";
#else
argv[1] = (char*)"-g"; argv[1] = (char*)"-g";
#endif
argv[2] = utoa(p->pw_gid); argv[2] = utoa(p->pw_gid);
argv[3] = (char*)"--"; argv[3] = (char*)"--";
argv[4] = p->pw_name; argv[4] = p->pw_name;
@@ -230,9 +238,11 @@ int adduser_main(int argc UNUSED_PARAM, char **argv)
if (mkdir_err == 0) { if (mkdir_err == 0) {
/* New home. Copy /etc/skel to it */ /* New home. Copy /etc/skel to it */
const char *args[] = { const char *args[] = {
"chown", "-R", "chown",
"-R",
xasprintf("%u:%u", (int)pw.pw_uid, (int)pw.pw_gid), xasprintf("%u:%u", (int)pw.pw_uid, (int)pw.pw_gid),
pw.pw_dir, NULL pw.pw_dir,
NULL
}; };
/* Be silent on any errors (like: no /etc/skel) */ /* Be silent on any errors (like: no /etc/skel) */
logmode = LOGMODE_NONE; logmode = LOGMODE_NONE;