Права. Инсталляция. Настройки хостинга

Аватар пользователя alexo

Здравствуйте!
Какие настройки прав делаются автоматически при устновке Друпал, а какие зависят от настроек сервера?

Верно ли будет сделать
chmod 440 sites/default/settings.php
chmod 555 sites/default

Что делать, если мне на хостинге после установки Друпал в службе поддержки при вопросе об одной ошибке зачем-то сделали

find -type d -exec chmod 755 {} \; && find -type f -exec chmod 644 {} \;

У меня теперь на все папки 755, на все файлы 644?

Вообще ручные настройки нужны только для settings.php, и приватных файлов?
Еще другие настройки для
/.htaccess .
/.editorconfig .
/.gitignore .
?
Как тогда после find -type d -exec chmod 755 {} \; && find -type f -exec chmod 644 {} \;
Через командную строку восстановить все к нормальному состоянию?

Тип материала:
0 Thanks

Комментарии

Аватар пользователя Andruxa
Andruxa 1 месяц назад

Зависит, от какого пользователя/группы у вас работает вебсервер.

Аватар пользователя alexo
alexo 1 месяц назад

Спасибо. Если у меня один пользователь на аккаунте.
Или какие еще данные нужны по этому вопросу?

Аватар пользователя alexo
alexo 1 месяц назад

Хостинг виртуальный или эластик. В данном случае там, где права сбили, там виртуальный.

Аватар пользователя Andruxa
Andruxa 1 месяц назад

Ни о чем не говорит.
Сам вебсервер может быть запущен от www-data (а может - и от nobody), но если там апач и mpm-itk - то php будет исполняться от вашего пользователя.
В первом случае, надо дать права на чтение для остальных пользователей, т.е. 0хх5 на папки и 0хх4 на файлы.
Во втором - можно закрыть доступ для остальных, т.е. 0хх0 на файлы и папки.

В общем, если не владеете ситуацией, то лучше доверьтесь техподдержке.
Выставьте вручную 0444 на settings.php и 0555 на sites/default

Аватар пользователя alexo
alexo 1 месяц назад

спасибо. т.е. через командную строку
chmod 444 sites/default/settings.php
chmod 555 sites/default

А почему не 440?
также что ставить для
/.editorconfig .
/.gitignore .
/.htaccess .
у меня на другом сервере автоматом было 644

Тогда чтобы перезаписать настройку службы поддержки мне нужно сделать
chmod 644 .editorconfig .
chmod 644 .gitignore .
chmod 644 .htaccess .

Остаются приватные и публичные файлы ?
для публичных chmod 755 sites/default/files

а как для приватных, которые например для импорта feeds у меня будут в папке sites/default/myprivate
можно

chmod 750 sites/default/myprivate

(или 754?)

В трех местах только вручную менять или еще где-то?

Аватар пользователя Andruxa
Andruxa 1 месяц назад
1
alexo написал:
А почему не 440

Допустим, у вас на сервере пользователь, под которым вы заливали файлы - user123
тогда у файлов и папок друпала владельцем будет user123 и группа - user123 (если на сервере не делались специфичные настройки)
права 440 означают, что пользователь user123 и пользователи, входящие в группу user123 могут читать файл, а все остальные - нет.
Если ваш вебсервер работает (запускает скрипты php) не от пользователя user123 и пользователь, от которого запускаются скрипты - не входит в группу user123, то доступа к скриптам не будет, и php не отработает.

Аватар пользователя alexo
alexo 1 месяц назад
Andruxa написал:
alexo написал:
А почему не 440

Допустим, у вас на сервере пользователь, под которым вы заливали файлы - user123
тогда у файлов и папок друпала владельцем будет user123 и группа - user123

Имеется ввиду юзер хостинга не юзер сайта Друпал?
Если я заливаю по SSH имеется ввиду факически логин под готорым я соединяюсь по SSH, или ftp?
Если у меня один аккаунт на хостинге с
именем login1
паролем mypass1

и я все время под ним соединяюсь по SSH, то тогда 440 можно делать?

А если у меня для сайта например несколько ftp аккаунтов то тогда уже в зависимости от того как на сервере настроено?
Если группы настроены определнным образом то можно 440
Если нет, то 444?

Аватар пользователя Andruxa
Andruxa 1 месяц назад
1

юзер - тот, под кем вы заходите по ssh (тоже не 100% верно, но на 99% это так)
Если ваш вебсервер запускает php от имени login1 или входит в группу login1 - то можно делать 440, иначе - 444

ftp-аккаунты и учетка друпала тут роли не играет.

Аватар пользователя ttenz
ttenz 1 месяц назад
1

Просто запускаешь sudo bash fix-permissions.sh --drupal_path=путь_к_сайту --drupal_user=www-data

такой скрипт (fix-permissions.sh) и забываешь о правильной расстановке прав навсегда:

#!/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"

https://www.drupal.org/node/244924