XDG_RUNTIME_DIR के लिए अच्छा डिफ़ॉल्ट?


10

XDG बेस निर्देशिका विशिष्टता उपयोगकर्ता निर्देशिकाओं के लिए एक बहुत ही दिलचस्प कल्पना है। इसके अलावा, यह अच्छे डिफ़ॉल्ट मान भी प्रदान करता है XDG_RUNTIME_DIR

अब मैं एक सॉफ्टवेयर लिख रहा हूं जिसे नामांकित पाइप बनाने की आवश्यकता है। यह एक प्रति-उपयोगकर्ता क्लाइंट-सर्वर फ्रेमवर्क है (सर्वर के लिए एक फीफो और प्रति ग्राहक एक एफआईएफओ है)।

यदि XDG_RUNTIME_DIRपरिभाषित नहीं किया गया है, तो मैं वर्तमान में एक प्रति-उपयोगकर्ता उपनिर्देशिका का उपयोग कर रहा हूं /tmp- लेकिन यह सभी निर्दिष्ट शर्तों (अर्थात) के साथ शुरू होने वाले पैराग्राफ "निर्देशिका के जीवनकाल के लिए जरूरी नहीं है कि उपयोगकर्ता लॉग इन किया जाए ..." )

है /tmp/myserver-$USERकाफी अच्छा?

संपादित करें

मैंने कहीं और कुछ सुझाव देखे:

  • . काफी असंतोषजनक है (कम से कम क्योंकि यह एक पूर्ण मार्ग नहीं है)।
  • मैंने यह भी देखा /var/run/user/$USER- बुरा नहीं है, लेकिन वह निर्देशिका मौजूद नहीं है (कम से कम मेरे बॉक्स पर डेबियन परीक्षण चल रहा है )

जवाबों:


4

/tmpपहले से ही एक समान तरीके से बहुत सारे कार्यक्रमों द्वारा उपयोग किया जाता है। अपने सिस्टम पर मैं /tmp/orbit-$USERउनमें /tmp/.X11-unix/से बहुत सारे पाइप, एहम, सॉकेट के साथ ( गनोम के ORBit2 द्वारा प्रयुक्त) और (Xorg और X11) निर्देशिकाओं को देख सकता हूं। मुझे यकीन है कि अन्य लोग भी हैं, इसलिए मैं कुछ भी गलत नहीं देख रहा हूं कि आप क्या कर रहे हैं। बस तैयार रहें कि चूंकि यह एक विश्व लेखन योग्य स्थान है, एक दुर्भावनापूर्ण प्रक्रिया स्थान को हाईजैक कर सकती है (इसे लिखने से पहले अनुमतियों को सत्यापित करें)।

मैं $TMPDIRउन लोगों के लिए भी सिफारिश कर सकता हूं जो pam_mktemp का उपयोग करते हैं , क्योंकि यह निर्देशिका केवल उपयोगकर्ता द्वारा ही सुलभ है।


PAM सही समाधान है, धन्यवाद! डेबियन पर इसे libpam-tmpdir कहा जाता है
कैडरियन

5

SystemD /run/user/$USERथोड़े अनिवार्य बनाता है ।

http://www.freedesktop.org/software/systemd/man/file-hierarchy.html

बिना लिखा-पढ़ी पहुँच

अनपेक्षित प्रक्रियाओं में आमतौर पर पदानुक्रम के अधिकांश लोगों तक पहुंच की कमी होती है।

सामान्य उपयोगकर्ताओं के लिए अपवाद हैं /tmp, /var/tmp, /dev/shm, साथ ही घर निर्देशिका के रूप में $HOME(आमतौर पर नीचे पाया /home) और रनटाइम निर्देशिका $XDG_RUNTIME_DIR(नीचे पाया /run/user) उपयोगकर्ता है, जो सभी लिखने योग्य हैं।

केवल अनपेक्षित सिस्टम प्रक्रियाओं के लिए /tmp, /var/tmpऔर /dev/shmलेखन योग्य हैं। यदि एक अनप्रोविलेज सिस्टम प्रक्रिया को निजी, योग्य निर्देशिका की आवश्यकता होती है /varया /run, उसे डेमॉन कोड में विशेषाधिकारों को छोड़ने से पहले इसे बनाने की सिफारिश की जाती है, तो इसे बूट के दौरान tmpfiles.d (5) अंशों के माध्यम से या RuntimeDirectory= सेवा इकाइयों के निर्देशन के माध्यम से बनाया जाता है। (विवरण के लिए systemd.unit (5) देखें)।


2

अद्वितीय आईडी के साथ निर्देशिका /tmp/service-$USER.id बनाएँ। खोल के लिए, खोल में:

mktemp -d /tmp/service-"$USER".XXX

1
आप यह सुनिश्चित कैसे कर सकते हैं कि उसी निर्देशिका का उपयोग उपयोगकर्ता के पहले लॉगिन से अंतिम लॉगआउट तक किया जाए?
कैडरियन

हम्म्म ... सिमिलिंक ~ यूजर / .service / tmp_dir बनाएं। यदि लिंक की गई निर्देशिका मौजूद नहीं है, तो
सेलिवानोव पावेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.