मैं प्रत्येक उपयोगकर्ता के लिए अलग-अलग अनुमतियां कैसे प्रदान करूं?


11

इसलिए, मैं कुछ वर्षों से लिनक्स का उपयोग कर रहा हूं, और मुझे वास्तव में इस उत्तर को जानना चाहिए, लेकिन मुझे इसे खोजने में परेशानी हो रही है। विशेष रूप से मैं डेबियन आधारित डिस्ट्रो का उपयोग कर रहा हूं .... ज्यादातर उबंटू।

अगर मेरे पास एक सर्वर है, जिसमें तीन से अधिक उपयोगकर्ता हैं, तो मैं प्रत्येक उपयोगकर्ता के लिए फ़ाइल के लिए अनुमतियों का एक अलग सेट कैसे सेट कर सकता हूं।

उदाहरण के लिए:

अगर मेरे पास इन अनुमतियों और स्वामित्व वाली फ़ाइल है:

rwx rw_ r__ user1:group1 file1.txt

और मेरे पास इन वांछित अनुमतियों के साथ 3 उपयोगकर्ता हैं ...।

  • user1 rwx
  • user2 rw_
  • user3 r__

मेरे पास है क्या करना user1 फ़ाइल के स्वामी हैं, user2 में हो GROUP1 , और user3 न हो सकता है - सही है?

लेकिन, क्या होगा अगर मेरे पास एक user4 और user5 है

  • user4 _wx
  • user5 __x

मैं इसे कैसे सेट करूंगा?

मुझे पहले ऐसा नहीं करना पड़ा था, लेकिन मुझे एक विंडोज व्यवस्थापक द्वारा यह सवाल पूछा गया था, और मैं ईमानदारी से जवाब नहीं दे सका।


8
अनुमतियों में उस प्रकार की ग्रेन्युलैरिटी के लिए, आपको एक्सेस कंट्रोल लिस्ट (ACL) का उपयोग करने की आवश्यकता होगी। आप यहां एक क्विक ट्यूटोरियल पा सकते हैं । यद्यपि सावधानी के एक शब्द, एक बार जब आप अनुमतियों के बजाय एसीएल का मार्ग शुरू करते हैं, तो यह एक बहुत ही फिसलन ढलान है और चीजें अंत में कुछ अनपेक्षित परिणामों के साथ जटिल वास्तविक तेज हो जाती हैं।
मेलबर्सलान

जवाबों:


19

पारंपरिक यूनिक्स अनुमतियां केवल उपयोगकर्ता, समूह, अन्य अनुमतियों को अनुमति देती हैं जैसा आपने पाया है। इन समूहों को बनाने की जरूरत के कुछ अजीब संयोजन में परिणाम कर सकते हैं ...

इसलिए एसीएल (एक्सेस कंट्रोल लिस्ट) के एक नए रूप पर काम किया गया। यह आपको कई उपयोगकर्ताओं और कई समूहों को अलग-अलग अनुमतियों के साथ निर्दिष्ट करने की अनुमति देता है। इन्हें setfaclकमांड के साथ सेट किया जाता है और इनके साथ पढ़ा जाता हैgetfacl

$ setfacl -m u:root:r-- file.txt
$ setfacl -m u:bin:-wx file.txt 
$ setfacl -m u:lp:--x file.txt 
$ getfacl file.txt
# file: file.txt
# owner: sweh
# group: sweh
user::rw-
user:root:r--
user:bin:-wx
user:lp:--x
group::r--
mask::rwx
other::r--

आप आसानी से बता सकते हैं कि किसी फाइल का lsआउटपुट देखकर ACL है :

$ ls -l file.txt
-rw-rwxr--+ 1 sweh sweh 0 Jul 26 10:33 file.txt

+अनुमतियों के अंत में एक एसीएल इंगित करता है।


2

हां, ACL: अलग-अलग उपयोगकर्ताओं या समूहों के लिए अलग-अलग अधिकार सेट करने की अनुमति देता है। IIRC सामान्य समूह अनुमतियाँ उन अनुमतियों के समूह को सीमित करती हैं, जिन्हें समूह और उपयोगकर्ता ACL: s (जैसा दिखाया गया maskहै getfacl) के माध्यम से रख सकते हैं , लेकिन setfaclयदि आप अनुमतियाँ जोड़ते हैं, तो इससे निपटना चाहिए।

लेकिन कुछ मामलों में आपको यह पूछने की ज़रूरत है कि क्या अनुमतियों का सेट कोई मतलब है।

