/ রান এবং / টিএমপি উভয়ই রাখার কোনও কারণ নেই
আমি মনে করি তুমি ঠিক. /tmp
এখন আমাদের কাছে মূলত অবহেলিত /run
। যদি আপনার প্রোগ্রামটি এমন অবস্থায় থাকে (যার জন্য এটি কোনও সুবিধাযুক্ত অপারেশন হিসাবে ইনস্টল করা দরকার ) তবে আজকাল আপনি একটি উপ ডিরেক্টরি ব্যবহার করবেন /run
। এই নিরাপত্তার কারণে হয়।
উদাহরণস্বরূপ CUPS মুদ্রণ ডিমন রুট হিসাবে চলবে না, তবে সাধারণত একটি ওএস প্যাকেজ থেকে ইনস্টল করা হয়। প্যাকেজ ইনস্টল করে /usr/lib/tmpfiles.d/cups.conf
এবং systemd-tmpfiles
এটি অ্যাক্সেস করতে পারে এমন একটি ডিরেক্টরি তৈরি করে। যেহেতু ডিরেক্টরিটি অধীন রয়েছে /run
, নামটি অনিচ্ছুক ব্যবহারকারী দ্বারা দূষিতভাবে দাবি করা যায় না, এর বিপরীতে /tmp
বিশ্ব-লিখনযোগ্য।
"অপ্রতিযুক্ত প্রোগ্রাম" যা /run
সরাসরি ব্যবহার করতে পারে না
আসল পার্থক্যটি হ'ল যদি আপনার প্রোগ্রামটি তাদের যেকোন আইডির অধীনে একটি স্বেচ্ছাসেবক অনিবদ্ধ ব্যবহারকারী দ্বারা চালিত হয়। তবে আপনি এখনও সাধারণত ব্যবহার করতে চান না /tmp
, কারণ এটি অন্যান্য অনিবদ্ধ ব্যবহারকারীদের দ্বারা অ্যাক্সেস করা যেতে পারে। আপনি ব্যবহার করতে পছন্দ করবেন $XDG_RUNTIME_DIR
। সাধারণত এটি হিসাবে প্রয়োগ করা হয় /run/user/$(id -u)
- সুতরাং এটি /run
পাশাপাশি একটি উপ-ডিরেক্টরি হিসাবে ঘটে । যদিও অবস্থানটির নিশ্চয়তা নেই; প্রোগ্রামগুলি সর্বদা পরিবেশ পরিবর্তনশীল ব্যবহার করা উচিত।
/tmp
কেবলমাত্র সিস্টেমে বিভিন্ন অনিবদ্ধ ব্যবহারকারীদের মধ্যে অ্যাড-হক সহযোগিতার জন্য কার্যকর হবে would এই জাতীয় অ্যাডহক সিস্টেমগুলি দূষিত ব্যবহারকারীর পক্ষে ঝুঁকির সাথে থাকে যা প্রত্যেকের জন্য কাজ করা এবং জিনিসগুলি ক্ষতিগ্রস্থ করতে অস্বীকার করে :)। এর একটি উদাহরণ হ'ল অনিবদ্ধ ব্যবহারকারীরা talk
ইউনিক্স সকেট ব্যবহার করে ডেমনটির একটি সংস্করণ চালানোর সিদ্ধান্ত নেন ।
লেনার্ট পোয়েটারিংয়ের আসল তথ্য
দ্রষ্টব্য, নীচে প্যাটারিং-এর চেকলিস্ট দাবি করেছে যে /tmp
"ছোট ফাইলগুলি" এর জন্য কার্যকর হবে, যেখানে /run
কেবল "যোগাযোগের আদিম" ব্যবহার করা উচিত। আমি মনে করি না এই পার্থক্যটিও সত্য। জন্য পোস্টার-ছেলে /run
হয় udev
, এবং আমি নিশ্চিত প্রশংসনীয় /run/udev
অভ্যন্তরীণ ডাটাবেস অন্তর্ভুক্ত করা হয়েছে। আপনার একবার /run
ডিরেক্টরি থাকলে, আমি মনে করি না যে কেউ দাবি করা তফাতটি অনুসরণ করতে পারে এবং বিশৃঙ্খলা করতে অন্য ডিরেক্টরি তৈরি করতে চায় /tmp
। তাই অনুশীলনে আমরা /run
আজকাল শুধু ব্যবহার করি ।
যোগাযোগের উদ্দেশ্যে বিশ্ব লিখনযোগ্য শেয়ারড নেমস্পেস [যেমন / টিএমপি] ব্যবহার সর্বদা সমস্যাযুক্ত হয়ে থাকে, কারণ যোগাযোগ স্থাপনের জন্য আপনার স্থির নাম প্রয়োজন, তবে স্থিতিশীল নামগুলি ডস আক্রমণের দরজা খুলে দেয়। প্রারম্ভিক বুটের সময় নির্দিষ্ট পরিষেবাগুলির জন্য সুরক্ষিত প্রতি অ্যাপ্লিকেশন ডিরেক্টরি স্থাপনের মাধ্যমে এটি আংশিকভাবে সংশোধন করা যায় (যেমন আমরা এক্স 11 এর জন্য করি) তবে এটি কেবলমাত্র আংশিকভাবে সমস্যার সমাধান করে, কারণ প্রতিটি প্যাকেজ ইনস্টলেশন পুনরায় বুট করার পরে এটি কেবল সঠিকভাবে কাজ করে।
...
ফেডোরার আরও একটি বৈশিষ্ট্য (ফেডোরার 17 এর জন্য) বিভিন্ন সিস্টেমের / tmp নেমস্পেসগুলি বিচ্ছিন্ন করে অনেকগুলি পরিষেবা পরিষেবাদিগুলিকে আরও সুরক্ষিত করার জন্য / tmp এর শব্দার্থক পরিবর্তন করেছে
...
কারণ / tmp আর অগত্যা একটি ভাগ করা নেমস্পেস নয় এটি সাধারণত যোগাযোগ আদিমদের জন্য অবস্থান হিসাবে অনুপযুক্ত।
...
[/ রান] টিএমপিএফএস হওয়ার গ্যারান্টিযুক্ত এবং তাই স্বয়ংক্রিয়ভাবে বুটে ফ্লাশ করা হয়। এর বাইরে কোনও স্বয়ংক্রিয় ক্লিন-আপ করা হয় না।
...
এখানে আমরা আপনাকে পরামর্শ দেওয়ার জন্য (একটি লিনাক্স অ্যাপ্লিকেশন বিকাশকারী) সঠিক ডিরেক্টরিটি বেছে নেওয়ার জন্য মোটামুটি গাইড এখানে রইল:
- আপনার সকেট (বা অন্যান্য যোগাযোগের আদিম) রাখার জন্য আপনার জায়গা প্রয়োজন এবং আপনার কোডটি সুবিধামতো রান করে: চালানো / রানের নীচে একটি উপ-ডিরেক্টরি ব্যবহার করুন। (বা অতিরিক্ত সামঞ্জস্যের নীচে / ভার / চালানো))
- আপনার সকেট (বা অন্যান্য যোগাযোগের আদিম) স্থাপনের জন্য আপনার একটি জায়গা দরকার এবং আপনার কোডটি অনিচ্ছাকৃতভাবে চালিত হয়: $ XDG_RUNTIME_DIR এর নীচে একটি উপ-ডিরেক্টরি ব্যবহার করুন।
- আপনার বৃহত্তর ডাউনলোডগুলি এবং ডাউনলোডগুলি অগ্রগতিতে চালিত করতে এবং অনিরাপদ চালাতে আপনার একটি স্থান প্রয়োজন: $ XDG_DOWNLOAD_DIR ব্যবহার করুন।
- আপনার ক্যাশে ফাইলগুলি রাখার জন্য একটি জায়গা দরকার যা অবিরাম থাকতে হবে এবং অনিবদ্ধভাবে চালানো উচিত: $ XDG_CACHE_Home ব্যবহার করুন।
- উপরের কিছুই প্রযোজ্য নয় এবং আপনার একটি ছোট ফাইল স্থাপন করা দরকার যা অবিচ্ছিন্নতার প্রয়োজন নেই: t টিএমপিডিআইআর / টিএমপি ফ্যালব্যাক সহ ব্যবহার করুন। এবং mkstemp (), এবং mkdtemp () এবং হোমগ্রাউন কিছুই ব্যবহার করুন।
- অন্যথায় / var / tmp এ ফ্যালব্যাক সহ $ TMPDIR ব্যবহার করুন। Mkstemp () / mkdtemp () ব্যবহার করুন।
নোট করুন যে উপরের এই বিধিগুলি কেবলমাত্র আমাদের দ্বারা প্রস্তাবিত। এই বিধিগুলি এই বিষয়টির বিষয়ে আমরা যা জানি তার সবকটি বিবেচনা করে এবং বর্তমান এবং ভবিষ্যতের বিতরণে সমস্যাগুলি এড়াতে পারে, যতদূর আমরা সেগুলি দেখতে পারি। এই নিয়মগুলি অনুসরণ করতে দয়া করে আপনার প্রকল্পগুলি আপডেট করার বিষয়ে বিবেচনা করুন এবং আপনি নতুন কোড লিখলে তা মনে রাখবেন।
একটা জিনিস আমরা চাপ দিতে চাই তা হ'ল / tmp এবং / var / tmp এর চেয়ে বেশিবার আসলে আপনার ব্যবহারের জন্য উপযুক্ত পছন্দ নয়। এই ডিরেক্টরিগুলির বৈধ ব্যবহার রয়েছে, তবে প্রায়শই অন্য ডিরেক্টরি সম্ভবত আরও ভাল জায়গা হতে পারে। সুতরাং, সাবধানতা অবলম্বন করুন, অন্যান্য বিকল্পগুলি বিবেচনা করুন, তবে আপনি যদি / tmp বা / var / tmp এ যান তবে কমপক্ষে নিশ্চিত করুন mkstemp () / mkdtemp () ব্যবহার করুন।
/tmp
উপরে বর্ণিত হিসাবে আমরা উইন্ডোজ সিস্টেম দ্বারা ব্যবহৃত লিগ্যাসি সকেটটি নিয়ে দূরে চলে যাই । আমি ভুল পড়া tmpfiles.d/x11.conf
। এটি দেখতে অনেকটা সহযোগিতার উপর নির্ভর করে বলে মনে হয় :)। আমি ধরে নিই কোডটি নিরীক্ষিত হয়েছে যেমন পরিষেবা অস্বীকার করা সবচেয়ে খারাপ যে ঘটতে পারে।