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$
だからこれは問題にならないようです。残念ながら、このコンピュータにrootアクセス権がないため、rootとして機能しているかどうかをテストすることはできません(コンピュータの起動時にrootとしてコマンドを実行するように要求できますが、デーモンなどは要求できません)。
ユーザーが操作をキャンセルしたと思われるので(完全に間違った内容です)、デバッグ方法がわかりません。
rootアクセス権がなくてもこの問題を解決できますか?ルートアクセスなしで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
1行を編集して追加しますpinentry-program /usr/bin/pinentry-tty
。
これが役に立つことを願っています。それとも、次回このようなことが起こり、解決策を忘れた場合、少なくとも私は直接答えを見つけるでしょう。 :)