Script changement droit

Résolu
yonas108 -  
 yonas108 -
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

  1. dyllan Messages postés 5577 Statut Contributeur sécurité 918
     
    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
    1. yonas108
       
      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
      1. dyllan Messages postés 5577 Statut Contributeur sécurité 918 > yonas108
         
        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
  2. yonas108
     
    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
  3. dyllan Messages postés 5577 Statut Contributeur sécurité 918
     
    Ok d'accord mais comment rentre tu le fichiers que tu souhaites vérifier ?

    dyllan
    0
  4. yonas108
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    1. dyllan Messages postés 5577 Statut Contributeur sécurité 918
       
      Merci jipicy ! j'étais en train de bosser dessus, je test le tient.

      dyllan
      0
  7. yonas108
     
    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
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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