Vielleicht gehst du das falsch an. Anstatt einem Benutzer eine „eingeschränkte“ Bash-Shell zu geben, sollten Sie ihm nur Zugriff auf die Befehle geben, die er benötigt, um als Root ausgeführt zu werden. Zum Beispiel in Ihrer sudoers-Datei:
tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log
Seien Sie vorsichtig, wenn Sie Benutzern erlauben, vim als root auszuführen. Vim hat viele eingebaute Funktionen, wie Escapes zur Shell und die Fähigkeit, Befehle innerhalb von Vim auszuführen. Abhängig von Ihrer Distribution haben Sie möglicherweise sudoedit
verfügbar. Dies funktioniert genauso wie ein normaler Vim, außer dass es Shell-Escapes und dergleichen handhaben kann.
Auf meiner Synology Diskstation, auf der DSM 6 ausgeführt wird, können nur Admin-Benutzer konsistent ssh-in (Nicht-Admin-Benutzer haben Shell als /sbin/nologin in /etc/passwd – Sie können dies auf /bin/sh setzen, um ssh vorübergehend zuzulassen, aber beim Neustart die Datei /etc/passwd wird zurückgesetzt). Aus diesem Grund ist eine Art sudo-Einschränkung für ein Konto erforderlich, das sonst nur zum Ausführen von z. /sbin/ausschalten. Die folgenden Zeilen in /etc/sudoers haben bei mir funktioniert:
# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff
Übersetzung:Alle Befehle verbieten, dann nur den gewünschten Befehl zulassen (in diesem Fall ohne nach dem Passwort zu fragen).
Bei dieser Konfiguration fragt sudo nach dem Passwort und schlägt dann bei anderen Befehlen als den auf der Whitelist aufgeführten fehl:
[email protected]:~$ sudo su -
Password:
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
[email protected]:~$