আমার অ্যাপ্লিকেশনটি যদি প্রথম থেকেই নিম্ন স্তরে চলতে পারে তবে আমি কেন সুরক্ষার জন্য স্যান্ডবক্সিংয়ের জন্য ক্রট করব?


14

আমি সিটিতে একটি এইচটিটিপি সার্ভার ডেমন লিখছি (এর কারণ রয়েছে), এটি সিস্টেমড ইউনিট ফাইল দিয়ে পরিচালনা করছে।

আমি ২০ বছর আগে ১৯৯৫ সালের দিকে ডিজাইন করা একটি অ্যাপ্লিকেশন পুনরায় লিখছি And এবং তারা যে সিস্টেমটি ব্যবহার করেন তা হ'ল তারা ক্রুট এবং তারপরে সেটআপ এবং মানক পদ্ধতি।

আমার আগের কাজটিতে, নীতিমালাটি হ'ল আপনি কখনই কোনও প্রক্রিয়া রুট হিসাবে চালাবেন না। আপনি এর জন্য একটি ব্যবহারকারী / গোষ্ঠী তৈরি করেন এবং সেখান থেকে চালান। অবশ্যই, সিস্টেমটি রুট হিসাবে কিছু জিনিস চালায়, তবে আমরা রুট না হয়ে সমস্ত ব্যবসায়িক লজিক প্রসেসিং অর্জন করতে পারি।

এখন এইচটিটিপি ডিমনটির জন্য, আমি যদি অ্যাপ্লিকেশনটির ভিতরে ক্রোট না করি তবে আমি এটি রুট ছাড়াই চালাতে পারি। তাহলে অ্যাপ্লিকেশনটির পক্ষে কখনই রুট হিসাবে চালানো আরও নিরাপদ নয়?

প্রথম থেকেই এটি মাইডেমন-ব্যবহারকারী হিসাবে চালানো আরও সুরক্ষিত নয়? এটি রুট দিয়ে শুরু করার পরিবর্তে, ক্রুটিং, তারপরে মাইডেমন-ব্যবহারকারীকে সেট করুন?


3
80 বা 443 পোর্টটি ব্যবহার করতে আপনাকে রুট হিসাবে চালানো দরকার otherwise অন্যথায়, আপনি টমক্যাট এবং অন্যান্য ওয়েব অ্যাপ্লিকেশন / ওয়েব-সার্ভার সফ্টওয়্যার যা করতে পারেন এবং একটি উচ্চতর বন্দরে চালিত করতে পারেন (বলুন, 8080, 9090, ইত্যাদি) এবং তারপরেও ব্যবহার করুন আপনার ওয়েব সার্ভার সফ্টওয়্যারটিতে সংযোগের প্রক্সি দেওয়ার জন্য অ্যাপাচি / এনগিনেক্স, বা সিস্টেমের ফায়ারওয়ালটি NAT এ ব্যবহার করুন / ট্রাফিকটি আপনার ওয়েবসার্ভারে 80 থেকে পোর্টে ফরোয়ার্ড করুন you তারপরে আপনার গোড়াতে বা অন্যথায় রুট হিসাবে চালানোর দরকার নেই।
স্নেকডোক

3
লিনাক্সে স্নাকডোক আর সত্য নয় true ধন্যবাদ capabilities(7)
0xC0000022L

@SnakeDoc আপনি ব্যবহার করতে পারেন authbind পাশাপাশি
আব্দুল আহাদ

উত্তর:


27

মনে হয় অন্যরা আপনার বক্তব্য মিস করেছে, পরিবর্তিত শিকড়গুলি ব্যবহার করার কারণ নয়, যা আপনি অবশ্যই স্পষ্টভাবে জানেন, বা ডেমনের সীমাবদ্ধতা রাখার জন্য আপনি অন্য কী কী করতে পারেন, যখন আপনি স্পষ্টভাবে জানেন যে এর বামনাদির অধীনে চলার বিষয়ে অনিবদ্ধ ব্যবহারকারী অ্যাকাউন্টসমূহ; তবে কেন অ্যাপ্লিকেশনটির ভিতরে এই জিনিসগুলি করতে হয় । আসলে এখানে কেন মোটামুটি একটি পয়েন্ট উদাহরণ আছে।

