Script changement droit

Résolu/Fermé
yonas108 - 12 avril 2009 à 16:09
 yonas108 - 12 avril 2009 à 17:45
Bonjour,
J'aimerais écrire un script linux permettant le changement de droits d'un fichier.

N'ayant que très peu de connaissances, je galère pas mal. Un peu d'aide serait la bienvenue.

Merci à tous,
Yonas108

P.S. Je sais qu'il faut utiliser les instructions ls-l et chmod mais comment les insérer dans un script avec une boucle while ?

8 réponses

dyllan
Messages postés
4694
Date d'inscription
mardi 9 janvier 2007
Statut
Contributeur sécurité
Dernière intervention
25 juin 2019
920
12 avril 2009 à 16:12
Bonjour,

je t'invite alors à regarde cette astuce. Un script est dispo en téléchargement, il devrait t'aider dans ta réalisation.

dyllan
0
Merci pour le lien Dyllan.

Cependant, j'ai un peu de mal à appliquer à ce que je veux faire.

Que dites-vous de ce script ?


#!/bin/bash

ls-l fichier

while ls-l fichier ....

do chmod a+rw fichier

exit 0;


Merci,
Yonas108
0
dyllan
Messages postés
4694
Date d'inscription
mardi 9 janvier 2007
Statut
Contributeur sécurité
Dernière intervention
25 juin 2019
920 > yonas108
12 avril 2009 à 16:55
hum ... il faut d'abord trouver le fichier avant de lui attribuer des droits. Enfin ce n'est qu'une suggestion sinon je ne vois pas comment tu veux t'y prendre :

echo " Quel est le fichier ou répertoire que vous souhaitez rechercher ?"
read nom_fic
echo -e "\033[37m Résultat de votre recherche :\033[00m"
find /* -name $nom_fic

Ensuite tu balances les droits que tu souhaites attribuer. Une valeur X que tu lis et applique sur le fichier / répertoire précédemment trouvé.

PS : j'ai repris le code sur mon script posté dans l'astuce.

dyllan
0
En fait je voudrais tester le fichier spécifié. Si les droits ne sont pas a+rw (écriture et lecture pour tout le monde) alors changer ces droits.

Je pense maintenant qu'un if sera plus approprié :

#!/bin/bash

ls-l fichier

if ls-l fichier != a+rw

then do chmod a+rw fichier

Qu'en pensez-vous ?
0
dyllan
Messages postés
4694
Date d'inscription
mardi 9 janvier 2007
Statut
Contributeur sécurité
Dernière intervention
25 juin 2019
920
12 avril 2009 à 17:13
Ok d'accord mais comment rentre tu le fichiers que tu souhaites vérifier ?

dyllan
0
Effectivement.

Donc je rajoute une ligne pour demander le fichier.

#!/bin/bash

echo " Quel est le fichier ou répertoire que vous souhaitez rechercher ?"
read fichier

ls-l fichier

if ls-l fichier != a+rw

then do chmod a+rw fichier

exit

Cela te paraît correct?
Je ne suis pas sûr que != fonctionne pour ce genre de test

Merci,
Yonas108
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
12 avril 2009 à 17:24
Salut,
#!/bin/bash

echo " Quel est le fichier ou répertoire que vous souhaitez rechercher ?"
read fichier

if [ "$(stat -c %a ${fichier})" -lt "666" ]
then
chmod a+rw "${fichier}"
fi

exit 
:-))
0
dyllan
Messages postés
4694
Date d'inscription
mardi 9 janvier 2007
Statut
Contributeur sécurité
Dernière intervention
25 juin 2019
920
12 avril 2009 à 17:25
Merci jipicy ! j'étais en train de bosser dessus, je test le tient.

dyllan
0
Merci Jipicy !

Cependant, je ne comprend pas la syntaxe suivante if [ "$(stat -c %a ${fichier})" -lt "666" ].

Quelle est la différence entre ls-l et stat -c%a -lt ?

Merci,

Yonas108
0
jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
12 avril 2009 à 17:36
stat -c %a fichier affiche les droits en octal de fichier

Voir man stat pour tous les détails.

if [ "$(commande)" -lt "nnn" ] teste ( [...] )que le résultat de "$(commande)" soit inférieur "-lt" (lether than = inférieur à) au chiffre fourni "nnn"

On aurait pu l'écrire aussi comme suit :
if test "$(commande)" -lt "nnn"
;-))
0
Merci Jipicy !

:D
0