Autorisations sur les fichiers:

9

Je voudrais donner 755 autorisations à un répertoire, donc j'utilise:

# chmod -R 755 /my/folder/

Cela fonctionne pour tous les fichiers à l'intérieur de mon dossier, mais le problème est que j'utilise des scripts qui créent de nouveaux fichiers dans ce dossier, et par défaut les autorisations sont 600.

Comment pourrais-je imposer 755 autorisations sur ces "futurs" fichiers?

--ÉDITER--

J'utilise un script qui me donne des informations sur le trafic réseau sur mon campus. J'ai un nouveau fichier toutes les 10 minutes, situé dans un dossier appelé voyage, situé dans le dossier du mois comme ceci:

ls -lrt /home/netmet/secure/2017-04/2017-04-27/
total 118548
-rwxr-sr-x 1 root root   85922 avril 27 00:10 zzaccounting.dmp-00-00
-rwxr-sr-x 1 root root   54874 avril 27 00:20 zzaccounting.dmp-00-10
-rwxr-sr-x 1 root root   33534 avril 27 00:30 zzaccounting.dmp-00-20
-rwxr-sr-x 1 root root   48890 avril 27 00:40 zzaccounting.dmp-00-30
-rwxr-sr-x 1 root root   36878 avril 27 00:50 zzaccounting.dmp-00-40
-rwxr-sr-x 1 root root   37034 avril 27 01:00 zzaccounting.dmp-00-50
-rwxr-sr-x 1 root root   38154 avril 27 01:10 zzaccounting.dmp-01-00
-rwxr-sr-x 1 root root   38318 avril 27 01:20 zzaccounting.dmp-01-10
-rwxr-sr-x 1 root root   26978 avril 27 01:30 zzaccounting.dmp-01-20
-rwxr-sr-x 1 root root   31558 avril 27 01:40 zzaccounting.dmp-01-30
-rwxr-sr-x 1 root root   23662 avril 27 01:50 zzaccounting.dmp-01-40
-rwxr-sr-x 1 root root   32298 avril 27 02:00 zzaccounting.dmp-01-50
-rwxr-sr-x 1 root root   30282 avril 27 02:10 zzaccounting.dmp-02-00
-rwxr-sr-x 1 root root   31110 avril 27 02:20 zzaccounting.dmp-02-10
-rwxr-sr-x 1 root root   25718 avril 27 02:30 zzaccounting.dmp-02-20
-rwxr-sr-x 1 root root   26306 avril 27 02:40 zzaccounting.dmp-02-30
-rwxr-sr-x 1 root root   23690 avril 27 02:50 zzaccounting.dmp-02-40
-rwxr-sr-x 1 root root   23002 avril 27 03:00 zzaccounting.dmp-02-50
-rwxr-sr-x 1 root root   21854 avril 27 03:10 zzaccounting.dmp-03-00

Ici, j'ai changé les autorisations à la main, mais lorsque le nouveau fichier apparaît, j'ai ceci:

-rw------- 1 root root 3479106 avril 27 15:50 zzaccounting.dmp-15-40

Le fait est que pour chaque dossier et fichier sous / home / netmet / secure / je veux une autorisation 755 par défaut.

Je l'ai déjà fait:

chmod -R g+s /home/netmet/secure   
setfacl -d -m g::rwx /home/netmet/secure   
setfacl -d -m o::rx /home/netmet/secure   
klaypez
la source
3
ACL est la réponse. Cela a déjà été discuté .
d3ag0s
8
ACL est la réponse pour remplacer le umask, mais pas pour remplacer un programme qui crée des fichiers avec mode 0600par conception. Voir ici pour quelques références.
ilkkachu
1
Et encore un détail: par défaut, vous ne pouvez pas utiliser umaskpour ajouter un bit d'exécution aux fichiers, cela doit être fait à la main
Romeo Ninov
umask ne fonctionne pas les gars
klaypez
Pouvez-vous modifier le script que vous utilisez pour créer les fichiers? Comment les fichiers entrent-ils dans le répertoire final (par exemple 2017-04-27) et comment les répertoires sont-ils créés en premier lieu? Veuillez mettre à jour la question avec ces détails.
Tigger

Réponses:

1

Essayez d'exécuter umaskdans votre dossier. S'il renvoie autre chose que '0022', c'est votre problème. Dans votre cas, il devrait initialement sortir '0177'. Le système d'autorisation lors de la création d'un répertoire est essentiellement calculé: default - umask0777 est le mode par défaut pour les répertoires et 0666 pour les fichiers ordinaires, mais il existe différents masques, si je comprends bien. Essayez d'exécuter umask a=rx,uu+w.

EDIT: Vous pouvez utiliser umask pour donner un bit d'exécution au répertoire pour pouvoir y entrer, mais pas aux fichiers. Celles-ci doivent être exécutées manuellement en raison de la sécurité. Ajoutez simplement chmod +x <file>à votre script. Et, exécuter l'indicateur défini sur le fichier, tout ce qui n'est pas exécutable n'a aucun effet.

Ingénieur constructeur77
la source
1
La umaskcommande shell ne dépend pas du chemin, elle dépend uniquement de l'utilisateur qui l'exécute, chaque utilisateur a une valeur umask spécifique, définie lors de la connexion et qui peut être modifiée ultérieurement. Cela définit la façon dont les nouvelles autorisations de fichiers sont créées.
Patrick Mevzek
Cela devrait figurer chmod a=rx,u+wdans votre réponse.
Patrick Mevzek
1

Je suppose que vous exécutez les scripts qui génèrent les fichiers dans un environnement où umask est défini sur 0077. Cela empêche le programme de génération de définir des bits d'autorisation dans les bits d'autorisation "groupe" et "autres".

Notez que le umask fait partie de l'environnement hérité de tout processus et est généralement défini à partir d'un «profil» par défaut lors de la connexion. N'importe quel processus (shell) peut modifier son propre umask (initial) et celui de ses descendants avec la commande 'umask'.

Les bits dans le umask actuel empêcheront la création de fichiers avec ces bits définis dans leurs autorisations (d'où un "masque", masquant les bits d'autorisation résultants)

TheMadsen
la source
0

Remarque : Ce n'est pas idéal et doit être considéré comme une solution de contournement temporaire

Vous pouvez créer un travail cron qui exécute la commande chmod toutes les 5 minutes ou selon vos préférences.

Il y a aussi inotify

Guthrie
la source