Nautilusの右クリックメニューのGPG暗号化

Nautilusの右クリックメニューのGPG暗号化

私はしばしばgpg以下のようにファイルを暗号化するコマンドを使用します。

gpg -c file

file.gpgコマンドラインの側面を削除し、ノーチラスに右クリックボタンを追加したいと思います。私はNautilus用のSeahorse拡張機能をインストールしようとしましたが、うまくいきませんでした。どうすればいいですか?

答え1

私が知っている限り、Nautilusのコンテキストメニューにアイテムを追加する2つの簡単な方法があります。

  1. Nautilusスクリプト
  2. nautilus-actionsパッケージはディストリビューションによって減価償却される場合があります。

Debian Bullseye/sid で実行していますが、nautilus-actions使用できないので、次の方法で説明します。Nautilusスクリプト。 Nautilusの機能の詳細については、しばらく時間をかけてください。StackExchangeのUbuntu側、人々はそこにノーチラススクリプトについてたくさん話しています。デフォルトでは、この機能を使用する~/.local/share/nautilus/scripts/と、ディレクトリ内のBash(またはPython)スクリプトにコンテキストメニュー項目を追加できます。


2 つのスクリプトの使用

私の提案は、暗号化スクリプトと復号化スクリプトの2つを実装することです。ファイルを右クリックすると、コンテキストメニューが次のように表示されます。

Nautilusの右クリックメニュー

暗号化スクリプト

暗号化スクリプトは簡単です

#!/usr/bin/env bash
# Encrypt
# gpg-encrypt Nautilus script

gpg -c --no-symkey-cache "$1" && rm -f "$1"

最初のBashパラメータ$1は、Nautilusが右クリックしたときに選択するファイルパスです。

これにより、パスワードがキャッシュに保存されるのを--no-symkey-cache防ぎます。gpgデフォルトでは、パスワードはファイルを暗号化して復号化してから一定期間保存されますが、個人的にはこの機能が気に入らないため、このオプションを使用します。

暗号化後に元のファイルを削除する機能も追加しておいたので、&& rm -f "$1"必要でなければ削除しても構いません。

スクリプトの解読

復号化スクリプトは次のとおりです。

#!/usr/bin/env bash
# Decrypt
# gpg-decrypt Nautilus script

ext=`echo "$1" | grep [.]gpg`
if [ "$ext" != "" ]; then
    gpg --batch --yes --no-symkey-cache "$1"
else
    zenity --error --text "The selected file is not crypted."
fi

このスクリプトの機能について説明します。選択したファイルがファイルでない場合は、ext空の変数を使用します。.gpgいいえ選択したファイルが.gpgファイルの場合は空です。

選択したファイルが暗号化されている場合、.gpgスクリプトはこのgpgコマンドを使用してファイルを復号化します。--batch --yes出力ファイルがすでに存在する場合は、それらを上書きするためにこれらのオプションを渡しました。たとえば、復号化がある場合はfile.gpg上書きされます。file上書きしたくない場合は、output gpgsオプションを使用してzenity --file-selection復号化されたファイル名を指定することをお勧めします。

選択したファイルが暗号化されていない場合、.gpgスクリプトはzenity --errorエラーウィンドウを表示します。

このスクリプトは拡張子をチェックして、ファイルが暗号化されているかどうかをテストします。より良いアプローチは、選択したファイルのMIMEタイプを確認することです。暗号化されたファイルのMIMEタイプは、次のコマンドを使用して見つけることができます。

$ > file
$ file -b --mime-type file.gpg
application/octet-stream

~からapplication/octet-stream 一般的なバイナリファイルを意味します。ファイルを暗号化する必要はないので、このアプローチはファイル拡張子を確認するよりも優れているとは思わない。一方、Nautilusは暗号化されたファイルをMIMEタイプgpgにマッピングすることを知っています。たぶん、誰かがコマンド以外のものを使ってファイルからこのMIMEタイプを取得するapplication/pgp-encrypted方法を知っているかもしれません。この場合、関連性があります。.gpgfile


2つのファイルを使用してください

2つの右クリックメニュー項目を使用したくない場合は、スクリプトを使用できます。

#!/usr/bin/env bash
# Encrypt-Decrypt
# gpg-encrypt/decrypt Nautilus script

ext=`echo "$1" | grep [.]gpg`
if [ "$ext" != "" ]; then
    gpg --batch --yes --no-symkey-cache "$1"
else
    gpg -c --no-symkey-cache "$1" && rm -f "$1"
fi

.gpgこのスクリプトは、選択したファイルがファイルの場合は復号化し、選択したファイルが別のファイルの場合は暗号化します。


ノーチラスで復号化するには、ダブルクリックしてください。

また、次のデスクトップエントリをディレクトリに追加して、Nautilusがダブル.gpgクリックして暗号化を復号化できるようにすることもできます。~/.local/share/applications/

# Decrypt.desktop
[Desktop Entry]
Name=GPG Decrypt
Terminal=false
Type=Application
MimeType=application/pgp-encrypted;
Exec=gpg --batch --yes --no-symkey-cache %F
NoDisplay=true

デフォルトでは、他のアプリケーションを使用していない場合は、Nautilusをダブルクリックするとファイルのパスワードが復号化されます。デフォルトのGNOMEを使用している場合は、Seahorseをデフォルトのアプリケーションとして選択することができます。この場合GPG Decryptは選択する必要がありますOpen With Other Application Menu


インストールする

この小さなBashスクリプトはすべてを正しい場所にインストールします。

chmod +x 'Encrypt' 'Decrypt' # script files must be executable!
cp Encrypt Decrypt ~/.local/share/nautilus/scripts/
cp  Decrypt.desktop ~/.local/share/applications/
update-desktop-database ~/.local/share/applications/
nautilus -q 
nautilus

デモ

デモ

添付:GNOME 3.34.2および2.2.17gpgでテストされています(checkが利用可能です$ gpg --version)。

答え2

sudo apt install seahorse-nautilus

その後、次のコマンドを使用してノーチラスを再起動します。 nautilus -q

次に、ファイルを右クリックして選択します。Encrypt

関連情報