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

Linux Discussion :

setuid et system


Sujet :

Linux

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 152
    Points : 70
    Points
    70
    Par défaut setuid et system
    Bonjour à tous,

    Je viens d'installer mon petit serveur web et mail et je dois faire quelque chose de similaire à ça. Il faudrait que je puisse rajouter un compte mail depuis une page php sécurisée bien entendu (php -> programme C/C++).

    Pour se faire, j'ai besoin d'accéder à MySQL (par l'API C, pas de problème) et faire des commandes comme maildirmake depuis un utilisateur (vmail) normal à qui appartient les dossiers de mails. Apache tournant sur l'utilisateur apache, je pense faire du setuid pour donner les droits temporairement de vmail. Toutes les commandes "natives" au C/C++ se font bien sous l'utilisateur vmail mais dès que je fais un appel avec system() sur une commande comme touch/mkdir/maildirmake c'est l'utilisateur apache qui est utilisé, pourquoi ?

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <iostream>
    #include <iomanip>
    #include <fstream>
    using namespace std; 
     
    int main(void)
    {
        static uid_t ruid, rgid;
     
        ruid = getuid();
        rgid = getgid();
        setuid(geteuid());
        setgid(getegid());
        ofstream file("test.txt");
        file << "Hello test \n";
        file.close();
        system("touch test2.txt");
        setuid(ruid);
        setgid(rgid);
        return EXIT_SUCCESS;
    }

    Je précise que j'ai bien fait :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ suid-print.c -o suid-print && chown vmail:vmail suid-print && chmod +s suid-print

    Quand j'exécute le programme, le fichier test.txt appartient bien à vmail alors que le fichier test2.txt appartient à celui qui a lancer le programme. Comment ça se fait ? On dirait que system n'affecte pas les programme au setuid donné.
    Avez-vous une solution ?

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2005
    Messages : 147
    Points : 165
    Points
    165
    Par défaut
    Bonjour,

    Je sais que sous linux, les scripts (sh, bash, etc) ne prennent pas en compte le suid, à cause des failles de sécurité que celà peut engendrer, seuls les programmes compilés, ou des scripts perl il me semble, sont réellement exécutés avec les droits du propriétaire quand le suid est activé.
    Je ne sais pas si c'est la raison pour laquelle ton code ne fonctionne pas, mais c'est peut être une piste.

    @+

Discussions similaires

  1. [VB6] [Système] Récupérer le contenu d'une fenêtre DOS
    Par Nounours666 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 18/11/2004, 17h38
  2. [Kylix] libc.system
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 19/10/2002, 14h48
  3. [VB6] [Système] Barre des taches
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/10/2002, 16h16
  4. [VB6] [Système] Icones du systray qui veulent pas partir
    Par Ctof dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/10/2002, 10h41
  5. [TP7]systeme d'exploitation
    Par numeror dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 15/08/2002, 09h47

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