httpdড্যানিয়েল জে। বার্নস্টেইনের পাবলিক ফাইলে প্যাকেজে ড্যামন প্রোগ্রামের নকশাটি বিবেচনা করুন । প্রথমটি যা এটি করে তা হ'ল মূল নির্দেশিকাতে রুট পরিবর্তন করা হয় যা এটি একটি কমান্ড আর্গুমেন্টের সাহায্যে ব্যবহার করতে বলা হয়েছিল, তারপরে দুটি এনভায়রনমেন্ট ভেরিয়েবলগুলিতে পাস করা অবাঞ্ছিত ব্যবহারকারী আইডি এবং গ্রুপ আইডির জন্য বিশেষাধিকারগুলি ফেলে দিন।

ড্যামন ম্যানেজমেন্ট টুলসেটগুলির কাছে রুট ডিরেক্টরি পরিবর্তন করা এবং অনিবদ্ধ ব্যবহারকারী এবং গোষ্ঠী আইডিতে নেমে যাওয়ার মতো জিনিসগুলির জন্য নিবেদিত সরঞ্জাম রয়েছে। জেরিট পেপের রানিট আছে chpst। আমার নশ টুলসেটে আছে chrootএবং setuidgid-fromenv। লরেন্ট বেরকোট এর এস-এ রয়েছে s6-chrootএবং s6-setuidgid। ওয়েইন মার্শালের পার্প আছে runtoolএবং আছে runuid। এবং তাই এগিয়ে। প্রকৃতপক্ষে, তাদের সবার setuidgidপূর্ববর্তী হিসাবে এম বার্নস্টেইনের নিজস্ব ডেমোনটুলস টুলসেট রয়েছে ।

কেউ ভাববেন যে httpdএইরকম উত্সর্গীকৃত সরঞ্জামগুলি থেকে কেউ কার্যকারিতা বের করতে এবং ব্যবহার করতে পারে । তারপরে, আপনি যেমনটি কল্পনা করছেন, সার্ভার প্রোগ্রামের কোনও অংশই কখনও সুপারসর সুবিধার সাথে চলে না runs

সমস্যাটি হ'ল প্রত্যক্ষ পরিণতি হিসাবে পরিবর্তিত রুটটি সেট আপ করার জন্য উল্লেখযোগ্যভাবে আরও কাজ করতে হবে এবং এটি নতুন সমস্যাগুলি প্রকাশ করে।

বার্নস্টেইন httpdযেমন দাঁড়িয়ে আছে, কেবলমাত্র ডিরেক্টরি ও ডিরেক্টরি ডিরেক্টরিতে থাকা ফাইল এবং ডিরেক্টরিগুলি পৃথিবীতে প্রকাশিত হবে। নেই কিছুই অন্য সব গাছের। তদুপরি, গাছটিতে কোনও এক্সিকিউটেবল প্রোগ্রাম চিত্র ফাইল থাকার কোনও কারণ নেই।

কিন্তু একটি চেইন-লোড প্রোগ্রাম (বা systemd হল) মধ্যে রুট ডিরেক্টরি পরিবর্তন আউট সরানো, এবং জন্য হঠাৎ প্রোগ্রাম ইমেজ ফাইল httpd, কোনো শেয়ার করা লাইব্রেরির এটা যে লোড, এবং কোনো বিশেষ ফাইল /etc, /runএবং /devপ্রোগ্রাম লোডার বা C লাইব্রেরি অ্যাক্সেস রানটাইম যে প্রোগ্রাম আরম্ভের (যা আপনি বেশ বিস্মিত পেতে পারে যদি আপনি সময় truss/ straceএকটি C অথবা সি ++ প্রোগ্রাম), এছাড়াও পরিবর্তিত রুট উপস্থিত হতে হবে। অন্যথায় httpdশৃঙ্খলিত করা যায় না এবং লোড / চালানো হবে না।

