Script changement droit
Résolu
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 ?
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
-
Contributeur sécurité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-
-
Contributeur sécurité@yonas108hum ... 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
-
-
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 ? -
Contributeur sécuritéOk d'accord mais comment rentre tu le fichiers que tu souhaites vérifier ?
dyllan -
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 -
ModérateurSalut,
#!/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:-))
-
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 -
Modérateurstat -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"
;-))
-
Merci Jipicy !
:D