Ma question est similaire à Comment définir les autorisations de fichiers par défaut sur TOUS les fichiers nouvellement créés sous Linux - mais diffère de manière importante:
Je veux que tous les fichiers créés dans (ou copiés ou déplacés vers) un certain répertoire héritent d'un ensemble d'autorisations par défaut différent de celui par défaut du système.
Justification: Le répertoire en question est la "trémie d'admission" pour une application. Les utilisateurs d'un groupe placent des fichiers dans le répertoire et l'application (exécutée sous un autre ID utilisateur du même groupe) les prend et les traite. Le problème est que le propriétaire de chaque fichier placé dans le répertoire est l'utilisateur qui l'a placé là, et les autorisations sont par défaut "rw-r - r--"; Je veux changer cela en "rw-rw ----". L'application qui fait l'admission ne peut pas le faire explicitement, car l'ID utilisateur sous lequel l'application s'exécute ne possède pas le fichier en question et les autorisations par défaut ne permettent pas à l'application de chmoder sur le fichier! De toute évidence, l'utilisateur pourrait faire un chmod après y avoir placé le fichier - mais je veux garder la "goutte" par l'utilisateur aussi simple que possible. (Ces gens ne sont pas alphabétisés linux,
umask semble trop puissant: je ne veux pas définir d'autorisations par défaut pour chaque fichier créé n'importe où par ces utilisateurs - seulement ceux créés dans (ou placés dans) ce répertoire.
Veuillez conseiller ... merci!
acl
une option dans lamount
commande lorsque vous l' ajoutez/etc/fstab
. Cela va être redondant et lorsque vous exécutez lamount
commande dans votre réponse, vous obtiendrez une sortie comme celle-ci:/dev/vda1 on / type ext4 (rw,errors=remount-ro,acl,acl)
(voiracl,acl
à la fin). Veuillez le corriger si je ne me trompe pas.Je peux proposer une solution de contournement: créez un répertoire "drop" séparé, exécutez-y un minijob distinct qui corrige les autorisations, puis déplace les fichiers dans le répertoire de données de l'application. Vous pouvez utiliser incron pour cela afin qu'il n'y ait pratiquement aucun retard notable.
la source
Je peux penser à quatre méthodes possibles pour ce faire:
find $HOME/intake -type f -exec chmod 660 {} \;
, différents systèmes ont des améliorations de performances à ce sujet (comme l'-exec+
option)PROMPT_COMMAND='test -s $PWD/.umask && umask $(cat $PWD/.umask)'";$PROMPT_COMMAND"
serait le plus simple.la source