تحدد أذونات الملفات من يستطيع قراءة كل ملف على خادمك أو الكتابة فيه أو تشغيله، وعلى الاستضافة المشتركة أو سيئة الإعداد قد تعني «من» أكثر منك وحدك. والخطأ في أي اتجاه يسبب مشكلات حقيقية. إن كانت مشددة أكثر من اللازم فلن يستطيع ووردبريس تحديث نفسه. وإن كانت متساهلة أكثر من اللازم فيستطيع كل من يصل إلى الخادم تغيير ملفاتك مباشرةً دون أي تسجيل دخول.
ماذا تعني الأرقام
كل إذن رقم من ثلاثة أرقام: رقم لمالك الملف، وآخر لمجموعته، وثالث لكل من عداهم. وكل رقم مجموع من القراءة (4) والكتابة (2) والتنفيذ (1). فالرقم 7 يعني قراءة وكتابة وتنفيذًا؛ و6 قراءة وكتابة؛ و5 قراءة وتنفيذًا؛ و4 قراءة فقط.
- 644: يستطيع المالك القراءة والكتابة؛ أما المجموعة وكل من عداهم فيقرؤون فقط.
- 755: يستطيع المالك القراءة والكتابة والتنفيذ؛ وتستطيع المجموعة وكل من عداهم القراءة والتنفيذ.
- 600: المالك وحده يقرأ ويكتب. لا يرى أحد غيره الملف.
- 777: يستطيع كل من على الخادم القراءة والكتابة والتنفيذ. وهذا هو الإعداد الذي يجب الحذر منه.
بالنسبة إلى المجلد، يعني «التنفيذ» إذن الدخول إليه، ولهذا تحتاج المجلدات إلى 755 لا 644.
النظام القياسي لووردبريس
- المجلدات: 755. يستطيع المالك إضافة الملفات أو إزالتها؛ ويستطيع غيره النظر داخلها والقراءة فقط.
- الملفات: 644. يستطيع المالك التعديل؛ ويقرأ غيره فقط.
wp-config.php: 600 أو 640. فهو يحمل بيانات قاعدة بياناتك بنص صريح، لذا شدّده أكثر من كل ما عداه. ويشرح دليل wp-config.php كيف تختار بينهما.
المالك مهم بقدر الأرقام
تنطبق الأذونات على المالك والمجموعة وكل من عداهم. لذا فإن سؤال «هل يستطيع ووردبريس الكتابة في هذا الملف؟» يتوقف على ما إذا كان الحساب الذي يشغّل PHP هو مالك الملف. فإذا كانت الملفات تخص حسابًا غير الذي يشغّل PHP، يرى ووردبريس نفسه ضمن «كل من عداهم» ولن يسمح له 644 بالكتابة. وهذا هو السبب الحقيقي لمعظم أخطاء الرفع والتحديث.
الاستجابة الخاطئة هي فتح كل شيء على 777 مما يعالج العَرَض بمنح كل الحسابات صلاحية الكتابة. والاستجابة الصحيحة هي تصحيح المالك، مثل chown -R youraccount:youraccount /path/to/wordpress (في استضافة تسمح لك بتغيير المالك)، أو سؤال استضافتك عن الحساب الذي يشغّل PHP. بعدها يعمل النظام القياسي 644 و755.
لماذا يسبب 777 الاختراقات
على الاستضافة المشتركة، «كل من عداهم» ليست فرضية. فقد تشمل حسابات أخرى على الخادم نفسه. والملف أو المجلد القابل للكتابة من الجميع يعني أن أي عملية تصل إلى نظام الملفات تستطيع تعديله، وهكذا يمكن أحيانًا استغلال إضافة ضعيفة واحدة على موقع لكتابة ملفات خبيثة على موقع مجاور. وحتى على خادم تتحكم فيه، يتيح مجلد 777 لأي ثغرة في أي خدمة قيد التشغيل أن تزرع ملفًا في موقعك.
يُضبط 777 عادةً على يد من يصلح خطأ رفع بسرعة دون معرفة الإصلاح الأضيق. ثم يبقى سنوات. ولأن الرفع مكان شائع يضع فيه المهاجمون PHP، فإن wp-content/uploads القابل للكتابة من الجميع خطر بشكل خاص.
كيف تتحقق من أذونات موقعك
في مدير ملفات استضافتك يعرض عمود الأذونات الإعداد الحالي لكل عنصر، ويتيح معظمها تغييره بالنقر بزر الفأرة الأيمن. وعبر SSH ابدأ بالبحث عن المشكلات قبل تغيير أي شيء:
- إيجاد الملفات القابلة للكتابة من الجميع:
find . -type f -perm /o+w - إيجاد المجلدات القابلة للكتابة من الجميع:
find . -type d -perm /o+w - إيجاد الملفات التي ليست 644 أو المجلدات التي ليست 755:
find . -type f ! -perm 644وfind . -type d ! -perm 755
النتيجة الفارغة في أول أمرين هي المطلوبة. ولإعادة التثبيت كله إلى النظام القياسي شغّل هذين الأمرين من مجلد ووردبريس:
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
ثم اضبط wp-config.php على حدة بالأمر chmod 600 wp-config.php. خذ دائمًا نسخة احتياطية أولًا وتأكد أنك في المجلد الصحيح بالأمر pwd. فمسار مكتوب خطأ قد يطبق الأذونات على أكثر مما قصدت.
الأذونات كإشارة اكتشاف
تخبرك الأذونات أيضًا متى تغيّر شيء. فملف جديد قابل للكتابة من الجميع في مجلد نواة، أو ملف PHP في uploads بأذونات غير معتادة، يستحق التحقيق. اجمع بين تدقيق الأذونات وفحص سلامة ملفات النواة وقائمة فحص الأمان لتحصل على صورة كاملة.
يفحص SiftWP أذونات الملفات في فحصه الأسبوعي وينبّه إلى كل ما ابتعد عن النظام القياسي، بما في ذلك 777 شارد ظل دون أن يلاحظه أحد منذ استخدمه شخص للالتفاف على خطأ رفع. يفحص عبر SSH دون أي إضافة على الموقع.