মনে রাখবেন এটি একটি এইচটিটিপি (এস) সামগ্রীর সার্ভার। এটি সম্ভবত পরিবর্তিত রুটে কোনও (বিশ্ব-পঠনযোগ্য) ফাইল পরিবেশন করতে পারে। এটিতে এখন আপনার ভাগ করা লাইব্রেরি, আপনার প্রোগ্রাম লোডার এবং আপনার অপারেটিং সিস্টেমের জন্য বিভিন্ন লোডার / সিআরটিএল কনফিগারেশন ফাইলের অনুলিপিগুলি অন্তর্ভুক্ত রয়েছে। এবং কিছু (আপতিক) দ্বারা যদি মানে বিষয়বস্তু সার্ভার অ্যাক্সেস আছে লেখার উপাদান, কোনো আপোস করা সার্ভার সম্ভবত জন্য প্রোগ্রাম ইমেজ লেখার অ্যাক্সেস লাভ করতে পারেন httpdনিজেই, বা এমনকি আপনার সিস্টেমের প্রোগ্রাম লোডার। (মনে রাখবেন আপনি এখন দুটি সমান্তরাল সেট আছে /usr, /lib, /etc, /run, এবং /devডিরেক্টরি সুরক্ষিত রাখতে।)

এর মধ্যে কোনওটিই httpdরুট পরিবর্তন করে না এবং নিজেই সুবিধাগুলি বাদ দেয়।

সুতরাং আপনি অল্প পরিমাণে সুবিধামত কোডযুক্ত কেনাবেচা করেছেন, এটি নিরীক্ষণ করা মোটামুটি সহজ এবং এটি httpdপ্রোগ্রামের শুরুতে অতিপরিচ্ছন্ন সুযোগ-সুবিধাগুলি দিয়ে চলছে; পরিবর্তিত রুটের মধ্যে থাকা ফাইল এবং ডিরেক্টরিগুলির বিস্তৃত আক্রমণ পৃষ্ঠের জন্য।

এজন্য পরিষেবা প্রোগ্রামে বাহ্যিকভাবে সবকিছু করার মতো সহজ নয়।

লক্ষ্য করুন যে এটি তবুও httpdনিজের মধ্যে কার্যক্ষমতার একদম ন্যূনতম । কোড যে এই ধরনের ইউজার আইডি এবং গ্রুপ আইডি প্রথম স্থানে ঐ এনভায়রনমেন্ট ভেরিয়েবল পুরা জন্য অপারেটিং সিস্টেম এর অ্যাকাউন্টে ডাটাবেসের মধ্যে চেহারা যেমন জিনিস আছে সব হয় বাহ্যিক httpdযেমন সহজ স্বতন্ত্র মূল্যায়নযোগ্য আদেশগুলিতে প্রোগ্রাম, envuidgid। (এবং অবশ্যই এটি একটি UCSPI টুল তাই এটি কোড কেউই প্রাসঙ্গিক TCP পোর্ট (গুলি) বা সংযোগ গ্রহণ করতে শোনার জন্য রয়েছে, যেমন কমান্ড ডোমেইনের হচ্ছে সেই tcpserver, tcp-socket-listen, tcp-socket-accept, s6-tcpserver4-socketbinder, s6-tcpserver4d, ইত্যাদি।)

আরও পড়া


