it-swarm.asia

ما هي أذونات الدليل الموصى بها؟

أنا أستعد لنشر موقع Drupal 7 موقع ولا يمكنني العثور على أي وثائق حول ما يجب تعيين أذونات الملف والدليل الواعي الموصى به.

على وجه التحديد default/files/ (أيضا الدلائل الفرعية؟) ، settings.php ، .htaccess وأي شيء آخر يجب أن أكون على علم به.

145
ack

يجب أن يكون خادم الويب الخاص بك قادرًا على قراءة جميع الملفات ولكن لا يكتب لها. إذا كان موقعك يتضمن تحميل الملفات ، فامنح الخادم إذنًا للكتابة في هذا المجلد فقط.

يتوفر مزيد من المعلومات حول كيفية إعداد ذلك ، بالإضافة إلى بعض الأشياء التي يمكن أن تحدث إذا لم تقم بذلك ، في مستندات Drupal .

68
Paul Jones

تلك دروبال صفحة مثل الكثير هي طويلة ومربكة للغاية. ولكنه يحتوي على هذا المنشور لجيسون ، الذي ضرب المسمار على رأسه:

تم النشر بواسطة Jason Sale في 1 تشرين الثاني (نوفمبر) 2010 الساعة 12:40 مساءً

شكرًا لك على كتابة هذا وكل شيء ، ولكن كل ما أريده أنا و 99٪ من الأشخاص الذين يقرؤون هذه الصفحة حقًا هو قائمة من الأرقام بجوار قائمة المجلدات.

  • /default يوم 755
  • /default/files بما في ذلك كافة المجلدات الفرعية والملفات الموجودة على 744 (أو 755)
  • /default/themes بما في ذلك كافة المجلدات الفرعية والملفات الموجودة على 755
  • /default/modules بما في ذلك كافة المجلدات الفرعية والملفات الموجودة على 755
  • /default/settings.php و /default/default.settings.php على 444
91
ErichBSchulz

من عملي حول إنشاء موقع Drupal جديد على خادم أن يكون لديك مستخدم جزء من مجموعة خادم الويب (عادةً Apache) ، وأن يكون هذا المستخدم يمتلك جميع ملفات Drupal. في Ubuntu ، هذه هي الأوامر للحصول على هذا الإعداد:

# Create a new example user, setting up /var/www/example as their home dir.
useradd -s /bin/bash -d /var/www/example -m example

# Now add that user to the Apache group. On Ubuntu/Debian this group is usually
# called www-data, on CentOS it's usually Apache.
usermod -a -G www-data example

# Set up a password for this user.
passwd example

بمجرد أن أقوم بإعداد ذلك ، سوف أسجل الدخول باسم هذا المستخدم وأثبت Drupal على/var/www/example/docroot أو ما شابه ، ثم أنشئ دليل الملفات يدويًا وانسخه عبر ملف settings.php . نظرًا لأننا نسجل الدخول كمثال للمستخدم قبل النسخ في Drupal ، فيجب تكوين ملكية الملفات والأذونات تلقائيًا بشكل صحيح على جميع الملفات والنصوص البرمجية Drupal الأساسية (بما في ذلك ملفات htaccess).

su - example
cd docroot
cp sites/default/default.settings.php sites/default/settings.php

# Temporarily give the web server write permissions to settings.php
chgrp www-data sites/default/settings.php
chmod g+w sites/default/settings.php

لنقم الآن بإعداد دليل الملفات.

# Create the directory.
mkdir sites/default/files

# Now set the group to the Apache group. -R means recursive, and -v means 
# verbose mode.
chgrp -Rv www-data sites/default/files

بعد ذلك سنقوم بإعداد الأذونات بحيث يمكن لخادم الويب دائمًا الكتابة إلى أي ملف موجود في هذا الدليل. نقوم بذلك باستخدام 2775 في أمر chmod الخاص بنا. يعني الرقم 2 أنه سيتم الاحتفاظ بمعرف المجموعة لأي ملفات جديدة تم إنشاؤها في هذا الدليل. ما يعنيه ذلك هو أن www - data ستكون دائمًا المجموعة على أي ملفات ، وبالتالي ضمان أن يكون خادم الويب والمستخدم دائمًا أذونات كتابة لأي ملفات جديدة يتم وضعها في هذا الدليل. يعني الرقم 7 الأول أن المالك (المثال) يمكنه R (قراءة) W (كتابة) و X (تنفيذ) أي ملفات هنا. يعني الرقم 7 الثاني أن المجموعة (www-data) يمكنها أيضًا R W و X أي ملفات في هذا الدليل. أخيرًا ، يعني 5 أنه يمكن للمستخدمين الآخرين R و X الملفات ، ولكن ليس الكتابة.

 chmod 2775 sites/default/files

