In der von mir bereitgestellten Vorlagekonfiguration für Buildroot ist unter anderem auch sudo enthalten, das genutzt werden kann, um Befehle mit Rootrechten auszuführen. Hierfür meldet man sich mit einem normalen Linuxbenutzer an und schreibt vor den auszuführenden Befehl einfach sudo. Ungefähr so:

embedded login: scully
password: ...
scully@embedded:~$ sudo reboot

Wenn durch eine Änderung an der Buildroot-Konfiguration allerdings pam.d in die Firmware aufgenommen wird, funktioniert sudo in den meisten Fällen nicht mehr richtig. Insbesondere werden Sie feststellen, dass sudo Sie zwar wie gewohnt nach Ihrem Passwort fragt, dann aber beharrlich meint, Sie hätten ein falsches Passwort eingegeben. Der Grund liegt darin, dass sudo für die Authentifizierung auf pam.d zurückgreift, wenn es vorhanden ist. In der Musterkonfiguration erwartet pam.d dabei, dass der ausführende Benutzer der Gruppe wheel angehört. Beim zusammenstellen der Vorlage habe ich die vordefinierten Benutzer jedoch der Gruppe sudo hinzugefügt, da dies die neuere Konvention aktueller Linux-Distributionen ist.

Zur Lösung des Problems passen Sie einfach die users-Datei im custom-Verzeichnis wie folgt an (sudo durch wheel ersetzen):

mulder   -1   xfiles   -1   =xfiles   /home/mulder   /bin/sh   wheel   Fox Mulder
scully   -1   xfiles   -1   =xfiles   /home/scully   /bin/sh   wheel   Dana Scully

Zusätzlich sollten Sie die Datei custom/board/rootfs_overlay_base/etc/sudoers.d/01-usergroup durch folgenden Inhalt ersetzen:

Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

%wheel    ALL=(ALL) ALL

Denken Sie bei beiden Änderungen jedoch daran, die Änderung mit einem Texteditor unter Linux vorzunehmen oder Ihrem Texteditor zu befehlen, die Dateien nach der UNIX-Konvention zu speichern. Denn UNIX (und damit auch Linux), Windows und macOS besitzen jeweils eigene Konventionen, wie die Zeilenenden einer Textdatei kodiert werden.

Was tun, wenn sudo nicht mehr funktioniert?