किसी फ़ाइल के मेरे पास gid (समूह) बदलने की अनुमति से इनकार किया गया है


17

ऐसा लगता है कि मैं अभी भी अनुमतियों के काम करने के तरीके के बारे में कुछ चीजें याद करता हूं। मैं डेबियन 7 सिस्टम btw पर हूं। अभी मेरे पास यह फ़ाइल है, जिसे मैंने डाउनलोड किया है और यह myuser:myuserउसी की है, जो उपयोगकर्ता और समूह दोनों के लिए सेट है। यह मेरी $HOMEनिर्देशिका में भी रहता है क्योंकि मैंने इसे डाउनलोड किया है।

अब तक सब ठीक है। अब मैं इस फाइल को पीसी के कुछ अन्य उपयोगकर्ताओं के साथ साझा करना चाहता हूं और इसके लिए मैं फ़ाइल के समूह के स्वामित्व को "उपयोगकर्ताओं" को समूह में बदलना चाहता हूं। हालांकि जो विफल रहता है:

nass@quarx:~/xmas_carol$ chgrp -R users * 
chgrp: changing group of movie.mov': Operation not permitted

और फ़ोल्डर की सामग्री हैं:

-rwxr-xr-x 1 nass nass 2482411461 Feb  6 03:57 movie.mov

अनुमतियों के साथ क्या हो रहा है, इसके बारे में मैं फ़र्ज़ी हूं। क्या कोई समझा सकता है?


है /xmas_carolसाम्बा / NFS माउंट?
राहुल पाटिल

समाधान है setfacl(यदि फ़ाइल सिस्टम में ACL है)। देख unix.stackexchange.com/questions/101263/...
Ctrl-Alt-delor

जब तक मुझे एहसास नहीं हुआ कि मेरे पास उस समूह में शामिल होने तक एक ही त्रुटि थी। दूसरे शब्दों में, प्रभावी होने के लिए मुझे लॉगआउट करना था, लॉग इन करना था।
जोनाथन

जवाबों:


22

आपका उपयोगकर्ता संभवतः usersसमूह का सदस्य नहीं है , इसलिए आपको उस समूह को फ़ाइल देने का अधिकार नहीं है। उदाहरण देकर स्पष्ट करने के लिए:

$ groups
terdon sudo netdev fuse vboxsf vboxusers

$ ls -l file
-rw-r--r-- 1 terdon terdon 604 Feb  6 03:04 file
$ chgrp users file
chgrp: changing group of ‘file’: Operation not permitted
$ chgrp vboxusers file
$ ls -l file
-rw-r--r-- 1 terdon vboxusers 604 Feb  6 03:04 file

यह व्यवहार POSIX चश्मा में उल्लिखित है :

केवल फ़ाइल के स्वामी या उपयुक्त विशेषाधिकार वाले उपयोगकर्ता किसी फ़ाइल के स्वामी या समूह को बदल सकते हैं।

कुछ कार्यान्वयन उपयोगकर्ता को उचित विशेषाधिकार के साथ चंग के उपयोग को प्रतिबंधित करते हैं जब निर्दिष्ट समूह प्रभावी समूह आईडी या कॉलिंग प्रक्रिया के पूरक समूह आईडी में से एक नहीं होता है।

इसका मुख्य कारण यह है कि यदि आप किसी समूह के सदस्य नहीं हैं, तो आपको उस समूह की पहुँच प्राप्त करने में सक्षम नहीं होना चाहिए। अनुमतियों पर यह उत्तरchown भी प्रासंगिक है।

परंपरागत रूप से, साझा सिस्टम पर, आपके पास एक usersसमूह होता है, जिसमें सभी नियमित उपयोगकर्ता होते हैं और यह प्रत्येक उपयोगकर्ता का प्राथमिक समूह होता है। इस तरह, फ़ाइलें usersसमूह के स्वामित्व में बनाई जाती हैं और सभी उपयोगकर्ता उन्हें पढ़ सकते हैं।

