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 ?

8 réponses

  1. 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
    1. 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
    2. 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
  2. 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 ?
    1. Contributeur sécurité
      Ok d'accord mais comment rentre tu le fichiers que tu souhaites vérifier ?

      dyllan
      1. 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
        1. Modérateur
          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 
          :-))
          1. Contributeur sécurité
            Merci jipicy ! j'étais en train de bosser dessus, je test le tient.

            dyllan
        2. 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
          1. Modérateur
            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"
            ;-))