gpg --passphrase-file이 루트로 작동하지 않습니까?

gpg --passphrase-file이 루트로 작동하지 않습니까?

저는 GnuPG를 파이프로 사용하여 백업을 암호화하려고 합니다(stdin에서 읽고 stdout에 쓰기). 비밀번호는 파일에서 읽혀집니다. 명령 예:

echo "mysecret" | gpg --passphrase-file password.key --batch --symmetric --cipher-algo AES256 > test.gpg

일반 사용자로 실행하면 잘 작동됩니다. 그러나 루트로 실행하면 다음과 같은 결과가 나타납니다.

gpg: gpg-agent is not available in this session
gpg: can't query passphrase in batch mode
gpg: error creating passphrase: invalid passphrase
gpg: symmetric encryption of `[stdin]' failed: invalid passphrase

--passphrase-file루트 액세스 권한을 얻으려면 어떻게 해야 합니까 ?

--passphrase-fd 0제안한 대로 사용할 수 없습니다.여기stdin은 암호화할 데이터이기 때문입니다. GPG 1.4.20(Ubuntu 16.04.5 LTS부터)을 사용하고 있습니다.

답변1

입력을 위해 추가 파일 설명자를 활용하는 해결 방법을 찾았습니다.

exec {FD}<password.key
echo "mysecret" | gpg --passphrase-fd ${FD} --batch --symmetric --cipher-algo AES256 > test.gpg

답변2

먼저 파일 시스템에 암호를 쓰는 것과 관련된 또 다른 답변을 구축하고 싶습니다. printf 명령의 출력을 파일 설명자로 캡처할 수 있습니다.

passphrase="topsecret"
exec {pw_fd}< <(printf "$passphrase")
echo "a total secret" | gpg --passphrase-fd ${pw_fd} --batch --symmetric --cipher-algo aes > test.gpg
exec {pw_fd}<&-

그런 다음 테스트하십시오.

gpg -d --passphrase -i test.gpg
gpg: AES.CFB encrypted data
gpg: encrypted with 1 passphrase
a total secret

관련 정보