Rozdil mezi pravy 711 a 701
Martin Mačok
martin.macok na underground.cz
Pondělí Listopad 13 14:05:11 CET 2000
On Mon, Nov 13, 2000 at 09:34:10AM +0100, Michal Krause wrote:
> On 13/11/2000, Martin Mačok wrote:
>
> > > Takze jeste jednou a srozumitelne (doufam). Mam program, ktery se
> > > spousti prvotne pod rootem a po zjisteni pozadovane identity se prepne
> > > na uzivatele zavolanim setgid() a setuid(), pricemz jsem zkousel i
> > > setregid() a setreuid() se stejnym vysledkem. Tudiz, pokud se nemylim,
> > > nemel by byt zadny *id shodny s rootem, ktery vlastni (jakozto uzivatel
> > > i skupina) adresar /home. Nebo snad ano?
> >
> > Nejjednoduseji si to overite tak, ze si zjistite, jaky je uid/gid
> > (euid/egid) v momente, kdy leze do adresare /home v obou pripadech ...
>
> To je prave to divne. Udelal jsem si maly programek:
>
> int main(int argc, char **argv)
> {
> setgid(100);
> setuid(500);
> if (chdir("/home/mike/test/mike") != 0)
> perror("chdir");
> printf("%d/%d %d/%d\n", getuid(), getgid(), geteuid(), getegid());
> return 0;
> }
Problem je v tom, ze takto po zavolani setgid pod rootem zustane proces
bezet jeste _i_ ve skupine 0, tudiz u tech prav root/root 701 spadne do
te 0 u skupiny a tedy na vlezeno do toho adresare nema pravo. Je to
potreba osetrit tak, aby v te skupine 0 nezustal. Mam ted trochu naspech
a nechci tady usit nejake chybne reseni, ale po kouknuti se do /proc/pid
a s pomoci Pavla Machka :) to bylo vysvetleno a overeno ...
bye
P.S. man setfsuid a man setfsgid
--
< Martin Mačok .-= martin.macok na underground.cz =-. < iso-8859-2 >
\\. http://kocour.ms.mff.cuni.cz/~macok/ http://underground.cz/ .//
\\\.. `-= t.r.u.s.t n.0 o.n.e =-' ..///
Další informace o konferenci Linux