Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
932 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Su/Sudo et autentification automatique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Su/Sudo et autentification automatique

n°949427
esox_ch
Posté le 03-09-2007 à 20:47:50  profilanswer
 

Bonjour,
 
Je suis en train de faire une petite interface web qui doit permettre aux utilisateurs d'un de nos serveurs de changer leur mot de passe sans devoir passer par ssh.
Mon problème est le suivant :
Quand j'execute "su -l username -c 'command'" il me demande le mot de passe de l'utilisateur (logique). Cependant je n'arrive pas à le lui passer (vu qu'il le demande à apache). J'ai pensé à passer par les pipes mais apparemment su ne l'accepte pas.
 
Est-ce que vous auriez une idée de comment je peux m'y prendre?
 
Merci d'avance
 
P.S: Je sais que je peux donner les droits à apache (dans visudo) d'exécuter la commande qu'il me faut mais ça me semble vraiment pas très sécurisant (encore moins que la solution que je cherche)  


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
mood
Publicité
Posté le 03-09-2007 à 20:47:50  profilanswer
 

n°949552
esox_ch
Posté le 04-09-2007 à 10:14:35  profilanswer
 

Bon j'ai toujours pas trouvé comment faire en passant par Su, j'ai donc écrit un script passant par sudo en sécurisant le sécurisable :
 
visudo.sh (a executer en root la 1ere fois)
 

Code :
  1. echo "www-data CColomb=(ALL,!root) NOPASSWD: /usr/bin/passwd" >> /etc/sudoers


 
(Où www-data est l'utilisateur avec lequel tourne apache, CColomb est le nom de mon serveur, veillez à changer les path selon vos besoins)
 
La partie "interessante" du php  
 

Code :
  1. if(eregi('^[[:alnum:]_.[:space:]-_]*$',$_POST['password']))
  2.  { 
  3.   $command = 'sudo -u '.$user.' passwd';
  4.             $descriptorspec = array(
  5.        0 => array("pipe", "r" ),  // stdin is a pipe that the child will read from
  6.        1 => array("pipe", "w" ),  // stdout is a pipe that the child will write to
  7.        2 => array("file", "/tmp/error-output.txt", "a" ) // stderr is a file to write to
  8.        );
  9.   $process = proc_open($command, $descriptorspec, $pipes, $cwd, $env);
  10.   if (is_resource($process)) {
  11.    // 0 => writeable handle connected to child stdin
  12.    // 1 => readable handle connected to child stdout
  13.    // Any error output will be appended to /tmp/error-output.txt
  14.    fwrite($pipes[0], $_POST['password']."\n" );
  15.    fwrite($pipes[0], $_POST['password']."\n" );
  16.    fclose($pipes[0]);
  17.    fclose($pipes[1]);
  18.    // It is important that you close any pipes before calling
  19.    // proc_close in order to avoid a deadlock
  20.    $return_value = proc_close($process);
  21.    file_put_contents('/tmp/error-output.txt',"\n".$return_value."\n" );
  22.               }
  23.  }
  24.        else
  25.          echo '<p> Sorry but the password cannot contain special caracters other than white space, dot, underscore and dash</p>';


 
Attention : La seule raison pour laquelle je n'ai pas fait de test sur la variable $user (par exemple controler qu'elle ne contient pas de caractères dangeureux) est qu'elle est considérée comme "sûre" dans cette partie du code étant donné qu'elle est récupérée à partir d'un fichier en lecture seule, dont tout le contenu est sûr. Si vous obtenez le username via le formulaire il vous faut absolument faire les contrôles qui vont bien dessus ! Autrement vous risquez qu'on vous injecte du code dans votre ligne de commande (avec les conséquences qui s'en suivent!)
 
Si qqn à mieux je suis tout à fait ouvert :D
 
 
 


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Su/Sudo et autentification automatique

 

Sujets relatifs
Fsck correction automatiqueFormat du username et password de l'autentification WLAN
[Résolu] CIFS : montage automatiqueSudo et linux
Windows Live M. --> conection automatique= mot de passe oublié!Extinction automatique de l'écran
[RESOLU]pam.d/su +sudoSyncronisation automatique de dossiers distants
Lancement automatique script shell sur MinGW Windows 
Plus de sujets relatifs à : Su/Sudo et autentification automatique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR