2026年11月12日

2026年11月12日

WordPress के सुझाए गए परमिशन: डायरेक्टरी 755, फ़ाइल 644, wp-config.php

यह लेख जापानी मूल लेख का स्थानीयकृत संस्करण है। जापानी मूल लेख पढ़ें

WordPress के फ़ाइल परमिशन का मूल नियम है: डायरेक्टरी 755 और फ़ाइल 644। डेटाबेस कनेक्शन की जानकारी वाली wp-config.php को पढ़ने वालों को इससे भी ज़्यादा सीमित रखा जाता है। सिर्फ़ अंक ही नहीं, यह भी देखें कि फ़ाइल का स्वामी (owner) कौन है और PHP किस यूज़र के रूप में चल रहा है। इससे जानकारी लीक होने और “अपडेट न हो पाने”, दोनों से बचाव होता है। इस लेख के सुझाए गए मान नवंबर 2026 में WordPress के आधिकारिक “Hardening WordPress” पेज से जाँचे गए हैं।

परमिशन के अंक कैसे पढ़ें

परमिशन “स्वामी, समूह, बाक़ी सब” के तीन समूहों के लिए होता है और पढ़ना (4), लिखना (2), चलाना (1) का जोड़ होता है।

मान संकेतन अर्थ
755 rwxr-xr-x स्वामी पढ़-लिख सकता है और अंदर जा सकता है, बाक़ी सिर्फ़ पढ़ और अंदर जा सकते हैं (डायरेक्टरी के लिए)
644 rw-r--r-- स्वामी पढ़-लिख सकता है, बाक़ी सिर्फ़ पढ़ सकते हैं (फ़ाइल के लिए)
640 rw-r----- स्वामी पढ़-लिख सकता है, समूह सिर्फ़ पढ़ सकता है, बाक़ी कुछ नहीं कर सकते
600 rw------- सिर्फ़ स्वामी पढ़-लिख सकता है
440 / 400 r--r----- / r-------- लिखना किसी के लिए नहीं, पढ़ना सिर्फ़ स्वामी (और समूह) के लिए

डायरेक्टरी में “चलाना (x)” का मतलब उस डायरेक्टरी के अंदर जाने की अनुमति है। डायरेक्टरी से x हटा देने पर उसके अंदर की फ़ाइलें पढ़ी नहीं जा सकतीं।

WordPress के लिए सुझाए गए मान

लक्ष्य सुझाया गया मान टिप्पणी
डायरेक्टरी 755 (साझा सर्वर पर दूसरों से छिपाना हो तो 750) आधिकारिक स्वचालित अपडेट में भी डायरेक्टरी 755 पर ही एकसमान की जाती हैं
फ़ाइल 644 (उसी स्थिति में 640) आधिकारिक स्वचालित अपडेट में भी फ़ाइलें 644 पर ही एकसमान की जाती हैं
wp-config.php सिर्फ़ खुद और वेब सर्वर पढ़ सकें, ऐसा सीमित रखें आधिकारिक स्पष्टीकरण है “आम तौर पर 400 या 440”। जिस माहौल में PHP फ़ाइल के स्वामी वाले यूज़र के रूप में चलता है, वहाँ 600 या 400 भी चलते हैं
.htaccess 644 अगर पर्मालिंक सेटिंग सेव करके WordPress से इसे लिखवाना है, तो PHP के चलाने वाले यूज़र को इसमें लिखने की अनुमति चाहिए
wp-content/uploads डायरेक्टरी 755, फ़ाइल 644 स्वामी ऐसा रखें जिसमें PHP का चलाने वाला यूज़र लिख सके

777 (सब कोई लिख सके) करने की ज़रूरत नहीं है। साझा सर्वर पर इससे उसी सर्वर के दूसरे उपयोगकर्ता फ़ाइलें बदल सकते हैं।

कुछ रेंटल सर्वर अपने सुझाए गए मान ख़ुद तय करते हैं (क्योंकि हर सर्वर पर PHP चलाने का तरीका अलग होता है)। अगर आपके सर्वर के मैनुअल में मान दिए हैं, तो उन्हें प्राथमिकता दें।

स्वामित्व (ownership) की समझ

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

