GPG расшифровывает файл без содержимого / как пустой файл - PullRequest
1 голос
/ 16 марта 2012

Я несколько дней борюсь с проблемой gpg и не могу найти решение самостоятельно. Я был бы рад, если бы вы могли помочь мне со следующей проблемой:

мне нужно расшифровать файл gpg в php. для этого я использую следующую команду:

cat passphrase.txt | /usr/local/bin/gpg --decrypt --passphrase-fd 0 stammdaten.txt.gpg>stammdaten.txt

the passphrase.txt contains the password for decryption
stammdaten.txt.gpg is the encrypted file
the decrypted data will be written in stammdaten.txt

when i run this command in php:


shell_exec=("cat passphrase.txt | /usr/local/bin/gpg --decrypt --passphrase-fd 0 stammdaten.txt.gpg>stammdaten.txt")


i get a zero-byte output file (stammdaten.txt) with owner=ftpadmin and group=psacln

but when i execute the same command via ssh terminal (as root), the data will be decrypted and written correctly with file owner=root and group=root.

Я думаю, что это проблема с разрешениями. Как я могу использовать эту команду в PHP правильно? я также попытался с помощью ftprightson расшифровать файл с помощью команды chogrp и chgrp, но ничего не помогло.

каждый ответ высоко ценится. спасибо!

Ответы [ 2 ]

1 голос
/ 29 марта 2012

наконец я получил его на работу:

прежде всего, я изменил команду gpg для расшифровки с выводом парольной фразы в stdin:

$passphrase = utf8_decode('mypassphrase');
$encrypted = 'fullsystempathtogpgfile.gpg';

"echo '$passphrase' | /usr/local/bin/gpg -v -v --batch --passphrase-fd 0 --no-default-keyring $encrypted";

перед выполнением с shell_exec мне нужно былоизмените homedir для gpg:

до того, как он был установлен с:

putenv("GNUPGHOME=/var/www/.gnupg");

, но очевидно, что пользователь php (в моем случае "ftpadmin", обнаруженный с "whoami") не имеет разрешениячтобы получить доступ к этому каталогу, я скопировал папку .gpg в мою новую созданную пользовательскую папку php: / home / ftpadmin (с 777 разрешениями) и изменил GNUPGHOME:

putenv("GNUPGHOME=/home/ftpadmin/.gnupg");

, теперь я могу расшифроватьgpg файлы с php.Может быть, вы могли бы найти помощь для вашей аналогичной проблемы.Еще раз спасибо за каждый ответ.

0 голосов
/ 16 марта 2012

Вместо этого вы можете попытаться использовать

cat passphrase.txt | /usr/local/bin/gpg --output stammdaten.txt --decrypt --passphrase-fd 0 stammdaten.txt.gpg

.

Другая вещь, которую вы можете попробовать, - запустить эту команду в оболочке как ftpadmin в каталоге, где находится файл stammdaten.txt.чтобы убедиться, что это не проблема с правами доступа к файлу.

su ftpadmin
cat passphrase.txt | /usr/local/bin/gpg --output stammdaten.txt --decrypt --passphrase-fd 0 stammdaten.txt.gpg
...