চার্জ হিসাবে +1, দোষী আমি শিরোনাম এবং শেষ অনুচ্ছেদটি অস্পষ্ট দেখতে পেয়েছি এবং আপনি যদি সঠিক হন তবে আমি বিষয়টিটি মিস করেছি missed এই উত্তর একটি খুব ব্যবহারিক ব্যাখ্যা দেয়। ব্যক্তিগতভাবে আমি স্পষ্টভাবে নোট করব যে এইভাবে ক্রুট পরিবেশ তৈরি করা একটি অতিরিক্ত প্রচেষ্টা, যা বেশিরভাগ লোক এড়াতে চায়। তবে এখানে 2 টি সুরক্ষা পয়েন্ট ইতিমধ্যে ভাল তৈরি হয়েছে।
সোর্সজেদি

আরেকটি বিষয় মনে রাখবেন যে সার্ভার যদি কোনও নেটওয়ার্ক ট্র্যাফিক প্রক্রিয়াকরণের আগে এটি সুবিধাগুলি বাদ দেয় তবে সুবিধামত কোডটি কোনও দূরবর্তী শোষণের মুখোমুখি হয় না।
ক্যাস্পারড

5

আমি মনে করি আপনার প্রশ্নের অনেকগুলি বিবরণ একইভাবে প্রয়োগ করতে পারে avahi-daemon, যা আমি সম্প্রতি দেখেছি। (আমি অন্য একটি বিশদটি মিস করতে পারি যা তার চেয়ে আলাদা)। ক্রুটে অ্যাভিহি-ডেমন চালানোর অনেক সুবিধা রয়েছে, যদি আভি-ডিমন আপোস হয়। এর মধ্যে রয়েছে:

  1. এটি কোনও ব্যবহারকারীর হোম ডিরেক্টরি পড়তে এবং ব্যক্তিগত তথ্যকে বিশদকরণ করতে পারে না।
  2. এটি / টিএমপি তে লিখিতভাবে অন্যান্য প্রোগ্রামগুলিতে বাগগুলি ব্যবহার করতে পারে না। এই জাতীয় বাগগুলির কমপক্ষে একটি সম্পূর্ণ বিভাগ রয়েছে। উদাহরণস্বরূপ https://www.google.co.uk/search?q=tmp+race+security+bug
  3. এটি ক্রোটের বাইরে থাকা কোনও ইউনিক্স সকেট ফাইল খুলতে পারে না, যা অন্যান্য ডিমনরা ম্যাসেজগুলি শুনে ও পড়তে পারে।

পয়েন্ট 3 বিশেষত দুর্দান্ত হতে পারে যখন আপনি ডিবিস বা অনুরূপ ব্যবহার করেন না ... আমার মনে হয় অবাহি-ডেমন ডিবিস ব্যবহার করে, তাই এটি ক্রোটের অভ্যন্তর থেকে এমনকি সিস্টেম ডিবিতে অ্যাক্সেস রাখা নিশ্চিত করে। আপনার যদি সিস্টেম ডিবিএসে বার্তা প্রেরণের দক্ষতার প্রয়োজন না হয় তবে সেই ক্ষমতাটিকে অস্বীকার করা খুব সুন্দর সুরক্ষা বৈশিষ্ট্য হতে পারে।

সিস্টেমড ইউনিট ফাইল সহ এটি পরিচালনা করা

মনে রাখবেন যে যদি অহি-ডেমন পুনরায় লিখিত হয়, তবে এটি সম্ভবত সুরক্ষার জন্য সিস্টেমডের উপর নির্ভর করতে পারে এবং উদাহরণস্বরূপ ব্যবহার করতে পারে ProtectHome। ক্রোট দ্বারা গ্যারান্টিযুক্ত কিছু অতিরিক্ত সুরক্ষার পাশাপাশি এই সুরক্ষাগুলিকে অতিরিক্ত স্তর হিসাবে যুক্ত করার জন্য আমি অহি-ডেমনকে পরিবর্তনের প্রস্তাব দিয়েছিলাম। আমি এখানে প্রস্তাবিত বিকল্পগুলির সম্পূর্ণ তালিকা দেখতে পাবেন:

