विशेष उपयोगकर्ता आईडी सेट के साथ बढ़ते फाइल सिस्टम


19

मैं डिवाइस /dev/sda3को डायरेक्टरी में माउंट करना चाहता हूं /foo/bar/baz। निर्देशिका बढ़ने के बाद उपयोगकर्ता का यूआईडी होना चाहिए johndoe। तो मैंने किया:

sudo -u johndoe mkdir /foo/bar/baz
stat -c %U /foo/bar/baz
johndoe

और मेरे लिए निम्नलिखित पंक्ति जोड़ी /etc/fstab:

/dev/sda3 /foo/bar/baz ext4 noexec,noatime,auto,owner,nodev,nosuid,user 0 1

जब मैं करता हूं तो अब sudo -u johndoe mount /dev/sda3कमांड के बजाय stat -c %U /foo/bar/bazपरिणाम rootहोता है johndoe। इस ext4-filesystem को uid johndoeसेट के साथ माउंट करने का सबसे अच्छा तरीका क्या है ?

जवाबों:


20

यह एक ext4 फाइल सिस्टम के साथ एक डिस्क पर एक मालिक को मजबूर करना संभव नहीं है। केवल फाइलसिस्टम जो लिनक्स की अनुमति का समर्थन नहीं करते हैं जैसे वसा में स्वामित्व / समूहता के लिए एक विशेषता है: uid=valueऔर gid=valueमाउंट पर मैनुअल पेज देखें ।

आपको निम्न फ़ाइल सिस्टम पर स्वामी को इस रूप में बदलना चाहिए:

sudo chown johndoe /foo/bar/baz

यदि आपको अनुमति को पुनरावर्ती रूप से बदलने की आवश्यकता है:

sudo chown -R johndoe /foo/bar/baz

... और अगर समूह को बदलने की आवश्यकता है johndoe:

sudo chown -R johndoe: /foo/bar/baz

2
यदि आप इसकी सहायता कर सकते हैं, तो पुन: स्वामित्व बदलना आम तौर पर एक बुरा विचार है। एक बार जब आप "सही" स्वामित्व मिटा देते हैं, तो इसे वापस पाने का कोई आसान तरीका नहीं है। IMO bindfs इसे संभालने का सही तरीका है (मेरा उत्तर देखें)।
कैटस्कुल

3
bindfs जटिलता की एक और परत की तरह लगते हैं। मेरा उत्तर बाहरी हार्ड डिस्क (बैकअप के लिए) के लिए सबसे उपयुक्त है, जिसका उपयोग पिछली स्थापना में एक अलग उपयोगकर्ता आईडी के साथ किया गया था। इसका उपयोग उन स्थितियों में नहीं किया जाना चाहिए जहां कई उपयोगकर्ता आईडी को रखा जाना चाहिए (रूट फाइलसिस्टम), लेकिन उस स्थिति में bindfs का -uभी उपयोग नहीं किया जाना चाहिए क्योंकि यह अलग-अलग उपयोगकर्ता आईडी से प्रतिबंधों का उपयोग करता है। --mapयदि आप एक्सेस प्रतिबंधों को संरक्षित करना चाहते हैं तो इसका उपयोग किया जाना चाहिए।
लेकेनस्टाइन

1
+1 के लिए "यह केवल अनुमति-कम एफएस पर संभव है" - मैं उपयोग करने की कोशिश कर रहा हूं uid और gid, जो काम नहीं करेगा।
मर्गिसिसेया

19

bindfsजवाब है। यह पहले से ही माउंट की गई फ़ाइल प्रणाली लेगा और आप इसे चाहे जिस पर चाहे:

sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo

1
bindfs के संचालन के अन्य तरीके हैं, देखें: bindfs.org/docs/bindfs.1.html
Lekensteyn

2
ऊ, यह FUSE का उपयोग करता है।
नवीन

मैं होस्ट ओएस की तुलना में अलग-अलग उपयोगकर्ता अनुमतियों के साथ 9p वर्चुअल फ़ाइल सिस्टम को माउंट करना चाहता था .. यह काम करने की कोशिश कर रही दीवार के खिलाफ मेरे सिर को पीट रहा था। बिंदफ्स ने वास्तव में मुझे एक बंधन से बाहर निकाला। महान छोटे उपकरण!
Boann

6

फ़ाइलों के लिए सेट किए गए समूह को उचित अनुमतियाँ मान लेने पर, आपको यह पता लगाना चाहिए कि यह समूह आईडी (GID) है और अपने आप को इसमें जोड़ें।


किसी फ़ाइल की समूह आईडी का पता लगाने के लिए, का उपयोग करें ls -n । उदाहरण आउटपुट:

drwxr-xr-x 1 1000 1000  550 Jul  9 11:08 Desktop/

आप GID के लिए चौथा क्षेत्र चाहते हैं, जो मेरे मामले में दूसरा है 1000

sudo addgroup --gid GID foobar; sudo usermod `whoami` -aG foobar

एक बार जब आप चलाते हैं कि आपके पास पूरी तरह से लगाम होनी चाहिए जहां कभी भी समूह के लिए फ़ाइल विशेषताएँ इसे अनुमति देती हैं।

जैसा कि उपयोगकर्ता अनुमतियों से संबंधित अन्य उत्तर में उल्लेखित है, यदि आपको कुछ फ़ाइलों पर समूह को ठीक करने की आवश्यकता है, तो इनमें से एक को चलाएं :

sudo chown -R :foobar ./
sudo chgrp -R  foobar ./

1
ध्यान दें कि यदि आप ए या बी से ए या बी को उन फाइलों को बदलने के लिए चाहते हैं जो ए नहीं हैं; आप sudo chown --from A B -R ./उपयोगकर्ताओं के लिए और sudo chown --from :A :B ./समूहों के लिए उपयोग कर सकते हैं
LatalFractal
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.