IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

setiud (pb d'exécution)


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Par défaut setiud (pb d'exécution)
    Bonjour,
    Voici mon problème :

    J’ai un binaire agentctl qui appartient à root :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # ls -l agentctl
    -rwxr-xr-x    1 root     root        12532 Jun  5 19:09 agentctl
    Cet exécutable peut être lancé avec plusieurs options ( start, stop, restart …etc )

    Je veux permettrre à un user lambda le lancement de « agentctl » mais uniquement avec l’option restart.

    Pour cela je crée le programme "testagent.c" suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # cat testagent.c
    ==================================
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <unistd.h>
     
    int main()
    {
    uid_t uid = geteuid ();
    gid_t gid = getegid ();
    printf ("uid=%d gid=%d\n", (int) uid, (int) gid);
    system("/exec/products/sbin/agentctl restart");
    }
    ===================================

    Je le compile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # gcc –o relanceagent testagent.c
    Je rajoute le setuid :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # chmod +s relanceagent
    # ls –l relanceagent
    -rwsr-sr-x   1 root     root       101206 Oct 09 16:00 relanceagent
    Puis lorsque j’exécute “relanceagent” avec un user lambda j’ai un problème de droits.

    Si je fait le test du setuid directement sur agentctl cela fonctionne.

    Autre précision : Le test fonctionne sur AIX et HP-UX.

    Comment faire sur Linux. ? (sans utiliser sudo)
    Pouvez-vous m’aider ?
    D’avance merci.

  2. #2
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Par défaut Solution
    Pour info ; j'ai trouvé une solution à mon pb avec l'EUID (effcetive-UID)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # cat testagent.c
    ==================================
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <unistd.h>
     
    int main()
    {
    setuid(geteuid());
    system("/exec/products/sbin/agentctl restart");
    }
    ===================================

    cette solution permet d'exécuter la commande "system" avec l'effective-uid (euid), donc ici root.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ArchiveBuilder][JavaMail] exécution impossible...
    Par Gorthal dans le forum JBuilder
    Réponses: 7
    Dernier message: 10/01/2003, 09h12
  2. [TTHREAD] ne termine pas sont exécution
    Par Bbenj dans le forum Langage
    Réponses: 4
    Dernier message: 02/08/2002, 16h42
  3. Exécution indivisible (accès conccurent)
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 23/07/2002, 08h09
  4. Compression d'exécutables
    Par Atrebate62 dans le forum Windows
    Réponses: 3
    Dernier message: 21/07/2002, 16h39
  5. Réponses: 2
    Dernier message: 06/07/2002, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo