Maison >développement back-end >tutoriel php >Comment exécuter des commandes racine en toute sécurité à partir d'applications PHP ?

Comment exécuter des commandes racine en toute sécurité à partir d'applications PHP ?

DDD
DDDoriginal
2024-11-17 16:03:02377parcourir

How to Execute Root Commands Securely from PHP Applications?

Exécuter les commandes racine de manière transparente via PHP

Exécuter les commandes racine en toute sécurité est une exigence courante dans les applications Web. Dans cet article, nous examinerons une solution qui vous permet d'exécuter des commandes root avec un accès utilisateur restreint, améliorant ainsi la sécurité tout en répondant aux exigences fonctionnelles.

Au départ, l'approche consistait à accorder à l'utilisateur Apache les privilèges root. Cependant, cela pose de sérieux risques pour la sécurité et est fortement déconseillé. Au lieu de cela, nous utiliserons une alternative plus sécurisée.

Notre solution consiste à créer un wrapper binaire qui exécutera les commandes souhaitées en tant que root. Voici un guide étape par étape pour configurer cela :

  1. Créer un script avec des commandes racine :

    Créer un script qui contient le commandes racine que vous devez exécuter. Par exemple, pour redémarrer le service SSHD, créez un script nommé php_shell.sh avec le contenu suivant :

    #!/bin/sh
    /sbin/service sshd restart
  2. Autorisations de script sécurisées :

    Définissez le propriétaire de php_shell.sh sur root et accordez les autorisations d'écriture uniquement à la racine utilisateur :

    chown root php_shell.sh
    chmod u=rwx,go=xr php_shell.sh
  3. Créer un wrapper binaire :

    Ce binaire exécutera notre php_shell.sh avec les privilèges root. Créez un fichier wrapper.c avec le code suivant :

    #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;
    }
  4. Compilez et définissez les autorisations :

    Compilez le fichier wrapper.c et définissez les autorisations correctes, y compris le bit suid :

    gcc wrapper.c -o php_root
    chown root php_root
    chmod u=rwx,go=xr,+s php_root

En suivant En suivant ces étapes, vous disposerez d'un wrapper binaire (php_root) qui peut exécuter les commandes root comme spécifié dans php_shell.sh. Cela fournit un moyen sécurisé d'exécuter des commandes racine à partir de vos applications PHP sans compromettre la sécurité du système.

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!

Déclaration:
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