Zmena real GID programu (shellu)

Pavel Kankovsky peak na kerberos.troja.mff.cuni.cz
Pondělí Říjen 6 20:18:37 CEST 1997


aha... uz je cas, aby vam to nekdo vysvetlil :)

opravneni procesu (credentials) se skladaji (v Linuxu) z nasledujiciho:
skutecny vlastnik (uid), efektivni vlastnik (euid), "uschovany vlastnik"
(saved uid, suid), vlastnik pro ucely pristupu k filesystemu (fsuid), totez
ctyrmo pro skupinu (gid, egid, sgid, fsgid) a navic "pomocne skupiny"
(supplemental group ids)

zacnu od prostredka :)

fsuid/fsgid je specialita Linuxu, kterou pouzivaji (udajne) ruzne NFS
servery a podobne potvory, aby mely jednodussi zivot; nastavuji se
volanim setfsuid() a setfsgid(); normalne jejich hodnota kopiruje
euid a egid

uid,euid/gid,egid maji ocekavanou unixovou semantiku, suid/sgid je pro SysV
kompatibilitu--ovlivnuji volani setuid() a setgid(), pro BSD kompatibilitu
jsou zde volani setreuid() a setregid(); vsechna maji spolecne to, ze
volajici bud musi byt root (euid==0) nebo musi byt nastavovany uid/gid
uz nekde nastaveny

"pomocne skupiny" jsou prakticky nemenne--daji se ovlivnovat pouze
volanim setgroups(), ktere muze delat pouze root a typicky ho provadi
login nebo su - a pouzivaji se pouze pro pristup k filesystemu

zaver: newgrp setuid potrebuje, protoze jinak by nebyl schopen obecne
zmenit skupinu volanim setgid() (nebo setregid(), ja nevim, co presne dela)
ovsem obcas je jednodussi si k tomuto ucelu udelat maly setgid program
(je-li ta skupina v supplemental groups), ktery execne shell

--Pavel Kankovsky aka Peak (troja.mff.cuni.cz network administration)




Další informace o konferenci Linux