إذا كان هناك أي ملفات موجودة في هذا الدليل ، فتأكد من أن خادم الويب يحتوي على تصاريح كتابة عليها.

 chmod g+w -R sites/default/files

الآن Drupal جاهز للتثبيت. عند الانتهاء ، من المهم [~ # ~] جدًا [~ # ~] الرجوع إلى settings.php والتأكد من أن جميع المستخدمين قد قرأوا فقط أذونات.

 chmod 444 sites/default/settings.php

هذا هو! يضمن لك هذا الإعداد تجنب أي مواقف حيث لا يمكن للمستخدم الذي يمتلك الدليل أو خادم الويب كتابة/تغيير/إزالة الملفات في دليل الملفات.

81
q0rban

يجب أن يكون مجلد الملفات Drupal قابل للكتابة بواسطة خادم الويب. الطريقة الأكثر أمانًا للقيام بذلك هي تغيير المجموعة وجعلها قابلة للكتابة ، كما يلي:

chgrp www-data sites/default/files
chmod g+w sites/default/files

مجلد تحميل الملف جانبًا ، الأكثر أمانًا هو chmod 644 لجميع الملفات ، 755 للأدلة.

يمكن تحقيق ذلك على هذا النحو (عند تشغيله في مجلد موقع دروبال ، . للمسار الحالي):

find . -type f | xargs chmod 644
find . -type d | xargs chmod 755

تذكر أنك ستحتاج إلى تعيين chmod g+w مرة أخرى بعد تشغيل الأمر أعلاه ، لأن هؤلاء سيعيدون تعيين chmod على جميع الملفات والمجلدات.

31
mikl

أي نصيحة لـ "chmod blah" أو "chown X" لا معنى لها بدون معرفة: ما هو المستخدم الافتراضي: المجموعة في الملفات والمستخدم والمجموعات التي يعمل عليها خادم الويب.

إن Drupal المستندات التي ربطها الآخرون جيدة جدًا في هذا الموضوع ولكن أحد الموارد الأخرى هو وحدة مراجعة الأمان التي تساعد على ضمان تعيين كل شيء بشكل صحيح.

20
greggles

سأجيب مع الأخذ في الاعتبار حالة إنشاء الملفات على الخادم باستخدام FTP ، باستخدام بيانات اعتماد مختلفة عن تلك التي يتم تشغيل خادم الويب (عادة ، يعمل Apache باعتباره لا أحد/لا أحد). وهذا يعني أن المستخدم الذي يمتلك الملفات التي تم إنشاؤها يدويًا قبل تشغيل المثبت [Drupal (الذي يتضمن أيضًا الملفات التي تم تحميلها على الخادم من الأرشيف Drupal ليس المستخدم المستخدم للتشغيل خادم الويب (لا يتطابق اسم المستخدم أو المجموعة). ينطبق هذا السيناريو أيضًا على الحالة التي يتم فيها إنشاء هذه الملفات باستخدام SSH.

  • يجب أن يكون ملف settings.php قابلاً للكتابة من المثبت [Drupal ، ولكن بمجرد الانتهاء من التثبيت ، يُقترح جعله للقراءة فقط (يقترح المثبت ذلك ، و Drupal بشكل دوري تحقق مما إذا كان الملف للقراءة فقط). في السيناريو الذي أصفه ، يجب أن يكون إذن هذا الملف 644 على الأقل.
  • يجب أن يكون لملفات .htaccess (الموجودة في مكانين على الأقل) الإذن 644. يجب أن يظل المستخدم الذي أنشأ الملف قادرًا على الكتابة فوق الملف ، في حالة وجود إصدار لاحق من Drupal مع ملف .htaccess تم تحديثه (حدث بالفعل مرة واحدة ، عندما تمت إضافة سطر إلى هذا الملف لتجنب مشكلة أمنية). من الممكن أيضًا تعيين الأذونات على 444 ، ولكن في هذه الحالة ، يجب تغيير الأذونات إلى 644 عندما يحتاج الملف إلى التحديث.
  • يجب أن يكون الدليل الذي يحتوي على الملفات التي تم إنشاؤها بواسطة الوحدات النمطية (الدليل default/files) (للمستخدم الذي تم تعيينه لعمليات خادم الويب ، والذي يتم بعد ذلك تعيينه إلى PHP النصوص البرمجية التي تعمل على خادم الويب هذا:
    • مقروء
    • قابل للكتابة
    • يمكن اجتيازه (يجب أن تكون الوحدات قادرة على الوصول إلى default/files/<directory-used-by-the-module>/<sub-directory-used-by-the-module>)
9
kiamlaluno

أذونات الملف/الدليل الموصى بها:

  • يجب أن يكون جذر دروبال قابلاً للقراءة في العالم (انظر: pdater.inc ): 0755
  • لأدلة التحميل العامة: 0755 أو 0775
  • لأدلة التحميل الخاصة: 0750 أو 0770
  • للملفات التي يتم تحميلها بشكل عام: 0644 أو 0664
  • للملفات المرفوعة الخاصة: 0640 أو 0660
  • بالنسبة إلى .htaccess ضمن أدلة التحميل (راجع: file_create_htaccess () ): 0444 (افتراضي) أو 0644
  • من أجل settings.php للقراءة فقط للجميع (والملفات السرية الأخرى): 0440
  • لجميع دلائل الويب الأخرى: 0755
  • لجميع ملفات الويب الأخرى: 0644

ملكية الملف/الدليل الموصى بها:

  • يجب تعيين مالك جميع أدلة/ملفات التحميل على مستخدم Apache ،
  • يجب تعيين مالك جميع أدلة/ملفات الويب/المصادر على مستخدم غير Apache ،
  • (اختياريًا) يجب تعيين مجموعة جميع المصادر على مجموعة Apache ،

فيما يلي المتغيرات التي تتحكم في أذونات dir/file الافتراضية للعناصر الجديدة:

file_chmod_directory: 0775
file_chmod_file: 0664

فيما يلي بعض البرامج النصية لإصلاح الأذونات: fix-permissions.sh


اقرأ أكثر:


إليك النص البرمجي الذي أستخدمه لإصلاح الأذونات على المضيف البعيد للأدلة العامة/الخاصة:

#!/bin/sh -e
# Script to correct public/private directory and files permissions.
[ -z "$1" ] && { echo Usage: $0 @remote.dst; exit 1; }

DST="$1" && shift
GET_HTTP_GROUP='ps axo user,group,comm | egrep "(Apache|httpd)" | grep -v ^root | uniq | cut -d\  -f 1'

drush $* $DST ssh 'PUB=$(drush dd %files) && PRIV=$(drush dd %private) && AGROUP=$('"$GET_HTTP_GROUP"') && chgrp -vR $AGROUP $PUB $PRIV && chmod -vR u+rwX,g+rwX,o+rX $PUB $PRIV'

ملاحظة: سيحاول الرمز أعلاه استرداد مجموعة Apache وتعيينه على GET_HTTP_GROUP متغير.

7
kenorb

تم العثور على نص Shell هذا في أسفل هذه الصفحة: https://www.drupal.org/node/244924

أقوم بتشغيله أحيانًا للتأكد من إعداد أذوناتي بشكل صحيح.

#!/bin/bash
# Help menu
print_help() {
cat <<-HELP
This script is used to fix permissions of a Drupal installation
you need to provide the following arguments:
1) Path to your Drupal installation.
2) Username of the user that you want to give files/directories ownership.
3) HTTPD group name (defaults to www-data for Apache).
Usage: (Sudo) bash ${0##*/} --drupal_path=PATH --drupal_user=USER --httpd_group=GROUP
Example: (Sudo) bash ${0##*/} --drupal_path=/usr/local/Apache2/htdocs --drupal_user=john --httpd_group=www-data
HELP
exit 0
}
if [ $(id -u) != 0 ]; then
  printf "**************************************\n"
  printf "* Error: You must run this with Sudo. *\n"
  printf "**************************************\n"
  print_help
  exit 1
fi
drupal_path=${1%/}
drupal_user=${2}
httpd_group="${3:-www-data}"
# Parse Command Line Arguments
while [ $# -gt 0 ]; do
  case "$1" in
    --drupal_path=*)
      drupal_path="${1#*=}"
      ;;
    --drupal_user=*)
      drupal_user="${1#*=}"
      ;;
    --httpd_group=*)
      httpd_group="${1#*=}"
      ;;
    --help) print_help;;
    *)
      printf "***********************************************************\n"
      printf "* Error: Invalid argument, run --help for valid arguments. *\n"
      printf "***********************************************************\n"
      exit 1
  esac
  shift
