Forum Clubic

Propriétaire et et effectif - Bash

Bonjour, j’ai beau lire tout ce qui concerne les proprios réels et effectifs, sur le net, je n’arrive pas vraiment à cerner le fonctionnement et l’intérêt.
Si quelqu’un arrive à m’expliquer, tout d’abord bravo :D, et ensuite merci.

Je te donne un piste : il faut bien démarrer le process init. (pid 1 )

Non seulement ça ne m’aide pas, mais en plus je vois pas du tout de quoi tu parles.
Edité le 23/10/2007 à 13:55

Donner donner un UID/GID seulement aux fichier peut poser des problèmes.
donc on associe les droits à une commande et non aux fichiers qu’il manipule.
Au moment de l’exécution, c’est l’UID de la commande qui est utilisé et non celui du propriétaire réel.

(Tu as ce pb avec l’init en particulier ou pas mal de daemons sont lancés avec des droits spécifiques mais endossent les droits root sur certaines commandes)
Edité le 23/10/2007 à 14:03


[quote=""] * o

Les droits d’endossement sont très importants pour la sécurité.

Au lieu de donner l’accès à un fichier, on donne le droit d’accès à une commande.
Le kernel ou noyau, au moment de l’exécution de la commande endosse l’identité du propriétaire ou du groupe de la commande au lieu de celle de l’utilisateur qui a lancé la commande.
Donc l’accès au fichier se fait par le biais de la commande et non pas directement.

Quand un utilisateur se connecte sur un système GNU/Linux, il détient 2 UID (UserIDentity) et 2 GID (GroupIDentity) :
le réel et l’effectif.

* Au moment de l'exécution d'une commande les UID et GID sont les réels,les effectifs sont attribués à la commande.
* Quand les droits d'endossement ne sont pas positonnés, alors les UID et GID effectifs sont identiques aux UID et GID réels.
* Si les droits d'endossement sont positionnés alors l'UID et/ou GID effectifs sont ceux de la commande. Ce qui veut dire que les UID et GID effectifs sont ceux qui contrôlent les droits d'accès à une commande

[/quote]

un exemple con c’est ping, pour envoyer un paquet icmp (protocole en dessous de TCP/UDP) il faut les droits administrateur (seul root à le droit de faire du réseau de “bas niveau”)

donc l’exécutable ping a un attribut spécial : le SUID (pour Set User ID), tu peux le voir en faisant ls -l /bin/ping, la troisième lettre c’est “s” (pour suid) au lieu du x (pour executable) habituel.

Donc, quand tu lance la commande “ping” dans un terminal, le noyau change l’id du processus ping depuis l’utilisateur qui a lancé la commande (toi) vers celui qui possède le fichier (root) et donc, ping et seulement lui (normalment, sinon y’a une GROSSE faille de sécurité) s’exécute avec le droit de root, et “tu” as donc le droit de faire du réseau avec un protocole de bas niveau.


si tu fais une petite recherche dans tes exécutables, tu verras que les programmes qui ont ce bit SUID positionnés sont très rares (de mémoire, ping, mount, umount, mail, et je crois que c'est tout)

edit : su et sudo, bien évidement :wink:

edit2 : j’ai fait une recherche, y’a passwd aussi :oui: par contre, j’en ai quelques autres dans /usr/bin, je trouve pas ça très bien :confused:
Edité le 23/10/2007 à 15:53

ok, merci beaucoup.