J'ai un tas de scripts et d'applications de longue durée qui stockent les résultats de sortie dans un répertoire partagé entre quelques utilisateurs. Je voudrais un moyen de m'assurer que chaque fichier et répertoire créé sous ce répertoire partagé avait automatiquement des u=rwxg=rwxo=r
autorisations.
Je sais que je pourrais utiliser umask 006
en tête mes différents scripts, mais je n'aime pas cette approche car de nombreux utilisateurs écrivent leurs propres scripts et peuvent oublier de définir eux-mêmes l'umask.
Je veux vraiment juste que le système de fichiers définisse les fichiers et répertoires nouvellement créés avec une certaine autorisation s'il se trouve dans un certain dossier. Est-ce possible?
Mise à jour : Je pense que cela peut être fait avec les ACL POSIX , en utilisant la fonctionnalité ACL par défaut, mais c'est un peu au-dessus de ma tête pour le moment. Si quelqu'un peut expliquer comment utiliser les ACL par défaut, il répondra probablement bien à cette question.
la source
Réponses:
Pour obtenir la bonne propriété, vous pouvez définir le bit setuid de groupe sur le répertoire avec
Cela garantira que les fichiers créés dans le répertoire appartiennent au groupe. Vous devriez alors vous assurer que tout le monde fonctionne avec umask 002 ou 007 ou quelque chose de ce genre - c'est pourquoi Debian et de nombreux autres systèmes Linux sont configurés par défaut avec des groupes par utilisateur.
Je ne connais pas de moyen de forcer les autorisations souhaitées si l'umask de l'utilisateur est trop fort.
la source
+s
pièce? Merci.Voici comment le faire en utilisant les ACL par défaut, au moins sous Linux.
Tout d'abord, vous devrez peut- être activer la prise en charge de l'ACL sur votre système de fichiers. Si vous utilisez ext4, il est déjà activé. D'autres systèmes de fichiers (par exemple, ext3) doivent être montés avec l'
acl
option. Dans ce cas, ajoutez l'option à votre/etc/fstab
. Par exemple, si le répertoire se trouve sur votre système de fichiers racine:Puis remontez-le:
Maintenant, utilisez la commande suivante pour définir l'ACL par défaut:
Tous les nouveaux fichiers
/shared/directory
doivent maintenant obtenir les autorisations souhaitées. Bien sûr, cela dépend également de l'application qui crée le fichier. Par exemple, la plupart des fichiers ne seront exécutables par personne dès le début (en fonction de l'argument mode de l'appel open (2) ou creat (2)), tout comme lors de l'utilisation d'umask. Certains utilitaires commecp
,tar
etrsync
essaieront de conserver les autorisations du ou des fichiers source qui masqueront votre ACL par défaut si le fichier source n'était pas accessible en écriture de groupe.J'espère que cela t'aides!
la source
umask
pour tous les utilisateurs. = / unix.stackexchange.com/questions/71743/…cp
il essaiera de copier les autorisations du fichier source. N'aide même pasumask
lors de l'utilisationcp
. J'ai vu le même problème avectar
. Voir cette question .umask
.setfacl
works correctly
- je suppose que cela devrait échouer, mais je ne suis pas sûr, car la réponse passe à côté de ce point.C'est moche, mais vous pouvez utiliser la commande setfacl pour obtenir exactement ce que vous voulez.
Sur une machine Solaris, j'ai un fichier contenant les acls des utilisateurs et des groupes. Malheureusement, vous devez lister tous les utilisateurs (au moins je ne pourrais pas trouver un moyen de faire fonctionner cela autrement):
Nommez le fichier acl.lst et remplissez vos vrais noms d'utilisateur au lieu de user_X.
Vous pouvez maintenant définir ces acl sur votre répertoire en exécutant la commande suivante:
la source
dans votre script shell (ou
.bashrc
) vous pouvez utiliser quelque chose comme:umask 022
umask
est une commande qui détermine les paramètres d'un masque qui contrôle la façon dont les autorisations de fichier sont définies pour les fichiers nouvellement créés.la source
umask 002
dans mon .bashrc.umask 002
limite l'accès aux autres, laissant le groupe inchangé. Rappelez-vous, c'estugo
- c'est le groupe d'utilisateurs des autres. Souvenez-vous également que umask signifie essentiellement soustraire des valeurs par défaut. Pour les fichiers:666 - 002
signifierait 664 ce qui signifie que le groupe n'est pas affecté.