Droits et permissions des utilisateurs pour chaque repertoir

Salut,

Je fais un synchro avec unison,ça marche très bien.Pour être sur des droits et permission sur le serveur distant,j’aimerai re-passer pour les droits et permissions sur chaque répertoire au lieu que chaque utilisateur a l’accès sur tous les répertoire. Donc j’ai crée un script qui modifie les droits et permission

#!/bin/bash
racine=’/home/user/taf’
test=$(ls racine |grep BAC)
projet=$/racine/$test

for projet in racine ; do

    chgrp user $projet
    chgrp -R user "$projet/ref"
    chmod -R 640 "$projet/ref/ta"
    chmod -R 640 "$projet/ref/te"

done
exit 0

dans le /home/user/taf nous avons BAC_1 BAC_2 BAC_3 BAC_4
But : C’est de changer les droits et groupe de chaque BAC_*

Apres le lancement de ce script,j’ai ceci

ls: impossible d’accéder à racine: Aucun fichier ou dossier de ce type
chgrp: impossible d’accéder à « racine »: Aucun fichier ou dossier de ce type
chgrp: impossible d’accéder à « racine/ref »: Aucun fichier ou dossier de ce type
chmod: impossible d’accéder à « racine/ref/ta »: Aucun fichier ou dossier de ce type
chmod: impossible d’accéder à « racine/ref/te »: Aucun fichier ou dossier de ce type

J’ai passé pas mal de temps pour chercher des solutions,mais rien de positif.Je compte sur vous les amis.

tafita

[code]#!/bin/bash
racine=’/home/user/taf’
test=$(ls “$racine” |grep BAC) # c’est là il manquait le $
projet="/racine/$test" # et il y en avait un en trop là

for projet in racine ; do
chgrp user "$projet"
chgrp -R user "$projet/ref"
chmod -R 640 "$projet/ref/ta"
chmod -R 640 "$projet/ref/te"
done
exit 0[/code]

Bonjour MisterFreez;

Je faisais comme ça :

#!/bin/bash
racine=’/home/user/taf’
test=$(ls “$racine” |grep BAC) #modifier
projet="/racine/$test" # medifier aussi

for “$projet” in “$racine” ; do
chgrp user "$projet"
chgrp -R user "$projet/ref"
chmod -R 640 "$projet/ref/ta"
chmod -R 640 "$projet/ref/te"
done
exit 0
Après j’ai ce résultat :
./test.sh: ligne13: « “$projet” » : identifiant non valable
Est-ce le variable projet n’est pas bien définit?

tafita

Tu es sûr qu’il n’y a pas une option dans unisson pour la conservation des droits ? :think:

Il y en a mais,je ne veux pas l’utiliser parce que certains docs que je synchronise ont de grandes importance et que certains collègues n’ont pas les droits ni permissions de lecture ou ecritures.

regarde bien la boucle “for” que t’a donné MisterFreez, un simple caractère peut tout casser :wink:

PS : met les numéro de ligne de ton script, ça aidera a bien localiser l’erreur car dans le message d’erreur il y a ce numéro.

1 #!/bin/bash
2 racine=’/home/user/taf’
3 test=$(ls “$racine” |grep BAC)
4 projet="/racine/$test"
5
6 for “$projet” in “$racine” ; do
7
8 chgrp user "$projet"
9 chgrp -R user "$projet/ref"
10 chmod -R 640 "$projet/ref/ta"
11 chmod -R 640 "$projet/ref/te"
12
13 done
14 exit 0
15

[code]#!/bin/bash
racine=’/home/user/taf’
test=$(ls “$racine” |grep BAC)
projet="/racine/$test"

for projet in “$racine” ; do # pas de $ dans projet ici comme dans les déclarations de variables
chgrp user "$projet"
chgrp -R user "$projet/ref"
chmod -R 640 "$projet/ref/ta"
chmod -R 640 "$projet/ref/te"
done
exit 0[/code]

#!/bin/bash
racine=’/home/user/taf’
test=$(ls “$racine” |grep BAC > user.txt)
cat user.txt |while read line; do
projet="$racine/$line"
chgrp user "$projet"
chgrp user "$projet/ref"
chmod -R 640 "$projet/ref/ta"
chmod -R 640 “$projet/ref/te”

#echo “$projet”

done

C’est résolu,merci mes amis

Tafita