केवल संलग्न करने के लिए फ़ाइल का उपयोग प्रतिबंधित करें


12

मेरे पास लॉग फ़ाइलों के साथ एक निर्देशिका है और मैं उपयोगकर्ताओं द्वारा लॉन्च की गई स्क्रिप्ट से लॉग डाल रहा हूं। इस मामले में syslog के साथ लॉगिंग संभव नहीं है। (गैर-डेमॉन rsync)

मैं चाहता हूं कि उपयोगकर्ताओं के पास केवल लॉग फाइल पर अनुमतियाँ हों। समस्या यह है कि लिखने की अनुमति को आगे प्रतिबंधित किया जाना चाहिए, ताकि उपयोगकर्ता (स्क्रिप्ट) केवल उस फ़ाइलों को संलग्न कर सकें । अंतर्निहित फाइलसिस्टम XFS है।

निम्नलिखित काम नहीं करता है:

# chattr +a test.log
chattr: Inappropriate ioctl for device while reading flags on test.log

क्या इसके लिए कोई और उपाय है? आपके संकेत के लिए धन्यवाद।


क्या आप सुनिश्चित हैं कि यह XFS है? chattr +aमेरे लिए यहाँ काम करता है (3.2 कर्नेल)। ध्यान दें कि आपको उपयोग करने के लिए रूट होने की आवश्यकता है chattr(एक $संकेत गैर-सुपरस्यूसर का सुझाव देता है), हालांकि आपको एक अलग त्रुटि संदेश मिलेगा यदि chattr +aसमर्थित था और आप रूट नहीं थे।
स्टीफन चेज़लस


विभाजन पर माउंट विकल्प क्या है? यह संभवतः इसे xattr का उपयोग करके संग्रहीत कर सकता है, जिसे प्रासंगिक माउंट विकल्प की आवश्यकता हो सकती है? (एक्सएफएस के लिए साज़िशनेशन या तो इसके बारे में ज्यादा उल्लेख नहीं करता है ...)
गर्ट वैन डेन बर्ग

यह एस एफ पर बंद कर दिया है, इसलिए मैं जा रहा हूँ इसे यहाँ खोलने
माइकल Mrozek

जवाबों:


8

chattrउपयोगिता ext2 / ext3 / ext4 फ़ाइल सिस्टम के लिए लिखा है। यह फ़ाइलों पर ioctls का उत्सर्जन करता है , इसलिए यह तय करना है कि उनके साथ क्या करना है। नए लिनक्स कर्नेल में XFS ड्राइवर समान FS_IOC_SETFLAGSioctl का समर्थन करता है जैसे कि [234] एपेंड-ओनली जैसे झंडे को नियंत्रित करने के लिए, लेकिन आप एक पुराने कर्नेल को चला सकते हैं जहां यह नहीं होता है (CentOS?)। xfs_ioइसके बजाय उपयोगिता का उपयोग करने का प्रयास करें :

echo chattr +a | xfs_io test.log

ध्यान दें कि, एक्सएफएस के लिए जैसे [234], केवल रूट ही एपेंड-ओनली फ्लैग को बदल सकता है (अधिक सटीक रूप से, आपको CAP_LINUX_IMMUTABLEक्षमता की आवश्यकता है)।


1

क्या आपके पास ऐसा करने की अनुमति है? से man 1 chattr:

`ए 'विशेषता सेट के साथ एक फ़ाइल केवल लिखने के लिए परिशिष्ट मोड में खुली हो सकती है। केवल CAPUSINUX_IMMUTUT क्षमता वाले सुपरयुजर या एक प्रक्रिया इस विशेषता को सेट या साफ़ कर सकती है।


0

वैकल्पिक रूप से, आप SELinux का उपयोग करके समान प्राप्त कर सकते हैं, संभावना है कि यह सक्षम है और चल रहा है यदि आप Red Hat संगत डिस्ट्रो का उपयोग कर रहे हैं। यह हर फाइलसिस्टम पर काम करता है, SELinux डिस्लेक्टेड ऑपरेशंस को प्रोसेस करने से रोकता है।

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

मेरे पास इस बात में एक परिशिष्ट-केवल फ़ाइल नियम लिखने का एक उदाहरण है: https://www.youtube.com/watch?v=zQcYXJkwTns

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