Bonjour,
Voici mon problème :
J’ai un binaire agentctl qui appartient à root :
Cet exécutable peut être lancé avec plusieurs options ( start, stop, restart …etc )
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
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 :
Je rajoute le setuid :
Code : Sélectionner tout - Visualiser dans une fenêtre à part # gcc o relanceagent testagent.c
Puis lorsque j’exécute “relanceagent” avec un user lambda j’ai un problème de droits.
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
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.
Partager