Правильний дозвіл для веб-сайтів, папок за замовчуванням та файлів?


10

Мені просто потрібно знати, чи коректує цей дозвіл:

site --> 775
site/default -->775
site/default/files --> 775
site/default/setting.php --> 555

5
На це запитання не можна відповісти, не знаючи, що за типовим користувачем: група є у файлах і яким користувачем та групами працює ваш веб-сервер. Його слід закрити як "незрозуміло, про що ви просите". Крім того, як дублікат: drupal.stackexchange.com/questions/373/…
Безкоштовний радикал

Відповіді:


14

Насправді дозволи повинні бути

sites -> 755
sites/default -> 755
sites/default/files -> 775
sites/default/settings.php -> 444

Дивіться топ-3 відповіді на це запитання для деяких чудових деталей.


3
Незважаючи на те, що це прийнято і прийнято, це не є гарною відповіддю. Питання є неповним, і немає можливості знати, чи відповідає ця відповідь для конфігурації ОП (або для когось іншого). Єдине, що добре в цьому - посилання.
Безкоштовний радикальний

Не кажучи вже про каталог - це сайти, а не сайт. : D
Ryan Szrama

5

З офіційного довідника 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 = ваш / drupal / path --drupal_user = your_user_name

Віола! Ваші дозволи автоматично фіксуються.


Переконайтеся, що ви прочитали цілий пост та коментарі.
mpdonadio

І вставити цей файл куди? У якому каталозі?
Бруно Вінсент

3

Ось як я вирішив встановити дозволи для мого примірника Drupal:

mkdir sites/default/files
chgrp -Rv apache sites/default/files
chmod 2775 sites/default/files

Ми робимо це, використовуючи 2775 в нашій команді chmod. 2 означає, що ідентифікатор групи буде збережений для будь-яких нових файлів, створених у цьому каталозі. Це означає, що apache завжди буде групою будь-яких файлів, тим самим гарантуючи, що веб-сервер і користувач завжди матимуть дозволи на запис будь-яких нових файлів, розміщених у цій директорії. Перші 7 означають, що власник (приклад) може R (Read) W (Write) і X (Execute) будь-які файли тут. Друга 7 означає, що група (www-data) також може RW та X будь-які файли в цьому каталозі. Нарешті, 5 означає, що інші користувачі можуть R та X файли, але не писати.

Іншим моментом є встановлення правильних дозволів для your settings.php

chmod 444 sites/default/settings.php

Інші дозволи мають бути за замовчуванням.

Повне керівництво по встановленню Drupal: http://itvictories.com/node/21


2

Вибрана відповідь не зовсім коректна, особливо коли є мало невідомих, проте Алекс пояснив це досить широко, і я дуже схожий на підхід, який я приймаю на сайтах Drupal.

Крім того, я думав, що поділюсь тут і своїм сценарієм, але як модуль Drupal, який я створив деякий час тому. Ви можете розмістити його у ~/.drushпідкаталозі та просто виконати drush file-permissions, перебуваючи у будь-якому робочому підкаталозі Drupal.

Це бутстрепи вашого Drupal - сайт, чеки file_private_path, file_public_pathі встановлюють їх для правильного користувача Apache і групи. Користувач / група Apache визначається автоматично, тому він не покладається на вказівку користувача вручну або на жорсткий код у файлі сценарію.

Сторінка модуля: https://www.drupal.org/project/file_permissions


Було б чудово перенести модуль на Drupal 8
Benedikt

модуль не змінює дозвіл на папку tmp. Це навмисно? У моїй конфігурації tmp встановлено на сайт / default / tmp, і до цього каталогу не застосовується зміна дозволу.
киранкінг

0

Як згадували інші хлопці, правильний дозвіл є

Усі каталоги -> 755
Усі файли -> 755
сайтів / за замовчуванням -> 755 (це правило переосмислення правила цього каталогу)
сайти / за замовчуванням / файли -> 775 (це правило перевизначення для цього каталогу та його вмісту)
сайти / за замовчуванням / налаштування. php -> 444 (це правило перевизначення для цього файлу)

Відповідні команди для досягнення згаданих Правил надходять у наступному, в корені вашого веб-сайту Drupal

find . -type f | xargs chmod 644
find . -type d | xargs chmod 755
chmod 444 sites/default/settings.php
chmod 775 -R sites/default/files
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.