[git commit] sulogin: start _login_ shell only with -p
Denys Vlasenko
vda.linux at googlemail.com
Thu Jan 13 00:38:47 UTC 2022
commit: https://git.busybox.net/busybox/commit/?id=96771ec5f5fb81b479973fbd25af48c5cb83b2bb
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master
Also, shorten/eliminate messages to be closer to util-linux.
function old new delta
packed_usage 34233 34238 +5
sulogin_main 340 341 +1
.rodata 104380 104327 -53
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 6/-53) Total: -47 bytes
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
loginutils/sulogin.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/loginutils/sulogin.c b/loginutils/sulogin.c
index 2f87c77c0..56b88c086 100644
--- a/loginutils/sulogin.c
+++ b/loginutils/sulogin.c
@@ -20,7 +20,8 @@
//usage: "[-t N] [TTY]"
//usage:#define sulogin_full_usage "\n\n"
//usage: "Single user login\n"
-//usage: "\n -t N Timeout"
+//usage: "\n -p Start a login shell"
+//usage: "\n -t SEC Timeout"
#include "libbb.h"
#include <syslog.h>
@@ -30,6 +31,7 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv)
{
int tsid;
int timeout = 0;
+ unsigned opts;
struct passwd *pwd;
const char *shell;
@@ -44,7 +46,7 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv)
logmode = LOGMODE_BOTH;
openlog(applet_name, 0, LOG_AUTH);
- getopt32(argv, "t:+", &timeout);
+ opts = getopt32(argv, "pt:+", &timeout);
argv += optind;
if (argv[0]) {
@@ -64,8 +66,8 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv)
int r;
r = ask_and_check_password_extended(pwd, timeout,
- "Give root password for system maintenance\n"
- "(or type Control-D for normal startup):"
+ "Give root password for maintenance\n"
+ "(or type Ctrl-D to continue): "
);
if (r < 0) {
/* ^D, ^C, timeout, or read error */
@@ -79,7 +81,8 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv)
bb_simple_info_msg("Login incorrect");
}
- bb_simple_info_msg("starting shell for system maintenance");
+ /* util-linux 2.36.1 compat: no message */
+ /*bb_simple_info_msg("starting shell for system maintenance");*/
IF_SELINUX(renew_current_security_context());
@@ -116,6 +119,6 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv)
*/
/*signal(SIGINT, SIG_DFL);*/
- /* Exec login shell with no additional parameters. Never returns. */
- exec_login_shell(shell);
+ /* Exec shell with no additional parameters. Never returns. */
+ exec_shell(shell, /* -p? then shell is login:*/(opts & 1), NULL);
}
More information about the busybox-cvs
mailing list