मेरे पास इन वांछित अनुमतियों के साथ 3 उपयोगकर्ता हैं ...
- user1 rwx
- user2 rw_
- user3 r__

आप इसे ACL: s, या (लगभग) के साथ सामान्य यूनिक्स अनुमतियों के साथ लागू कर सकते हैं, जिससे user1 फ़ाइल का मालिक बना, user2 समूह का सदस्य हो, और दूसरों को, जिनमें user3 भी शामिल है, को पढ़ने-पहुंच प्रदान करें। हालाँकि तब हर कोई (डायरेक्टरी तक पहुँच के साथ) भी रीड-ऐक्सेस होता।

आइए उन अनुमतियों के अर्थ पर विचार करें। आपके पास एक उपयोगकर्ता है जो पढ़ सकता है, और दूसरा वह जो पढ़ और लिख सकता है। यह पूरी तरह से सामान्य है। इनमें से किसी के पास फ़ाइल को निष्पादित करने के लिए पहुंच नहीं है, लेकिन फिर एक तीसरे उपयोगकर्ता को ऐसा करने में सक्षम होना चाहिए।

यह मेरे दिमाग में ज्यादा मायने नहीं रखता है। कोई भी उपयोगकर्ता जो फ़ाइल को पढ़ सकता है, वह एक प्रतिलिपि (*) बना सकता है, इसे निष्पादन योग्य चिह्नित कर सकता है, और इसे चला सकता है, मूल फ़ाइल को निष्पादित करने के लिए उपयोग किए बिना। एकमात्र स्थिति यह समझ में आती है कि कुछ उपयोगकर्ताओं के लिए पहुंच को निष्पादित करना है, लेकिन दूसरों के लिए नहीं है, जब निष्पादन योग्य ने विशेषाधिकारों को suid के माध्यम से ऊपर उठाया है। लेकिन अगर ऐसा था, तो आपके पास अन्य उपयोगकर्ताओं के पास फ़ाइल तक लिखने की पहुंच नहीं होनी चाहिए।

उसी अर्थ में, user4 with -wxऔर user5 मेरे साथ --xकोई मतलब नहीं है। यदि केवल अपीयरेंस की अनुमति देने की संभावना थी, तो राइट-ओनली एक्सेस समझ में आता है , लेकिन अनुमति प्रणाली ठीक नहीं है।

(* जब तक वे कहीं लिख नहीं सकते)


हालाँकि, यदि हम xबिट के लिए अजीब आवश्यकता को हटा देते हैं, तो हम एक फाइल के साथ छोड़ देते हैं, जहाँ user1 और user2 में राइट एक्सेस होनी चाहिए, और user3 में रीड एक्सेस होनी चाहिए। एक लेखक और कई पाठकों को पारंपरिक मॉडल के साथ आसान होगा, लेकिन इस मामले में युक्त निर्देशिका के अनुमतियों के साथ फ़ाइल अनुमतियों को संयोजित करने के लिए ट्रिक्स की आवश्यकता होगी। सौभाग्य से, कई मामलों में अधिक अनुमतियों वाला एक उपयोगकर्ता पर्याप्त है।

निष्पादित बिट पर आवश्यकता के बिना, यह एसीएल: एस का उपयोग करने के लिए एक मामले की तरह दिखता है। लेकिन इसके साथ, यह विशेष उदाहरण लगता है कि मेरे लिए जटिल है।


यदि उपयोगकर्ता बिना अनुमति निष्पादित किए गए फ़ाइल सिस्टम पर केवल लिख सकता है, तो वह प्रतिलिपि निष्पादित नहीं कर सकता है, भले ही वह मूल निष्पादित कर सकता हो यदि उपयुक्त अनुमतियाँ सेट की गई हों। यदि आप उन्हें कारनामों की तलाश से रोकना चाहते हैं, तो भी केवल निष्पादन ही समझ में आता है। -wxहालांकि निश्चित रूप से अजीब है।
celtschk

1
कुछ प्रणालियों में केवल अपेंडिक्स की अनुमति देने का एक तंत्र होता है। chattr +aउदाहरण के लिए, लिनक्स है । और सिस्टम-विशिष्ट के बिना भी, आप फ़ाइल को FIFO बना सकते हैं। --x, और विस्तार से भी -wx, निर्देशिका के लिए मेरे लिए समझ में आता है ।
रैंडम 832
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.