done
if [ -z "${drupal_path}" ] || [ ! -d "${drupal_path}/sites" ] || [ ! -f "${drupal_path}/core/modules/system/system.module" ] && [ ! -f "${drupal_path}/modules/system/system.module" ]; then
  printf "*********************************************\n"
  printf "* Error: Please provide a valid Drupal path. *\n"
  printf "*********************************************\n"
  print_help
  exit 1
fi
if [ -z "${drupal_user}" ] || [[ $(id -un "${drupal_user}" 2> /dev/null) != "${drupal_user}" ]]; then
  printf "*************************************\n"
  printf "* Error: Please provide a valid user. *\n"
  printf "*************************************\n"
  print_help
  exit 1
fi
cd $drupal_path
printf "Changing ownership of all contents of "${drupal_path}":\n user => "${drupal_user}" \t group => "${httpd_group}"\n"
chown -R ${drupal_user}:${httpd_group} .
printf "Changing permissions of all directories inside "${drupal_path}" to "rwxr-x---"...\n"
find . -type d -exec chmod u=rwx,g=rx,o= '{}' \;
printf "Changing permissions of all files inside "${drupal_path}" to "rw-r-----"...\n"
find . -type f -exec chmod u=rw,g=r,o= '{}' \;
printf "Changing permissions of "files" directories in "${drupal_path}/sites" to "rwxrwx---"...\n"
cd sites
find . -type d -name files -exec chmod ug=rwx,o= '{}' \;
printf "Changing permissions of all files inside all "files" directories in "${drupal_path}/sites" to "rw-rw----"...\n"
printf "Changing permissions of all directories inside all "files" directories in "${drupal_path}/sites" to "rwxrwx---"...\n"
for x in ./*/files; do
    find ${x} -type d -exec chmod ug=rwx,o= '{}' \;
    find ${x} -type f -exec chmod ug=rw,o= '{}' \;
done
echo "Done setting proper permissions on files and directories"
Copy the code above to a file, name it "fix-permissions.sh" and run it as follows:
Sudo bash fix-permissions.sh --drupal_path=your/drupal/path --drupal_user=your_user_name

Note: The server group name is assumed "www-data", if it differs use the --httpd_group=GROUP argument.
4
Richard Robinson

أيضا إذا كنت تقوم بتشغيل fastcgi ، فإن php يعمل كمستخدم ، وسيكون بإمكانه الوصول إلى جميع الملفات التي يمكن للمستخدم الوصول إليها ما لم تحاول عمدا تجنب ذلك.

3
G.Martin

ساعدني هذا في مشكلات إذن OSX الخاصة بي. لقد وجدته في https://www.drupal.org/node/244924#comment-3741738 بواسطة مستخدم protoplasm. كنت مثله يعاني من مشاكل بعد الهجرة.

[[email protected]]cd /path_to_drupal_installation/sites
[[email protected]]find . -type d -name files -exec chmod ug=rwx,o= '{}' \;
[[email protected]]find . -name files -type d -exec find '{}' -type f \; | while read FILE; do chmod ug=rw,o= "$FILE"; done
[[email protected]]find . -name files -type d -exec find '{}' -type d \; | while read DIR; do chmod ug=rwx,o= "$DIR"; done
1
cayerdis

هناك وحدة تسمى مراجعة الأمان تتحقق مما إذا كان موقعك آمنًا أم لا. لقد وجدت أيضًا رابطًا جيدًا جدًا لتعيين أذونات الموقع.

0
Manikandan