J'aimerais que vous sachiez s'il existe une méthode permettant de fournir une autorisation d'exécution à tous les fichiers créés dans un répertoire spécifique par défaut.
c'est à dire,
Si je crée un fichier avec foo.sh
sous un répertoire fooscripts
, il devrait disposer d'une autorisation d'exécution par défaut. Mais si je crée le même fichier en dehors de fooscripts
, il devrait être comme d'habitude.
Comme indiqué, vous pouvez utiliser inotify-tools
(inotifywait
) pour surveiller les modifications apportées à un répertoire spécifique, par exemple, à l'aide du script ci-dessous, puis définir les nouveaux fichiers exécutables de manière récursive.
Le script utilise la commande inotifywait
, déclenchée par des événements spécifiques , définis par l'option -e
. Heureusement, la commande peut être utilisée en combinaison avec plusieurs types d'événements.
Puisque vous voulez que les fichiers du répertoire soient exécutables, deux événements sont définis dans le script:
-e move
qui remarquera les fichiers déplacés dans le répertoire, et
-e create
qui remarquera les nouveaux fichiers créés dans le répertoire.
En outre, les options:
-m -r
doivent exécuter la commande indéfiniment ("monitor") et de manière récursive dans le répertoire, tandis que:
--format '%w%f'
renvoie le répertoire (chemin d'accès au fichier, %w
) ainsi que le nom du fichier (%f
) qui a provoqué l'événement.
Plus d’informations sur les options de inotifywait
peuvent être trouvées ici , ou, comme toujours, dans man inotifywait
#!/bin/sh
# you might want to change the directory below into the targeted directory
DIR="/home/jacob/Bureaublad/test123"
inotifywait -m -r -e move -e create --format '%w%f' "$DIR" | while read f
do
chmod +x "$f"
done
Vous devrez probablement installer inotify-tools
en premier:
Sudo apt-get install inotify-tools
Copiez le script dans un fichier vide, enregistrez-le sous le nom set_executable.sh
Dans l'en-tête du script, définissez le chemin d'accès au dossier cible:
# change the directory below into the targeted directory
DIR="/home/jacob/Bureaublad/test123"
... et testez le script depuis un terminal.
Notez que notifywait
agit sur change (événements). Cela implique que les fichiers ajoutés ou créés avant le script exécuté ne seront pas affectés. De même, les fichiers exécutables ne seront pas réinitialisés si vous les définissez manuellement et délibérément et non , alors qu'ils se trouvent dans le répertoire ciblé.
Non. Vous pouvez utiliser inotify
pour regarder le répertoire et chmod
nouveaux fichiers.
Voici comment trouver inotify
:
man -k inotify
for i in $( man -k inotify | awk '{ print $1 }' ) ; do
man $i
read -p "Print?: " ans
if [[ "x$ans" = "xy" ]] ; then
man -t $i | lpr -J $i
fi
done
# sr is from surfraw, Shell Users Revoultionary Front Rage Against the Web
sr google inotify