Šifrování disku a připojení s nosuid zní jako varianty téže myšlenky, ale vůbec spolu nesouvisí. Jedno chrání data v klidu, druhé rozhoduje, zda jádro bude respektovat bit privilegia v okamžiku, kdy se program spouští. Pomocník, který nedosáhne očekávané identity, si stěžuje na to druhé. Předpoklad, že za to může první, vede lidi k přeinstalování klientů, kteří nikdy nebyli rozbití.

Dvě nesouvisející vlastnosti

Šifrování disku odpovídá na otázku, kdo může číst bloky, když je stroj vypnutý. Volba připojení odpovídá na otázku, co jádro udělá s bity režimu souboru, když jej někdo spustí. Nic v prvním neomezuje druhé a plně zašifrovaný notebook může připojit souborový systém se všemi omezeními na místě.

Čtení obojího jako jedné vlastnosti vytváří teorii, že šifrovaný domovský adresář znemožňuje přístup uživatele root. Ta teorie přežívá proto, že se oba příznaky objevují na stejném stroji, ne proto, že by měly společnou příčinu.

Co přechod skutečně potlačuje

Referenční stránka execve popisuje, jak spustitelný soubor se set-user-ID mění efektivní identitu nového procesu na vlastníka souboru. Stejná stránka uvádí podmínky, které tento přechod potlačují, a jejich ekvivalent pro identifikátory skupin: nastavení no_new_privs, souborový systém připojený s nosuid a trasovaný proces. Schopnosti souboru se za stejných podmínek ignorují. Tato čtyři pravidla pokrývají téměř každé hlášení tohoto druhu.

Tento seznam vysvětluje, proč režim vypsaný ls nikdy není celý příběh autorizace. Neříká, která podmínka způsobila konkrétní chybovou zprávu, a aplikace může stejnými slovy hlásit nesouvisející operaci s přihlašovacími údaji. Poznamenejte si přesný program, spouštěč a sled chyb, než uděláte závěr.

Určete spustitelný soubor, který nainstaloval podporovaný balíček, jeho vlastníka, jeho skutečnou cestu a politiku souborového systému, který jej obsahuje. Kopie ve složce stažených souborů není nainstalovaný pomocník, ať už její režim říká cokoli.

Co s tím nedělat

Nastavovat bity set-user-ID na neověřený binární soubor a přemisťovat jej, dokud omezení nezmizí, není oprava. Nahrazuje politiku, které jste nerozuměli, privilegiem, které nedokážete auditovat, a stejná technika použitá na pomocníka je známá cesta eskalace. Odebrání nosuid z připojení je horší, protože ovlivní každý program v tomto souborovém systému, ne jen jeden.

Podporovaná cesta je dokumentovaná instalace pomocníka nebo služby klienta, kterou provádí správce a která umístí binární soubor tam, kde jej politika očekává. Tím zůstává jeden mechanismus privilegií místo dvou.

Ověřte skutečný kontext spuštění

Po povolené opravě spusťte pomocníka tak, jak jej spouští produkt, ne z shellu uživatele root. Úspěch jako root nic nedokazuje o cestě, kterou jde běžný uživatel, a rozdíl mezi těmito dvěma kontexty je přesně to, o co v selhání šlo.

Poté ověřte síťovou operaci, kvůli které pomocník existuje. Pomocník, který se spustí, ale nedokáže nakonfigurovat rozhraní, posunul problém o jednu fázi dál, nevyřešil jej.

findmnt -no TARGET,OPTIONS /home
getcap /usr/libexec/openvpn-helper 2>/dev/null; ls -l /usr/libexec/openvpn-helper

Zaznamenejte volby připojení a vlastnictví pomocníka do stejné poznámky. Jinak další člověk, který to bude ladit, začne teorii o šifrování znovu od začátku.

Související články