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

          dyllan
          1. 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é
              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