Supposons que j'ai deux utilisateurs, Alice et Bob, un groupe GROUPNAME et un dossier foo
, les deux utilisateurs étant membres de GROUPNAME (sous Linux et ext3).
Si j'enregistre en tant qu'utilisateur Alice un fichier sous foo
, les autorisations sont les suivantes -rw-r--r-- Alice Alice
:. Cependant, est-il possible d’obtenir que chaque fichier enregistré dans un sous-répertoire de foo
possède des autorisations -rwxrwx--- Alice GROUPNAME
(c’est-à-dire le propriétaire Alice, le groupe GROUPNAME)?
permissions
group
acl
umask
étudiant
la source
la source
Réponses:
Vous pouvez contrôler les bits d'autorisation attribués avec
umask
, et le groupe en faisant le répertoire setgid àGROUPNAME
.Notez que vous devez faire le
chgrp
/chmod
pour chaque sous-répertoire; il ne se propage pas automatiquement (c’est-à-dire que ni les répertoires existants, ni ceux créés par la suite dans un répertoire setgid ne seront setgid , bien que ce dernier soit dans un groupeGROUPNAME
).Notez également qu’il
umask
s’agit d’un attribut de processus et s’applique à tous les fichiers créés par ce processus et ses enfants (qui héritent de l’umask
effet actif dans leur parent à lafork()
fois). Les utilisateurs peuvent avoir besoin de définir ceci~/.profile
, et de faire attention aux éléments non liés à votre répertoire qui nécessitent des autorisations différentes. les modules peuvent être utiles si vous avez besoin de paramètres différents pour différentes tâches.Vous pouvez mieux contrôler les choses si vous pouvez utiliser les ACL POSIX; il devrait être possible de spécifier à la fois un masque d'autorisations et un groupe, et de les faire propager de manière sensée. La prise en charge des ACL POSIX est toutefois quelque peu variable.
la source
-rwxrwx--- A G
)?Si possible, utilisez des listes de contrôle d'accès (ACL) .
Sous Linux, assurez-vous que le système de fichiers que vous utilisez prend en charge les ACL (la plupart des systèmes de fichiers unix le font). Vous devrez peut-être modifier les options de montage pour activer les listes de contrôle d'accès: avec ext2 / ext3 / ext4, vous devez spécifier l'
acl
option de montage de manière explicite; l'entrée/etc/fstab
doit donc ressembler à/dev/sda1 / ext4 errors=remount-ro,acl 0 1
. Exécutermount -o remount,acl /
pour activer les ACL sans redémarrer. Installez également les outils de ligne de commande ACLgetfacl
etsetfacl
, généralement fournis dans un package appeléacl
.Maintenant que la configuration unique est terminée, modifiez la liste de contrôle d'accès du répertoire pour attribuer des autorisations d'écriture au groupe et pour rendre ces autorisations héritées des nouveaux fichiers créés. Sous Linux:
Si ACLs ne sont pas une option, rendre le répertoire propriété du groupe
GROUPNAME
, et définir ses autorisations à 2775 ou 2770:chmod g+rwxs /path/to/directory
. Les
ici signifie le bit setgid; pour un répertoire, cela signifie que les fichiers créés dans ce répertoire appartiendront au groupe qui en est le propriétaire.Vous devez également configurer umask d’ Alice et Bob pour que tous leurs fichiers puissent être écrits en groupe par défaut. La valeur par défaut umask sur la plupart des systèmes est 022, ce qui signifie que les fichiers peuvent avoir toutes les autorisations sauf écrire par groupe et autre. Changez cela en 002, ce qui signifie d'interdire uniquement les autorisations d'écriture par un autre. Vous mettriez généralement ce paramètre dans votre
~/.profile
:la source
mount
commande avec l'remount
option, donc elle ne l'utilise pasfstab
. Avoiracl
deux fois signifie que le système de fichiers a déjà été monté avec l'acl
option, ce qui est inoffensif. Soit dit en passant,acl
la valeur par défaut pour ext4 dans les noyaux récents (le correctif était encore neuf à l'époque où j'ai écrit cette réponse). Q2: Vous pouvez exécuter les commandes dans l'un ou l'autre ordre.GROUPNAME
place deG
, pour la rendre plus claireCette question est un bon moyen pour Linux
acl
. Puisque vous n’indiquez pas votre système d’exploitation, je présumerai que Linux est la suivante. Voici un exemple de session.Je ne connais pas de très bon
acl
tutoriel, mais vous pourriez faire pire que http://www.vanemery.com/Linux/ACL/linux-acl.htmlNotez que le
acl
comportement par défaut se comporte comme un umask local. Comme au moins sous Linux, les masques sont appliqués globalement, c’est le seul moyen que je connaisse pour obtenir l’effet d’un umask local. Pour une raison quelconque, cette caractéristique est peu connue. Le réseau est encombré de personnes qui demandent des informations sur une substitution umask locale, mais presque personne ne semble penser à les utiliseracl
.Notez également que vous devez monter la partition sur laquelle vous travaillez
acl
, par exemple.La session suit:
Définissez le groupe
foo
surstaff
et les paramètres acl du groupe et de l'utilisateurfoo
surrwx
.Définissez également les valeurs par défaut de l'utilisateur et du groupe
rwx
. Cela définit les autorisations dont les fichiers et les répertoires héritentfoo
. Ainsi, tous les fichiers et répertoires créés sous foo auront des autorisations de grouperw
.Maintenant, créez des fichiers en
foo
tant qu’utilisateursfaheem
etjohn
.Liste des fichiers. Notez que les fichiers appartenant à
faheem
et aux fichiers appartenant àjohn
sont créés avec des autorisations de grouperw
.la source