Files

Nautilus 右鍵菜單中的 GPG 加密

  • December 16, 2020

我經常gpg像這樣使用命令加密文件

gpg -c file

產生一個file.gpg. 我想擺脫命令行方面並在我的 Nautilus 中有一個右鍵點擊按鈕。我嘗試為 Nautilus 安裝 Seahorse 擴展,但效果不佳,我想保持上述命令的簡單性。我應該怎麼做?

據我所知,有兩種簡單的方法可以將條目添加到 Nautilus 上下文菜單:

  1. 鸚鵡螺腳本
  2. nautilus-actions包,根據您的發行版可能會折舊。

我在nautilus-actions不可用的 Debian Bullseye/sid 上執行,因此我將介紹使用Nautilus script的方式。要了解有關此 Nautilus 功能的更多資訊,您可以花一點時間在StackExchange 的 Ubuntu 端,人們在那裡談論了很多關於 Nautilus 腳本的內容。基本上,此功能允許您將上下文菜單條目添加到位於您的~/.local/share/nautilus/scripts/目錄中的 Bash(或例如 Python)腳本。


使用兩個腳本

我建議實現兩個腳本:一個用於加密,一個用於解密。右鍵點擊文件時,您的上下文菜單將如下所示:

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 gpg’ 選項並zenity --file-selection指定解密後的文件名。

如果所選文件不是加密.gpg文件,腳本將使用zenity --error彈出錯誤視窗。

此腳本通過查看副檔名來測試文件是否已加密。更好的方法是檢查所選文件的 MIME 類型。加密文件的 MIME 類型可以使用

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

由於application/octet-stream 指的是一般二進製文件,而不是加密文件所必需的,我認為這種方法不會比檢查文件副檔名更好。另一方面,我知道 Nautilus 將我的gpg-encrypted 文件映射到application/pgp-encryptedMIME 類型。也許有人知道如何.gpg使用命令以外的其他方式從文件中獲取此 MIME 類型file,在這種情況下,它將是相關的。


使用兩個文件

如果您不想使用兩個右鍵菜單條目,您可以使用一個腳本:

#!/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 中點兩下解密

此外,您可以通過將以下桌麵條目添加到目錄中來允許 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

展示

展示

**PS:**在 GNOME 3.34.2 和gpg2.2.17 上測試(您可以使用 進行檢查$ gpg --version)。

sudo apt install seahorse-nautilus

然後使用以下命令重新啟動 Nautilus: nautilus -q

然後右鍵點擊文件並選擇Encrypt

引用自:https://unix.stackexchange.com/questions/559556