OVH Cloud OVH Cloud

Les droits root sont ils universels ?

10 réponses
Avatar
Ahimsa
Bonjour,

Dans le cadre d'un développement, je dois reprendre un projet dont
le but est l'installation d'un package sur une machine, mais dans un
répertoire système (appartenant à root), et ce à partir d'un CD.

D'après ce que je comprends, sur la machine de création du CD, les
différentes commandes (cp, rm, mv, tar, mkdir, chmod, mount, umount ...)
sont copiées avec de nouveaux noms (du genre commande1, commande2 ....)
et se voient appliquer le sticky bit avec chmod 7755 (en étant root sur
cette
machine).

Ces fichiers sont copiés sur le CD-ROM, avec le package et le
programme d'installation, et ce dernier les utilise et semble pouvoir
installer le package comme s'il était root, sur une autre machine.

Celà me semble inconcevable, car si celà était possible, cela voudrait dire
que n'importe qui pourrait se faire passer pour root en ayant des commandes
avec le sticky bit positionné en étant root sur une autre machine.

D'où ma question : les droits root sont ils universels ? Comment UNIX
différencie
les droits du root de la machine et les droits positionné par un autre root
?

Merci de votre aide

10 réponses

Avatar
Nicolas George
"Ahimsa" wrote in message <45e1d501$0$27375$:
Dans le cadre d'un développement, je dois reprendre un projet dont
le but est l'installation d'un package sur une machine, mais dans un
répertoire système (appartenant à root), et ce à partir d'un CD.

D'après ce que je comprends, sur la machine de création du CD, les
différentes commandes (cp, rm, mv, tar, mkdir, chmod, mount, umount ...)
sont copiées avec de nouveaux noms (du genre commande1, commande2 ....)
et se voient appliquer le sticky bit avec chmod 7755 (en étant root sur
cette
machine).


Ayé, j'ai vomi.

Ces fichiers sont copiés sur le CD-ROM, avec le package et le
programme d'installation, et ce dernier les utilise et semble pouvoir
installer le package comme s'il était root, sur une autre machine.

Celà me semble inconcevable, car si celà était possible, cela voudrait dire
que n'importe qui pourrait se faire passer pour root en ayant des commandes
avec le sticky bit positionné en étant root sur une autre machine.


(Ce n'est pas le sticky bit, c'est le bit SUID.)

Sur un système correctement configuré, les périphériques amovibles sont
montés avec l'option nosuid, et le bit SUID n'a pas d'effet.

D'où ma question : les droits root sont ils universels ? Comment UNIX
différencie les droits du root de la machine et les droits positionné par
un autre root ?


Il n'y a pas de différence à ce niveau-là. Dès que le système voit une UID 0
et un bit SUID pris en compte, l'effet est le même.

Mais ici, le bit SUID ne devrait pas être pris en compte.

Avatar
lhabert
"Ahimsa" :

D'après ce que je comprends, sur la machine de création du CD, les
différentes commandes (cp, rm, mv, tar, mkdir, chmod, mount, umount ...)
sont copiées avec de nouveaux noms (du genre commande1, commande2 ....)
et se voient appliquer le sticky bit avec chmod 7755 (en étant root sur
cette machine).


Il suffit de 4755, et le bit en question s'appelle setuid. Le bit sticky, il
n'a de sens que sur les répertoires.

Ces fichiers sont copiés sur le CD-ROM, avec le package et le
programme d'installation, et ce dernier les utilise et semble pouvoir
installer le package comme s'il était root, sur une autre machine.


Cette technique est grotesque, et risque de ne pas marcher, cf plus loin. Il
vaut mieux simplement demander à l'utilisateur de passer root pour lancer le
programme d'installation.

Celà me semble inconcevable, car si celà était possible, cela voudrait dire
que n'importe qui pourrait se faire passer pour root en ayant des commandes
avec le sticky bit positionné en étant root sur une autre machine.

D'où ma question : les droits root sont ils universels ? Comment UNIX
différencie les droits du root de la machine et les droits positionné par
un autre root?


