समूह अनुमतियाँ अनुमति देती हैं, लेकिन फिर भी अनुमति अस्वीकृत हो जाती है


43

मेरे पास ext4 विभाजन है और मैंने सभी उपनिर्देशकों के लिए समूह स्वामी को मायग्रुप में सेट कर दिया है:

# chgrp -R mygroup /mount/abc
# chmod -R g+swrx /mount/abc

मेरा उपयोगकर्ता उस समूह का हिस्सा है। उस विभाजन के अंदर एक फ़ोल्डर होता है, जो उपयोगकर्ता 'कोई नहीं' और अब समूह 'mygroup' के स्वामित्व में होता है। मेरा उपयोगकर्ता 'माइग्रुप' का हिस्सा है। यहाँ एक ls -l है:

myuser@host:/mount/abc/folder$ ls -l
drwxr-sr-x 2 nobody      mygroup      4096 Apr 25 12:08 ./
drwxrwsrwx 6 nobody      mygroup      4096 Apr 24 07:57 ../
-rw-r-xr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

myuser@host:/mount/abc/folder$ groups myuser
myuser : mygroup {... a list of other groups also...} 

myuser@host:/mount/abc/folder$ rm test.png 
rm: remove write-protected regular file ‘test.png’? y
rm: cannot remove ‘test.png’: Permission denied

myuser@host:/mount/abc/folder$ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied

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

मुझे लगता है कि मैं पूरी तरह से नहीं समझता कि समूह कैसे काम करते हैं। मैंने सोचा कि अगर आप किसी समूह का हिस्सा थे तो आपको उस समूह की अनुमति विरासत में मिलती है। क्या मुझसे कुछ ग़लत हो रहा है?

धन्यवाद


ऐसा लगता है कि अनुमतियाँ ट्रायड स्वामी-समूह-विश्व है। ऊपर आप डायरेक्टरी के लिए drwxr-sr-x देख सकते हैं। इसलिए समूह की अनुमति rs है। ऐसा लगता है कि chmod -R ने rwx को अनुमतियों को पुन: सेट नहीं किया। जब मैं फ़ोल्डर की समूह अनुमति के लिए w बिट फ्लिप करता हूं, तो यह काम करता है।
चोस

जवाबों:


70

क्या आपने हाल ही में उस उपयोगकर्ता को उस समूह में जोड़ा है, बिना लॉग आउट किए / बीच में? फिर "समूह" समूह को दिखाएगा लेकिन उपयोगकर्ता के पास अभी समूह की अनुमति नहीं है।

आप अपने प्रभावी समूहों का उपयोग करके दिखा सकते हैं

$ id

एक उदाहरण के रूप में, यदि मैं अपने उपयोगकर्ता psको समूह में जोड़ता हूं faxऔर फिर टाइप करता हूं

$ id

यह समूह नहीं दिखाता है fax, लेकिन

$ groups ps

दिखाता है fax

ऐसा करने से suअपने स्वयं के उपयोगकर्ता के लिए आप नए समूह संबद्धता देता है:

$ su ps
$ id

अब आउटपुट भी समाहित है fax


1
यह वास्तव में जानने में मददगार है। विशेष रूप से 'sudo <username>' भाग।
कैओस

4
लॉग इन / आउट इतना स्पष्ट है कि मैं इस बिंदु से चूक गया, बहुत धन्यवाद दोस्त!
निकोलसियास

1
@ peschü मेरे पास है sudoऔर नियमित रूप से इसका उपयोग करता हूं । मैंने आपको जो त्रुटि दिखाई, वह शिकायत कर रही है कि कमांड ubuntu(यानी, उपयोगकर्ता नाम) एक मान्यता प्राप्त कमांड नहीं है। मुझे नहीं लगता कि आपका सुझाव वाक्यात्मक रूप से सही है - शायद यह आपके मामले में काम करता है क्योंकि psयह एक कमांड के साथ-साथ एक उपयोगकर्ता नाम भी होता है।
beldaz

1
@beldaz ओह नो! तुम सही हो! कृत्रिम रूप से सही है su <username>। मैंने पोस्ट को एडिट किया है।
peschü

1
हर बार पुराने लॉग आउट / लॉग इन को फिर से काम करें।
स्टीमपंकरी

9

