एक उपयोगकर्ता दूसरे उपयोगकर्ता की 755 फ़ाइलों को कैसे हटा सकता है?


35

मेरे पास एक बैकअप अपलोड स्क्रिप्ट है जो उपयोगकर्ता का उपयोग करके किसी अन्य सर्वर के लिए एसपीपी की फाइलें है upload। टारगेट सर्वर पर एक अन्य स्क्रिप्ट फिर दूसरे यूजर को चॉइस करता है और फाइल मोड को सेट करता है 755

यदि मैं uploadउपयोगकर्ता का उपयोग करने वाले लक्ष्य सर्वर में SSH करता हूं, तो मैं चर्चित फ़ाइलों को हटाने में सक्षम हूं। क्या उन्हें केवल पढ़ा जाना चाहिए?

यहाँ एक फ़ाइल लक्ष्य सर्वर पर कैसी दिखती है, और उपयोगकर्ता uploadइसे हटाने में सक्षम है।

-rwxr-xr-x 1 maciekish maciekish 650M Nov  1 01:07 2014-11-01-data.tar.bz2

उपयोगकर्ता uploadको केवल उपयोग करके जोड़ा गया था useraddऔर वह maciekishसमूह का हिस्सा नहीं है ।

जब uploadssh के माध्यम से फ़ाइल को हटाने की कोशिश की जा रही है, तो मुझे यह प्रश्न मिलता है कि क्या मैं "सुरक्षित नियमित फ़ाइल लिखना" चाहता हूं या नहीं और मैं Yइसे हटाने और कहने में सक्षम हूं ।


जवाबों:


64

फ़ाइलों कर रहे हैं केवल पढ़ने के लिए; हालाँकि, किसी फ़ाइल को हटाने से इसे संशोधित नहीं किया जाता है, लेकिन केवल मूल निर्देशिका (यह मूल रूप से निर्देशिका सूची से फ़ाइल हटाती है) - और ऐसा लगता है कि आपके पास निर्देशिका के लिए पूर्ण लिखने की अनुमति है।

आप stickyबिट को उर्फ ​​"प्रतिबंधित विलोपन" ध्वज सेट कर सकते हैं - जो मालिक को छोड़कर किसी को भी उस निर्देशिका (जैसे /tmp) में फ़ाइलों का नाम बदलने या हटाने से रोक देगा । ऐसा करने के लिए, chmod o+t *directory*निर्देशिका के स्वामी के रूप में चलाएँ ।


12

एक विशिष्ट यूनिक्स फाइल सिस्टम में, किसी भी फाइल को निर्देशिका प्रविष्टियों की एक मनमानी संख्या द्वारा पहचाना जा सकता है, जिनमें से प्रत्येक "हार्ड लिंक" रखती है।

कार्यान्वयन के दृष्टिकोण से, फ़ाइल के लिए अंतिम निर्देशिका प्रविष्टि (हार्ड लिंक) को हटाने और कई में से एक संदर्भ को हटाने के बीच एक अंतर है। हालाँकि, शब्दार्थ दृष्टिकोण से कोई अंतर नहीं है।

यदि एक फ़ाइल में कई हार्ड लिंक मौजूद हैं, तो उनमें से किसी का उपयोग करके फ़ाइल को लिखना उन सभी द्वारा देखी गई फ़ाइल को बदल देता है। rmकिसी लिंक पर उपयोग करना , हालाँकि, उस लिंक के माध्यम से फ़ाइल को सुलभ नहीं होने का कारण बनता है। फ़ाइल के अन्य लिंक ठीक उसी फ़ाइल को देखना जारी रखते हैं।


3
आमतौर पर हार्ड लिंक के रूप में जाना जाता है।
बॉब

1
@ याकूब: मुझे पता है कि "हार्ड लिंक" शब्द का उपयोग उन संदर्भों का वर्णन करने के लिए किया जाता है जो पहले से मौजूद फ़ाइल में बनाए जाते हैं; उन मामलों में जहां किसी फ़ाइल में कभी भी एक से अधिक संदर्भ नहीं होता है, क्या यह अकेला संदर्भ अभी भी "हार्ड लिंक" कहलाता है?
सुपरकैट

3
कड़ियों में कोई अंतर नहीं है। फ़ाइल A बनाएँ, हार्ड लिंक B बनाएँ, फ़ाइल हटाएँ A B अब फ़ाइल या हार्ड लिंक है? यह कैसे काम करता है, यह समझने के लिए, इसे एन हार्ड लिंक के रूप में देखना बेहतर है और न कि 1 फ़ाइल और (एन -1) हार्ड लिंक के रूप में। किसी फ़ाइल को खोलने पर मौजूद लिंक भी होते हैं।
gnasher729

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

2
@ सुपरफ़ैट यह अविश्वसनीय रूप से सामान्य नहीं है, लेकिन यह सही है। में st_nlink"(हार्ड लिंक की संख्या") फ़ील्ड पर विचार करें struct stat। सीधे शब्दों में कहें, निर्देशिका फ़ाइलों के लिए कड़ी कड़ी रखती है।
hobbs
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.