Nautilus 右键菜单中的 GPG 加密

Nautilus 右键菜单中的 GPG 加密

我经常使用gpg命令来加密文件,如下所示

gpg -c file

这会产生一个file.gpg.我想摆脱命令行方面并在我的 Nautilus 中添加右键单击按钮。我尝试为 Nautilus 安装 Seahorse 扩展,但它工作得不太好,我想保持上述命令的简单性。我应该怎么做?

答案1

据我所知,有两种简单的方法可以将条目添加到 Nautilus 上下文菜单:

  1. 鹦鹉螺脚本
  2. nautilus-actions包,根据您的发行版,该包可能会折旧。

我正在 Debian Bullseye/sid 上运行,但nautilus-actions不可用,因此我将使用以下方式介绍方法鹦鹉螺脚本。要了解有关 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 gpgs 选项并zenity --file-selection指定解密的文件名。

如果所选文件不是加密.gpg文件,脚本将zenity --error弹出一个错误窗口。

该脚本通过查看扩展名来测试文件是否已加密。更好的方法是检查所选文件的 MIME 类型。可以使用以下命令找到加密文件的 MIME 类型

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

自从application/octet-stream 指一般的二进制文件对于加密文件来说不是必需的,我认为这种方法不会比检查文件扩展名更好。另一方面,我知道 Nautilus 将我的gpg加密文件映射到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 Decryptin 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 和gpg2.2.17 上进行了测试(您可以使用 检查$ gpg --version)。

答案2

sudo apt install seahorse-nautilus

然后使用以下命令重新启动 Nautilus: nautilus -q

然后右键单击该文件并选择Encrypt

相关内容