Rozdil mezi pravy 711 a 701

Michal Krause michal na krause.cz
Pondělí Listopad 13 15:07:31 CET 2000


On 13/11/2000, Martin Mačok wrote:

> > 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.

Jak? (staci natuknout).

> 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 ...

Kde v /proc? Jedine, kde je zjevne [ug]id je "soubor" status a v nem mam
pri tom testu opet jenom spravne hodnoty:

Uid:    500     500     500     500
Gid:    100     100     100     100

> P.S. man setfsuid a man setfsgid

Na to jsem prisel uz vcera - nepomuze to. Navic, v manualove strance se
rika, ze:

"Normally, the value of fsuid will shadow the value of the  effective
user  ID.  In  fact, whenever the effective user ID is changed, fsuid
will also be changed to new value of effective user ID."

a

"An explict call to setfsuid is usually only used by programs such as
the Linux NFS server  that need  to change what user ID is used for file
access without a corresponding change in the real and effective user
IDs."

A k tomu vsemu je to jeste neportabilni.

S pozdravem
--
Michal Krause                                                       /\
ICQ: 7665279            Informace (nejenom) ze sveta Linuxu      /\/  \
email: michal na krause.cz _______ http://www.root.cz/ _______ NAVRCHOLU.cz

                           Penguino  veritas


Další informace o konferenci Linux