노틸러스 마우스 오른쪽 버튼 클릭 메뉴의 GPG 암호화

노틸러스 마우스 오른쪽 버튼 클릭 메뉴의 GPG 암호화

나는 종종 gpg아래와 같이 파일을 암호화하는 명령을 사용합니다.

gpg -c file

file.gpg명령줄 측면을 제거하고 노틸러스에 오른쪽 클릭 버튼을 추가하고 싶습니다 . Nautilus용 Seahorse 확장을 설치하려고 시도했지만 제대로 작동하지 않았고 위 명령을 단순하게 유지하고 싶었습니다. 어떻게 해야 합니까?

답변1

내가 아는 한, 노틸러스 상황에 맞는 메뉴에 항목을 추가하는 두 가지 간단한 방법이 있습니다.

  1. 노틸러스 스크립트
  2. nautilus-actions패키지는 배포판에 따라 감가상각될 수 있습니다.

Debian Bullseye/sid에서 실행 중이지만 nautilus-actions사용할 수 없으므로 다음을 사용하여 방법을 설명하겠습니다.노틸러스 스크립트. 노틸러스의 기능에 대해 자세히 알아보려면 잠시 시간을 내어StackExchange의 우분투 측면, 사람들은 그곳에서 노틸러스 스크립트에 대해 많이 이야기합니다. 기본적으로 이 기능을 사용 ~/.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는 암호화된 파일을 MIME 유형 gpg으로 매핑한다는 것을 알고 있습니다. 어쩌면 누군가가 command 이외의 다른 것을 사용하여 파일에서 이 MIME 유형을 얻는 application/pgp-encrypted방법을 알고 있을 수도 있습니다 . 이 경우 관련성이 있습니다..gpgfile


두 개의 파일을 사용하세요

두 개의 마우스 오른쪽 버튼 클릭 메뉴 항목을 사용하지 않으려면 스크립트를 사용할 수 있습니다.

#!/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이 스크립트는 선택한 파일이 파일이면 암호를 해독하고 선택한 파일이 다른 파일이면 암호화합니다.


노틸러스에서 복호화하려면 두 번 클릭하세요.

또한 다음 데스크탑 항목을 디렉토리에 추가하여 노틸러스가 .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

기본적으로 다른 응용 프로그램을 사용하지 않는 경우 노틸러스를 두 번 클릭하면 이제 파일의 암호가 해독됩니다. 기본 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.17 gpg에서 테스트되었습니다 ( check 를 사용할 수 있음 $ gpg --version).

답변2

sudo apt install seahorse-nautilus

그런 다음 다음 명령을 사용하여 노틸러스를 다시 시작하십시오. nautilus -q

그런 다음 파일을 마우스 오른쪽 버튼으로 클릭하고 선택하십시오.Encrypt

관련 정보