File leíró kezeléssel kapcsolatos változások a 2.6.27-től

Címkék

A 2.6.27-es kernel "merge window" időszaka alatt beolvasztott változtatások közt megtalálható Ulrich Drepper több patch-e is, amelyek közül az egyik a POSIX file leírók (file descriptors) régóta fennálló biztonsági problémáit hivatott kiküszöbölni. Ulrich szerint "most tartunk ott, hogy biztonságosan tudunk file leírókat létrehozni lehetséges információszivárgás veszélye nélkül." A fejlesztő blogbejegyzésében egy böngészővel kapcsolatos példán keresztül mutatja be a problémát.

Hozzászólások

0. (signalok tiltasa)
1. fork()
2. bezar minden ami nem kell
3. execve()

Miert nem jo, biztonsagi szempontbol?

Kíváncsi lennék, hogy állnak ezzel a kereskedelmi UNIXok...

A man page-eikben nincs benne.

lwn uzenetei szerint masok closefrom()->fdwalk()->procfs library hivast hasznaljak hasonloan, mint ahogy en irtam az elso postban.

Jo lenne, ha tobbi rendszerbe is bekerulne, akkor nem karognanak, hogy mar megint Linux-only kodot irt az ember :)

glibc -ben el lehetne fedni kulonbsegeket, figyelmeztetve az embereket, hogy nem minden glibc-t hasznalo rendszeren egy rendszer hivas lesz a vegeredmeny.

Aminek viszont orulok, hogy kivetelesen a biztonsag novelese (ill. fd eroforrasok hatekony kezelese), most csak pozitivummal jar, gyorsabb kod, egyszerubb tervezes mellett :), ha masok is atveszik esetleg POSIX-ozodik az meg jobb lenne (hordozhatosag).

omg wtf?

--------------------------
The OOM killer is like a surgeon that amputates the limb of a man to save his life: losing a limb is not a nice thing, but sometimes there is nothing better to do.

"Understanding the Linux Kernel" on page frame reclaiming

14400-on modemezek, úgyhogy nem tudom megnézni a linkeket.

A child processz indításakor nem lehet tudni, hogy milyen fd-ket kell(ene) lezárni. Azért nem lehet, mert más szálak (amik egyébként böcsületesen állítgatják az FD_CLOEXEC flaget) tarthatnak éppen az open és az fcntl között. Vagyis egy rosszkor induló child örökli az fd-t, hiába az fcntl. Ilyen dolgokat szinkronizálni is elég kényelmetlen.

Emiatt kérnek olyan támogatást, hogy az open képes legyen eleve nem öröklődő fd-ket csinálni.

--
CCC3

"Emiatt kérnek olyan támogatást, hogy az open képes legyen eleve nem öröklődő fd-ket csinálni."

Nem is értem, hogy másoknak ez miért kérdés.
Még sokkal több olyan kernelszintű szolgáltatás kellene, ami a multithread programozást segíti.
Egyszerűen sok dolgok user kódban csak workaroundolni/csúnyán hekkelni lehet, megoldást a kernel-szintű támogatás nyújthat.