สิทธิ์ที่ถูกต้องสำหรับโฟลเดอร์ .gnupg คืออะไร gpg: คำเตือน: ไม่อนุญาตให้ปิดการอนุญาตไดเรกทอรีในไฟล์การกำหนดค่า


27

ฉันไม่ต้องการเพียงแค่ chmod และเรียกใช้จนกว่าฉันจะได้รับคำตอบที่ถูกต้องและไม่ต้องการเรียกใช้ GnuPG ในฐานะรูท การแก้ไขที่ง่ายคือการตั้งค่าไว้เพื่อให้ผู้ใช้ของฉันเท่านั้นที่สามารถอ่านได้ แต่ฉันไม่คิดว่าเป็นวิธีที่ดีที่สุด

ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันพยายามใช้ 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/สถานะปัจจุบันของ GnuPG :

% 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: -

คำตอบที่ลิงค์ต่อไปนี้จะแนะนำ 600 การอนุญาตสำหรับ~/gnupg/gpg.confไฟล์ แต่โฟลเดอร์ที่ล้อมรอบต้องการสิทธิ์เหล่านั้นด้วยหรือไม่

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

คำตอบ:


53

ใช่คุณจะต้องแก้ไขสิทธิ์ของไดเรกทอรีที่แนบมาด้วย ~/.gnupg

เนื่องจากผู้โจมตีที่มีสิทธิ์เพียงพอในโฟลเดอร์สามารถจัดการเนื้อหาของโฟลเดอร์ได้

ดำเนินการคำสั่งต่อไปนี้:

  1. ตรวจสอบให้แน่ใจว่าโฟลเดอร์ + เนื้อหาเป็นของคุณ:
    chown -R $(whoami) ~/.gnupg/

  2. แก้ไขสิทธิ์การเข้าถึงสำหรับ.gnupgและโฟลเดอร์ย่อย:
    find ~/.gnupg -type f -exec chmod 600 {} \;
    find ~/.gnupg -type d -exec chmod 700 {} \;

ชี้แจง600, 700:

ให้เริ่มจากด้านหลัง: '00' หมายถึงไม่มีสิทธิ์เลยสำหรับทุกคนที่ไม่ใช่เจ้าของไฟล์ / ไดเรกทอรี

ซึ่งหมายความว่ากระบวนการที่อ่าน (gnupg) เหล่านี้จะต้องทำงานในฐานะเจ้าของไฟล์ / ไดเรกทอรีเหล่านี้

~/.gnupg/เป็นโฟลเดอร์กระบวนการอ่านเนื้อหาจะต้องสามารถ "ป้อน" (= เรียกใช้) โฟลเดอร์นี้ นี่คือบิต "x" มันมีค่า "1"7 - 6 = 1

ทั้ง~/.gnupg/และ~/.gnupg/*คุณต้องการที่จะสามารถอ่านและเขียน4 + 2 = 6ได้

==> มีเพียงเจ้าของไฟล์เท่านั้นที่สามารถอ่าน / เขียนได้ในขณะนี้ (= 600) มีเพียงเขาเท่านั้นที่สามารถเข้าสู่ไดเรกทอรีได้เช่นกัน (= 700)

==> สิทธิ์ของไฟล์เหล่านี้ไม่จำเป็นต้องมีการบันทึกไว้ในเอกสาร แต่จะต้องมีสิทธิ์ในการใช้งาน

ข้อมูลเพิ่มเติมเกี่ยวกับสัญลักษณ์การอนุญาต: https://en.wikipedia.org/wiki/File_system_permissions#Notation_of_traditional_Unix_permissions


1
//, คุณรู้หรือไม่ว่าผู้สร้าง GnuPG บันทึกระดับการอนุญาตเฉพาะเหล่านี้หรือไม่? หากพวกเขาทำเอกสารพวกเขาฉันจะหาสิ่งนี้ได้จากที่ใด
Nathan Basanese

1
พวกเขาทำ! คุณโพสต์ข้อความแสดงข้อผิดพลาด;)
Alex Stragies

1
//, ใช่ แต่ข้อความผิดพลาดไม่ได้บอกว่าควรอนุญาตอะไร พวกเขาเผยแพร่ที่ใด?
Nathan Basanese

//, ขอขอบคุณสำหรับการเพิ่มคำอธิบายเพิ่มเติมสำหรับพวกเราที่ไม่คุ้นเคยกับรูปแบบการกำหนดหมายเลขการอนุญาต
Nathan Basanese

6

GnuPG โดยค่าเริ่มต้นบังคับใช้สิทธิ์การเข้าถึงที่ปลอดภัยซึ่งหมายความว่าไม่มีใคร (แต่คุณ) สามารถเข้าถึงโฮมไดเร็กตอรี่ GnuPG ของคุณ~/.gnupgได้ สิทธิ์การเข้าถึงเหล่านี้มักจะไม่เข้มงวดพอหลังจากการคัดลอกโฮมไดเรกทอรี GnuPG จากเครื่องอื่นและการเป็นเจ้าของที่ไม่ถูกต้องเป็นสาเหตุของข้อความดังกล่าว

# 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/*

หากคุณมี (ไม่ว่าจะด้วยเหตุผลใดก็ตาม) สร้างโฟลเดอร์ของคุณเองภายใน~/.gnupgคุณจะต้องใช้สิทธิ์ดำเนินการเพิ่มเติมกับโฟลเดอร์นั้นด้วย โฟลเดอร์ต้องมีสิทธิ์ดำเนินการเพื่อเปิด


4

แม้ว่า Jens Erat พูดถึงแล้วในประโยคสุดท้ายของเขาฉันคิดว่าควรเน้นว่าโฟลเดอร์ใด ๆ ใน ~ / .gnupg ต้องสามารถใช้งานได้ (โหมด 700) เช่นกัน สิ่งนี้เก็บไว้เป็นพิเศษสำหรับโฟลเดอร์ private-keys * ที่สร้างโดย gpg ฉันติดอยู่กับปัญหาการอนุญาตสักครู่ก่อนที่ฉันจะสังเกตเห็นสิ่งนี้


หา ~ / .gnupg -type d -exec chmod 700 {} \;
Craig Hicks

2

สองบรรทัดเหล่านี้จะตั้งค่าการอนุญาตแยกต่างหากและถูกต้องสำหรับไดเรกทอรีและไฟล์:

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

สมมติว่ามีการตั้งค่าความเป็นเจ้าของเรียบร้อยแล้ว

หมายเหตุ: มันไม่ได้S.gpg-agent*เปลี่ยนสิทธิ์บนซ็อกเก็ต (เฉพาะ gpg v2 ใหม่เท่านั้นที่เกี่ยวข้องกับซ็อกเก็ต gpg v1 เก่าไม่ได้)


1
ดูเหมือนว่าจะเป็นคำตอบของประสบการณ์
นาธาน Basanese
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.