https://github.com/lathiat/avahi/pull/181/commits/67a7b10049c58d6afeebdc64ffd2023c5a93d49a

দেখে মনে হচ্ছে এমন আরও বিধিনিষেধ রয়েছে যা আমি যদি অহি-ডেমন নিজেই ক্রুট ব্যবহার না করতাম তবে এর কিছু প্রতিশ্রুতিবদ্ধ বার্তায় উল্লেখ করা হয়েছে। আমি নিশ্চিত না যদিও এটি কতটা প্রযোজ্য।

দ্রষ্টব্য, আমি যে সুরক্ষা ব্যবহার করেছি তাতে ইউমন সকেট ফাইল (উপরের পয়েন্ট 3) খোলার থেকে ডেমনকে সীমাবদ্ধ করা হত না।

আর একটি পদ্ধতি হ'ল SELinux ব্যবহার করা। তবে আপনি এই ধরনের লিনাক্স ডিস্ট্রিবিউশনগুলির উপ-সেটটিতে আপনার অ্যাপ্লিকেশনটি বেঁধে রাখবেন। আমি এখানে সেলইনাক্সকে ইতিবাচকভাবে চিন্তা করার কারণটি হ'ল যে সেলইনাক্স প্রসেস প্রসেসটি ডিবাসে সীমাবদ্ধভাবে অ্যাক্সেসকে সীমাবদ্ধ করে। উদাহরণস্বরূপ, আমি মনে করি আপনি প্রায়শই এটি আশা করতে পারেন যে systemd: বাসের নামগুলির তালিকায় থাকবে না যা আপনাকে :-) এ বার্তা পাঠাতে সক্ষম হতে হবে।

"আমি ভাবছিলাম, সিস্টেমেড স্যান্ডবক্সিং যদি ক্রুট / সেটুইড / উমাস্ক / ... এর চেয়ে আরও সুরক্ষিত ব্যবহার করা হয়!"

সংক্ষিপ্তসার: কেন উভয়? আসুন উপরেরটি কিছুটা ডিকোড করুন :-)।

আপনি যদি পয়েন্ট 3 সম্পর্কে চিন্তা করেন, ক্রুট ব্যবহার করা আরও আবদ্ধ করে। প্রোটেক্টহোম = এবং এর বন্ধুরা এমনকি ক্রুটের মতো সীমাবদ্ধ হওয়ার চেষ্টা করে না। (উদাহরণস্বরূপ, নামযুক্ত সিস্টেমড বিকল্পগুলির কোনওটিই কালো তালিকাভুক্ত নয় /run, যেখানে আমরা ইউনিক্স সকেট ফাইল রাখি)

chroot অনুষ্ঠান ফাইলসিস্টেম অ্যাক্সেস সীমাবদ্ধ একটি খুব শক্তিশালী, কিন্তু হতে পারে না সবকিছু লিনাক্স একটি ফাইল :-)। সিস্টেমযুক্ত বিকল্প রয়েছে যা অন্যান্য জিনিসগুলিকে সীমাবদ্ধ করতে পারে, এটি ফাইল নয়। প্রোগ্রামটি আপোস করা থাকলে এটি কার্যকর, আপনি এটিতে উপলব্ধ কার্নেল বৈশিষ্ট্যগুলি হ্রাস করতে পারেন, এটি এটি কোনও দুর্বলতা কাজে লাগানোর চেষ্টা করতে পারে For উদাহরণস্বরূপ, অহহি-ডিমন ব্লুটুথ সকেটের প্রয়োজন নেই এবং আমি অনুমান করি যে আপনার ওয়েব সার্ভারটি নাও হয় :-)। সুতরাং এটি AF_BLUETOOTH ঠিকানা পরিবারকে অ্যাক্সেস দেবেন না। RestrictAddressFamilies=অপশনটি ব্যবহার করে কেবল এএএনপিএনইটি, এএফপিইটি 6, এবং সম্ভবত এএফ_উনআইএক্স ।

