Maison  >  Article  >  développement back-end  >  Comment puis-je exécuter en toute sécurité des commandes racine à partir de PHP dans CentOS 5.7 sans compromettre la sécurité des utilisateurs ?

Comment puis-je exécuter en toute sécurité des commandes racine à partir de PHP dans CentOS 5.7 sans compromettre la sécurité des utilisateurs ?

DDD
DDDoriginal
2024-11-16 08:49:02128parcourir

How Can I Securely Execute Root Commands from PHP in CentOS 5.7 without Compromising User Safety?

Exécution de commandes racine via PHP

Dans CentOS 5.7 avec PHP 5.3.x, l'exécution de commandes racine peut présenter un défi de sécurité sans compromettre la sécurité des utilisateurs. Malgré des méthodes telles que l'exécution d'Apache en tant que root ou la modification des sudoers pour autoriser Apache NOPASSWD à accéder aux commandes restreintes, ces solutions ne sont pas recommandées.

Solution utilisant un wrapper binaire :

Envisagez les étapes suivantes pour créer une solution sécurisée :

  1. Créez un script shell (par exemple, php_shell.sh) qui contient les commandes requises par root. Assurez-vous que ce script appartient à root et dispose d'autorisations d'écriture limitées uniquement pour root.
  2. Créez un wrapper binaire (par exemple, wrapper.c) à l'aide du code C fourni, qui inclut l'appel système setuid pour élever les privilèges et exécuter le script shell spécifié. Compilez et définissez les autorisations correctes, y compris le bit suid.
  3. Le binaire compilé (php_root) s'exécutera désormais avec les privilèges root et exécutera les commandes dans le script shell, offrant un moyen sécurisé de déclencher des actions root depuis PHP sans accorder des autorisations excessives.

Approche alternative :

Si vous préférez ne pas utiliser script séparé, vous pouvez modifier wrapper.c pour inclure directement les commandes que vous souhaitez exécuter à l'aide de l'appel système (« votre commande shell ici »). En compilant et en définissant les autorisations appropriées, ce binaire wrapper accordera les privilèges root spécifiquement pour les commandes spécifiées.

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