So verfolgen Sie sudo
$ sudo strace -u <username> sudo -k <command>
sudo
führtstrace
aus als root.strace
führtsudo
aus als<username>
über den-u
übergeben Möglichkeit.sudo
löscht zwischengespeicherte Anmeldeinformationen aus dem vorherigensudo
mit-k
Option (zum erneuten Abfragen des Passworts) und führt<command>
aus .
Die zweite sudo
ist der verfolgte Prozess (der verfolgte Prozess).
Um den aktuellen Benutzer automatisch an die Stelle von <username>
zu setzen , verwenden Sie $(id -u -n)
.
Warum sudo nicht mit strace funktioniert
Zusätzlich zu dieser Antwort von Charles ist hier was execve()
Handbuchseite sagt:
Wenn das set-user-ID-Bit in der Programmdatei gesetzt ist, auf die durch pathname verwiesen wird, dann wird die effektive Benutzer-ID des aufrufenden Prozesses in die des Eigentümers der Programmdatei geändert. In ähnlicher Weise wird, wenn das set-group-ID-Bit der Programmdatei gesetzt ist, die effektive Gruppen-ID des aufrufenden Prozesses auf die Gruppe der Programmdatei gesetzt.
Die oben erwähnten Transformationen der effektiven IDs werden nicht durchgeführt (d. h. die Set-User-ID- und Set-Group-ID-Bits werden ignoriert), wenn eine der folgenden Aussagen zutrifft:
- das Attribut no_new_privs wird für den aufrufenden Thread gesetzt (siehe prctl(2));
- das zugrunde liegende Dateisystem ist nosuid gemountet (das MS_NOSUID-Flag für mount(2)); oder
- der aufrufende Prozess wird verfolgt.
Die Capabilities der Programmdatei (siehe Capabilities(7)) werden ebenfalls ignoriert, wenn einer der obigen Punkte zutrifft.
Die Berechtigungen zum Verfolgen eines Prozesses, zum Überprüfen oder Ändern seines Speichers werden im Unterabschnitt Überprüfung des Ptrace-Zugriffsmodus beschrieben im Abschnitt HINWEISE der Handbuchseite ptrace(2). Ich habe dies in dieser Antwort kommentiert.
Aus Sicherheitsgründen können das setuid-Bit und ptrace (zum Ausführen von Binärdateien unter einem Debugger) nicht gleichzeitig berücksichtigt werden. Das Versäumnis, diese Einschränkung in der Vergangenheit durchzusetzen, führte zu CVE-2001-1384.
Folglich wird jedes Betriebssystem, das mit Blick auf die Sicherheit entwickelt wurde, entweder aufhören, ptrace auf exec einer setuid-Binärdatei zu berücksichtigen, oder das setuid-Bit nicht berücksichtigen, wenn ptrace verwendet wird.
Ziehen Sie unter Linux in Betracht, stattdessen Sysdig zu verwenden -- das, da es nur das Verhalten anzeigen, aber nicht ändern kann, nicht die gleichen Risiken birgt.