আপনি ব্যবহার প্রতিটি বিকল্পের জন্য দস্তাবেজ পড়ুন। কিছু বিকল্প অন্যের সাথে সংমিশ্রণে আরও কার্যকর হয় এবং কিছু সিপিইউ আর্কিটেকচারে উপলব্ধ হয় না। (সিপিইউ খারাপ হওয়ার কারণে নয়, তবে সেই সিপিইউর জন্য লিনাক্স পোর্টটি এত সুন্দরভাবে ডিজাইন করা হয়নি বলে আমি মনে করি)।

(এখানে একটি সাধারণ নীতি আছে It's আপনি কী অনুমতি দিতে চান তার তালিকা লিখতে পারলে এটি আরও সুরক্ষিত থাকে secure ক্রুট সংজ্ঞায়নের মতো আপনাকে অ্যাক্সেসের অনুমতিপ্রাপ্ত ফাইলগুলির একটি তালিকা দেয় এবং এটি আরও শক্তিশালী বলার চেয়ে আপনি ব্লক করতে চান /home)।

নীতিগতভাবে, আপনি সেটুয়েড () এর আগে নিজেই সমস্ত একই বিধিনিষেধ প্রয়োগ করতে পারেন। এটি কেবলমাত্র কোড যা আপনি সিস্টেমড থেকে অনুলিপি করতে পারেন। তবে, সিস্টেমেড ইউনিট বিকল্পগুলি লেখার ক্ষেত্রে উল্লেখযোগ্যভাবে সহজ হওয়া উচিত, এবং যেহেতু তারা মানক ফর্ম্যাটে রয়েছে তাদের পড়া এবং পর্যালোচনা করা আরও সহজ হওয়া উচিত।

সুতরাং আমি man systemd.execআপনার লক্ষ্য প্ল্যাটফর্মের স্যান্ডবক্সিং বিভাগের মাধ্যমে কেবলমাত্র পড়ার সুপারিশ করতে পারি । কিন্তু আপনি যদি সবচেয়ে নিরাপদ নকশা সম্ভব চাই, আমি চেষ্টা করতে ভয় হবে না chroot(এবং তারপর ড্রপ rootবিশেষাধিকার) আপনার প্রোগ্রামে পাশাপাশি । এখানে একটি বাণিজ্য আছে। ব্যবহার chrootআপনার সামগ্রিক নকশায় কিছু বাধা আরোপ করে । যদি ইতিমধ্যে আপনার কাছে এমন নকশা রয়েছে যা ক্রুট ব্যবহার করে এবং আপনার যা প্রয়োজন তা মনে হয়, এটি দুর্দান্ত লাগছে।


+1 বিশেষত সিস্টেমযুক্ত পরামর্শের জন্য।
mattdm

আমি আপনার উত্তর থেকে বেশ কিছুটা শিখেছি, যদি স্ট্রো ওভার ফ্লো একাধিক উত্তরের অনুমতি দেয় তবে আমি আপনাকেও গ্রহণ করব। আমি ভাবছিলাম, যদি সিস্টেমড স্যান্ডবক্সিং ব্যবহার করা হয় ক্রুট / সেটুইড / উমাস্ক / ... এর চেয়ে বেশি সুরক্ষিত
মুর

আপনি এটি পছন্দ করেছেন @ মুর খুশি :)। এটি আমার উত্তরের খুব স্বাভাবিক প্রতিক্রিয়া। তাই আমি আপনার প্রশ্নের উত্তর দেওয়ার জন্য এটি আবার আপডেট করেছি।
সোর্সজেদি

1

