निष्पादन योग्य बिट सेट के साथ निर्मित smbfs माउंटेड फ़ाइल में फाइलें क्यों होती हैं?


14

मैंने smbmount कमांड का उपयोग करते हुए एक सांबा शेयर लगाया:

$ sudo smbmount \\\\foo\\bar /mnt/bar -o user=tom

जब मैं नई फाइलें बनाता हूं, तो वे मालिक, समूह और दुनिया के लिए निष्पादन योग्य बिट सेट के साथ बन जाते हैं। उदाहरण के लिए

$ touch hello.txt 
$ ls -la hello.txt
-rwxr-xr-x 1 root root 0 Dec  2 12:28 hello.txt

NFS माउंटेड शेयर पर बनाई गई एक ही फाइल बिना किसी निष्पादन योग्य बिट सेट के सही अनुमतियाँ सेट करती है।

ये क्यों हो रहा है? इसका समाधान कैसे किया जा सकता है?

जवाबों:


11

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

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

सांबा / CIFS प्रोटोकॉल के विभिन्न एक्सटेंशन हैं जो इसे यूनिक्स उपयोग के लिए अधिक अनुकूल बनाते हैं। सर्वर कॉन्फ़िगरेशन में यूनिक्स एक्सटेंशन को सक्षम करने का प्रयास करें:

[global]
unix extensions = yes

दुर्भाग्य से मेरी कंपनी इंट्रानेट में, सर्वर को कॉन्फ़िगर करने के लिए मेरे पास पहुंच नहीं है। शायद, लिनक्स क्लाइंट पर एनएफएस का उपयोग करके माउंट करना सबसे अच्छा होगा। बड़ी समस्या विंडोज क्लाइंट पर है, जहां एनएफएस को कॉन्फ़िगर करना गर्दन में दर्द है।
vivekian2

@ vivekian2 वास्तव में, यदि आपके पास विकल्प है, तो मैं निश्चित रूप से एक लिनक्स क्लाइंट पर एनएफएस और विंडोज क्लाइंट पर एसएमबी का उपयोग करने की सलाह देता हूं।
गिल्स एसओ- बुराई को रोकें '

10

यह आपके मुद्दे की तरह लगता है, शीर्षक: नकल की गई फाइलें सांबा / सीआईएफएस पर थोड़ा अमल करती हैं

अंश

फाइल को rw-r ----- के साथ CIFS माउंटेड वॉल्यूम पर कॉपी करने के बाद, rwxr ----- हो जाता है। तो यह निष्पादित बिट प्राप्त कर रहा है:

पृष्ठ में और नीचे, की स्थापना map archive = noमें /etc/samba/smb.conf:

अंश

  [Global]
  <snip>
  map archive = no
  <snip>

यह निश्चित रूप से निष्पादन योग्य ध्वज प्राप्त करने वाली विंडोज से सहेजी गई फ़ाइलों की समस्या को हल करता है। धन्यवाद! एक अन्य पागल डिफ़ॉल्ट, क्या किसी ने पिछले 2 दशकों में आर्काइव झंडे का इस्तेमाल किया है? :)
रेनेक्स

4

आप कोशिश कर सकते हैं: mount -t cifs

Google "माउंट cifs" उपयोग के लिए, यह समझना मुश्किल नहीं है, लेकिन आप -o ध्वज का उपयोग करके विकल्प सेट करना चाहते हैं:

uid =, gid =, आरडब्ल्यू, noperm, dir_mask = 0775, file_mask = 0664

उपयोगकर्ता और समूह आईडी के होते हैं, जैसे कि पाठ उपनाम नहीं। ये विकल्प सुनिश्चित करेंगे कि आपके पास r / w पहुंच है, अनुमतियाँ माउंट नहीं सर्वर द्वारा नियंत्रित की जाती हैं, और विशेष रूप file_mask=0664से यह सुनिश्चित करेगी कि आपकी फाइलें निष्पादन योग्य नहीं हैं। इसके शीर्ष पर आप स्थानीय निर्देशिका के रूप में अपने सांबा शेयरों के साथ काम करने में सक्षम होंगे।


सांबा के हाल के संस्करण में एक का उपयोग करना पड़ सकता हैfile_mode=0644,dir_mode=0755
जोकेस्टर

चेतावनी: CIFS माउंट विकल्प 'dmask' को हटा दिया गया है। इसके बजाय 'dir_mode' का उपयोग करें। चेतावनी: CIFS माउंट विकल्प 'fmask' को हटा दिया गया है। इसके बजाय 'file_mode' का उपयोग करें।
हबबिटस

4

आप यह पता लगा सकते हैं कि यह सांबा वेब साइट पर फ़ाइल अनुमतियों और Attributes MS-DOS और यूनिक्स अनुभाग के तहत निम्नलिखित स्पष्टीकरण से क्यों हो रहा है :

https://www.samba.org/samba/docs/using_samba/ch08.html

एमएस-डॉस फाइलसिस्टम के लिए सिस्टम, हिडन और आर्काइव बिट्स को मैप करना है।

MS-DOS फाइलसिस्टम निष्पादन योग्य बिट्स का उपयोग नहीं करता है, इसलिए यूनिक्स फाइल सिस्टम पर तीन निष्पादन योग्य बिट्स MS-DOS फाइल सिस्टम के लिए सिस्टम, हिडन और आर्काइव बिट्स का प्रतिनिधित्व करने के लिए पुन: उपयोग किए जाते हैं।

इसलिए जब आप ls -lयूनिक्स में फ़ाइल अनुमतियों का उपयोग कर रहे हैं, तो आप एमएस-डॉस (या विंडोज) के लिए उपयुक्त फ़ाइल अनुमतियों को देख रहे हैं, यह ध्यान में रखते हुए कि यूनिक्स में तीन निष्पादन योग्य बिट्स एमएस-डॉस के लिए सिस्टम, हिडन और आर्काइव बिट्स का प्रतिनिधित्व करते हैं।

में smb.conf, हालांकि, आप इस मानचित्रण के साथ एक शेयर के लिए बंद कर सकते हैं:

map archive = no
map system = no
map hidden = no

और मोड को फ़ाइलों के निर्माण पर बाध्य करें:

force create mode = 0660

यह इतना आसान निकला ... स्पष्टीकरण के लिए धन्यवाद!
anton_rh

1

मैं एक QNAP TS439 का उपयोग करता हूं - और यह समस्या निष्पादन योग्य फ़ाइलों के साथ थी।

हालाँकि मुझे अपनी /etc/fstabफाइल में निम्नलिखित का उपयोग करना था

//192.168.0.1/audio /media/audio cifs credentials=/home/cheese/.smbcredentials,uid=1000,file_mode=0664,iocharset=utf8  0  0 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.