我经常使用gpg
命令来加密文件,如下所示
gpg -c file
这会产生一个file.gpg
.我想摆脱命令行方面并在我的 Nautilus 中添加右键单击按钮。我尝试为 Nautilus 安装 Seahorse 扩展,但它工作得不太好,我想保持上述命令的简单性。我应该怎么做?
答案1
据我所知,有两种简单的方法可以将条目添加到 Nautilus 上下文菜单:
- 鹦鹉螺脚本
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
gpg
s 选项并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-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
in 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 和gpg
2.2.17 上进行了测试(您可以使用 检查$ gpg --version
)。
答案2
sudo apt install seahorse-nautilus
然后使用以下命令重新启动 Nautilus:
nautilus -q
然后右键单击该文件并选择Encrypt