Nautilus 右鍵菜單中的 GPG 加密
我經常
gpg
像這樣使用命令加密文件gpg -c file
產生一個
file.gpg
. 我想擺脫命令行方面並在我的 Nautilus 中有一個右鍵點擊按鈕。我嘗試為 Nautilus 安裝 Seahorse 擴展,但效果不佳,我想保持上述命令的簡單性。我應該怎麼做?
據我所知,有兩種簡單的方法可以將條目添加到 Nautilus 上下文菜單:
- 鸚鵡螺腳本
nautilus-actions
包,根據您的發行版可能會折舊。我在
nautilus-actions
不可用的 Debian Bullseye/sid 上執行,因此我將介紹使用Nautilus script的方式。要了解有關此 Nautilus 功能的更多資訊,您可以花一點時間在StackExchange 的 Ubuntu 端,人們在那裡談論了很多關於 Nautilus 腳本的內容。基本上,此功能允許您將上下文菜單條目添加到位於您的~/.local/share/nautilus/scripts/
目錄中的 Bash(或例如 Python)腳本。使用兩個腳本
我建議實現兩個腳本:一個用於加密,一個用於解密。右鍵點擊文件時,您的上下文菜單將如下所示:
加密腳本
加密腳本只是
#!/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-encrypted
MIME 類型。也許有人知道如何.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 和
gpg
2.2.17 上測試(您可以使用 進行檢查$ gpg --version
)。
sudo apt install seahorse-nautilus
然後使用以下命令重新啟動 Nautilus:
nautilus -q
然後右鍵點擊文件並選擇
Encrypt