Droit execution fichier

jonathan411 -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

Voila il y a une chose que je ne comprend pas j'ai créer pour tester le fichier main.c
qui lance un shell, cependant les droits du fichier sont root:users avec -r-Sr-x---
Donc normalement si je lance ./main je devrais me retrouver sur un shell avec l'id root

Cela ne fonctionne pas...
Une idée?

Cordialement,

jonathan@ArchLinux [test]$ cat ./main.c 
#include <stdio.h>
#include <unistd.h>

int main()
{
execl("/bin/sh", "sh", NULL);
}

jonathan@ArchLinux [test]$ ls -l
total 12
-r-Sr-x--- 1 root     users 4441 Apr 26 17:04 main
-rw-r--r-- 1 jonathan users   85 Apr 26 17:04 main.c

jonathan@ArchLinux [test]$ ./main

jonathan@ArchLinux [test]$ id
uid=1000(jonathan) gid=100(users) groups=100(users)

jonathan@ArchLinux [test]$ whoami
jonathan
A voir également:

2 réponses

mamiemando Messages postés 34169 Statut Modérateur 7 885
 
Bon déjà les bits set-UID c'est pas forcément une idée géniale sauf si tu sais ce que tu fais. En plus puisque ton main retourne un int, ce serait bien de le faire (même si ce n'est pas la cause de ton problème).

À moins de coder passwd tu n'as pas de raison de le faire, ton programme doit (s'il est sensé se lancer avec des droits root) être invoqué via un sudo (ou un équivalent comme kdesu ou gksudo) ou par root lui-même. Ça sent le truc louche.

Tu peux utiliser la commande popen qui ouvrira ton processus fils via un fork. Il est ensuite possible de lire ou d'écrire dans le pipe et donc de faire communiquer les deux processus.

#include <stdio.h>

int main(){
    FILE *fp;
    char buffer[255];
    if((fp = popen("echo coucou", "r"))){
        fscanf(fp,"%s",buffer);
        printf(buffer);
        pclose(fp);
    }
    return 0;
}


Sinon pour ta commande execl elle exécuta bien un shell fils, mais je ne pense pas que les droits root soient transmis au fils de cette manière.

Bonne chance
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
quel Unix ? certains interdisent les shells setuid
on peut empêcher les progs. setuid avec mount, vérifier les options de montage avec mount
0