GPG를 사용하여 파일을 암호화하려고 합니다. 저는 GPG를 처음 사용합니다. RHEL 7.4의 버전 2.0.22에 설치됩니다.
실행하려고 할 때마다 사용자가 작업을 취소했다는 오류 메시지가 나타납니다.
sh-4.2$ gpg --output ~/test.gpg --symmetric --cipher-algo AES256 test.html
gpg: cancelled by user
gpg: error creating passphrase: Operation cancelled
gpg: symmetric encryption of `test.html' failed: Operation cancelled
sh-4.2$
~에서이 답변나는 이것이 TTY 권한 때문일 수 있다는 것을 발견했습니다.
GnuPG는 (예를 들어) 파이프를 통해 표준 입력에서 암호를 읽는 대신 터미널에서 직접 암호를 읽도록 시도합니다. 이를 위해 tty를 직접 열려고 시도합니다. 안타깝게도 파일 권한이 방해가 됩니다. tty 장치는 로그인한 사용자가 소유합니다. 그러므로 이 사용자와 루트만이 그것을 열 수 있습니다. GnuPG는 취소했다고 오류를 잘못 보고하는 것 같습니다(실제로는 권한이 거부되었습니다).
내 컴퓨터의 경우 TTY는 루트 그룹이 소유하고 g+rw
있으며 루트는 아니지만 루트 그룹에 있습니다.
sh-4.2$ stat /dev/tty
File: '/dev/tty'
Size: 0 Blocks: 0 IO Block: 4096 character special file
Device: 100076h/1048694d Inode: 221356338 Links: 1 Device type: 5,0
Access: (0666/crw-rw-rw-) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-05-17 14:08:51.809798450 +0100
Modify: 2018-05-17 14:08:51.809798450 +0100
Change: 2018-05-17 14:08:51.809798450 +0100
Birth: -
sh-4.2$ id -g
0
sh-4.2$
그래서 이것은 문제가 되지 않는 것 같습니다. 불행하게도 이 컴퓨터에 루트 액세스 권한이 없기 때문에 루트로 작동하는지 테스트할 수 없습니다(비록 컴퓨터 시작 시 루트로 명령이 실행되도록 요청할 수 있지만 데몬 등은 요청할 수 없음).
사용자가 작업을 취소했다고 나오므로(완전히 잘못된 내용임) 디버깅 방법을 모르겠습니다.
루트 액세스 권한이 없어도 이 문제를 해결할 수 있습니까? 루트 액세스 없이 GPG를 사용할 수 없나요?
답변1
저에게는 screen
집에서 사무실 컴퓨터에 연결하고 이전에 사무실에서 열었던 세션에 연결할 때 이런 일이 발생합니다.
조사 결과, pinentry
d-bus 소켓에 연결할 수 없어서 오류가 발생한 것으로 나타났습니다. 근본 원인은 DBUS_SESSION_BUS_ADDRESS
환경에 변수가 설정되어 존재하지 않는 소켓을 가리키는 것입니다. 나 unset DBUS_SESSION_BUS_ADDRESS
또는 dbus-launch gpg <arguments>
그것은 훌륭하게 작동합니다.
gpg-agent
pinentry의 GUI 입력을 강제로 사용하여 완전히 비활성화하는 것도 유용할 수 있습니다 pinentry-tty
. ~/.gnupg/gpg-agent.conf
한 줄을 편집 하고 추가합니다 pinentry-program /usr/bin/pinentry-tty
.
이것이 도움이 되기를 바랍니다. 아니면 다음번에 이런 일이 발생하고 해결책을 잊어버렸을 때 적어도 제가 직접 답을 찾을 것입니다. :)