आपके द्वारा उपयोग की गई विधि सही प्रतीत होती है। मैंने अभी इसे दोहराने की कोशिश की, और यह ठीक काम किया।

मुझे यकीन नहीं है कि कोई टाइपो है, लेकिन कमांड के साथ थोड़ी समस्या है। वहाँ में "माइग्रुप" का उल्लेख करने की आवश्यकता नहीं है। निम्नलिखित कार्य करता है

# chmod -R g+swrx /mount/abc

यहां तक ​​कि, आप sथोड़ा हटा सकते हैं , बस करो g+rwx। आपके द्वारा अनुमतियाँ बदलने के बाद, और आप करते हैं ls -l, इसे संबंधित विशेषाधिकार प्रदर्शित करना चाहिए।


2
मैंने ग्रुपनाम के साथ टाइपो को हटा दिया। जब आप ls -l करते हैं, तो निर्देशिका के पास उस पर राइट अनुमतियाँ होती हैं, और यह किसी के पास नहीं है: mygroup। भले ही myuser mygroup का हिस्सा है, फिर भी myuser फ़ाइलों को बना / हटा नहीं सकता है। मुझे उम्मीद है कि इसका कोई अर्थ है।
अराजकता

3

आप फ़ाइल को हटा नहीं सकते क्योंकि समूह के mygroupपास फ़ाइल के test.pngसाथ-साथ फ़ोल्डर पर लिखने की अनुमति नहीं है । फ़ाइल पर काम करने के लिए ऑपरेशन लिखने के लिए फ़ाइल अनुमतियाँ इस तरह दिखनी चाहिए:

-rw-rwxr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

यदि आप अनुमति प्रारूप पर करीब से नज़र डालते हैं

duuugggooo

पहले तीन प्लेसहोल्डर uuuयूजर आर ओड , डब्ल्यू रिट और ई एक्स एक्यूट हैं। अगले तीन प्लेसहोल्डर gggसमूह के लिए और oooदूसरों के लिए हैं। ओपी समूह द्वारा पोस्ट किए गए स्निपेट में w संस्कार अनुमति गायब है ।


2

स्वीकृत उत्तर में जोड़ने के लिए (क्योंकि मैं अभी तक टिप्पणी नहीं कर सकता):

यदि आप अपने सर्वर से SSH कनेक्शन बनाने के लिए BitVise जैसे सॉफ़्टवेयर का उपयोग करते हैं, तो बस टर्मिनल को बंद करना और फिर से खोलना लॉग इन और आउट के रूप में नहीं गिना जाएगा। यह होगा पुनः लोड आपके जैसे कार्य करने के ~/.bashrcलिए, लेकिन नहीं वास्तविक समूह अपडेट निष्पादित (यदि आप अपने "लॉगिन" सत्र में समूह जोड़ा)। इसके प्रभावी होने के लिए आपको अपने SSH-key / क्रेडेंशियल के साथ पूरी तरह से लॉगआउट और लॉगिन करना होगा।


2

निर्देशिकाओं को खोलने के लिए x बिट सेट (निर्देशिका के लिए बिट को खोज बिट के रूप में देखा जाता है) की आवश्यकता होती है। इसलिए मैं पेड़ का उपयोग करता हूं इसलिए मैं केवल फ़ोल्डर सेट प्राप्त कर सकता हूं और सभी फाइलों को निष्पादन योग्य के रूप में सेट करने से बचना चाहिए (पेड़ के लिए विकल्प है -d List directories only.):

sudo tree -faid /mount/abc | xargs -L1 -I{} sudo chmod 755  "{}"

चेतावनी !!! आपको इस पर विचार करना चाहिए:

  • रूट /डायरेक्टरी या सिस्टम डाइरेक्टरीज़ पर चामोड या चाउन रिकर्सिव का उपयोग करना आपके ओएस को नष्ट कर देगा (वास्तव में /डायरेक्ट्री या सिस्टम डाइरेक्टरी पर पुनरावर्ती कुछ भी खतरनाक है)

  • यह अनुमति थोक की तरह सेट करने के लिए एक अच्छा सुरक्षा अभ्यास नहीं है


1
बहुत धन्यवाद! शब्द "निर्देशिकाएँ x बिट सेट की जरूरत है" मेरी समस्या हल! मैंने "sudo chmod g + x <parent dir path>" किया और यह काम कर गया।
किन्नोरनिर्वण
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.