Maison  >  Article  >  développement back-end  >  Comment puis-je exécuter des applications en ligne de commande en tant qu'utilisateur spécifique à partir de PHP ?

Comment puis-je exécuter des applications en ligne de commande en tant qu'utilisateur spécifique à partir de PHP ?

DDD
DDDoriginal
2024-10-31 11:25:02621parcourir

How Can I Execute Command-Line Applications as a Specific User from PHP?

Exécuter des applications en ligne de commande à partir de PHP à l'aide d'un utilisateur spécifique

Pour contrôler la lecture de Rhythmbox à partir d'un script PHP exécuté en tant qu'utilisateur www, il est Il est crucial que l'application s'exécute en tant qu'utilisateur prévu plutôt qu'en tant qu'utilisateur www par défaut. Une solution efficace consiste à utiliser sudo.

En tirant parti de sudo, le script PHP peut appeler la commande rythmebox-client avec des privilèges élevés. Cependant, pour garantir que seules des commandes spécifiques sont autorisées, il est conseillé de configurer le fichier sudoers en conséquence. Par exemple :

wwwuser ALL=/usr/bin/rhythmbox-client

En limitant l'invocation sudo à une commande spécifique, vous pouvez sécuriser votre environnement et empêcher Apache d'exécuter des commandes arbitraires.

Dans les cas où le client Rhythmbox peut avoir du mal à identifiez l'instance correcte à contrôler, envisagez de créer un script bash pour établir l'environnement approprié et exécuter la commande. Le script ci-dessous illustre cette approche :

#! /bin/bash
DBUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/*/environ 2> /dev/null| sed 's/DBUS/\nDBUS/g' | tail -n 1`
if [ "x$DBUS_ADDRESS" != "x" ]; then
        export $DBUS_ADDRESS
        /usr/bin/rhythmbox-client --pause
fi

En intégrant ce script dans l'exécution PHP, vous pouvez accorder à wwwuser la possibilité de contrôler la lecture de manière ciblée, activant la fonctionnalité souhaitée de pause de la musique lors de la prise du téléphone et je le reprends une fois raccroché.

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