अगर सब कुछ chown -R www-data:www-data की तरह वेब सर्वर के यूज़र का कर दिया जाए, तो PHP से सभी फ़ाइलें बदली जा सकती हैं। प्लगइन की कमज़ोरी का फ़ायदा उठाए जाने पर नुकसान आसानी से फैलता है, इसलिए पहले मौजूदा स्थिति जाँचकर ही तय करें।

प्लगइन या कोर के अपडेट में “कनेक्शन की जानकारी (FTP का होस्टनेम, यूज़रनेम, पासवर्ड)” माँगी जाती है, तो ज़्यादातर मामलों में कारण यही स्वामित्व का बेमेल होना है। WordPress फ़ाइलें सीधे बदलने का तरीका तभी चुनता है जब PHP की बनाई फ़ाइल का स्वामी और WordPress की फ़ाइलों का स्वामी एक ही हो। अलग होने पर वह FTP के रास्ते अपडेट माँगता है। परमिशन को 777 तक बढ़ाने की जगह स्वामी मिलाकर ठीक करें।

मौजूदा सेटिंग जाँचें

SSH से WordPress की डायरेक्टरी में जाएँ और नीचे की कमांड से मान और स्वामी देखें। पथ अपने माहौल के अनुसार बदलें।

cd /var/www/html

# wp-config.php का मान, स्वामी और समूह
stat -c '%a %U:%G %n' wp-config.php

# वे फ़ाइलें और डायरेक्टरी खोजें जिनमें बाक़ी यूज़र लिख सकते हैं
find . -perm -o=w ! -type l

# uploads के अंदर की PHP फ़ाइलें खोजें (आम तौर पर नहीं होनी चाहिए)
find wp-content/uploads -type f -name '*.php'

वेब से आने पर PHP किस यूज़र के रूप में चलता है, यह सर्वर की सेटिंग (PHP-FPM पूल का user आदि) या रेंटल सर्वर के मैनुअल से जाँचें। यह ज़रूरी नहीं कि वही हो जिससे आपने SSH में लॉगिन किया है।

uploads के अंदर कोई अनजानी PHP फ़ाइल हो तो छेड़छाड़ की आशंका मानें, और हटाने से पहले फ़ाइल की तारीख़-समय और सामग्री दर्ज कर लें।

परमिशन एक साथ ठीक करें

इसे WordPress की डायरेक्टरी में चलाएँ। चलाने से पहले बैकअप लें।

cd /var/www/html

# डायरेक्टरी को 755 और फ़ाइलों को 644 पर एकसमान करें
find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 644 {} +

# wp-config.php को सीमित करें (उदाहरण: PHP फ़ाइल के स्वामी के रूप में चलता हो)
chmod 600 wp-config.php

wp-config.php का मान अपने माहौल के अनुसार इस तरह चुनें।

  • PHP फ़ाइल के स्वामी वाले यूज़र के रूप में चलता है (कई साझा रेंटल सर्वर, हर यूज़र का अलग PHP-FPM): 600 या 400
  • स्वामी आपका खाता है और वेब सर्वर समूह के रूप में पढ़ता है: 640 या 440 रखें और समूह को वेब सर्वर का समूह बनाएँ
# उदाहरण: स्वामी आप, समूह वेब सर्वर (www-data), और 640
sudo chgrp www-data wp-config.php
chmod 640 wp-config.php

सेटिंग के बाद साइट और एडमिन स्क्रीन खोलकर जाँचें कि पेज दिखता है और लॉगिन हो जाता है। अगर ख़ाली सफ़ेद स्क्रीन या त्रुटि आए, तो PHP wp-config.php नहीं पढ़ पा रहा। मान को 644 पर लौटाकर स्वामी और समूह दोबारा जाँचें।

400 या 440 करने पर वे प्लगइन विफल होंगे जो wp-config.php में लिखते हैं (जैसे कैश की सेटिंग लिखने वाले)। ऐसे प्लगइन को सेट करते समय ही कुछ देर के लिए लिखने की अनुमति दें।

wp-config.php को वेब से पढ़े जाने से बचाएँ

PHP ठीक से चल रहा हो तो ब्राउज़र में wp-config.php खोलने पर भी उसकी सामग्री नहीं दिखती। PHP के रुकने जैसी स्थिति में सोर्स दिख जाने से बचने के लिए वेब सर्वर की तरफ़ से भी पहुँच रोक दें। Apache 2.4 में WordPress वाली डायरेक्टरी की .htaccess में यह लिखें (पुराने Order Deny,Allow / Deny from all Apache 2.2 के लिखने के तरीके हैं)।

