लिनक्स, मेरे पास समूह अनुमतियाँ होते हुए भी मैं क्यों नहीं लिख सकता?


108

मैं स्टाफ समूह के स्वामित्व वाली निर्देशिका में एक फ़ाइल बनाना चाहता हूं, जिसका मैं सदस्य हूं। मैं ऐसा क्यों नहीं कर सकता?

bmccann@bmccann-htpc:~$ ls -l /usr/local/lib/R/
total 4
drwxrwsr-x 2 root staff 4096 2010-07-31 16:21 site-library
bmccann@bmccann-htpc:~$ id -nG bmccann
bmccann adm dialout cdrom plugdev staff lpadmin admin sambashare
bmccann@bmccann-htpc:~$ touch /usr/local/lib/R/site-library/tmp
touch: cannot touch `/usr/local/lib/R/site-library/tmp': Permission denied

1
क्या आपके पास साइट-लाइब्रेरी डायरेक्टरी / usr / local / lib / R में अनुमति है?
टेड हॉप

1
मेरे द्वारा पोस्ट की गई पहली कमांड यह नहीं दिखाती है कि समूह ने विशेषाधिकारों को लिखा है?
बेन मैककैन

3
क्या पहले से कोई site-library/tmpफ़ाइल / निर्देशिका मौजूद है?
यिर्मयाह विलकॉक

जवाबों:


200

क्या आपने समूह परिवर्तन करने के बाद लॉगआउट और लॉग इन किया था? देखें:
स्पर्श अनुमतियों की विफलता से जुड़े सुपर उपयोगकर्ता उत्तर


1
अगर मैं एक नई टर्मिनल विंडो खोलता हूं, तो क्या उसे नई प्रक्रिया नहीं माना जाना चाहिए? मुझे पूरा यकीन है कि मैंने कोशिश की है और यह मुझे लॉग आउट करने के लिए मजबूर नहीं किया।
बेन मैककैन

7
@Ben: एक नई प्रक्रिया शुरू करने से अपने माता-पिता से यूआईडी / ग्रिड प्राप्त होते हैं। आप एक विशेषाधिकार प्राप्त कार्यक्रम की जरूरत है (जैसे login, suआदि) वास्तव में यूआईडी / GIDs स्थापित करने के लिए।
अपराह्न

4
यदि यह लॉग इन / लॉग इन करने के लिए असुविधाजनक है, जैसा कि ऊपर से निहित है, तो आप इसे टर्मिनल में कर सकते हैं su your-user-name:। परिणामी शेल में आपकी अपडेट की गई समूह अनुमतियां होंगी।
टीजे क्राउडर

2
इसके लिए धन्यवाद! मैंने लगभग 15 मिनट बिताए अपने बालों को बाहर निकालने की कोशिश कर रहा था कि मुझे फ़ोल्डर में समूह की अनुमति क्यों नहीं थी।
जेरेमी स्पेंसर

2
यह मेरे लिए Ubuntu पर शुरू करने की आवश्यकता थी 16.04 x64 न केवल लॉगआउट और फिर से लॉगिन करें
कार्तिकेय तन्ना

15

वह जिस समूह का हिस्सा है, उसमें लिनक्स उपयोगकर्ता फाइलों को संपादित क्यों नहीं कर सकता है?

मैं उबंटू 12.04 का उपयोग कर रहा हूं और इसमें वही समस्या थी जहां एक उपयोगकर्ता किसी फाइल को नहीं लिख सकता है जिसे उसे समूह एक्सेस की अनुमति है। उदाहरण के लिए:

whoami                                        //I am user el
  el                                            

touch /foobar/test_file                       //make a new file

sudo chown root:www-data /foobar/test_file    //User=root  group=www-data

sudo chmod 474 /foobar/test_file              //owner and others get only read, 
                                              //group gets rwx


sudo groupadd www-data                        //create group called www-data    

groups                                        //take a look at the groups and see
 www-data                                     //www-data exists.

groups el                                     //see that el is part of www-data
  el : www-data                               

उपयोगकर्ताओं और समूहों के प्रभावी होने के लिए अब टर्मिनल को फिर से शुरू करें। El के रूप में लॉगिन करें।

vi /foobar/test_file                          //try to edit the file.

चेतावनी का उत्पादन:

Warning: W10: Warning: Changing a readonly file"

क्या? मैंने सब कुछ ठीक किया है, यह काम क्यों नहीं करता है?

उत्तर:

कंप्यूटर का पूर्ण रीबूट करें। इन समस्याओं को ठीक करने के लिए टर्मिनल को रोकना पर्याप्त नहीं है।

मुझे लगता है कि क्या होता है Apache2 भी www-data समूह का उपयोग करता है, इसलिए कार्य किसी तरह उपयोगकर्ताओं और समूहों को सही तरीके से लागू होने से रोक रहा था। न केवल आपको लॉगआउट करना होगा, बल्कि आपको अपने समूह का उपयोग करने वाली किसी भी सेवा को रोकना और पुनः आरंभ करना होगा। अगर एक रिबूट नहीं मिलता है, तो आपको बड़ी समस्याएं मिली हैं।


1
"बड़ी समस्याएं" क्या है?
एजाज

13

मेरे पास एक ही मुद्दा था, जांचें कि फ़ोल्डर में कोई और एसीएल नियम हैं या नहीं!

यदि आप फ़ोल्डर को सूचीबद्ध करते समय + (प्लस साइन) देख सकते हैं, तो इसका मतलब है कि इसमें विशेष पहुंच नियम हैं। उदाहरण के लिए:

[user_in_apache_group@web02 html]$ ls -l
total 16
drwxrwxr-x  16 apache apache 4096 Sep  4 13:46 ilias
drwxrwxr-x+ 15 apache apache 4096 Sep  4 13:46 ilias5

अनुमति देखें:

[user_in_apache_group@web02 html] getfacl ilias5
# file: ilias5
# owner: apache
# group: apache
user::rwx
user:user_in_apache_group:r-x
group::rwx
mask::rwx
other::r-x

तो इसका मतलब है कि मेरे उपयोगकर्ता (user_in_apache_group) के पास उस फ़ोल्डर के लिए कोई लिखित अनुमति नहीं है।

समाधान क्या है @techtonik ने कहा, उपयोगकर्ता के लिए लेखन अनुमति जोड़ें:

[user_in_apache_group@web02 html]$ sudo setfacl -m u:user_in_apache_group:rwx ./ilias5

अनुमति फिर से जांचें:

[user_in_apache_group@web02 html] getfacl ilias5
...
user:user_in_apache_group:rwx
...

आशा करता हूँ की ये काम करेगा। ;)


8

लिनक्स एसीएल (एक्सेस कंट्रोल लिस्ट) का उपयोग करें - यह अनुमति प्रणाली का अधिक बारीक-बारीक संस्करण है,

setfacl -R -m 'group:staff:rwx' -m 'd:group:staff:rwx' /usr/local/lib/R/

यह निर्देशिका के लिए सक्रिय अधिकारों और डिफ़ॉल्ट रूप से निर्मित अधिकारों के लिए दोनों सेट करता है।

यदि आपने अभी-अभी staffसमूह में खुद को जोड़ा है, तो यह बिना फिर से काम करने में विफल रहता है , लेकिन आप केवल वर्तमान सत्र के लिए ही अनुमति दे सकते हैं।


5

मेरे पास एक मुद्दा था जब एक उपयोगकर्ता /foo/bar/bazनिर्देशिका तक पहुंच नहीं सकता था, जब उसके पास अनुमति थी, क्योंकि उसके पास barनिर्देशिका तक पहुंच नहीं थी ।


-2

जाँच करें कि क्या उस फ़ाइल में सामग्री जोड़ने से पहले आपके मूल निर्देशिका की अनुमति है

sudo chmod -R 777 /yourDir/file.log
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.