mirror of
https://github.com/topjohnwu/ndk-busybox.git
synced 2024-11-28 14:10:34 +00:00
sulogin: add support for $SUSHELL & $sushell
This commit is contained in:
parent
997aa1179e
commit
c345d8e945
@ -114,11 +114,11 @@ static int adduser(struct passwd *p, unsigned long flags)
|
|||||||
file = xfopen(bb_path_shadow_file, "a");
|
file = xfopen(bb_path_shadow_file, "a");
|
||||||
fseek(file, 0, SEEK_END);
|
fseek(file, 0, SEEK_END);
|
||||||
fprintf(file, "%s:!:%ld:%d:%d:%d:::\n",
|
fprintf(file, "%s:!:%ld:%d:%d:%d:::\n",
|
||||||
p->pw_name, /* username */
|
p->pw_name, /* username */
|
||||||
time(NULL) / 86400, /* sp->sp_lstchg */
|
time(NULL) / 86400, /* sp->sp_lstchg */
|
||||||
0, /* sp->sp_min */
|
0, /* sp->sp_min */
|
||||||
99999, /* sp->sp_max */
|
99999, /* sp->sp_max */
|
||||||
7); /* sp->sp_warn */
|
7); /* sp->sp_warn */
|
||||||
fclose(file);
|
fclose(file);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -42,6 +42,7 @@ int sulogin_main(int argc, char **argv)
|
|||||||
const char * const *p;
|
const char * const *p;
|
||||||
struct passwd *pwd;
|
struct passwd *pwd;
|
||||||
struct spwd *spwd;
|
struct spwd *spwd;
|
||||||
|
const char *shell;
|
||||||
|
|
||||||
logmode = LOGMODE_BOTH;
|
logmode = LOGMODE_BOTH;
|
||||||
openlog(applet_name, 0, LOG_AUTH);
|
openlog(applet_name, 0, LOG_AUTH);
|
||||||
@ -69,12 +70,14 @@ int sulogin_main(int argc, char **argv)
|
|||||||
|
|
||||||
signal(SIGALRM, catchalarm);
|
signal(SIGALRM, catchalarm);
|
||||||
|
|
||||||
if (!(pwd = getpwuid(0))) {
|
pwd = getpwuid(0);
|
||||||
|
if (!pwd) {
|
||||||
goto auth_error;
|
goto auth_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ENABLE_FEATURE_SHADOWPASSWDS) {
|
if (ENABLE_FEATURE_SHADOWPASSWDS) {
|
||||||
if (!(spwd = getspnam(pwd->pw_name))) {
|
spwd = getspnam(pwd->pw_name);
|
||||||
|
if (!spwd) {
|
||||||
goto auth_error;
|
goto auth_error;
|
||||||
}
|
}
|
||||||
pwd->pw_passwd = spwd->sp_pwdp;
|
pwd->pw_passwd = spwd->sp_pwdp;
|
||||||
@ -103,9 +106,16 @@ int sulogin_main(int argc, char **argv)
|
|||||||
|
|
||||||
USE_SELINUX(renew_current_security_context());
|
USE_SELINUX(renew_current_security_context());
|
||||||
|
|
||||||
run_shell(pwd->pw_shell, 1, 0, 0);
|
shell = getenv("SUSHELL");
|
||||||
|
if (!shell) shell = getenv("sushell");
|
||||||
|
if (!shell) {
|
||||||
|
shell = "/bin/sh";
|
||||||
|
if (pwd->pw_shell[0])
|
||||||
|
shell = pwd->pw_shell;
|
||||||
|
}
|
||||||
|
run_shell(shell, 1, 0, 0);
|
||||||
/* never returns */
|
/* never returns */
|
||||||
|
|
||||||
auth_error:
|
auth_error:
|
||||||
bb_error_msg_and_die("no password entry for `root'");
|
bb_error_msg_and_die("no password entry for 'root'");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user