early: fall-back to run ubus as root if user can't be found
authorDaniel Golle <daniel@makrotopia.org>
Fri, 4 Dec 2020 09:51:34 +0000 (09:51 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Fri, 4 Dec 2020 09:51:34 +0000 (09:51 +0000)
Users have been reporting problems in case the ubus user is missing in
/etc/passwd. Run ubus as root in that case and display warning.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
state.c

diff --git a/state.c b/state.c
index 6ca1d5e77b2cf2b2e044861776585b231a3a50dc..44f56c6ea5bd533c4c1db032a330c7dbd2326785 100644 (file)
--- a/state.c
+++ b/state.c
@@ -140,12 +140,15 @@ static void state_enter(void)
                // try to reopen incase the wdt was not available before coldplug
                watchdog_init(0);
                set_stdio("console");
-               LOG("- ubus -\n");
                p = getpwnam("ubus");
                if (p) {
+                       LOG("- ubus -\n");
                        mkdir(p->pw_dir, 0755);
                        chown(p->pw_dir, p->pw_uid, p->pw_gid);
+               } else {
+                       LOG("- ubus (running as root!) -\n");
                }
+
                procd_connect_ubus();
                service_start_early("ubus", ubus_cmd, p?"ubus":NULL, p?"ubus":NULL);
                break;