Maison > développement back-end > tutoriel php > Comment exécuter des commandes racine depuis PHP sur CentOS ?

Comment exécuter des commandes racine depuis PHP sur CentOS ?

Linda Hamilton
Libérer: 2024-11-16 04:24:02
original
197 Les gens l'ont consulté

How to Execute Root Commands from PHP on CentOS?

Exécuter des commandes root via PHP

Vous avez exprimé le désir d'exécuter des commandes avec les privilèges root à partir de votre code PHP sur votre serveur CentOS. Explorons le problème et présentons des solutions potentielles.

Le problème :

Vous avez tenté d'utiliser la fonction exec() pour redémarrer le service sshd, mais cela nécessite accès root, qui n'est pas accordé à l'utilisateur Apache. Bien que vous ayez essayé des solutions telles que l'exécution d'Apache avec les privilèges root ou la modification de votre fichier sudoers, elles n'ont pas résolu le problème.

Solution utilisant Binary Wrapper (avec Suid Bit) :

  1. Créer un script Shell : Commencez par créer un script (par exemple, php_shell.sh) contenant la commande que vous souhaitez exécuter en tant que root.
  2. Définir la propriété et les autorisations : Assurez-vous que l'utilisateur root est propriétaire du script et qu'il dispose des autorisations suivantes :

    • Propriétaire : lecture, écriture, exécution (rwx)
    • Groupe : Lire, Exécuter (rx)
    • Autres : Lire, Exécuter (rx)
  3. Créer un wrapper binaire : Créez un wrapper binaire qui exécutera votre script shell avec les privilèges root. Voici un exemple de wrapper :

    # cat > wrapper.c <<CONTENT
    #include <stdlib.h>
    #include <sys/types.h>
    #include <unistd.h>
    
    int
    main (int argc, char *argv[])
    {
       setuid (0);
       system ("/bin/sh /path/to/php_shell.sh");
       return 0;
     }
    CONTENT
    Copier après la connexion
  4. Compiler et définir les autorisations : Compilez le wrapper binaire et définissez-le avec le bit suid :

    • Compile : gcc wrapper.c -o php_root
    • Définir la propriété : chown root php_root
    • Définir les autorisations : chmod u=rwx,go=xr, s php_root

Ce wrapper php_root exécutera les commandes spécifiées dans php_shell.sh avec les privilèges root lorsqu'il est appelé.

Solution alternative :

Au lieu d'utiliser un script shell externe, vous pouvez intégrer les commandes directement dans le wrapper binaire. Remplacez simplement le contenu de l'étape 3 par les commandes que vous souhaitez exécuter avec les privilèges root.

Attention :

Il est essentiel d'utiliser des chemins absolus vers le script que vous souhaitez exécuter. empêcher les utilisateurs malveillants d'exploiter le binaire pour exécuter des commandes arbitraires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal