Benutzer zur Ausführung selektiver Befehle einschränken (Linux)

12

Wie kann ich meinen Benutzer einschränken, nur selektive Befehle auszuführen? Ich habe einen Benutzer tomc in der Gruppe tomc. Ich benötige diesen Benutzer, um sudo Benutzer zu sein und dann eingeschränkte Bash zu haben. Ich habe versucht , folgenden Code in /etc/sudoersDatei, aber es funktioniert nicht als Benutzer in der Lage ist , andere Befehle auszuführen , wie mkdir,rm

%tomc ALL=/bin/bash,/usr/bin/vim /*
Neuling17
quelle
3
Obwohl die Verwendung von sudo auf bestimmte Befehle beschränkt sein kann, kann dies schwierig sein und erfordert etwas Vertrauen. Wenn Sie dem Benutzer nicht vertrauen, ist es eine schlechte Idee, ihm sudo-Zugriff zu gewähren. Sie erhalten entweder Root-Rechte oder eine gezielte App, mit der sie angreifen können, um Root-Rechte zu erhalten. Jemanden laufen zu lassen, sudo bashentspricht in den meisten Fällen dem root-Passwort. Über eine sudo bashShell können sie jeden Admin-Befehl ausführen, Software installieren oder löschen, Benutzer und Verzeichnisse löschen usw.
Paul
@Paul Kannst du mir bessere und praktische Möglichkeiten dafür vorschlagen?
Erstens ist dies beim Stapelüberlauf nicht aktuell. Bessere Orte zu fragen sind Superuser, Askubuntu oder Linux & Unix. Überlegen Sie sich zunächst genau, was Sie tomc erlauben möchten. tomc sollte _____ aber nicht ________ dürfen. Dann frag. Sudo ist für Befehle, die root (admin) priv benötigen. Er kann bash bereits ausführen, ohne es als root auszuführen.
Paul

Antworten:

15

Sie könnten dabei den falschen Weg gehen. Anstatt einem Benutzer eine 'eingeschränkte' Bash-Shell zu geben, sollten Sie ihm nur den Zugriff auf die Befehle gewähren, die er als root ausführen müsste. 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 verfügt über eine Reihe integrierter Funktionen, z. B. Escape-Befehle in die Shell und die Möglichkeit, Befehle in Vim auszuführen. Abhängig von Ihrer Distribution stehen Ihnen möglicherweise zur sudoeditVerfügung. Dies funktioniert genauso wie ein normaler Vim, mit der Ausnahme, dass er für Shell-Fluchten und ähnliches ausgelegt ist.

mtak
quelle
6
Keine dieser Linien ist sicher. Wie Sie bereits erwähnt haben,vimkönnen Sie beliebige Shell-Befehle ausführen. Und die zweite Zeile wird wahrscheinlich zulassenless /var/log/myapp/../../../etc/shadow! Nach meinen Experimenten ist es schwer, sudo sicher zu benutzen ! Aber wenn Sie*svermeidenundsudoeditstattdessen verwenden könnenvim, könnten Sie in Ordnung sein.
Joeytwiddle
Vermeiden *ist nicht genug! Sobald Sie lessals rootBenutzer angemeldet sind, versuchen Sie, etwas einzugeben !tail /var/log/secure. Wie fühlt sich das an? Studiere das NOEXECEtikett. Aber nehmen Sie sich @ joeytwiddles Botschaft zu Herzen: Sudo-Sicherheit ist in der Tat schwer.
Bruno Bronosky
3

Auf meiner Synology Diskstation, auf der DSM 6 ausgeführt wird, können nur Administratoren konsistent sshen (Nicht-Administratoren haben die Shell / sbin / nologin in / etc / passwd - Sie können dies auf / bin / sh setzen, um vorübergehend ssh 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 ansonsten nur zum Ausführen von z. B. / sbin / poweroff vorhanden ist. Die folgenden Zeilen in / etc / sudoers haben für mich funktioniert:

# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff

Übersetzung: Alle Befehle nicht zulassen, dann nur den gewünschten Befehl zulassen (in diesem Fall ohne Kennwortabfrage).

Mit dieser Konfiguration fragt sudo nach dem Passwort und schlägt dann bei Befehlen, die nicht auf der Whitelist stehen, fehl:

guestx@ds:~$ sudo su -
Password: 
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
guestx@ds:~$ 
robm
quelle