युगल दृष्टिकोण हैं, उनमें से कुछ ज्यादातर सुरक्षित हैं, अन्य बिल्कुल नहीं।
असुरक्षित तरीका
किसी भी उपयोग को चलाने दें mount
, जैसे, sudo के माध्यम से। आप उन्हें जड़ भी दे सकते हैं; एक ही बात है। उपयोगकर्ता एक फाइल सिस्टम को तेज रूट कॉपी के साथ माउंट कर सकता है - bash
जो कि तुरंत रूट देता है (संभवतया बिना किसी लॉगिंग के, इस तथ्य से परे कि mount
वह चला गया था)।
वैकल्पिक रूप से, एक उपयोगकर्ता अपनी खुद की फाइल /etc
कॉपी अपने ऊपर रख सकता है , जिसमें उसकी खुद की कॉपी हो, /etc/shadow
या /etc/sudoers
तो रूट प्राप्त su
कर सकता है sudo
। या संभवतः mount --bind
उन दो फाइलों में से एक पर बाँध-माउंट ( )। या में एक नई फ़ाइल /etc/sudoers.d
।
इसी तरह के हमलों को /etc/pam.d
कई अन्य स्थानों पर खींचा जा सकता था ।
याद रखें कि फाइल सिस्टम को एक डिवाइस पर भी नहीं होना चाहिए, -o loop
एक फाइल को माउंट करेगा जो कि उपयोगकर्ता के स्वामित्व (और इस प्रकार परिवर्तनीय) है।
ज्यादातर सुरक्षित तरीका है: udisks या समान
उपयोगकर्ताओं को हटाने योग्य मीडिया को माउंट करने की अनुमति देने के लिए विभिन्न डेस्कटॉप वातावरण वास्तव में पहले ही इसका समाधान बना चुके हैं। वे /media
केवल उपनिर्देशिका में बढ़ते हुए और कर्नेल विकल्पों के माध्यम से सेट-उपयोगकर्ता / समूह-आईडी समर्थन को बंद करके काम करते हैं। यहाँ विकल्पों में शामिल हैं udisks
, udisks2
, pmount
, usbmount
,
यदि आपको चाहिए, तो आप कुछ ऐसा ही करने के लिए अपनी खुद की स्क्रिप्ट लिख सकते हैं, और इसे sudo के माध्यम से लिख सकते हैं — लेकिन आपको इस स्क्रिप्ट को लिखने के लिए वास्तव में सावधान रहना होगा। यदि आप नहीं चाहते कि आपके उपयोगकर्ता को sudo को याद रखना है, तो आप स्क्रिप्ट में कुछ ऐसा कर सकते हैं:
#!/bin/bash
if [ $UID -ne 0 ]; then # or `id -u`
exec sudo -- "$0" "$@"
fi
# rest of script goes here
किसी दिन सुरक्षित होगा: उपयोगकर्ता नामस्थान
लिनक्स नामस्थान वर्चुअलाइजेशन के बहुत हल्के रूप हैं (कंटेनर, अधिक विशिष्ट होने के लिए)। विशेष रूप से, उपयोगकर्ता नामस्थान के साथ, सिस्टम पर कोई भी उपयोगकर्ता अपना स्वयं का वातावरण बना सकता है जिसमें वे मूल हैं। यह उन्हें फाइलसिस्टम माउंट करने की अनुमति देगा, सिवाय इसके कि कुछ आभासी फाइल सिस्टम को छोड़कर स्पष्ट रूप से अवरुद्ध किया गया है। आखिरकार, FUSE फाइल सिस्टम की अनुमति दी जाएगी, लेकिन सबसे हालिया पैच मुझे मिल सकता है ब्लॉक डिवाइसों को कवर न करें, केवल चीजें जैसे कि शेफ।
इसके अलावा, कई डिस्ट्रो कर्नेल के पास (सुरक्षा कारणों से) बिना नाम वाले उपयोगकर्ताओं को उपयोगकर्ता नामस्थानों का उपयोग करने की अनुमति नहीं देने के लिए डिफ़ॉल्ट है; उदाहरण के लिए डेबियन की एक kernel.unprivileged_userns_clone
चूक है 0. अन्य डिस्ट्रोस की समान सेटिंग्स हैं, हालांकि अक्सर थोड़ा अलग नामों के साथ।
उपयोगकर्ता नामस्थान के बारे में मुझे जो सबसे अच्छा दस्तावेज पता है
, वह ऑपरेशन में एक LWN लेख नामस्थान है, भाग 5: उपयोगकर्ता नामस्थान ।
अभी के लिए, मैं udisks2 के साथ जाऊँगा।
gvfs-mount
-d /dev/sdX