Sur les systèmes Linux, vous pouvez réussir chmod u+s $some_directory
, mais au lieu de forcer la propriété des nouveaux sous-répertoires et fichiers à être le propriétaire du répertoire contenant (et de définir également les sous-répertoires u+s
) comme vous pouvez vous y attendre, le système ignore simplement le bit setuid. Les sous-répertoires et les fichiers continuent d'hériter des UID de leurs processus de création, et les sous-répertoires ne sont pas définis par défaut.
Pourquoi setuid est-il ignoré dans les répertoires et comment puis-je faire en sorte que le système le reconnaisse?
linux
file-permissions
Blacklight Shining
la source
la source
nosuid
bien qu'il y en ait un autre (un disque virtuel/dev/shm
) qui est / monté /nosuid
, et il semble traiter lesetuid
bit exactement de la même manière. 6_9Réponses:
Rappelons que les bits setuid et setgid ont été inventés dans un but complètement différent: faire fonctionner un exécutable avec l'uid ou le gid de son propriétaire, plutôt qu'avec l'uid ou le gid de l'utilisateur exécutant le fichier. Toute autre utilisation n'est qu'une fonctionnalité supplémentaire.
Ces bits n'ont aucune fonction sur les fichiers ordinaires qui ne sont pas exécutables. (Et aussi des scripts shell sur certaines distributions, en raison de problèmes de sécurité.) À l'origine, ils n'avaient pas non plus de fonction pour les répertoires. De toute évidence, quelqu'un a décidé qu'il serait intéressant de prendre le setgid inutilisé sur les répertoires et de l'utiliser pour renforcer la cohérence de la propriété du groupe. Après tout, si vous jouez avec la propriété d'un groupe, c'est parce que plus d'une personne travaille avec le fichier, et il est probablement logique que tous les fichiers d'un répertoire donné appartiennent au même groupe, peu importe qui les a créés. Les tracas dus à quelqu'un qui oublie d'exécuter newgrp sont éliminés.
Alors, pourquoi ne pas implémenter la même fonctionnalité pour setuid et le fichier uid? Eh bien, uid est beaucoup plus basique que gid. Si vous implémentez cela, souvent un fichier n'appartiendra pas à l'utilisateur qui l'a créé! Vraisemblablement, l'utilisateur peut toujours modifier le fichier (en supposant que l'umask est quelque chose de sain d'esprit), mais il ne peut pas modifier les bits d'autorisation. Difficile de voir l'utilité de cela.
la source
Je crois que la réponse à cette question porte sur les problèmes de sécurité de "distribution de fichiers" qui ont eu pour conséquence que la plupart des systèmes d'exploitation de type Unix modernes ne permettent pas de "distribution de fichiers". "File giveaway" est lorsqu'un utilisateur non superutilisateur change la propriété d'un fichier en une personne autre que cet utilisateur. Cette capacité offre de nombreuses possibilités de méfaits.
Étant donné que les cadeaux de fichiers ne sont pas autorisés, setuid sur les répertoires, qui exécuteraient la même fonction sous une autre forme, n'est pas autorisé ou ignoré s'il est défini.
Quant à changer le comportement, vous devrez modifier les bibliothèques et les utilitaires du système d'exploitation.
la source
Un très bon cas d'utilisation pour l'implémenter est le suivant:
Disons que vous avez un serveur multi-sites avec 3 sites sécurisés. Vous avez créé 3 groupes, un pour chacun des différents responsables de sites. Tous les fichiers de tous les sites doivent appartenir à l'utilisateur apache pour qu'apache puisse y lire et écrire (drupal / wordpress, etc.).
Si le setuid mais fonctionnait comme le bit setgid pour les permissions des répertoires ressemblerait à ceci:
De cette façon, chaque groupe de responsables avait accès pour voir et toucher uniquement leur contenu, mais l'utilisateur du serveur Web apache pouvait servir tout le contenu et il n'était pas nécessaire pour les utilisateurs de s'inquiéter de changer la propriété des fichiers téléchargés.
Un autre cas d'utilisation est pour les téléchargements ftp / http anonymes ou même sftp / ssh. Le groupe et le GID du répertoire de téléchargement seraient root, tout comme le propriétaire et l'UID. Les autres autorisations seraient
-wx
. Cela permettrait à tout le monde d'écrire au répertoire de téléchargement mais ils ne pouvaient rien lire une fois qu'il était téléchargé et root détiendrait tous les fichiers nouvellement créés.Il y a donc deux cas d'utilisation parfaitement bons et valides pour activer la fonctionnalité UID sur les répertoires pour correspondre au bit GID.
Steven Mercurio
la source
<nonexistent feature X>
?»). Cependant, cela se rapporte à ma question et, en tant que demandeur, je la trouve utile.Un peu tard pour la fête, mais au cas où de futurs lecteurs tomberaient dessus, cela)
mount -o
.... ou quoi non). Comme souvent, la page de manuel n'est pas conforme au comportement OS-X qu'elle indique littéralement:mais il énumère également une possibilité d'obtenir le même effet sans renoncer à la propriété d'origine. Linux utilise '[g /] setfacls' pour des effets similaires (ce sont des permissions qui ne sont pas vraiment visibles à première vue, donc cela peut parfois être une nuisance).
En ce qui concerne «comment puis-je obtenir des effets similaires», lisez l'intégralité de la page de manuel et jouez avec:
vous pouvez vérifier via
si tout va bien. D'autres options incluent l'insertion de règles à des positions spécifiques, la suppression ou le remplacement de règles spécifiques. Les deux options notables ici sont "
file_inherit
etdirectory_inherit
" permettant d'attacher les règles à un nouveau répertoire / fichier.Je n'aime pas vraiment utiliser setUID, mais setGID est très pratique sur les serveurs de fichiers où la simple définition du groupe «principal» ne fonctionne pas ou les clients ont des masques de fichiers interdisant l'écriture de groupe. Cela serait résolu par:
la source
chown
semble en fait assez important! «[…] Si le système de fichiers sous-jacent prend en charge cette fonctionnalité: voir chmod (2) et l' option suiddir pour monter (8).» En fait, je n'avais jamais remarqué ce bit auparavant. Si HFS implémentesuiddir
, vous pouvez réellement obtenir cela sur un système OS X commun.Eh bien, cela devrait respecter la norme. Je peux penser sur de nombreux scénarios avec sftp uniquement que cela me sauverait beaucoup de problèmes, à la fois avec acl et le jeu de masques acl que sshd fait, et la réinitialisation que je dois faire pour ce masque.
La sécurité par défaut est assez utile, mais si vous n'en faites pas une option, vous créez simplement un winghtmare.
https://www.gnu.org/software/coreutils/manual/html_node/Directory-Setuid-and-Setgid.html
Quoi qu'il en soit, c'est comme Linux, alors utilisez simplement acl pour contourner ces problèmes.
la source
Selon http://en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories, le bit setuid est ignoré pour les répertoires sur les systèmes UNIX et Linux. Il est cependant possible de le faire agir comme vous l'attendez sur FreeBSD.
la source
setuid
était ignoré pour les répertoires et s'il était possible de le faire reconnaître sur Linux.linux
, oui, mais cela ne signifie pas que je préférerai une réponse vague «C'est fait de cette façon parce que d'autres systèmes le font de cette façon» à une réponse qui explique pourquoi c'est fait de cette façon sur d'autres systèmes. (Peut-être que lalinux
balise devrait simplement être supprimée?)