GPG dešifruje soubor bez obsahu / jako prázdný soubor

hlasů
1

Jsem potýká s problémem gpg po dobu několika dní a převýšení přijít o řešení sám. Byl bych rád, kdybyste mi pomohli s následující problém:

Musím se dešifrovat soubor gpg v PHP. za to, že jsem pomocí následujícího příkazu:

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.

Myslím, že se jedná o problém povolení. Jak mohu použít tento příkaz v PHP správně? Také jsem se snažil chown a chgrp s ftprightson dešifrované souboru, ale nic Zdá se, že pomůže.

každá odpověď je vysoce ceněn. dík!

Položena 16/03/2012 v 15:16
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Nakonec jsem se dostal do práce:

Za prvé, jsem změnil příkaz gpg pro dešifrování s ozvěnou přístupové heslo do standardního vstupu:

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

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

Před spuštěním se shell_exec jsem potřeboval změnit homedir SVS:

před tím, než byla stanovena:

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

ale samozřejmě uživatel php (v mém případě „ftpadmin“, zjistil s „whoami“) nemá oprávnění k přístupu tohoto adresáře, tak jsem zkopíroval složku .gpg do mého nového uživatelského vytvořil php adresáře: / home / ftpadmin (s 777 perms) a změnil GNUPGHOME:

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

Nyní jsem schopen dešifrovat soubory gpg s php. Možná byste mohli najít nějakou pomoc pro svůj podobném problému. Ještě jednou díky za každou odpověď.

Odpovězeno 29/03/2012 v 14:32
zdroj uživatelem

hlasů
0

Můžete zkusit použít

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

místo.

Další věc, kterou si můžete vyzkoušet, je spuštění tohoto příkazu v shellu jako ftpadmin v adresáři, kde je váš stammdaten.txt soubor je, aby se ujistil, že není problém oprávnění souboru.

su ftpadmin
cat passphrase.txt | /usr/local/bin/gpg --output stammdaten.txt --decrypt --passphrase-fd 0 stammdaten.txt.gpg
Odpovězeno 16/03/2012 v 16:14
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more