Pour récupérer les variables d'environnement : getenv !
Donc pour résumer :
- 1 UID ou 1 GID qui a le droit de lire/exécuter les scripts
- le programme C aura le setuid ou setgid dans le chmod d'activé + chown avec l'utilisateur en question
- le programme C contiendra system/exec pour exécuter
- le programme C contiendra getenv pour récupérer des variables précises de l'environnement, OU le 3e argument de main qui contient déjà l'environnement courant
Le mieux sera de restreindre les possibilités du programme avec if/else if/else et strcmp, pour éviter les classiques failles où l'on demandera un "/bin/rm -rf" par des moyens détournés (ou autre chose...)
EDIT : le 3e argument de main :
int main(int argc, char **argv, char **env)
Partager