আপনি যদি সিস্টেমডের উপর নির্ভর করতে পারেন তবে স্যান্ডবক্সিংকে সিস্টেমে ছেড়ে দেওয়া সত্যই নিরাপদ (এবং সহজ!)। (অবশ্যই, অ্যাপ্লিকেশনটি এটি সিস্টেমড দ্বারা স্যান্ডবক্সযুক্ত চালু হয়েছে কিনা এবং এবং এটি এখনও মূলের মধ্যে থাকলে স্যান্ডবক্স নিজেই সনাক্ত করতে পারে)) আপনি বর্ণিত পরিষেবার সমতুল্য হবেন:

[Service]
ExecStart=/usr/local/bin/mydaemon
User=mydaemon-user
RootDirectory=...

তবে আমাদের সেখানে থামতে হবে না। সিস্টেমড আপনার জন্য অন্যান্য অনেক স্যান্ডবক্সিংও করতে পারে - এখানে কয়েকটি উদাহরণ দেওয়া হল:

[Service]
# allocate separate /tmp and /var/tmp for the service
PrivateTmp=yes
# mount / (except for some subdirectories) read-only
ProtectSystem=strict
# empty /home, /root
ProtectHome=yes
# disable setuid and other privilege escalation mechanisms
NoNewPrivileges=yes
# separate network namespace with only loopback device
PrivateNetwork=yes
# only unix domain sockets (no inet, inet6, netlink, …)
RestrictAddressFamilies=AF_UNIX

আরও man 5 systemd.execঅনেক দিকনির্দেশনা এবং আরও বিশদ বিবরণ দেখুন। যদি আপনি আপনার ডেমন সকেট-অ্যাক্টিভিয়েটেবল ( man 5 systemd.socket) তৈরি করে থাকেন তবে আপনি নেটওয়ার্ক-সম্পর্কিত বিকল্পগুলিও ব্যবহার করতে পারেন: বাইরের বিশ্বে পরিষেবাটির একমাত্র লিঙ্কটি সিস্টেমড থেকে প্রাপ্ত নেটওয়ার্ক সকেট হবে, এটি অন্য কোনও কিছুর সাথে সংযোগ করতে সক্ষম হবে না। যদি এটি একটি সাধারণ সার্ভার হয় যা কেবল কিছু পোর্টে শোনে এবং অন্য সার্ভারের সাথে সংযোগের প্রয়োজন না হয়, এটি কার্যকর হতে পারে। (ফাইল সিস্টেম সম্পর্কিত বিকল্পগুলিও RootDirectoryআমার মতে অপ্রচলিত হয়ে উঠতে পারে, সুতরাং আপনাকে সম্ভবত সমস্ত প্রয়োজনীয় বাইনারি এবং লাইব্রেরি সহ একটি নতুন মূল ডিরেক্টরি স্থাপনের উদ্বিগ্ন হওয়ার দরকার নেই।)

আরও নতুন সিস্টেমযুক্ত সংস্করণগুলি (v232 সাল থেকে) এছাড়াও সমর্থন করে DynamicUser=yes, যেখানে সিস্টেমড স্বয়ংক্রিয়ভাবে পরিষেবাটির রানটাইমের জন্য আপনার জন্য পরিষেবা ব্যবহারকারীকে বরাদ্দ করবে। এর অর্থ হল আপনি পরিষেবার জন্য একটি স্থায়ী ব্যবহারকারী নিবন্ধন করতে হবে না, এবং দীর্ঘ সেবা যত কাজ করে জরিমানা যেকোনো ফাইল সিস্টেম ছাড়া অন্য অবস্থানে লিখতে না StateDirectory, LogsDirectoryএবং CacheDirectory(যা আপনার কাছে ইউনিট ফাইলে ঘোষণা করতে পারেন - দেখতে man 5 systemd.exec, আবার - এবং যা systemd হল তারপর পরিচালনা করবে, এর তদারক সঠিকভাবে তাদের গতিশীল ব্যবহারকারী নির্ধারিত)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.