ตำแหน่งที่เป็นสำนวนสำหรับซ็อกเก็ตฐานไฟล์บนระบบ Debian


13

ผมเขียนกระบวนการภูตสำหรับระบบ Debian ในCที่ใช้โดเมนซ็อกเก็ตยูนิกซ์

หากไดเร็กทอรีการทำงานของกระบวนการ daemon เป็นไดเร็กทอรีรูทจะมีไดเร็กทอรีที่เป็นเอกลักษณ์เพื่อวางซ็อกเก็ตบนระบบไฟล์หรือไม่?


ทำไมคุณไม่ปล่อยให้มันสามารถกำหนดค่าได้
BatchyX

3
@BatchyX เอาล่ะค่าเริ่มต้น (แทนที่จะบังคับให้ผู้ดูแลระบบทุกคนตัดสินใจด้วยตัวเอง) อาจจะดี :)
CVn

คำตอบ:


17

พวกเขามักจะพบใน/tmpหรือไดเรกทอรีย่อยของมัน โปรดทราบว่าทุกสิ่งที่/tmpอยู่ภายใต้การลบเมื่อปิดเครื่อง - ไม่ใช่ว่าจำเป็นจะถูกลบเพียงแค่ระวังว่ามันอาจเป็นไปได้ดังนั้นหากคุณใช้ให้ตรวจสอบว่าคุณต้องสร้างไดเรกทอรีย่อยของคุณทุกครั้งหรือไม่ คุณจะต้องการใช้ไดเรกทอรีย่อยหากคุณต้องการ จำกัด การเข้าถึงผ่านการอนุญาตเนื่องจาก/tmpโลกสามารถอ่านได้

/runและ/var/run(ซึ่งอาจเชื่อมโยงกัน) ถูกนำมาใช้ในลักษณะเดียวกัน แต่โดยทั่วไปแล้วจะถูกติดตั้งเป็นระบบไฟล์ tmpfs - หมายถึงพวกมันถูกสร้างขึ้นตอนบู๊ตและอยู่ในหน่วยความจำไม่ใช่ในดิสก์ (ดังนั้นอย่าใช้มันเป็นสถานที่ถ่ายโอนข้อมูล ข้อมูลปริมาณมหาศาล) สำหรับซ็อกเก็ตรันไทม์อาจเป็นตัวเลือกที่ดี

โปรดทราบว่า/runและไดเรกทอรีอื่น ๆ ทั้งหมดที่กล่าวถึงที่นี่ยกเว้น /tmpจะเขียนได้โดย root เท่านั้น สำหรับกระบวนการของระบบนี่เป็นสิ่งที่ดี แต่ถ้าแอปพลิเคชันอาจถูกเรียกใช้โดยผู้ใช้ที่ไม่มีสิทธิพิเศษคุณต้องการใช้/tmpหรือสร้างไดเรกทอรีถาวรที่ไหนสักแห่งและตั้งค่าการอนุญาตบนนั้นหรือใช้ตำแหน่งใน $ HOME ของผู้ใช้

เป็นไปได้ที่จะสร้างไดเรกทอรีใน/usr/share(หรือ/usr/local/share) ระหว่างการติดตั้ง ไดเรกทอรีและเนื้อหามีไม่อาจเก็บเกี่ยวทั่วรองเท้าที่พวกเขาจะอยู่ในหรือ/tmp /runแต่เป็นjordanmคะแนนจากในความคิดเห็นที่/usrอาจจะมีการติดตั้งอ่านอย่างเดียวและลินุกซ์ระบบแฟ้มลำดับชั้นแนวทางสะท้อนถึงนี้ แน่นอนว่ามันไม่สามารถอ่านได้อย่างเดียวเมื่อติดตั้งแอปพลิเคชันของคุณดังนั้นหากคุณสะดวกสบายในการสร้างซ็อกเก็ตที่นั่นคุณสามารถทิ้งไว้และใช้งานได้ในภายหลัง (คุณจะยังคงสามารถเขียนลงในซ็อกเก็ตได้ ไฟล์เป็นแบบอ่านอย่างเดียว)

หากคุณต้องการอยู่ที่ไหนสักแห่งในรองเท้าบู๊ตที่ไม่ได้ติดตั้งแบบอ่านอย่างเดียว/etcเป็นเดิมพันที่ค่อนข้างปลอดภัยเนื่องจากมักใช้สำหรับการกำหนดค่าทั้งระบบและการกำหนดค่าใหม่ OTOH เป็นไปได้ที่จะมีระบบที่อุปกรณ์ที่รองรับระบบไฟล์รูททั้งหมดเป็นแบบอ่านอย่างเดียว (เช่นระบบฝังตัว) ด้วย / tmp และ / ทำงานบนอุปกรณ์อื่น (อาจเป็น: tmpfs ในหน่วยความจำ) ดังนั้นทั้งสองกลยุทธ์ที่แข็งแกร่งที่สุดน่าจะเป็น:

  • ติดตั้งซ็อกเก็ตไปยังตำแหน่งถาวรเมื่อติดตั้งแอปพลิเคชัน

  • สร้างไดเรกทอรีใน/runหรือ/var/runที่รันไทม์และวางซ็อกเก็ตที่นั่น

  • ทำสิ่งเดียวกันเพียง /tmpแต่ใน

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

ในที่สุดเมื่อBatchyX ปรากฏตัวขึ้นอย่างน้อยคุณควรเสนอตัวเลือกการกำหนดค่าสำหรับสิ่งนี้และเลือกตัวเลือกการตั้งค่าเริ่มต้น


2
/runหรือ/var/runมักจะใช้สำหรับกระบวนการรูท
BatchyX

ขวา. เหล่านี้คือ tmp /tmpมากยิ่งขึ้นกว่า ฉันจะแก้ไขสิ่งต่อไปนี้
goldilocks

/usrสามารถติดตั้งแบบอ่านได้อย่างเดียว ไม่ควรสร้างไฟล์ที่นั่นขณะใช้งานจริง ข้อเสนอแนะอื่น ๆ เป็นสิ่งที่ดี
จอร์แดน

1
ขอบคุณทุกท่านสำหรับการเข้าร่วมการสนทนาของคุณมีข้อมูลมาก ฉันตัดสินใจที่จะสร้างตำแหน่งเริ่มต้น/tmp/.APPNAME/.APPSOCKเพราะ daemon ไม่ต้องการข้อมูลถาวร
recursion.ninja

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