5 votes

Exécuter des commandes en tant que Root sans mot de passe Root ou sudo

Je comprends les implications de l'exécution d'un script en tant que Root, en particulier par une application web. Cependant, dans le cadre de mon application web, j'ai besoin d'utiliser curl avec tor et cela nécessite de réinitialiser l'ip de tor de temps en temps. tor peut obtenir une nouvelle ip lorsque le service est redémarré avec service tor restart . Comme seul Root peut le faire, j'ai écrit un wrapper C script pour faire ce dont j'ai besoin, et je l'ai compilé et mis setuid Root dessus, et changé la propriété de l'utilisateur Root. Cependant, il me demande toujours le mot de passe Root lorsqu'il est exécuté en tant qu'utilisateur non privilégié. En tant que Root, le redémarrage d'un service ne devrait pas demander de mot de passe.

Mon script :

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

void ExecAsRoot (char* str);
int main ()
{
  setuid (0);
  setvbuf(stdout, NULL, _IONBF, 0);
  printf ("Host real ip is: ");
  ExecAsRoot("ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1  -d'/'");
  ExecAsRoot("/usr/sbin/service tor restart");
  // sleep(2);
  printf ("Tor should have switched to a new ip by now.\nNew ip is: ");
  ExecAsRoot("torify curl ifconfig.co 2>/dev/null");
  return 0;
 }

void ExecAsRoot (char* str) {
  system (str);
}

J'ai fait ce qui suit :

chown root restartor
chmod u=rwx,go=xr restartor 

Sortie :

Host real ip is: 7.17.11.23
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'tor.service'.
Authenticating as: root
Password:

Comment puis-je faire en sorte que cela fonctionne en tant qu'utilisateur web sans fournir de mot de passe Root ?

5voto

dbush Points 8590

Tu n'as pas mis le bit setuid dans les permissions du fichier :

#-------v
chmod u=srwx,go=xr restartor

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X