अभ्यास एक उपयोगकर्ता और समूह प्रति एप्लिकेशन बनाने के लिए नहीं है, बल्कि प्रति सेवा है। यही है, ऐसे प्रोग्राम जिन्हें स्थानीय उपयोगकर्ता द्वारा निष्पादित किया जाता है, उन्हें रूट के अलावा अन्य उपयोगकर्ता के रूप में स्थापित करने की आवश्यकता नहीं होती है। यह डेमोंस है , पृष्ठभूमि में चलने वाले प्रोग्राम और जो नेटवर्क या अन्य संचार माध्यमों के माध्यम से आने वाले अनुरोधों को निष्पादित करते हैं, जो एक समर्पित उपयोगकर्ता के रूप में चलना चाहिए।
डेमन एक समर्पित उपयोगकर्ता के रूप में चलता है ताकि यदि यह दुर्व्यवहार करे (एक बग के कारण, संभवतः एक हमलावर द्वारा ट्रिगर किया गया) तो जो नुकसान हो सकता है वह सीमित है: केवल डेमन की डेटा फाइलें प्रभावित होती हैं (जब तक कि हमलावर एक स्थानीय रूट छेद खोजने में कामयाब न हो। , जो हो सकता है)। उदाहरण के लिए, डेटाबेस डेमन mysqld
एक समर्पित उपयोगकर्ता और समूह के रूप में चलता है mysql:mysql
और डेटाबेस ( /var/lib/mysql/*
) से संबंधित डेटा फाइलें mysql:mysql
।
ध्यान दें कि डेमन एग्जीक्यूटेबल और अन्य स्टैटिक डेटा और कॉन्फ़िगरेशन फाइलें जो उपयोग की जाती हैं, लेकिन डेमन द्वारा संशोधित नहीं की जानी चाहिए, समर्पित उपयोगकर्ता से संबंधित नहीं होनी चाहिए; उन्हें root:root
अधिकांश प्रोग्राम और कॉन्फ़िगरेशन फ़ाइलों की तरह स्वामित्व में होना चाहिए । इस mysqld
प्रक्रिया का कोई व्यवसाय ओवरराइटिंग नहीं है /usr/sbin/mysqld
या /etc/mysql/my.cnf
इसलिए, ये फ़ाइलें mysql
उपयोगकर्ता से संबंधित नहीं होनी चाहिए या mysql
उपयोगकर्ता या mysql
समूह द्वारा लिखने योग्य नहीं होनी चाहिए । यदि कुछ फ़ाइलों को केवल डेमॉन और व्यवस्थापक द्वारा पठनीय होना चाहिए, तो उन्हें उपयोगकर्ता रूट और समर्पित समूह द्वारा स्वामित्व में होना चाहिए, और मोड 0640 ( rw-r-----
) होना चाहिए।
निष्पादकों की एक विशेष श्रेणी जो स्वामित्व में नहीं हो सकती है root:root
, वे प्रोग्राम हैं जो एक उपयोगकर्ता द्वारा लागू किए जाते हैं लेकिन अतिरिक्त विशेषाधिकारों के साथ चलाने की आवश्यकता होती है। ये निष्पादनयोग्य होना चाहिए setuid रूट अगर वे रूट के रूप में चलाने के लिए (कम से कम आंशिक रूप से) की जरूरत है; तब निष्पादन योग्य में मोड 4755 ( rwsr-xr-x
) होना चाहिए । यदि कार्यक्रम को अतिरिक्त विशेषाधिकारों की आवश्यकता है, लेकिन जड़ के रूप में नहीं है, तो कार्यक्रम को सेटिग्ड बनाया जाना चाहिए, ताकि अतिरिक्त विशेषाधिकार एक समूह के माध्यम से आए न कि उपयोगकर्ता के माध्यम से। निष्पादन योग्य तब मोड 2755 ( rwxr-sr-x
) है। कारण दोतरफा हैं:
- निष्पादन योग्य को स्वयं को संशोधित करने की अनुमति नहीं दी जानी चाहिए, ताकि यदि कोई उपयोगकर्ता भेद्यता का फायदा उठाता है, तो वे प्रोग्राम द्वारा उपयोग की जाने वाली डेटा फ़ाइलों को संशोधित करने में सक्षम हो सकते हैं, लेकिन प्रोग्राम चलाने वाले अन्य उपयोगकर्ताओं पर हमला करने के लिए निष्पादन योग्य में ट्रोजन हॉर्स को इंजेक्ट नहीं करते हैं। ।
- निष्पादन योग्य डेटा फ़ाइल समूह से संबंधित है। एक सेटिउड प्रोग्राम को अपने निजी डेटा फ़ाइलों तक पहुँचने के लिए उपयोगकर्ता के साथ और प्रभावी उपयोगकर्ता (उपयोगकर्ता जो प्रोग्राम चला रहा है) के साथ बातचीत करने के लिए वास्तविक उपयोगकर्ता (प्रोग्राम को आमंत्रित करने वाले उपयोगकर्ता) के बीच स्विच करना होगा। अतिरिक्त विशेषाधिकार है)। एक सेटगाइड प्रोग्राम इसके अलावा प्रति-उपयोगकर्ता डेटा को अलग कर सकता है जो केवल समूह तक पहुंच योग्य है (जैसे कि निर्देशिका में उपयोगकर्ता द्वारा स्वामित्व वाली फ़ाइलों को संग्रहीत करना जो केवल रूट और प्रोग्राम के समूह के लिए सुलभ है)।