<Files "wp-config.php">
    Require all denied
</Files>

विस्तृत चरण “wp-config.php तक पहुँच रोकने की सेटिंग” में बताए गए हैं।

.htaccess तक पहुँच Apache की मानक सेटिंग (httpd.conf का <Files ".ht*">) से पहले ही रोकी हुई है।

आधिकारिक स्पष्टीकरण के अनुसार wp-config.php को WordPress वाली डायरेक्टरी से एक स्तर ऊपर भी ले जाया जा सकता है। अगर उसी डायरेक्टरी में wp-config.php न हो, तो WordPress एक ऊपर की डायरेक्टरी में खोजता है। हालाँकि आधिकारिक स्पष्टीकरण भी यह बताता है कि इसका असर छोटा है, ऐसी राय है, और ग़लत तरीके से करने पर उल्टा ख़तरा हो सकता है। ले जाएँ तो पक्का कर लें कि एक ऊपर की डायरेक्टरी सार्वजनिक डायरेक्टरी नहीं है।

uploads में PHP न चलने दें

uploads वह डायरेक्टरी है जिसमें WordPress लिखता है, इसलिए हमलों में यहाँ फ़ाइल रखी जाने की आशंका ज़्यादा होती है। यहाँ PHP को चलने से रोक दें, तो फ़ाइल रख भी दी जाए तब भी वह नहीं चलेगी।

Apache 2.4 में wp-content/uploads/.htaccess बनाकर यह लिखें।

<FilesMatch "\.(php|phtml|phar)$">
    Require all denied
</FilesMatch>

.htaccess में Require इस्तेमाल करने के लिए सर्वर की तरफ़ AllowOverride से अनुमति होनी चाहिए। अनुमति न हो तो 500 त्रुटि आती है या सेटिंग अनदेखी हो जाती है। लिखने के बाद https://example.com/wp-content/uploads/test.php जैसा कोई न-मौजूद PHP URL खोलें और देखें कि 403 आता है (404 ही आए तो सेटिंग असर नहीं कर रही)।

Nginx में server ब्लॉक के अंदर, PHP को प्रोसेस करने वाले location ~ \.php$ से पहले यह रखें। कारण यह है कि रेगुलर एक्सप्रेशन वाले location ऊपर से क्रम में मिलाए जाते हैं और पहला मेल खाने वाला इस्तेमाल होता है।

location ~* ^/wp-content/uploads/.*\.(php|phtml|phar)$ {
    deny all;
}

सेटिंग बदलने के बाद nginx -t से सिंटैक्स जाँचें और फिर रीलोड करें।

ध्यान रहे कि WordPress का मीडिया अपलोड मानक रूप से अनुमत प्रकारों (तस्वीर, PDF आदि) से अलग फ़ाइलें स्वीकार नहीं करता। PHP फ़ाइल को मीडिया के रूप में अपलोड करना एडमिन स्क्रीन से आम तौर पर नहीं हो सकता।

ध्यान देने की बातें

  • परमिशन बदलने से पहले फ़ाइलों और डेटाबेस का बैकअप लें।
  • FTP सॉफ़्टवेयर से परमिशन बदलते समय कुछ सर्वर एक साथ बदलने का समर्थन नहीं करते। फ़ाइलें ज़्यादा हों तो SSH का find तेज़ रहता है और कुछ छूटता भी नहीं।
  • अपडेट के समय FTP की कनेक्शन जानकारी माँगी जाए तो परमिशन न बढ़ाएँ, स्वामी जाँचें। “WordPress के परमिशन त्रुटि को ठीक करने का तरीका” भी देखें।
  • ऊपर की जाँच कमांड (बाक़ी यूज़र के लिए लिखने योग्य फ़ाइलें, uploads के अंदर की PHP) नियमित रूप से चलाने से सेटिंग बिगड़ने या छेड़छाड़ का जल्दी पता चलता है।

WordPress के बारे में सवाल हैं? इस साइट के प्रकाशक जापान में हैं और जापानी में जवाब देते हैं। संपर्क (जापानी)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