Wie kann ich eine interaktive Shell als ein anderer Benutzer ohne Rootberechtigung erhalten?

14

Ich verwende einen Ubuntu 10.04 LTS-Server mit dem Standardsicherheitsmodell (root gesperrt, sudoum die Berechtigungen zu erhöhen). Ich benutze gelegentlich gerne, sudo -iwenn ich eine Reihe von Befehlen mit erhöhten Rechten ausführen muss oder wenn ich in Verzeichnissen mit Root-Rechten stöbern muss.

Manchmal stelle ich beim Einrichten von Software, die als eigenes nicht privilegiertes Systemkonto ausgeführt wird ( adduser --system --group --no-create-home --disabled-login some-daemon-user), fest, dass ich als dieser Benutzer eine Folge von Befehlen ausführen muss , und nicht als ich selbst oder als root. Ich habe versucht, mit sudo -i -u some-daemon-user, aber es gibt nur einen 1Status ohne Fehlermeldung zurück.

Ich habe überprüft , die syslog, messages, auth, und debugLog - Dateien in /var/logund keiner von ihnen sind alle Nachrichten , die Referenz sudooder das betreffende Konto.

Ist es also möglich, ein anderer Benutzer ohne Rootberechtigung im Sudo-Stil zu werden, ohne nur ein Kennwort festzulegen und sich (wie sie) anzumelden? Ist mein System irgendwie kaputt oder mache ich es einfach falsch?

Calrion
quelle

Antworten:

14

Ahmm .. das Problem ist, dass die Standard-Shell dieser Benutzer normalerweise auf eingestellt ist /bin/falseund aus Sicherheitsgründen sollten Sie dies nicht ändern. Aber Sie können zum Beispiel immer noch laufen:sudo -u www-data /bin/sh

Paul Hänsch
quelle
1
Können Sie nähere Angaben zu den "Sicherheitsgründen" machen? Ist es anders, wenn ich sudoals Benutzer eine Shell starte, wie Florian oben vorschlägt?
Calrion
1
Der Grund dafür ist, dass jeder Angreifer, der sich als Systembenutzer anmeldet, dh einen Fehler im Anmeldeprogramm ausnutzt, mit einer geringeren Wahrscheinlichkeit eine gültige Shell erhält. Sie sollten die Einstellung also so lassen, wie sie in der Datei / etc / passwd enthalten ist, auch wenn dies nur aus gutem Grund geschieht. Das direkte Aufrufen der Shell über sudo hat nichts damit zu tun.
Paul Hänsch
So ist die Frage setzt eine Shell in der passwdDatei, nicht tatsächlich ausgeführt wird eine Shell als Benutzer. Erwischt!
Calrion
9

sudo -iFührt die Shell aus, die im Kennwortdatenbankeintrag des Zielbenutzers angegeben ist, der /bin/falsefür Ihren Systembenutzer bestimmt ist.

Verwenden

 sudo -u some-daemon-user bash

oder

sudo -u some-daemon-user -H bash

Wenn Sie die für den Zielbenutzer festgelegte Umgebungsvariable $ HOME festlegen möchten.

Florian Diesch
quelle