GNU/Linux >> Znalost Linux >  >> Linux

Nelze vysledovat sudo; hlásí, že efektivní uid je nenulové

Jak sledovat sudo

$ sudo  strace -u <username>  sudo -k <command>
  1. sudo běží strace jako root.
  2. strace běží sudo jako <username> předán přes -u možnost.
  3. sudo zruší přihlašovací údaje uložené v mezipaměti z předchozího sudo s -k (pro opětovné dotazování na heslo) a spustí <command> .

Druhý sudo je tracee (sledovaný proces).

Pro automatické vložení aktuálního uživatele na místo <username> , použijte $(id -u -n) .

Proč sudo nefunguje se strace

Kromě této odpovědi od Charlese je zde co execve() manuálová stránka říká:

Pokud je bit set-user-ID nastaven na programový soubor, na který odkazuje cesta, pak se skutečné ID uživatele volajícího procesu změní na ID vlastníka programového souboru. Podobně, když je nastaven bit set-group-ID souboru programu, efektivní ID skupiny volajícího procesu je nastaveno na skupinu souboru programu.

Výše uvedené transformace efektivních ID se neprovedou (tj. bity set-user-ID a set-group-ID se ignorují), pokud platí cokoli z následujícího:

  • atribut no_new_privs je nastaven pro volající vlákno (viz prctl(2));
  • podkladový souborový systém je připojen nosuid (příznak MS_NOSUID pro mount(2)); nebo
  • Probíhá sledování procesu volání.

Schopnosti programového souboru (viz schopnosti(7)) jsou také ignorovány, pokud platí cokoli z výše uvedeného.

Oprávnění pro trasování procesu, kontrolu nebo úpravu jeho paměti jsou popsána v podsekci Kontrola režimu přístupu Ptrace v sekci POZNÁMKY manuálové stránky ptrace(2). Vyjádřil jsem se k tomu v této odpovědi.


Z bezpečnostních důvodů nelze setuid bit a ptrace (používané ke spouštění binárních souborů pod ladicím programem) současně respektovat. Neschopnost prosadit toto omezení v minulosti vedlo k CVE-2001-1384.

V důsledku toho jakýkoli operační systém navržený s ohledem na bezpečnost buď přestane respektovat ptrace na exec binárního souboru setuid, nebo selže respektovat bit setuid, když se ptrace používá.

V Linuxu zvažte místo toho použití Sysdigu – který je schopen pouze prohlížet, ale nikoli upravovat chování, nepředstavuje stejná rizika.


Linux
  1. Linux – Sudo nemůže otevřít /etc/sudoers?

  2. Jak sledovat podřízený proces pomocí strace?

  3. RealUID, UID UID, Efektivní UID. Co se děje?

  1. XAMPP:Již běží jiný démon webového serveru?

  2. CHYBA:ld.so:objekt 'libgtk3-nocsd.so.0' z LD_PRELOAD nelze předem načíst

  3. Nelze přidělit paměť, když se zdá, že žádný proces paměť nevyužívá

  1. 8 Linuxových příkazů pro efektivní řízení procesů

  2. Docker-compose:nelze sestavit BEZ sudo, ale mohu spouštět kontejnery bez něj

  3. Jak zabít proces, který nikdy neumírá?