Portál AbcLinuxu, 8. května 2025 19:00
Stav vydání jádra. Citáty týdne. Techniky škálovatelnosti pro praktickou synchronizační základních operací (ACM Queue). Vydán nftables 0.4. Začleňovací okno verze 3.19 – 2. část. Uživatelské jmenné prostory a setgroups().
Začleňovací okno verze 3.19 je stále otevřené; přehled (mnoha) změn začleněných v minulém týdnu viz samostatný článek níže.
Stabilní aktualizace: Verze 3.18.1, 3.17.7, 3.14.27, a 3.10.63 byly vydány dne 16. prosince.
Radost... V 1 ráno se uprostřed průtrže mračen snažím natáhnout plachtu nad sklepem, než se dole přeplní kanalizace... Jasně, existují horší práce než psaní ovladače disket.
– Alan Cox
/ * Cetero censeo, checkpatch.pl esse delendam * /
– Al Viro
Jedna věc je poskytnout uživateli root možnost, aby se mohl střelit do nohy. Ale dát mu nabitou zbraň namířenou na jeho nohou s nataženým úderníkem a cedulí, na které je napsáno „Chci, abys stiskl spoušť,“ se mi jeví jako špatný nápad.
Byl jsem dlouho správcem bezdrátové části a teď bych se osobně rád vyvíjel jiným směrem. Navíc si myslím, že Linux bude mít prospěch z přílivu čerstvé krve více zapojené do povinností údržby. Odstoupím, aby k tomu mohlo dojít.
Davidlohr Bueso poskytuje přehled o technikách škálovatelnost zamykání jádra v tomto článku z ACM Queue. „Nedávno bylo věnováno značné úsilí řešení problémů se škálováním zámků v linuxovém jádru na velkých výkonných serverech. Mnoho z těchto problémů a řešení se vztahuje na podobný systémový software. Tento článek se týká obecných myšlenek a zkušeností v širším kontextu systémů, v naději, že může být užitečný pro lidi, kteří se potýkají s podobnými problémy škálování.“
Pro ty z vás, kteří sledujete vývoj nftables (potenciální nahrazení iptables ve virtuálních strojích), byla vydána verze 0.4 nástroje uživatelského prostoru nftables. Poskytuje přístup k mnoha novým funkcím včetně globálních pravidel, vylepšené podpory protokolování, maskování a NAT, podpory přesměrování (vyžaduje verzi jádra 3.19) a mnoha oprav.
V souhrnu začleňovacího okna verze 3.19 z minulého týdne bylo uvedeno, že se všechno rozjíždí dost pomalu. Linus ten ztracený čas ale mezitím dohnal; v době vzniku tohoto článku bylo již do hlavního repozitáře zahrnuto více než 10 400 sad změn – přes 8 000 od minulého týdne. Tyto změny samozřejmě představují hodně oprav a nové práce. Mezi zajímavější změny viditelné pro uživatele patří:
Mezi změny viditelné pro vývojáře jádra patří:
Jádro má jako vždy širokou škálu přispěvatelů. I když je často těžké poznat věk přispěvatelů podle jejich předložených oprav, editor LWN je přesvědčen, že tato oprava je první od čtyřletého chlapce, která se dostala do jádra.
V tomto bodě byla většina velkých stromů (od přispěvatelů všech věkových kategorií) zahrnuta, takže lze očekávat, že rychlost změn v hlavním stromu se zpomalí. To znamená, že začleňovací okno pravděpodobně zůstane otevřené do 21. prosince. Shrnutí v příštím týdnu bude zahrnovat poslední opravy, které jsou do verze 3.19 zahrnuty z vývojového cyklu.
Již v listopadu jsme se dívali na opravu, která by umožnila neprivilegovaným procesům vypustit skupiny z jejich pověření. Po odeslání opravy brzy vyšlo najevo, že v některých případech vede odstranění skupiny ke zvýšení oprávnění; tato oprava nebyla dále uplatňována. Ale bylo také prokázáno, že neprivilegovaný uživatel může již odstranit skupiny využitím uživatelských jmenných prostorů. Chvíli to trvalo, ale vývojář jmenných prostorů Eric Biederman sestavil sadu oprav, o které doufá, že tuto zranitelnost uzavře.
Členství ve skupině lze použít k omezení oprávnění několika způsoby. Seznamy řízení přístupu mohou explicitně zablokovat přístup k prostředkům na základě členství v určité skupině. Ale je to ještě jednodušší: pokud jsou bity ochrany souboru nastaveny na „zákaz přístupu skupiny“, proces patřící do této skupiny bude zablokován, i když je celý soubor jinak přístupný všem. V obou případech může schopnost odstranit skupinu umožnit procesu přístup k prostředku, který by mu jinak byl odepřen.
V současných jádrech je použití funkce setgroups() ke změně členství ve skupině privilegovaná operace. Neprivilegované procesy ji tedy nemohou použít, aby se zbavily nevhodných členství ve skupině. Ale proces spuštěný v rámci uživatelského jmenného prostoru je privilegovaný uvnitř daného jmenného prostoru, takže volání setgroups() bude úspěšné. Je snadné napsat malý program, který používá funkci clone() k vytvoření podřízeného procesu v uživatelském jmenném prostoru a má podřízené volání setgroups(), které odstraní členství ve všech doplňkových skupinách. Tato zranitelnost zvýšení úrovně oprávnění dostala označení CVE-2014-8989.
Ericova oprava tohoto problému začíná zákazem použití funkce setgroups() v rámci uživatelského jmenného prostoru, dokud není mapování ID skupiny nastaveno pro tento jmenný prostor. Toto mapování je vytvořeno pomocí zápisu souboru gid_map do adresáře proc tohoto procesu; podrobnosti o fungování mapování souborů viz tento článek. Další systémová volání orientovaná na ID uživatele nebo skupiny vyžadují existenci mapování dříve, než uspějí; toto omezení má nyní také funkce setgroups().
Největší část opravy přidává pro každý proces do adresáře /proc nový řídicí soubor nazvaný setgroups. Zápis řetězce „deny“ do tohoto souboru zakáže systémové volání setgroups() výhradně v rámci jmenného prostoru obsahující relevantní proces. Je požadována funkčnost CAP_SYS_ADMIN, aby náhodné procesy nemohly zakázat funkci setgroups() ve jmenném prostoru nejvyšší úrovně; proces v rámci vlastního uživatelského jmenného prostoru má opět oprávnění (standardně) a může tuto změnu úspěšně provést. Pokud je funkce setgroups() vypnuta, nelze ji znovu povolit v tomto jmenném prostoru nebo v některém z jejích potomků. Do souboru setgroups lze také zapsat pouze před nastavením mapování ID skupiny.
A navíc neprivilegovaný proces může změnit pouze mapování ID–skupina jmenného prostoru, pokud byla funkce setgroups() zakázána. Jediné, co neprivilegovaný proces může udělat s mapováním ID–skupina je namapovat vlastní ID primární skupiny na stejné ID v nadřazeném jmenném prostoru; neprivilegovaný proces nemůže přemapovat své doplňkové skupiny. Pokud je tedy nastavena tato sada omezení, v podstatě je nemožné (1) zahrávat si s mapováním při odstranění skupin nebo (2) vůbec volat funkci setgroups() bez oprávnění.
Pokud privilegovaný proces vytvoří uživatelský jmenný prostor, může nastavit libovolné mapování pro ID skupiny a odmítnout vypnutí funkce setgroups(). To by umožnilo odstraňování skupin uvnitř jmenného prostoru, ale vzhledem k tomu, že proces je již privilegovaný, by to mohl udělat stejně.
Konečným výsledkem této práce by mělo být zavření chyby způsobené tím, že je možné odstranit skupiny v rámci uživatelského jmenného prostoru. Ale upozorňuje na jedno z nebezpečí, která přicházejí s územím uživatelského jmenného prostoru: i když se zdá možné omezit oprávnění v rámci uživatelského jmenného prostoru, vždy se můžou vyskytnout nějaká překvapení jako toto, které se skrývá v zákoutích systému. Může ale chvíli trvat, než si budeme moct být opravdu jistí, že všechna tato překvapení byla odhalena a že neprivilegované vytvoření uživatelských jmenných prostorů je skutečně bezpečné povolit.
Eric požádal Linuse, aby tyto změny zahrnul do vývojového cyklu verze 3.19; k tomu došlo v době vydání tohoto dílu. Opravy byly také označeny jako stabilní pro backporting, takže by nakonec měly být k dispozici v sadě aktualizací stabilních verzí.
Jedna věc je poskytnout kořeni možnost, aby se mohl střelit do nohy. Ale dát kořeni nabitou zbraň namířenou na jeho nohou s nataženým úderníkem a cedulí, na které je napsáno „Chci, abys stiskl spoušť,“ se mi jeví jako špatný nápad.Originál:
Giving root the power to shoot himself in the foot is one thing. Giving root a loaded gun pointed at his foot with the hammer pulled back, and a sign that says I dare you to pull the trigger, seems like a bad idea.To bych přeložil trochu jinak:
Jedna věc je dát rootovi možnost střelit se do nohy. Ale dát rootovi na jeho nohu namířenou nabitou zbraň se zataženým úderníkem a k tomu ceduli s nápisem "vyzývám tě, abys zmáčknul spoušť" se mi jeví jako špatný nápad.
Můj dnešní favorit je
nový subsystém pro úkoly snižování zátěže přepínání a směrování na patřičně výkonném hardwaru
těsně následován "síťovými zásuvkami". Popis ipvlan je také těžko pochopitelný, ale on je napsán dost krypticky už v originále, takže to bych překladateli za vinu nedával.
nový subsystém pro úkoly snižování zátěže přepínání a směrování na patřičně výkonném hardwaruChtělo by to přeložit ještě slova subsystém a hardware.
Texas nástrojeTexas Instruments je celý název firmy, to bych asi nepřekládal...
S pozdravem nečtěte překlad jaderných novinNo, ono to v podstatě (tedy pokud není účelem vzbudit salvy smíchu) nemá smysl. Leccos bych pochopil, ale "přeložit" root jako kořen zjevně napovídá, že autor kolem problematiky nejenže ani neprojel v rychlíku, ale spíš se s ní minul minimálně warpem 10. Tohle vypustit do světa chce fakt hodně odvahy a míčů
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.