क्या उपयोगकर्ता के स्वामित्व वाली निर्देशिका से कुछ फ़ाइलों को हटाने से रोकने का कोई तरीका है?


42

मान लें कि उपयोगकर्ता के पास Directory1 है और इसमें File1 File2 CantBeDeletedFile शामिल है, तो कैसे करें ताकि उपयोगकर्ता को CantBeDeletedFile को हटाने की अनुमति कभी न मिले ?

अगर मैं Directory1 के स्वामित्व को बदल देता हूं और लेखन अनुमतियाँ हटा देता हूं तो उपयोगकर्ता किसी भी फ़ाइल को हटाने में सक्षम नहीं होंगे। वे नई फाइलें आदि भी नहीं जोड़ पाएंगे।

मैं बस कुछ फ़ाइलों को सेट करने में सक्षम होना चाहता हूं, जो कभी भी हटाए नहीं जाएंगे।

अधिक विशिष्ट विवरण।

मैं उपयोगकर्ता प्रोफाइल बना रहा हूं। मैं उनके डेस्कटॉप में एप्लिकेशन लॉन्चर फ़ाइलें बना रहा हूं । इसलिए मैं कुछ लॉन्चर फ़ाइलें (.desktop) सेट करना चाहता हूं और उन्हें बनाना चाहता हूं ताकि उपयोगकर्ता केवल उन्हें लॉन्च कर सकें और वे न केवल नाम बदल सकें और न ही हटा सकें।

वर्तमान में यदि उपयोगकर्ता निर्देशिका का मालिक है जिसमें कोई भी फ़ाइल है। वह हटा सकता है।

यदि सभी * निक्स के लिए कोई सामान्य तरीका नहीं है, तो यह लिनक्स और ext4 FS है।

जवाबों:


40

(मैं उपयोगकर्ताओं के घर को नापसंद करना पसंद करता हूं, मुझे लगता है कि उन्हें जो कुछ भी वे घरों के साथ करना चाहते हैं उन्हें करने की अनुमति दी जानी चाहिए ... लेकिन फिर भी ...)

यह लिनक्स (कम से कम) पर काम करना चाहिए। मैं मान रहा हूँ कि userपहले से ही समूह का सदस्य है user। एक समाधान के स्वामित्व को बदलने Directory1और निर्देशिका पर चिपचिपा सा सेट करने के लिए है:

chown root:user Directory1
chmod 1775 Directory1

फिर उपयोग करें:

chown root Directory1/CantBeDeletedFile

अब, userचिपचिपी बिट won't के कारण इस फ़ाइल को निकालने में सक्षम नहीं होंगे। userअभी भी में जोड़ने के लिए / अपने स्वयं फ़ाइलों को हटा दें सक्षम है Directory1। लेकिन ध्यान दें कि वे हटा नहीं पाएंगे Directory1क्योंकि यह कभी खाली नहीं होगा।

-
1. जब चिपचिपा बिट एक डायरेक्टरी पर इनेबल होता है, तो यूजर्स (ओनर के अलावा) केवल एक डायरेक्टरी के अंदर ही अपनी फाइल्स निकाल सकते हैं। इसका उपयोग उन निर्देशिकाओं पर किया जाता है, /tmpजिनकी अनुमतियां 1777= हैं rwxrwxrwt


मुझे भी नापसंद है, लेकिन उपयोगकर्ता लिनक्स की दुनिया में नए हैं। अगर वे एक लांचर को हटा दें तो संयोग से वे हमारे तकनीकी समर्थन को स्पैम करना शुरू कर रहे हैं :)
bakytn

धन्यवाद यह काम करता है! मुझे यकीन नहीं है कि मैं कैसे आगे बढ़ूंगा। गपशप के साथ या इस तरह से। अगर आपके रास्ते में है। मैं अभी भी निर्देशिका को रूट के रूप में हटा सकता हूं। ऊपरी समाधान (chattr) के साथ रूट भी फ़ोल्डर को हटा नहीं सकता है।
bakytn