वैसे भी, चूंकि यह तरीका नहीं है कि डेबियन-आधारित डिस्ट्रोस इन दिनों स्थापित किए जाते हैं, इसलिए आपकी फ़ाइल के लिए एक विशिष्ट उपयोगकर्ता को देने का तरीका या तो होगा

  1. फ़ाइल / निर्देशिका के समूह के स्वामित्व को उस समूह में बदलें जो आप और अन्य उपयोगकर्ता दोनों के सदस्य हैं;

  2. तदनुसार फ़ाइल / निर्देशिका की अनुमतियाँ बदलें:

    $ chmod 755 /home/terdon
    $ ls -ld /home/terdon
    drwxr-xr-x 170 terdon terdon 491520 Apr 20 13:43 /home/terdon/
    

    यह निर्देशिका को हर किसी के लिए सुलभ बना देगा।


4

हाल के UNICes (और "हाल के" का यहां व्यापक अर्थ है), आप उन फ़ाइलों के समूह के स्वामित्व को उस समूह में नहीं बदल सकते, जिनके आप सदस्य नहीं हैं। आपके जैसे उपयोग-मामलों के लिए, विभिन्न UNIX फ्लेवर के लिगेसी संस्करणों ने इसका समर्थन किया, लेकिन यह एक सुरक्षा समस्या साबित हुई।

समूह के स्वामित्व को विदेशी समूहों में बदलने में सक्षम होने की समस्या काफी तुच्छ है: यदि फ़ाइल सिस्टम जिस फ़ाइल पर रहता है वह समूह कोटा सक्षम है, दुर्भावनापूर्ण इरादे वाला उपयोगकर्ता केवल विदेशी समूह का कोटा भर सकता है, जिससे उपयोगकर्ताओं के लिए यह असंभव है इस समूह के साथ प्राथमिक समूह आईडी के रूप में किसी भी आगे की फाइल बनाने के लिए। यह आसानी से पहले से चल रही प्रक्रियाओं को भी प्रभावित कर सकता है और "पूर्ण डिस्क" के कारण उन्हें मरने का कारण बना सकता है।

अपनी समस्या को दरकिनार करने के लिए (कम से कम) दो संभावनाएँ हैं: सबसे पहले, आप अपने सिस्टम के सुपर उपयोगकर्ता से अपने लक्षित समूह को अपने पूरक समूहों की सूची में जोड़ने के लिए कह सकते हैं। बेशक यह केवल सीमित अर्थ रखता है यदि आप अन्यथा इस समूह से कोई संबंध नहीं रखते हैं।

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

$ setfacl -m group:thegroupsname:rwx the_file(s)

आपको निष्पादन (एक नियमित फ़ाइल पर) देने की ज़रूरत नहीं है, और शायद दूर लेखन अनुमति नहीं देना चाहते हैं।
ctrl-alt-delor-

2

यह हो सकता है क्योंकि अपरिवर्तनीय बिट सेट है। फ़ाइल विशेषताएँ चलाने की सूची प्राप्त करें

lsattr /path/to/your/file

अगर मैं प्रकट होता हूं , तो अपरिवर्तनीय विशेषता सेट हो जाती है और कोई भी फ़ाइल (यहां तक ​​कि रूट) को संशोधित नहीं कर सकता है।

विशेषता को निकालने के लिए आपको रूट के रूप में चलना चाहिए

chattr -i /path/to/your/file

अधिक फ़ाइल सिस्टम विशेषताएँ देखने के लिए मैन पेज पढ़ें

man chattr
man lsattr

अच्छी बात है, लेकिन इस सवाल से मुझे लगता है कि प्रश्नकर्ता के पास सुपर उपयोगकर्ता अधिकार नहीं हैं, जिसे आपको अपरिवर्तनीय ध्वज (कम से कम सभी फाइल सिस्टमों पर जो मैं इतने लंबे समय से आया था) को साफ करने की आवश्यकता है। इसके अलावा, चूँकि उन्होंने सिर्फ एक पुरालेख निकाला था, इसलिए शायद यह मुद्दा नहीं है क्योंकि प्रयुक्त संग्रहकर्ता को इसे (वही समस्या) सेट करने की आवश्यकता होगी।
एंड्रियास विस्से

0

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

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