Question Comment obtenez-vous Linux pour honorer les annuaires setuid?


Il y a quelque temps, au cours d'une conversation sur IRC, un utilisateur d'un canal dans lequel j'étais se trouvait a suggéré à quelqu'un de définir un répertoire afin qu'il hérite de l'ID utilisateur sur les fichiers afin de résoudre un problème rencontré par quelqu'un d'autre. À l'époque, j'ai parlé et j'ai dit que "Linux ne supporte pas les annuaires setuid". Après cela, la personne qui a donné le conseil m'a montré un pastebin (http://codepad.org/4In62f13) de son système respectant l’autorisation setuid définie sur un répertoire.

Juste pour expliquer, quand je dis "linux ne supporte pas les répertoires setuid", je veux dire que vous pouvez aller dans "chmod u + s directory" et que cela mettra le bit sur le répertoire. Cependant, linux (si j'ai bien compris) ignore ce bit (sur les répertoires).

Malgré tous mes efforts, je ne peux tout simplement pas répliquer ce pastebin. Quelqu'un m'a suggéré une fois qu'il serait peut-être possible d'émuler le comportement avec selinux - et de jouer avec les règles, il est possible de forcer un ID utilisateur sur un fichier, mais pas à partir d'une autorisation de répertoire setuid (que je peux voir). La lecture sur Internet a été assez peu informative - la plupart des endroits disent "non, les annuaires sur les annuaires ne fonctionnent pas avec linux", mais parfois "cela peut être fait dans des circonstances spécifiques" (comme ceci: http://arstechnica.com/etc/linux/2003/linux.ars-12032003.html)

Je ne me souviens plus de la personne d'origine, mais le système d'origine était un système Debian 6 et le système de fichiers qu'il exécutait était monté sur xfs avec "default, acl". J'ai essayé de reproduire cela, mais pas de chance jusqu'à présent (essayé avec différentes versions de debian, ubuntu, fedora et centos)

Quelqu'un peut-il m'indiquer sur quoi ou comment vous obtenez un système pour honorer setuid sur un répertoire?


8
2018-03-20 13:30


origine


XFS a certainement une option de montage (grpid|bsdgroups ou nogrpid|sysvgroups) cela signifie que les fichiers dans les répertoires sont créés avec le groupe du répertoire plutôt qu'avec le groupe du propriétaire; peut-être jouer avec ça? - Zanchey


Réponses:


Setuid pour les répertoires ne se comporte pas comme setgid. À moins que la sortie du shell provienne de FreeBSD, quelqu'un s’ennuyait et s’amusait un peu à vos dépens.

Le jeu d'autorisations setuid sur un répertoire est ignoré sur les systèmes UNIX et Linux. [4] FreeBSD peut être configuré pour l'interpréter de manière analogue à setgid, c'est-à-dire pour forcer tous les fichiers et sous-répertoires à appartenir au propriétaire du répertoire principal. [5]

Sous FreeBSD, les répertoires se comportent comme si leur bit setgid était toujours défini, quelle que soit sa valeur réelle. Comme indiqué dans open (2), "Lorsqu'un nouveau fichier est créé, il reçoit le groupe du répertoire qui le contient."

http://en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories


7
2018-03-20 15:34



Je pense que c'est le cas ... cependant, le gars était à peu près certain d'avoir atteint son objectif ... Je me suis ensuite tourné vers les forums Debian car il utilisait debian, et j'ai obtenu ceci comme réponse: forums.debian.net/… J'ai peut-être posté dans un état inférieur à l'idée et eu l'épaule froide. Après environ un mois de recherches, je ne suis pas certain que cela ne puisse pas être fait, mais je ne comprends pas pourquoi les gars de Debian croient que c’est possible sans modifier quelque chose. - Takigama
S'il y parvenait, il serait la meilleure source d'information sur la manière de procéder. J'ai moi-même étudié le sujet et je n'ai rien trouvé. - Aaron Copley
@AaronCopley: Avez-vous une autre source que wikipedia pour le fait que les autorisations setuid définies sur un répertoire sont en cours d'enregistrement sur des systèmes Linux? - Martin Thoma
Non, mais vous êtes invités à l'essayer et à constater par vous-même. :) - Aaron Copley


Réponse partielle / contourner:

J'essayais de faire la même chose, j'ai décidé de ne pas me battre et d'essayer une autre méthode. Ce que j'ai essayé, c'était des listes de contrôle d'accès, pour définir les autorisations par défaut. (Remarque: vous devrez peut-être d'abord les activer).

setfacl -R --set-file=- . <<EOF
# file: testdir/
# owner: testuser
# group: testgroup
user::rwx
group::rwx
group:normaluser:rwx
mask::rwx
other::r-x
default:group::rwx
default:group:normaluser:rwx
default:mask::rwx
default:other::r-x
EOF

Ici testuser est utilisé pour exécuter des tests, et l'utilisateur normal peut supprimer les résultats sans utiliser root (à chaque fois).


1
2017-10-22 17:00



Cela ajoute un nouveau groupe, mais définir l'ID du groupe fonctionne bien. - ctrl-alt-delor


De RHEL man chmod

chmod conserve les bits set-user-ID et set-group-ID d’un répertoire, sauf indication contraire de votre part. Vous pouvez définir ou effacer les bits avec des modes symboliques comme u + s et g-s,          et vous pouvez définir (mais pas effacer) les bits avec un mode numérique.

Numériquement si je me souviens bien, chmod 4711 ./dir ajoute le bit UID défini, chmod 2711 ./dir ajoute le gid set à cet effet 6711 paramétrer l'héritage uid + gid selon la démonstration de pastebin.

Par la page de manuel chmod u+s == chmod 4XXX et chmod g+s == chmod 2XXX


-2
2018-03-20 14:21



non, je comprends comment les appliquer, ce n’est pas le problème. - Takigama
(appuyez sur enter par erreur) Le problème est ce qu’ils font dans un répertoire. Je croyais que setuid sur les répertoires n’était pas quelque chose que Linux ne faisait pas, par exemple (système Ubuntu 10.10): testuser @ boson: ~ $ ls -ald ~ drwsrwsrwx 3 testuser testuser 4096 2012-03-21 01:55 / home / testuser Ce répertoire contient à la fois setuid et setgid. Maintenant, en tant qu'utilisateur tt @ boson: ~ $ touch ~ testuser / fichier t @ boson: ~ $ ls -la! $ Ls -la ~ testuser / fichier -rw-r - r-- 1 t testuser 0 2012-03 -21 01:57 / home / testuser / file Notez que le bit setuid du répertoire n'a aucun effet (ce à quoi je m'attends). Comment faites-vous qu'un système Linux utilise setuid sur un répertoire? - Takigama
Vous pouvez les effacer avec quelque chose comme =755 ou 00755 en utilisant les chiffres - Steve Buzonas