Dans le modèle unix traditionel, les supports de données amovibles, ça
n'existe pas, seul root a le droit de monter des systèmes de fichiers, et il
est censé s'assurer qu'il n'y a pas de bit s intempestifs dessus. De nos
jours où l'on est bien obligé de laisser n'importe quel utilisateur monter
un fs qu'il fournit sur un CD ou une clef USB, il y a effectivement un
problème. Sous linux (j'imagine qu'il y a un truc similaire sur les autres
OS), la solution retenue consiste en l'option de montage « nosuid », qui
fait ignorer les bits suid et sgid par le noyau. Il faut d'ailleurs aussi
l'option « nodev ». Et les systèmes permettant le montage automatique ou à
la demande de l'utilisateur des fs amovibles activent ces options.

Avatar
Olivier Miakinen

Il suffit de 4755, et le bit en question s'appelle setuid.


Oui.

Le bit sticky, il n'a de sens que sur les répertoires.


Il me semble que ça a un sens sur les exécutables aussi, par exemple les
shells, pour les laisser en mémoire même quand personne ne les utilise
(plus rapide à relancer).

Avatar
lhabert
Olivier Miakinen :

Il me semble que ça a un sens sur les exécutables aussi, par exemple les
shells, pour les laisser en mémoire même quand personne ne les utilise
(plus rapide à relancer).


C'était le cas sur les premiers unix, mais je crois que ça fait belle
lurette que plus personne n'honore ça.

Avatar
Eric Levenez
Le 26/02/07 14:43, dans <eruo5b$1mif$, « Luc Habert »
a écrit :

Olivier Miakinen :

Il me semble que ça a un sens sur les exécutables aussi, par exemple les
shells, pour les laisser en mémoire même quand personne ne les utilise
(plus rapide à relancer).


C'était le cas sur les premiers unix, mais je crois que ça fait belle
lurette que plus personne n'honore ça.


Oui, ou plus exactement le vieux code reste en mémoire d'office grâce à la
gestion de la mémoire virtuelle. Sur Mac OS X, cela remplit en partie la
zone "inactive" de la RAM (que certains aimeraient voir passer en zone
"libre").

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
Olivier Miakinen
Le 26/02/2007 18:58, Eric Levenez renchérissait sur Luc Habert :

Il me semble que ça a un sens sur les exécutables aussi, par exemple les
shells, pour les laisser en mémoire même quand personne ne les utilise
(plus rapide à relancer).


C'était le cas sur les premiers unix, mais je crois que ça fait belle
lurette que plus personne n'honore ça.


Oui, ou plus exactement le vieux code reste en mémoire d'office grâce à la
gestion de la mémoire virtuelle. Sur Mac OS X, cela remplit en partie la
zone "inactive" de la RAM (que certains aimeraient voir passer en zone
"libre").


Merci à vous deux, je ne savais pas tout cela.



Avatar
Stephane Dupille
Oui, ou plus exactement le vieux code reste en mémoire d'office grâce à la
gestion de la mémoire virtuelle. Sur Mac OS X, cela remplit en partie la
zone "inactive" de la RAM (que certains aimeraient voir passer en zone
"libre").


C'est encore utilisé le sticky-bit sur les exécutables ? Parce que
bon, le système est censé se démerder tout seul pour gérer ça
lui-même.

Avatar
lhabert
Stephane Dupille :

Parce que bon, le système est censé se démerder tout seul pour gérer ça
lui-même.


Oui, c'est ce que moi et Eric venont de dire...

Avatar
Olivier Miakinen

Oui, ou plus exactement le vieux code reste en mémoire d'office grâce à la
gestion de la mémoire virtuelle. Sur Mac OS X, cela remplit en partie la
zone "inactive" de la RAM (que certains aimeraient voir passer en zone
"libre").


C'est encore utilisé le sticky-bit sur les exécutables ? Parce que
bon, le système est censé se démerder tout seul pour gérer ça
lui-même.


C'est exactement ce qu'il disait... en tout cas c'est ce que j'en ai
compris.


Avatar
Eric Levenez
Le 26/02/07 19:33, dans <45e327cb$, « Olivier Miakinen »
<om+ a écrit :


Oui, ou plus exactement le vieux code reste en mémoire d'office grâce à la
gestion de la mémoire virtuelle. Sur Mac OS X, cela remplit en partie la
zone "inactive" de la RAM (que certains aimeraient voir passer en zone
"libre").


C'est encore utilisé le sticky-bit sur les exécutables ? Parce que
bon, le système est censé se démerder tout seul pour gérer ça
lui-même.


C'est exactement ce qu'il disait... en tout cas c'est ce que j'en ai
compris.


Tu as bien compris.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.