Comportement étrange pour setuid et setgid


1

Je fais une petite expérience avec des bits de privilège spéciaux comme suit:

[root@localhost~]# useradd user1
[root@localhost~]# cp /bin/touch /home/
[root@localhost~]# chown user1:user1 /home/touch
[root@localhost~]# chmod u+s,g+s /home/touch
[root@localhost~]# ls -l /home/touch
-rwsr-sr-x 1 user1 user1 52656 Jun 26 14:17 /home/touch
[root@localhost~]# chmod o+w /usr/local/etc/
[root@localhost~]# ls -ld /usr/local/etc
drwxr-xrwx.2 root root 4096 Jun 26 14:14 /usr/local/etc/
[root@localhost~]# /home/touch /usr/local/etc/root.1
/home/touch: cannot touch '/usr/local/etc/root.1': Permission denied

Parce que les deux bits suid et sgid sont définis pour l'exécutable /home/touch, Je m'attendais à ce que lorsque root exécute la commande /home/touch /usr/local/etc/root.1, l'efficacité user:group devrait être user1:user1, qui devrait avoir un accès en écriture à /usr/local/etc répertoire (voir o=rwx ).

Mais le résultat m'a rendu perplexe. En fait, toute personne appartenant à la root Le groupe échouera comme la racine, mais d'autres utilisateurs pourront exécuter la commande ci-dessus avec succès.

Seulement après avoir changé le mode de répertoire par chmod g+w /usr/local/etc, les utilisateurs appartenant au root groupe exécuter la commande sans erreur de permission.

Ne doit pas l'utilisateur effectif: groupe pour toute personne en cours d'exécution /home/touch être user1:user1? Quel est le problème avec le groupe racine? Est-ce que j'ai manqué quelque chose?

J'ai pris l'expérience sur RHEL 6.4 64 bits


1
Je remarque que les autorisations de sortie pour /usr/local/etc (“ drwxr-xrwx. ”) Se termine par un point. Cela peut signifier que le répertoire a une liste de contrôle d'accès. Pouvez-vous vérifier cela?
Scott

Un répertoire ou un fichier avec ACL se termine par le signe "+" au lieu de ".".
yuanlinios

J'ai regardé dans la documentation 'ls'. Il a dit: GNU 'ls' utilise un '.' pour indiquer un fichier avec un contexte de sécurité SELinux. Dans mon environnement, la fonctionnalité SELinux est simplement désactivée.
yuanlinios
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.