@bakytn: यह सिर्फ एक सावधानी है या क्या आपने वास्तव में समर्थन कॉल प्राप्त किया है? क्योंकि अधिकांश newbies शायद उन फाइलों के साथ गड़बड़ करने से डरेंगे, जिन्हें वे नहीं जानते हैं।
रेयान

@ लाइ रयान 100% यकीन है कि वे समर्थन के लिए कॉल करेंगे। लेकिन हाँ, वर्तमान में यह सिर्फ एक सावधानी है।
बाकिटन

जल्द ही या बाद में प्रशिक्षण के पहिये उतरने पड़ेंगे ... और अगर उन्होंने बाइक चलाना नहीं सीखा है तो दुर्घटना कुछ तो होगी। मैं इस जवाब से सहमत हूं, शायद अनुपयोगी ऑन-लाइन मदद और डिब्बाबंद स्पैम के पूरक हैं "यदि आपने गलती से ThisDesktopFile को हटा दिया है, तो पहले निकटतम दीवार पर जाएं और अपने सिर को 3 बार (भाग्य के लिए) के खिलाफ कड़ी टक्कर दें , और फिर cp /here/is/the/master/ThisDesktopFile $HOMEहस्ताक्षर किए।" : बीओएफएच "
वॉनब्रांड

63

फ़ाइल को iविशेषता के साथ अपरिवर्तनीय बनाएं ।

chattr +i file.desktop

देखने के man chattrबारे में अधिक जानकारी के लिए।


8
मैं इस नोट को जोड़ता हूं क्योंकि मैं उल्लेखित मैन पेज से इसे हटाने में असमर्थ था: chattrकेवल ext2 / ext3 / ext4 फाइल सिस्टम पर काम करता है।
मैनटवर्क

यह बहुत अच्छा है! इसने काम कर दिया! धन्यवाद महोदय! सुरुचिपूर्ण समाधान, लेकिन एक सीमा। यहां तक ​​कि रूट उन फ़ाइलों को हटा नहीं सकता है, जो पहले उसे बिना बदले में बदल सकती हैं। लेकिन यह वास्तव में बहुत अच्छा है। निश्चित नहीं था कि कौन सा उत्तर स्वीकार करना है। अधिक सामान्य तरीके से स्वीकार किया जाता है, लेकिन कम तेजी से
bakytn

@manatwork यह कम से कम XFS पर भी काम करता है, मुझे लगता है कि कुछ अन्य फाइल सिस्टम भी इन विशेषताओं का समर्थन करते हैं।
रुस्लान

इस कमांड को 'पूर्ववत' करने के लिए, बस करेंchattr -i file.desktop
GreenRaccoon23

1
मैं बस लिनक्स पर zfs पर यह परीक्षण किया और यह काम किया। मैं baculaफ़ोल्डर को अनदेखा करने के लिए बैकअप प्रोग्राम को निर्देश देने के लिए उपयोग की गई फ़ाइल को हटाने से रोकना चाहता था ।
drescherjm

2

मुझे नहीं लगता कि यूनिक्स फ़ाइल अनुमतियों के साथ एक व्यक्तिगत फ़ाइल को हटाने से रोकने का एक तरीका है, लेकिन मैं एक वर्कअराउंड के बारे में सोच सकता हूं: एक डेमन लिखो जो इसे हटाए जाने पर इसे बदल देता है। inotify-toolsयदि आप लिनक्स पर हैं तो इस तरह की चीजों के लिए एकदम सही हैं।

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


0

एक सरल

chmod -i filename

हटाए जाने से उस फ़ाइल को "सुरक्षित" कर देगा।

rm filename
rm: remove write-protected regular file 'filename'?

आप अभी भी इसे हटा सकते हैं, लेकिन कम से कम आपको निश्चित रूप से पर्याप्त होना चाहिए कि आप क्या कर रहे हैं।

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