2010-05-22 5 views
1

Je veux construire un php site basé que (automatiser) certaines commandes sur mon Ubuntu Servercomment faire des listes PHP tous les utilisateurs de Linux?

première chose que je n'allais le fichier (sudoers) et ajouter le www-données utilisateur que je peux exécuter des commandes PHP avec les privilèges root!

# running the web apps with root power!!! 
www-data ALL=(ALL) NOPASSWD: ALL 

alors mon code PHP était

<?php 
    $command = "cat /etc/passwd | cut -d\":\" -f1"; 
    echo 'running the command: <b>'.$command."</b><br />"; 
    echo exec($command); 
?> 

retourne un seul utilisateur (le dernier utilisateur) !!! comment le faire retourner tous les utilisateurs?

merci

+4

Ceci est une très mauvaise idée pour des raisons de sécurité. –

+2

Pouvez-vous nous indiquer l'adresse de votre serveur par la suite? :-) –

+0

@Matt: oui je sais, alors quelle est la meilleure approche pour réaliser une telle fonction? @Alexander: le serveur situé dans un réseau privé à des fins de test et d'apprentissage, désolé ;-) –

Répondre

3

A partir du manuel PHP sur exec:

Valeurs de retour

La dernière ligne du résultat de la commande . Si vous devez exécuter une commande et que toutes les données de la commande sont transmises directement sans , utilisez la fonction passthru() . Pour obtenir la sortie de la commande exécutée, assurez-vous de définir et d'utiliser le paramètre de sortie .

Alors vous devez faire quelque chose de similaire à ceci:

<?php 
    $output = array(); 
    $command = "cat /etc/passwd | cut -d\":\" -f1"; 
    echo 'running the command: <b>'.$command."</b><br />"; 
    exec($command, &$output); 
    echo implode("<br />\n", $output); 
?> 
+0

a parfaitement fonctionné, Merci allot :-) –

1

Comme Matt S a dit, c'est une idée incroyablement mauvais pour permettre un accès root www-données sur votre serveur. Le moindre compromis via vos applications web pourrait permettre à n'importe qui de contrôler totalement votre système. Une meilleure idée serait de créer des scripts séparés pour des accessions spécifiques, puis d'utiliser les permissions SUID. Cela signifie qu'un utilisateur spécifique (dans ce cas, www-data) peut apporter de petites modifications au système via l'exécution de scripts. Cependant, ce n'est pas une bonne idée. Vous pouvez peut-être contourner SuPHP, mais la sécurité est toujours une préoccupation majeure.

+0

mais comment puis-je construire une page qui peut apporter des modifications au système? Comme ajouter/supprimer des utilisateurs/changer l'ip un hôte du système, je vais toujours besoin d'un administrateur pour faire ça !!! –

0

/etc/passwd est lisible par n'importe qui, vous devriez donc pouvoir exécuter votre commande sans avoir de droits spéciaux (à moins que PHP ne l'empêche?).

Questions connexes