Exécutez une commande en tant qu'autre utilisateur une fois:
sudo -u www-data php script.php
Cela devrait fonctionner si vous l'êtes root
.
Quant à toujours exécuter php as www-data
, il existe plusieurs possibilités. Vous pouvez créer un script shell simple. Si ce /usr/bin/php
n'est qu'un lien logiciel vers /usr/bin/php5
ou similaire, cela le rend plus simple. Remplacez simplement le lien logiciel (PAS le fichier php5
) par un script comme celui-ci:
#!/bin/sh
sudo -u www-data php5 $*
return $?
Ce n'est pas testé cependant. Sachez également que cela tentera TOUJOURS de s'exécuter en php5
tant qu'utilisateur www-data
, même si l'utilisateur peut ne pas être root
et ne pas être autorisé à le faire. Et ce n'est peut-être pas ce que vous voulez vraiment. Certains services installés peuvent rencontrer des problèmes lors de l'exécution de php.
Une solution (peut-être meilleure) pour n'appliquer cela qu'à root peut être de laisser le soft-link /usr/bin/php
seul et de placer le script à la /root/bin
place. Ajoutez ensuite ce dossier à PATH via .bashrc
, .profile
ou similaire. Si c'est le cas /etc/skel/.profile
, cela peut indiquer comment cela se fait:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Une fois que cela est dans votre .bashrc
, .profile
ou similaire, chaque nouveau shell que vous ouvrez vous permettra d'exécuter directement tous les exécutables (+ x) dans $HOME/bin
( /root/bin
pour root).
Astuce: Vous voudrez peut-être nommer le script de wrapper quelque chose comme phpwww
ça, vous spécifiez donc explicitement php script.php
ou phpwww script.php
décidez si vous voulez un php régulier ou sudo'ed.
Une autre solution est un simple alias. Placez ceci dans votre .bashrc
, .profile
ou similaire:
alias phpwww='sudo -u www-data php'
Répondu par mwargh sur ## linux (IRC Freenode.net)
Pour exécuter une commande en tant qu'utilisateur différent -> basculez vers cet utilisateur en utilisant:
Je serais toujours intéressé (si c'est possible) à configurer PHP pour que l'exécution:
en tant qu'utilisateur root
entraînera la création d'un fichier avec www-data: utilisateur / groupe www-data
(de cette façon, je n'aurais pas à passer de root à www-data pour exécuter mes commandes)
la source
J'essaierais de faire / usr / bin / php détenu par www-data et définir la permission suid, ce qui force l'exécution de la commande par le propriétaire du fichier. Vous feriez cela avec:
vous aimez la notation octale:
Bien que je doive dire que cela devrait inquiéter chaque fois que vous faites de www-data le propriétaire de quoi que ce soit, car le but du compte www-data est de posséder le moins possible.
la source
si vous avez le php-fpm (FastCGI Process Manager)
vous pouvez le configurer dans le fichier de configuration situé à (au moins pour centos):
/etc/php-fpm.d/www.conf
à la ligne 39, vous pouvez définir l'utilisateur et 49 vous définissez le groupe
la source
php-cli
, n'est-ce pas?créer un fichier script:
ajouter du contenu:
lancez vos scripts depuis root:
ou utilisez l'interpréteur dans vos scripts
note: testé sur debian 7, vous pourriez avoir besoin d'installer sudo
tous les fichiers créés par script.php auront le même uid que ce script
la source