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