Apa izin yang benar untuk folder terlampir .gnupg? gpg: PERINGATAN: izin direktori terlampir yang tidak aman pada file konfigurasi

26

Saya tidak ingin hanya chmod dan lari sampai saya mendapatkan jawaban yang benar, saya juga tidak ingin menjalankan GnuPG sebagai root. Cara mudahnya adalah dengan mengaturnya sehingga hanya pengguna saya yang bisa membacanya, tapi saya rasa itu bukan cara terbaik.

Saya mendapatkan kesalahan berikut ketika saya mencoba menggunakan gpg:

gpg: WARNING: unsafe enclosing directory permissions on configuration file `/home/nb/.gnupg/gpg.conf'
gpg: external program calls are disabled due to unsafe options file permissions
gpg: keyserver communications error: general error
gpg: keyserver receive failed: general error

~/.gnupg/Status GnuPG saat ini:

% stat .gnupg 
  File: ‘.gnupg’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 1bh/27d Inode: 20578751    Links: 3
Access: (0775/drwxrwxr-x)  Uid: ( 1000/      nb)   Gid: ( 1000/      XXXX)
Access: 2015-08-09 18:14:45.937760752 -0700
Modify: 2015-08-05 20:54:32.860883569 -0700
Change: 2015-08-05 20:54:32.860883569 -0700
 Birth: -

Jawaban di tautan berikut ini menyarankan 600 izin untuk ~/gnupg/gpg.conffile tersebut, tetapi apakah folder yang dilampirkan juga memerlukan izin itu?

/ubuntu/330755/unsafe-permissions-on-configuration-file-home-david-gnupg-gpg-conf-what-doe

Nathan Basanese
sumber

Jawaban:

52

Ya, Anda juga harus memperbaiki izin direktori terlampir ~/.gnupg

Karena penyerang dengan hak yang cukup pada folder dapat memanipulasi konten folder.

Jalankan perintah berikut:

  1. Pastikan, folder + konten milik Anda:
    chown -R $(whoami) ~/.gnupg/

  2. Hak akses .gnupgdan subfolder yang benar:
    find ~/.gnupg -type f -exec chmod 600 {} \;
    find ~/.gnupg -type d -exec chmod 700 {} \;

Penjelasan untuk 600, 700:

Mari kita mulai dari belakang: '00' berarti TANPA hak sama sekali untuk semua orang yang bukan pemilik file / direktori.

Itu berarti, bahwa proses membaca ini (gnupg) harus dijalankan sebagai pemilik file / direktori ini.

~/.gnupg/adalah folder, proses membaca konten harus dapat "masuk" (= mengeksekusi) folder ini. Ini adalah Bit "x". Ini memiliki nilai "1".7 - 6 = 1

Keduanya ~/.gnupg/dan ~/.gnupg/*Anda ingin dapat membaca dan menulis, itu 4 + 2 = 6.

==> Hanya pemilik file yang dapat membaca / menulisnya sekarang (= 600). Hanya dia yang bisa masuk ke direktori juga (= 700)

==> Hak file ini tidak "perlu" didokumentasikan, mereka dapat diturunkan dari penggunaan yang dimaksudkan.

Info lebih lanjut tentang notasi izin: https://en.wikipedia.org/wiki/File_system_permissions#Notation_of_traditional_Unix_permissions

Alex Stragies
sumber
1
//, Apakah Anda tahu jika pembuat GnuPG mendokumentasikan tingkat izin khusus ini? Jika mereka mendokumentasikannya, di mana saya bisa menemukan ini?
Nathan Basanese
1
Mereka melakukannya! Anda memposting pesan kesalahan;)
Alex Stragies
1
//, Ya, tapi pesan kesalahannya tidak mengatakan seperti apa izinnya. Apakah mereka mempublikasikannya di mana saja?
Nathan Basanese
//, Juga, terima kasih telah menambahkan lebih banyak penjelasan bagi kita yang tidak terbiasa dengan skema penomoran izin.
Nathan Basanese
6

GnuPG secara default memberlakukan hak akses aman, yang berarti tidak ada orang lain (tetapi Anda) yang dapat mengakses direktori home GnuPG Anda ~/.gnupg. Hak akses ini seringkali tidak cukup ketat setelah menyalin direktori home GnuPG dari komputer lain, dan sangat sering kepemilikan yang salah adalah alasan dari pesan tersebut.

# Set ownership to your own user and primary group
chown -R "$USER:$(id -gn)" ~/.gnupg
# Set permissions to read, write, execute for only yourself, no others
chmod 700 ~/.gnupg
# Set permissions to read, write for only yourself, no others
chmod 600 ~/.gnupg/*

Jika Anda telah (karena alasan apa pun) membuat folder sendiri di dalamnya ~/.gnupg, Anda juga harus menerapkan izin eksekusi ke folder itu. Folder membutuhkan hak eksekusi untuk dibuka.

Jens Erat
sumber
4

Meskipun Jens Erat sudah menyebutkannya dalam kalimat terakhirnya, saya pikir harus ditekankan bahwa folder di dalam ~ / .gnupg harus dapat dieksekusi (mode 700) juga. Ini berlaku terutama untuk folder private-keys * yang dibuat oleh gpg sendiri. Saya terjebak dengan masalah izin untuk sementara waktu sebelum saya melihat ini.

tc88
sumber
temukan ~ / .gnupg -type d -exec chmod 700 {} \;
Craig Hicks
2

Dua baris ini akan mengatur izin secara terpisah dan benar untuk direktori dan file:

find ~/.gnupg -type d -exec chmod 700 {} \;
find ~/.gnupg -type f -exec chmod 600 {} \;

dengan asumsi kepemilikan sudah diatur dengan benar.

Perhatikan itu tidak mengubah izin pada soket S.gpg-agent*. (Hanya gpg v2 baru yang melibatkan soket, gpg v1 lama tidak).

Craig Hicks
sumber
1
Sepertinya jawaban itu berasal dari pengalaman.
Nathan Basanese