setfsuid()
specifické pro Linux / setfsgid()
jsou spíše na vlákno než na proces. Jsou navrženy speciálně pro tento případ použití (souborový server).
Všimněte si, že access()
bude stále kontrolovat přístup pomocí skutečného uid a gid - to je záměrné (je určeno k zodpovězení otázky "měl by uživatel, který spustil tento binární soubor, mít daný přístup k tomuto souboru" ). Pro setfsuid()
/ setfsgid()
v případě, že byste měli zkusit požadovanou operaci a zjistit selhání kvůli nedostatku oprávnění v tomto bodě.
Chcete-li změnit uid pouze pro jedno vlákno, musíte použít přímo syscall:syscall(SYS_setresuid, ...); Funkce libc setresuid() jej synchronizuje pro všechna vlákna (pomocí singálu, který odešle všem vláknům)!
Jaký je nejjednodušší způsob, jak SSH používat Python?
Načíst využití CPU a paměti jedním procesem v Linuxu?