Synology Commande pour rafraichir les droits d'accès sur un répertoire ?

FastITR

Nouveau membre
13 Avril 2017
24
2
3
Bonjour,

Sur un NAS en DSM 7.2.1 des fichiers sont transférés quotidiennement via GoAnywhere.
Le soucis est que ces fichiers n'héritent pas automatiquement des droits d'accès du répertoire père alors que c'est pourtant configuré comme cela sur le NAS (tous les sous-dossiers reçoivent automatiquement les même droits d'accès que le répertoire père).
Il en résulte que ces fichiers peuvent juste être lus mais pas déplacés ensuite dans un sous-dossier :-(

Y aurait-il une commande permettant de rafraichir les droits d'accès d'un répertoire fils afin que tous les fichiers qu'il contient héritent automatiquement des droits d'accès du répertoire père ?

Je scripterais la commande et l'exécuterais plusieurs fois par jour via le planificateur de tâches.

Merci d'avance pour votre aide.
 
Bon je n'arrive pas à faire fonctionner la commande synoacltool :(
Lorsque j'exécute la commande via PUTTY : synoacltool -enforce-inherit /volume1/REPOSITORY/XXXXX/YYYYYY/*.txt
Je n'ai pas d'erreur mais les droits d'accès sur les fichiers restent inchangés.

J'ai essayé de filouter en faisant :

mv <chemin fichier source/*.txt> <chemin fichier cible>
cp <chemin fichier cible/*.txt> <chemin fichier source>
rm <chemin fichier cible/*.txt>

Cela fonctionne via PUTTY (le move ne change pas les droits d'accès du ou des fichiers mais le copy oui)

J'ai donc créé un script avec les 3 commandes que j'ai schédulé via le planificateur de tâches mais lorsque je l'exécute lors du move, le fichier source ne se trouve plus dans l'arborescence source (ce qui est correct) mais le fichier dans l'arborescence cible n'a ni nom ni extension :

Capture d’écran 2024-02-28 120154.jpg

De ce fait le move et le rm qui suivent se plantent !

Je ne comprends pas pourquoi les commandes fonctionnent en direct via PUTTY mais pas lorsqu'elles sont scriptées ????? Y aurait-il une subtilité qui m'échappe ???
 
Bonjour,

Tu insère bien "bin/bash" devant chaque commande ?
 
Je l'ai mis au début du fichier script (.sh) :

Capture d’écran 2024-02-28 122317.jpg

Il faut le mettre devant chaque commande ?
Du genre :

bin/bash mv ......
bin/bash cp .......
bin/bash rm ......

Aussi la tâche est lancée comme suit au niveau de la tâche planifiée : bash /volume1/....../script.sh
 
Bonjour,

Pour moi il faudrait le mettre devant chaque commande, mais ça ne resoud pas ton problème de fichier sans nom je pense.

En plus dans ton exemple il y a un # devant donc la ligne n'est pas lue.

Essaie déjà en enlevant le # et si ça ne fonctionne pas en spécifiant à chaque ligne.
 
Si j'enlève le # j'obtiens :

/volume1/REPOSITORY/ESSAIS/script.sh: line 1: !/bin/bash: No such file or directory

Si j'enlève en plus le ! :

/volume1/REPOSITORY/ESSAIS/script.sh: line 1: /bin/bash: No such file or directory

Si je mets devant chaque commande bin/bash ou /bin/bash j'ai la même erreur pour les 3 lignes : bin/bash: No such file or directory

Si j'ai un seul fichier source, j'ai l'erreur car le fichier copié n'a pas de nom ni d'extension

Si j'ai 2 fichiers source, j'ai l'erreur :

mv: target '/volume1/REPOSITORY/FICHIERS/Cible/'$'\r' is not a directory

C'est désespérant quand tu vois que les même commandes passent nickel manuellement via PUTTY
C'est à te dégouter de vouloir scripter des bêtes commandes de base :cry:
 
et si au lieu de les appeler via un script, tu fais une tache par ligne de commande ?
 
Un truc de fou, au lieu de lancer le script, dans la fenêtre 'script défini par l'utilisateur' (en rouge sur ma copie d'écran) :

Capture d’écran 2024-02-28 152210.jpg

J'ai mis les 3 commandes et bingo, cela fonctionne :D

Encore merci pour cette idée géniale (y)

Je vois que la commande cp change la date et l'heure des fichiers (la nouvelle date et heure est celle du moment de la copie), ce qui n'est pas top, j'ai essayé de gérer avec cp -a ce qui fonctionne (la date et l'heure des fichiers ne changent pas) mais alors, les droits d'accès restent également comme à l'origine ce qui ne m'arrange pas.
Décidément, rien n'est facile dans le monde de l'IT !
 
Je souhaite juste déplacer des fichiers d'un répertoires A vers un répertoire B pour ensuite les recopier dans le répertoire A afin que les droits d'accès soient mis à jour (problème initial indiqué dans mon premier post) mais sans changer ni la date ni l'heure des fichiers (par contre tous les autres attributs doivent être mis à jour).
Je vais regarder ce que pourrait donner la commande RSYNC ...
 
rsync -t <source> <cible> fonctionne sauf que les fichiers cibles n'ont plus aucun droit et le permissions ne sont plus héritées (du répertoire père) comme cela devrait être le cas :

Capture d’écran 2024-02-28 170214.jpg

Bref retour à la case départ :(

J'arrête pour aujourd'hui, espérons que demain soit un meilleur jour, je n'aurais jamais autant dépensé d'énergie pour faire quelque chose d'aussi basique !!!
 
Malheureusement le rsync -p ne donne pas le résultat attendu :

Fichiers sources :

Capture d’écran 2024-02-29 081147.jpg

Fichiers cibles :

Capture d’écran 2024-02-29 081215.jpg
--> La date du fichier a changé.

De plus :

Capture d’écran 2024-02-29 081244.jpg

Les fichiers se retrouvent sans aucun droits d'accès, les permissions héritées ont été exclues.
 
Je suis en train de tester et je pense que j'ai (enfin) trouvé la commande magique :

find /volume1/GROUP/Saisie/Lettres/*.zip -print0 | xargs -0 -n1 synoacltool -enforce-inherit

Je verrais si cela fonctionne au prochain fichier qui arrivera via GoAnywhere ...
 
Pour rsync, il faut une combinaison d'options pour obtenir le résultat attendu. A minima -p mais aussi -t et potentiellement d'autres, par exemple pour la copie des liens symboliques, etc. Il faut approfondir l'analyse mais c'est une commande qui correspond à ton besoin.
 
Pour rsync, tu as le raccourci '-a' (archive) qui cumule toutes les options rlptgo (recursive, conserve lien symbolique, garde les perms, conserve date origine et conserve droits groupe/utilisateurs)

Perso j'utilise '-az' qui compresse en plus (-z) ou '--archive --compress' en plus parlant et l'option '-O' (--omit-dir-times) quand la commande se fait avec un partage NFS.
 
Merci à tous pour votre aide, ce forum est vraiment top (y)

Finalement la commande find /volume1/GROUP/Saisie/Lettres/*.zip -print0 | xargs -0 -n1 synoacltool -enforce-inherit fonctionne a merveille et fait ce que je souhaitais au départ (réappliquer les droits d'accès du répertoire père sur les fichiers *.ZIP qui s'y trouvent). Je l'ai donc planifiée dans le planificateur de tâches du NAS, elle s'exécute tous les jours de 7h00 du matin à 19h00 toutes les 5 minutes.