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 :
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
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
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; }
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!