Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/10/2007, 11h22   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 15
Points : 11
Points : 11
Par défaut setiud (pb d'exécution)

Bonjour,
Voici mon problème :

J’ai un binaire agentctl qui appartient à root :

Code :
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 :
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 :
# gcc –o relanceagent testagent.c
Je rajoute le setuid :
Code :
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.
oups33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2007, 15h42   #2
Candidat au titre de Membre du Club
 
Inscription : octobre 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 15
Points : 11
Points : 11
Par défaut Solution

Pour info ; j'ai trouvé une solution à mon pb avec l'EUID (effcetive-UID)

Code :
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.

oups33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h21.


 
 
 
 
Partenaires

Hébergement Web