GNU/Linux >> LINUX-Kenntnisse >  >> Linux

sudo kann nicht verfolgt werden; berichtet, dass die effektive uid ungleich Null ist

So verfolgen Sie sudo

$ sudo  strace -u <username>  sudo -k <command>
  1. sudo führt strace aus als root.
  2. strace führt sudo aus als <username> über den -u übergeben Möglichkeit.
  3. sudo löscht zwischengespeicherte Anmeldeinformationen aus dem vorherigen sudo 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.


Linux
  1. Erstellen Sie einen Sudo-Benutzer auf Debian - Schritt-für-Schritt-Prozess?

  2. Linux – Ist es der Prozess, der ein steuerndes Terminal hat, oder ist es die Sitzung, die ein steuerndes Terminal hat?

  3. Wie verfolgt man einen untergeordneten Prozess mit strace?

  4. RealUID, gespeicherte UID, effektive UID. Was ist los?

  5. Welchen Fehlercode gibt ein Prozess zurück, der Segfaults zurückgibt?

Tool, das die Protokollierung der Speichernutzung ermöglicht?

Linux – Sudo kann /etc/sudoers nicht öffnen?

FEHLER:ld.so:Objekt 'libgtk3-nocsd.so.0' aus LD_PRELOAD kann nicht vorab geladen werden

Kontinuierliche Überwachung von Dateien, die von einem Prozess geöffnet/zugegriffen werden

Process Monitor-Äquivalent für Linux?

Wie kann das Herunterfahren deaktiviert werden, damit ein wichtiger Prozess nicht unterbrochen werden kann?