2010-08-26 3 views
3

Je travaille sur un script qui doit exécuter un script Perl via une ligne de commande (en utilisant shell_exec()). Pour configurer le script, j'avais besoin de générer une clé GPG de ma part, et importer sa clé publique dans mon trousseau de clés GPG.Comment rendre les clés GPG accessibles pour PHP shell_exec

Le script perl fonctionne très bien quand je le lance en tant qu'utilisateur ROOT, mais lors de l'exécution par PHP, il lance ce message d'erreur:

« Une erreur est survenue lors d'une tentative de signer la demande »

Je suppose que cela signifie que les clés GPG que j'ai configurées dans mon utilisateur root ne sont pas accessibles à l'utilisateur PHP exécute ses commandes shell sous (par exemple apache).

Comment dois-je résoudre ce problème?

Je ne sais pas si je dois me connecter en tant qu'apache et importer les clés, ou s'il y a une commande à exécuter en tant que root pour permettre leur partage avec l'utilisateur apache ... Toutes les idées seraient géniales:

Répondre

2

Correct. Évidemment, vous ne voulez pas qu'un simple utilisateur mortel comme "apache" soit capable de signer les choses en tant que root! Par conséquent, vous voudrez configurer GPG pour l'utilisateur Apache. Ceci est généralement douloureux, car l'utilisateur Apache ne peut généralement pas obtenir un shell.

Je voudrais essayer de mettre en place /home/<apache-user> répertoire, si elle n'existe pas (probablement pas). Ensuite, essayez de configurer GPG pour l'utilisateur Apache. Vous pouvez probablement le faire fonctionner en tant que root en passant le --homedir=/home/<apache-user> au binaire gpg.

+0

il devrait être --homedir et non --home -dir au moins dans ma version de gpg 2.0.8 –

3

vous pouvez lancer un shell sous le apache utilisateur comme ceci:

su apache -s /bin/ksh 

alors vous pouvez initialiser GPG. Notez le répertoire d'accueil par défaut pour apache est/var/www, vous pourriez avoir à:

chmod a+w /var/www 

pour permettre GPG de créer le sous-répertoire .gnupg

Questions connexes