web-dev-qa-db-fra.com

linux / setfacl - Définit tous les fichiers / répertoires actuels / futurs du répertoire parent sur 775 avec le propriétaire / groupe spécifié

J'ai un répertoire appelé "membres" et en dessous il y a des dossiers/fichiers. Comment puis-je définir de manière récursive tous les dossiers/fichiers actuels et tous les futurs qui y sont créés pour avoir par défaut 775 autorisations et appartenir au propriétaire/groupe nobody/admin respectivement? J'ai activé ACL, monté, mais je n'arrive pas à obtenir la commande setfacl pour le faire correctement. Une idée de comment y parvenir?

43
Maverick

En fait, j'ai trouvé quelque chose qui fait jusqu'à présent ce que j'ai demandé, à partager ici afin que quiconque rencontre ce problème puisse essayer cette solution:

Sudo setfacl -Rdm g:groupnamehere:rwx /base/path/members/
Sudo setfacl -Rm g:groupnamehere:rwx /base/path/members/

R est récursif, ce qui signifie que tout ce qui se trouve dans ce répertoire aura la règle qui lui sera appliquée.
 est par défaut, ce qui signifie que pour tous les futurs éléments créés dans ce répertoire, ces règles s'appliquent par défaut. m est nécessaire pour ajouter/modifier des règles.

La première commande, est pour les nouveaux éléments (d'où le d), la deuxième commande, est pour les éléments anciens/existants dans le dossier. J'espère que cela aide quelqu'un car ce genre de choses est un peu compliqué et pas très intuitif.

63
Maverick

Pour aller avec votre réponse acceptée ...

Vous pouvez combiner ces commandes ensemble comme:

Sudo setfacl -Rm d:g:groupnamehere:rwx,g:groupnamehere:rwx /base/path/members/
18
Joshua

setfacl sur linux a le -d et -k options pour manipuler les permissions par défaut qui sont probablement ce que vous cherchez (voir man pour plus d'informations).

2
peterph

Il est facile de définir récursivement des autorisations UNIX simples à la demande d'un utilisateur dûment autorisé, les autorisations des répertoires et des fichiers. Il n'est pas possible de l'imposer automatiquement.

Vous pourriez dire aux utilisateurs d'utiliser l'ensemble umask de 0002, et cela aide à créer de nouveaux fichiers à 0775 (selon l'application). Mais ce n'est pas exécutoire.

Ma compréhension est que les ACL ne sont pas héritées sur les systèmes UNIX/Linux. Ils sont fixés sur demande.

En ce qui concerne la propriété des fichiers/répertoires, vous n'avez pas de chance ici.

En ce qui concerne la propriété du groupe de fichiers/répertoires, en définissant le bit set-gid du répertoire (c'est-à-dire g + s dans DIRECTORIES), cela entraîne l'héritage de la propriété du groupe.

Ce que j'ai fait dans de telles situations est d'exécuter un script cron racine périodique qui réinitialise les autorisations/propriétés non conformes à la norme dans ces répertoires.

Un autre processus (NON RECOMMANDÉ) consiste à utiliser le même identifiant utilisateur lorsque vous travaillez sur ces fichiers. Pour ce faire, l'utilisateur peut se connecter au système sous son propre UID, puis utiliser Sudo ou su pour s'exécuter en tant qu'identifiant. Ce n'est toujours pas à 100%, en particulier en ce qui concerne les ACL et les bits d'autorisation.

1
mdpc