Droits - SUID

Résolu
Bonjour,

J'ai un problème pour régler les droits d'un fichier.
Caractéristiques :
-fichier shell (sh)
-appartenant à root
-Contient des commandes nécéssitant d'être super-utilisateur
-L'utilisateur ne doit pas pouvoir lire dans ce fichier

J'aimerai qu'un utilisateur quelconque puisse l'utiliser.
J'ai essayé avec
chmod 4711 fichier.sh, seulement je pense que la pseudo-execution de l'utilisateur ne suffit pas, il faut la lecture du super-utilisateur.

Comment faire ?
Je vous remercie d'avance.
--
GPG Key ID = 5518CFC7
Configuration: Linux
Firefox 1.5.0.9

10 réponses

  1. Oui, c'est déjà fait.

    Merci de ton aide !
    Au prochain problème ;)

    Résumé :
    Pour qu'un utilisateur quelquonque puisse executer une série d'actions prédéfinies requirant des privilèges (root) , passer par un programme qui n'est pas de type script shell : ex C avec "exec()". Le propriétaire sera dans cet exemple root, et activera le bit SUID.
    0
    1. Modérateur
      c'est la 1ère chose que j'ai pensé :-)

      il me semble que tu fait du C donc tu n'as qu'à écrire ton script :-))
      0
      1. Ah ok. Je te remercie pour tes réponses.
        0
        1. Modérateur
          je pense que tu peux mettre problème résolu :-)
          si jamais je trouve autre chose (les droits c'est un sujet qui m'interesse ;-)) je te tiendrai au courant.
          0
        2. :) Merci, bonne soirée !
          0
        3. On m'a donné une solution : écrire un programme executable.

          Tu te sers de exec ou execv pour executer les commandes shell critiques.
          Et ça passe (avec un petit coup du bit suid) :)
          0
      2. Modérateur
        Je crois que tu n'as pas le choix, c'est le risque de SUID
        A savoir que si jamais sur ton OS il y a une commnade de lecture de fichier avec le SUID, même le fichier de config pourra être lu

        je pense que pour certains taches c'est bien d'être root et pas un utilisateur quelconque
        0
        1. Non, le truc c'est qu'avec ce que je voulais faire, un utilisateur quelconque pouvait executer wpa_supplicant avec UN fichier de configuration défini (-c/etc/wpa_supplicant.conf) défini dans le script non modifiable. Si j'active le SUID alors il pourra taper
          wpa_supplicant -c~/un_fichier_pas_bien.conf
          0
          1. Modérateur
            Salut,

            mais, tu veux que les utilisateurs l'exécutent ou pas?
            puisque si tu veux que le script soit exécuter que par root alors tu n'as qu'a regler les droits en conséquence.

            si tu veux accorder des droits seulement à certains utilisateurs tu peux créer un groupe pour ça et tu fais les utilisateurs membres de ce groupe.

            sinon tu peux aussi utiliser les ACLs
            0
            1. Ok, merci, ça fonctionne comme cela.

              Je n'ai pas besoin de plus, mais par curiosité je voudrais savoir si il n'y a que cette possibilité ?
              Car du coup ici, l'utilisateur peut executer wpa_supplicant et se connecter à n'importe quel réseaux .... :/
              0
              1. Modérateur
                Regarde un exemple
                debian:/bin# cat /etc/nolire
                password
                debian:/bin# cat /usr/bin/fw.sh
                #!/bin/sh
                
                cat /etc/nolire

                je crée un fichier dans /etc et ce n'est que root qui a accès
                ensuite j'écrit un script dans /usr/bin

                Voici les droits

                debian:/bin# ls -l /etc/nolire
                -rwx------ 1 root root 9 2007-02-25 19:56 /etc/nolire
                debian:/bin# ls -l /bin/cat
                -rwxr-xr-x 1 root root 21448 2006-08-31 14:25 /bin/cat
                debian:/bin# ls -l /usr/bin/fw.sh
                -rwxr-xr-x 1 root root 28 2007-02-25 19:57 /usr/bin/fw.sh


                En fait c'est le cat qui a besoin de droit spéciaux puisque c'est lui qui va essayer de lire le fichier detenu par root
                debian:/bin# chmod -v 4755 /bin/cat
                Le mode d'accès de `/bin/cat' a été modifié à 4755 (rwsr-xr-x).


                Donc je pense que dans ton cas il faut penser aux droits d'accès pour la commande wpa_supplicant puisque c'est elle qui va accèder au fichier wpa_supplicant.conf et pas l'utilisateur.
                0
                1. Salut lami20j

                  Oui, je vois ce que tu veux dire, je vais te donner mon exemple :
                  ---------Script sensé etre executable pour tous--------
                  #!/bin/sh

                  #Pour demarrer WPA_SUPPLICANT avec parametres

                  wpa_supplicant -c/etc/wpa_supplicant.conf -w -Dwext -ieth1 &
                  ifup eth1
                  dhclient
                  ---------------------------------------------------------------------

                  Le fichier wpa_supplicant.conf ne doit pas etre lisible ! Il contient le mot de passe du réseau en clair (droits 700).

                  Saurais-tu comment faire ?

                  PS : Après tout j'ai dit une bétise, le script que l'on execute peut être lisible
                  0
                  1. Modérateur
                    Salut,

                    -Contient des commandes nécéssitant d'être super-utilisateur
                    Il faut aussi penser pour les commandes contenu dans ton script.
                    Même si l'utilisateur peut lancer le script, s'il ne peux pas exécuter les commandes contenues dans le script .....
                    Tu vois ce que je veux dire?!

                    Pour invoquer un script shell, il faut avoir les droits de lecture et d'exécution.

                    La lecture puisque le shell doit lire les commandes à interpreter.

                    0