Папка Drupal и права доступа к файлам - PullRequest
4 голосов
/ 22 января 2011

Я потратил кучу времени, пытаясь понять, как мне настроить мои папки и файлы в Drupal. Я искал по всему drupal.org, но продолжаю придумывать дриблинг о том, что www-данные нуждаются в доступе к папкам «sites» и «files» и как «settings.php» нужны некоторые потрясающие разрешения.

Но мне нужен такой список:

/ = 744 или drwxr-r -
/ включает / = ...
/ misc / = ...
/ modules / = ...
/ анкеты / = ...
/ scripts / = ...
/ sites / = ...
/ sites / all / = ...
/ sites / default / = ...
/sites/default/settings.php = 444?
/ sites / default / files / = ...

Я не думаю, что мне нужен кто-то, чтобы каталогизировать каждый файл, папку и настройки разрешений для меня. Я предполагаю, что я могу просто установить права доступа к корневой папке для «применения к вложенным элементам», а затем исправить несколько папок и файлов, которые требуют специальных настроек.

Я был бы очень признателен за любой вклад, который может вернуть меня к здравомыслию! :)

Scott

Ответы [ 3 ]

5 голосов
/ 22 января 2011

установка по умолчанию на моем локальном компьютере имеет

-rw-r - r-- все php файлы

каталоги drwxr-xr-x

папка с файлами drwxrwxr-x

-r - r - r-- файл settings.php

3 голосов
/ 09 июня 2014

Я опаздываю на ответ, но столкнулся с этой проблемой и нашел выход.Из официального руководства Drupal :

Скопируйте его в файл и назовите его "fix-permissions.sh"

#!/bin/bash
if [ $(id -u) != 0 ]; then
        printf "This script must be run as root.\n"
        exit 1
fi
drupal_path=${1%/}
drupal_user=${2}
httpd_group="${3:-www-data}"
# 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
}
# 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 "Invalid argument, run --help for valid arguments.\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 "Please provide a valid Drupal path.\n"
print_help
exit 1
fi
if [ -z "${drupal_user}" ] || [ $(id -un ${drupal_user} 2> /dev/null) != "${drupal_user}" ]; then
printf "Please provide a valid user.\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 settings proper permissions on files and directories"

Теперь запустите этот скрипт как:

 sudo bash fix-permissions.sh --drupal_path=your/drupal/path --drupal_user=your_user_name

Альт!Ваши разрешения автоматически исправляются.

0 голосов
/ 08 июня 2018

A) Не рекомендуется предоставлять какую-либо форму доступа к миру, даже если это просто доступ для чтения.

B) Предоставление владельцу файла только доступа для чтения приводит к сложному обслуживаниюпроцесс (например: наиболее рекомендуется, чтобы Settings.php был доступен только для чтения всем), это только увеличит ваши задачи, когда вы захотите изменить настройки.

В двух словах: - Мир нуждается в 0 доступе - даже не вобщая папка.- Вашему веб-серверу необходим доступ только для чтения для всех файлов, кроме общедоступной папки и папки tmp - они будут как для чтения, так и для записи.- Вашему владельцу файлов необходим полный доступ ко всем файлам - для простоты обслуживания

Это, однако, будет работать лучше всего, когда владелец файла и владелец веб-сервера являются двумя отдельными пользователями, и вы имеете ssh-контроль над сервером и можете изменятьвладение файлом.

Приведенный ниже скрипт будет работать, если у вас следующая структура каталогов:

Папка сайта

Папка сайта / conf (содержит файлы конфигурации виртуального хоста apache для этого сайта)

Папка сайта / htdocs (содержащая сайт)

В этом сценарии: kalpesh является владельцем файла, а демон - владельцем веб-службы - это может быть www-data для вашего сайта.

Обычно я сохраняю такой сценарий в файле .sh и затем добавляю его в cron, чтобы всякий раз, когда члены моей команды загружали новый контент на сайт или обновляли модуль, разрешение сайтов не подвергалось риску из-за их ошибок.Cron будет выполнять сценарии и восстанавливать права доступа каждые 24 часа.

cd ToSiteFolder

sudo chown kalpesh:daemon .

sudo chmod 750 .

sudo chown -R kalpesh_popat:daemon ./conf

sudo find ./conf -type d -exec chmod 750 {} +
sudo find ./conf -type f -exec chmod 640 {} +

sudo chown -R kalpesh_popat:daemon ./htdocs

sudo find ./htdocs -type d -exec chmod 750 {} +
sudo find ./htdocs -type f -exec chmod 640 {} +

sudo find ./htdocs/sites/default/files -type d -exec chmod 770 {} +
sudo find ./htdocs/sites/default/files -type f -exec chmod 660 {} +

sudo find ./htdocs/tmp -type d -exec chmod 770 {} +

sudo chmod 640 ./htdocs/sites/default/settings.php

sudo chmod 750 ./htdocs/sites/default

Есть блог, который прекрасно объясняет это и разрушает многие мифы.https://technologymythbuster.blogspot.com/2018/06/misconception-about-file-ownerships-and.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...