ไม่มีอะไรอย่างที่ฉันเห็น
ลินุกซ์หน้าคนยูนิกซ์ (7)กล่าวว่าสิทธิ์ของไดเรกทอรีที่มีซ็อกเก็ตที่ใช้ตามปกติ (เช่นคุณต้องการ+x
ใน/foo
การเชื่อมต่อกับ/foo/sock
และ+w
ใน/foo
การสร้าง/foo/sock
) และเขียนควบคุมได้รับอนุญาตการเชื่อมต่อกับซ็อกเก็ตของตัวเอง:
บน Linux การเชื่อมต่อกับวัตถุซ็อกเก็ตสตรีมต้องได้รับอนุญาตในการเขียนบนซ็อกเก็ตนั้น การส่งดาตาแกรมไปยังซ็อกเก็ตดาตาแกรมนั้นต้องได้รับอนุญาตในการเขียนบนซ็อกเก็ตนั้น
เห็นได้ชัดว่าระบบอื่น ๆ มีพฤติกรรมที่แตกต่าง:
POSIX ไม่ได้สร้างคำสั่งใด ๆ เกี่ยวกับผลกระทบของการอนุญาตในไฟล์ซ็อกเก็ตและในบางระบบ (เช่น BSD ที่เก่ากว่า) การอนุญาตซ็อกเก็ตจะถูกละเว้น โปรแกรมพกพาไม่ควรใช้คุณสมบัตินี้เพื่อความปลอดภัย
unix(4)
บน FreeBSDอธิบายข้อกำหนดที่คล้ายกัน หน้าลินุกซ์ไม่ได้บอกว่าการเข้าถึงซ็อกเก็ตในบางระบบจะเพิกเฉยต่อการอนุญาตของไดเรกทอรีด้วย
การถอด x
บิตออกจากซ็อกเก็ตดูเหมือนว่าจะมีผลต่อการให้ข้อผิดพลาดที่แตกต่างกันสำหรับการลองเรียกใช้ซ็อกเก็ต แต่นั่นไม่ได้แตกต่างกันมากนัก:
$ ls -l test.sock
srwxr-xr-x 1 user user 0 Jun 28 16:24 test.sock=
$ nc -U ./test.sock
Hello
$ ./test.sock
bash: ./test.sock: No such device or address
$ chmod a-x test.sock
$ nc -U ./test.sock
Hello
$ ./test.sock
bash: ./test.sock: Permission denied
(ฉันได้ทดสอบด้วยว่ามีเพียงw
บิตเท่านั้นที่ดูเหมือนว่าสำคัญสำหรับการเข้าถึงซ็อกเก็ตบน Debian's Linux 4.9.0)
บางทีซ็อกเก็ตที่คุณตั้งใจจะเอาบิตสิทธิ์ทั้งหมดออกจากผู้ใช้หรือคุณหมายถึงx
บิตในไดเรกทอรี