젠투 리눅스 GPG는 매개 변수를 통해 전달 된 파일을 올바르게 암호화하지만 표준 입력에서 읽을 때 “장치에 부적절한 ioctl”을 던집니다 Gentoo Hardened를 실행 중이며

커널 4.1.7-hardened-r1로 Gentoo Hardened를 실행 중이며 SSH에서 열린 쉘 세션에서 GPG DISPLAY를 사용하고 암호 프롬프트에 pinentry-curses를 사용하기 위해 변수를 비활성화 하여 파일을 암호화하려고 합니다. 사용하면 gpg -o file.gpg --symmetric file잘 암호화 할 수 있습니다. 사용 pv file | gpg -o file.gpg --symmetric하면 다음과 같은 오류 메시지가 나타납니다.

gpg-agent[30745]: command get_passphrase failed: Inappropriate ioctl for device


답변

이 문서 에서처럼 GPG_TTY 변수가 작동하도록 설정해야 합니다 .

GPG_TTY=$(tty)
export GPG_TTY

이 두 줄은 .bashrc(bash 가정)에 있어야하므로 새 터미널 세션을 열 때마다 실행됩니다.

bash pv에서는 프로세스 대체를 사용하여 파일을 실행 하고 파일 인 것처럼 가장 할 수 있습니다 .

gpg -o file.gpg --symmetric <(pv file)

따라서 추가 입력이 필요한 프로그램에 항목을 파이프 인하는 것은 좋지 않습니다. 예상과 다르게 작동 할 수 있습니다.