संपादन के बाद फ़ाइल का स्वामित्व कैसे बनाए रखें?


11

मेरा प्रश्न इस अन्य के समान है , सिवाय इसके कि कोई नई बनाई गई फाइलों के बारे में पूछे।

मेरे यूनिक्स बॉक्स में, उपयोगकर्ता ऐलिस , बॉब और टॉमकैट समूह टॉमकैट में हैं

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

मैंने इस फ़ाइल की अनुमतियों को समूह द्वारा पठनीय और लिखने योग्य में बदल दिया है ताकि एलिस और बॉब फाइलों को संपादित कर सकें।

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

प्रश्न: क्या अनुमति बदलना संभव है ताकि ऐलिस और बॉब फाइलों को संपादित कर सकें, बिना उनका स्वामित्व बदले?

किसी फ़ाइल को संपादित करने से उसका स्वामित्व कैसे भी बदल जाता है?


क्या आपका लक्ष्य यह सुनिश्चित करना है कि टॉमकैट फाइलों का मालिक है या यह सुनिश्चित करने के लिए है कि: टॉमकैट सर्वर काम करना जारी रखे; ऐलिस और बॉब दोनों फाइलों को संपादित करना जारी रख सकते हैं, और यह कि सुरक्षा बनी हुई है?
ctrl-alt-delor

1
मुझे लगता है कि जिस तरह से आपके सवाल का जवाब दिया गया है, उसके आधार पर उपयोगकर्ता 'टोमैट' के तहत टॉमकैट सेवा चला रहा है। यह संभवत: वांछनीय नहीं है क्योंकि टॉमकैट के एक शोषण के परिणामस्वरूप अपने स्वयं के कॉन्फ़िगरेशन को अपने सर्वर के बिट्स को बेनकाब करने के लिए फिर से लिखा जा सकता है जो आप इरादा नहीं कर सकते हैं। आपको एक अलग समूह का उपयोग करने पर विचार करना चाहिए जो कॉन्फ़िगर लिख सकता है, जबकि टॉमकैट समूह पढ़ सकता है, लेकिन लिख नहीं सकता।
एड नेविल

जवाबों:


17

फ़ाइल का परिणामी उपयोगकर्ता इस बात पर निर्भर करता है कि संपादक क्या करता है। कुछ संपादक फ़ाइल को काट-छाँट करके सहेजते हैं, और फ़ाइल पर (बिना इनकोड बदले) लिख देते हैं। और कुछ संपादकों एक और नाम के लिए फ़ाइल का नाम बदलें ( fileकरने के लिए file~हमेशा की तरह है), और मूल के नाम के साथ एक नई फ़ाइल बनाना। मूल फ़ाइल को संशोधित करना मालिक को एक समान रखता है, एक नया बनाना एक नई फ़ाइल बनाता है जिसके पास प्रक्रिया का यूआईडी है।

संपादकों की मैं डेबियन पर है, nanoऔर joe, साथ ही nviऔर vim(में कम से कम संस्करण vim-tiny) में जगह अधिलेखित करने के लिए लग रहे हैं। हालांकि मुझे लगता है vimऔर Emacs शायद वे क्या कर में विन्यास कर रहे हैं।


स्टीफन परमाणु अद्यतन के बारे में टिप्पणी करते हैं । फिर से जगह बनाने के साथ समस्या यह है कि फ़ाइल को शून्य लंबाई तक काट दिया जाता है, फिर लिखा जाता है। सभी डेटा लिखे जाने से पहले एक और प्रक्रिया इसे खोल और पढ़ सकती है।

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


से फाइल अनुमति दृष्टिकोण से, एक ही फाइल (inode) से अधिक की बचत फ़ाइल स्वयं (लेकिन निर्देशिका) के लिए लेखन पहुँच की आवश्यकता है और इसका पुनः नामकरण और एक नया बनाने डायरेक्ट्री तक पहुंच (लेकिन मूल फ़ाइल के लिए नहीं लिखने की आवश्यकता है )।

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


6
बनाना और नाम बदलना भी एकमात्र तरीका है जिससे यह सुनिश्चित किया जा सके कि फ़ाइल POSIX शब्दार्थ का उपयोग करके परमाणु रूप से अपडेट की गई है।
स्टीफन किट

अच्छी व्याख्या।
मियां असबत अहमद

13

जैसा कि ilkkachu द्वारा समझाया गया है , यदि उपयोग किए जा रहे संपादक को सहेजते समय एक नई फ़ाइल बनाई जाती है , तो फ़ाइल के स्वामी को नियंत्रित करने का कोई तरीका नहीं है । क्या आप वास्तव में परवाह करते हैं, हालांकि यह सुनिश्चित करना है कि फ़ाइलें टॉमकैट द्वारा पठनीय रहें; आप यह सुनिश्चित कर सकते हैं कि उनका समूह है tomcat(और वे अपने समूह द्वारा पठनीय हैं), और वह setgidमूल निर्देशिका पर बिट सेट करके नई फाइलों पर लागू किया जा सकता है :

chmod g+s .

इस प्रकार, यदि bobकोई फ़ाइल संपादक का उपयोग करके संपादित करता है जो फ़ाइल को फिर से बनाता है, तो संपादित फ़ाइल का स्वामित्व समाप्त हो bob:tomcatजाएगा और टॉमकैट अभी भी इसे पढ़ सकेगा ( umaskकम से कम एक ठेठ के साथ )। जब तक मूल निर्देशिका tomcatसमूह द्वारा लिखने योग्य है, तब तक उस समूह का कोई भी उपयोगकर्ता निर्देशिका में फ़ाइलों को संपादित करने में सक्षम होगा (यदि केवल उन्हें फिर से बनाकर)।

मैं हालांकि आपकी प्रक्रियाओं को बदलने की सलाह दूंगा; आपको शायद उस स्थान पर सीधे फ़ाइलों को संपादित नहीं करना चाहिए जो वे टॉमकैट द्वारा पढ़ी गई हैं। आदर्श रूप से, फ़ाइलों को किसी प्रकार के VCS में बनाए रखा जाएगा और एक अलग प्रक्रिया (संभवतः स्वचालित) द्वारा तैनात किया जाएगा। इस तरह आप इन सभी स्वामित्व मुद्दों से बचते हैं ...


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