[gull] [Solution] chmod +X et chmod +s

Pascal Damien info at familledamien.ch
Thu Sep 13 08:24:08 CEST 2018


Merci, Frederic, pour cette explication bien utile

Pascal


Le 12.09.2018 à 17:23, Frederic Dumas a écrit :
> Bonjour à tous,
>
> voici une petite martingale pour le jour où on cherche à remettre d’équerre les droits sur une arborescence de fichiers foutraque. Voici deux moyens de forcer chmod à n’appliquer les droits d’exécution qu’aux seuls dossiers (pour qu’ils soient traversant), et non aux fichiers (on ne veut pas tous les avoir exécutables).
>
>
>
> sudo chmod -R ugo-x /repertoire_plein_de_sous-repertoires/
>
> supprime le droit d’exécution sur la totalité des objets, indistinctement fichiers comme répertoires.
>
>
> sudo chmod -R ugo+x /repertoire_plein_de_sous-repertoires/
>
> évidemment, son contraire restaure le droit d’exécution sur la totalité des objets, c.a.d. les fichiers comme les répertoires. Ce qu’on ne cherche a priori jamais à faire.
>
>
> sudo chmod -R ugo+X /repertoire_plein_de_sous-repertoires/
>
> chmod restaure le droit d’execution sur les seuls répertoires, mais non sur les fichiers, si on utilise l’option -X avec une majuscule.
>
>
> J’étais content d’avoir mis la main sur ce petit truc.
>
>
>
>
> Pour appliquer de même aux seuls répertoires un attribut forçant l’identité (setuid) et l’appartenance à tel groupe (setgid) de tout élément nouvellement créé à l’intérieur de ces répertoires, la gymnastique est malheureusement un peu plus compliquée.
>
>
>
> sudo chmod -R ugo-s /repertoire_plein_de_sous-repertoires/
>
>
> supprime le bit setuid sur la totalité des objets, indistinctement fichiers comme répertoires.
>
>
> sudo chmod -R ug+s /repertoire_plein_de_sous-repertoires/
>
> impose à tout fichier ou dossier nouvellement créé dans cette arborescence d’appartenir à l’utilisateur et au groupe du repertoire dans lequel il a été créé. C’est très pratique pour éviter la pagaille dans une arborescence partagée entre plusieurs utilisateurs : tout ce qu’ils y feront sera propriété commune au répertoire, et non leur propriété propre.
>
>
> Malheureusement, l’option +s applique ce même attribut d’identité à tous les fichiers aussi, ce qu’on ne cherche là encore a priori que très rarement à faire. Car ça ouvrait alors le droit aux fichiers exécutables d’être lancés avec les droits de l’utilisateur qui les a créés ou du groupe auquel ils appartiennent, et non avec ceux de l’utilisateur qui cherche à les exécuter.
>
>
> Or, chmod n’offre dans ce cas pas de variante +S à l’option +s, comme cela était possible avec les options +x/+X. C’est le cas au moins sur ma distribution. Pour parvenir à n’appliquer l’attribut d’identité Setuid qu’aux seuls dossiers, il faut alors combiner chmod avec find :
>
>
> sudo find /repertoire_plein_de_sous-repertoires/ -type d -exec chmod ug+s {} \;
>
>
> C’est l’option -type d de la commande find qui ne transmet à chmod que les seuls répertoires, et évite ainsi que l’option -s de chmod ne tague aussi les fichiers qu’ils contiennent.
>
>
> Evidemment, je ne fais ici que recycler ce que j’ai trouvé sur la toile, pour répondre à mes propres besoins. Ce mail n’a pour but que de servir de pense-bête pour plus tard, à moi et à tous ceux qui se retrouvent parfois devant des arborescences où les droits sont retournés un jour à l’état sauvage.
>
>
> Bye.
> _______________________________________________
> gull mailing list
> gull at forum.linux-gull.ch
> http://forum.linux-gull.ch/mailman/listinfo/gull



More information about the gull mailing list