2012-08-24 15 views
48

PHP में umask(0); का उपयोग करने का उद्देश्य क्या है?php umask (0) उद्देश्य

मैंने इसे कुछ बार देखा है, और दस्तावेज़ीकरण से यह पता नहीं लगा सकता कि यह ठीक से क्या करता है।

क्या कोई इसे समझा सकता है और जब यह उपयोग करने में उपयोगी होगा?

+0

http://php.net/manual/en/function.umask.php यह आपको बाहर निकालना चाहिए, यह मूल रूप से फ़ाइल निर्माण के लिए है। – Sammaye

+5

@ सैमये उन्होंने कहा कि दस्तावेज़ीकरण वास्तव में उनकी मदद नहीं करता था। –

+1

उमास्क के लिए PHP मैनुअल में प्रलेखन अविश्वसनीय रूप से खराब है। – Adam

उत्तर

43

umask से 0000 (या केवल 0) का अर्थ है कि बनाई गई नई बनाई गई फ़ाइलों या निर्देशिकाओं में प्रारंभिक रूप से निरस्त करने के लिए कोई विशेषाधिकार नहीं होगा। दूसरे शब्दों में, शून्य के umask सभी फ़ाइलों को 0666 या विश्व-लेखन योग्य के रूप में बनाया जाएगा। umask के दौरान बनाई गई निर्देशिकाएं 00777 होगी।

आमतौर पर जब आप umask(0) देखते हैं तो इसे chmod() पर कॉल द्वारा सीधे बनाया गया है ताकि नव निर्मित फ़ाइल या निर्देशिका पर आवश्यक अनुमतियों को स्पष्ट रूप से सेट करने के लिए विश्व-लेखन योग्य के अलावा कुछ और सेट किया जा सके।

उमास्क को शून्य पर सेट करते समय सावधानी बरतें! यह खतरनाक हो सकता है और ज्यादातर फाइल बनाने के लिए केवल उपयोगी होता है जिसे बाद में वेब सर्वर द्वारा लिखा जाना चाहिए, जब वेब सर्वर एक अलग उपयोगकर्ता के रूप में चलता है जो "असली" उपयोगकर्ता को फ़ाइलों को संशोधित करने में सक्षम होना चाहिए वेब सर्वर द्वारा बनाया गया। अन्यथा, सिस्टम का डिफॉल्ट उमास्क 0022 जैसा कुछ हो सकता है, फ़ाइल स्वामी द्वारा लिखने योग्य लेकिन अन्य नहीं। उस स्थिति में, यदि आपने सामान्य उपयोगकर्ता खाते के तहत मशीन में लॉग इन किया है, तो PHP के तहत वेब सर्वर द्वारा बनाई गई फ़ाइल आपके द्वारा लिखने योग्य नहीं होगी।

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

php > umask(0); 
// Should get created as 666 
php > touch('file1.txt'); 

// "2" perms revoked from group, others, gets created as 644 
php > umask(022); 
php > touch('file2.txt'); 

// All revoked (2,4) from group, others, gets created as 600 
php > umask(066); 
php > touch('file3.txt'); 

-rw-rw-rw- 1 me group  0 Aug 24 15:34 file1.txt 
-rw-r--r-- 1 me group  0 Aug 24 15:35 file2.txt 
-rw------- 1 me group  0 Aug 24 15:37 file3.txt 
3

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

umask() sets PHP's umask to mask & 0777 and returns the old umask 

यह मूल रूप से जो कुछ भी आप ओएस लिनक्स जैसे पर में डालने के लिए डिफ़ॉल्ट लिखने की अनुमति सेट और फिर पुराने रिटर्न ताकि आप इसे वापस रीसेट कर सकते हैं। यह PHP प्रक्रिया पर ही लागू होता है।

दस्तावेज़ पृष्ठ पर टिप्पणियां: http://php.net/manual/en/function.umask.php उदाहरण के द्वारा स्पष्ट करेंगे।

संबंधित मुद्दे