Webmaster Hub: probleme avec set-uid dans un script PHP - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

probleme avec set-uid dans un script PHP Ca ne marche pas. Noter : -----

#1 L'utilisateur est hors-ligne   destroyedlolo 

  • Groupe : Hubmaster
  • Messages : 792
  • Inscrit(e) : 05-juillet 04
  • Genre:Homme
  • Localisation:Nonglard

Posté 16 juin 2011 - 23:48

Bonjour,

Je cherche a faire un script PHP, lance depuis le shell, que je souhaite lancer en temps que root grace a son bit 'set-uid'.

Par exemple,
#!/usr/bin/php
<?

... bla bla bla ...

chown('toto', 'root');
?>


Mon script se nome Upload et j'ai donc fait :
root_AT_chose:~/projets/Geppetto/Client/TasksScripts# chown root Upload
root_AT_chose:~/projets/Geppetto/Client/TasksScripts# chmod u+s Upload
root_AT_chose:~/projets/Geppetto/Client/TasksScripts# ll
total 32
-rwsr-xr-x 1 root    www-data 1798 2011-06-17 00:38 Upload



Sauf que ca ne marche pas lorsque je le lance en temps d'un user lambda :

Warning: chown(): Operation not permitted in /home/laurent/projets/Geppetto/Client/TasksScripts/Upload on line 67



Quelqu'un saurait-il pourquoi ?

Merci,

Laurent
Amiga, UNIX, Ubuntu, NetBSD, Sharp, Apache, PHP, Ski, Vacances, Voyages
100 % dictionnary free - 1 mispelling by word
Viendez chez moi
0

#2 L'utilisateur est en ligne   Dan 

  • Webmaster
  • Voir le blog
  • Voir la galerie
  • Groupe : Direction
  • Messages : 22 946
  • Inscrit(e) : 18-août 03
  • Genre:Homme
  • Localisation:St Anne, Alderney
  • Société:Webmaster Hub Ltd.

Posté 17 juin 2011 - 07:20

Salut Laurent,

Sur de nombreuses distributions, le setuid est désactivé pour les scripts vu les nombreux problèmes de sécurité que cela entraîne.

Une solution est de créer un programme en C, appelant ton script. Ce programme pourra après compilation avoir le suid bit mis.

Par exemple :
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
   setuid( 0 );
   system( "/path/to/script.sh" );

   return 0;
}

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Si la pratique et la théorie sont réunies, rien ne fonctionne et on ne sait pas pourquoi. - Albert Einstein -
Infogérance de serveurs dédiés OVH
0

#3 L'utilisateur est hors-ligne   destroyedlolo 

  • Groupe : Hubmaster
  • Messages : 792
  • Inscrit(e) : 05-juillet 04
  • Genre:Homme
  • Localisation:Nonglard

Posté 17 juin 2011 - 13:43

Ok, DAN, merci, je ne savais pas.

Bon, j'essaie de voir si je peux passer a travers sudo sinon j'utiliserai ta solution.

Bye

Laurent
Amiga, UNIX, Ubuntu, NetBSD, Sharp, Apache, PHP, Ski, Vacances, Voyages
100 % dictionnary free - 1 mispelling by word
Viendez chez moi
0

#4 L'utilisateur est hors-ligne   destroyedlolo 

  • Groupe : Hubmaster
  • Messages : 792
  • Inscrit(e) : 05-juillet 04
  • Genre:Homme
  • Localisation:Nonglard

Posté 10 juillet 2011 - 23:10

Bon, je reviens sur ce vieux trucs au cas ou ca puisse aider quelqu'un.

J'ai donc trouve mon bonheur avec sudo.
Dans mon cas, il s'agit d'un outils pour lancer des commandes a distance dont apt-get (la commande qui permet la mise a jour des systemes sous debian ou derive).

j'ai eu simplement a mettre dans mon sudoers
# Geppetto
puppet ALL=NOPASSWD: /usr/bin/apt-get


pour que mon utilisateur puisse lancer des updates sans qu'aucun mot de passe ne lui soit demande.

Voili, voila
Amiga, UNIX, Ubuntu, NetBSD, Sharp, Apache, PHP, Ski, Vacances, Voyages
100 % dictionnary free - 1 mispelling by word
Viendez chez moi
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)