Prawidłowe uprawnienia do folderów witryny, domyślnych i plików?

10

Muszę tylko wiedzieć, czy te uprawnienia są poprawne:

site --> 775
site/default -->775
site/default/files --> 775
site/default/setting.php --> 555
chefnelone
źródło
5
Nie można odpowiedzieć na to pytanie, nie wiedząc, jaki domyślny użytkownik: grupa znajduje się w plikach i jaki użytkownik i grupy działa jako serwer. Powinien być zamknięty jako „niejasne, o co pytasz”. Alternatywnie jako duplikat: drupal.stackexchange.com/questions/373/…
Bezpłatny Radical

Odpowiedzi:

14

Właściwie uprawnienia powinny być

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

Zobacz 3 najlepsze odpowiedzi na to pytanie, aby uzyskać wspaniałe szczegóły.

klucz
źródło
3
Mimo że został przyjęty i zaakceptowany, nie jest to dobra odpowiedź. Pytanie jest niekompletne i nie ma możliwości ustalenia, czy ta odpowiedź jest odpowiednia dla konfiguracji PO (lub dla kogokolwiek innego). Jedyną dobrą rzeczą jest link.
Bezpłatny Radical
Nie wspominając o tym, że katalog to strony, a nie strona. : D
Ryan Szrama,
5

Z oficjalnego podręcznika Drupala :

Skopiuj to do pliku i nadaj mu nazwę „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"

Teraz uruchom ten skrypt jako: sudo bash fix-permissions.sh --drupal_path = your / drupal / path --drupal_user = twoja_nazwa_użytkownika

Altówka! Twoje uprawnienia są automatycznie ustalane.

InspiredCoder
źródło
Upewnij się, że przeczytałeś cały post i komentarze.
mpdonadio
I wklej ten plik gdzie? W jakim katalogu?
Bruno Vincent
3

W ten sposób postanowiłem ustawić uprawnienia dla mojej instancji Drupal:

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

Robimy to za pomocą 2775 w naszym poleceniu chmod. 2 oznacza, że ​​identyfikator grupy zostanie zachowany dla wszystkich nowych plików utworzonych w tym katalogu. Oznacza to, że apache zawsze będzie grupą na dowolnych plikach, zapewniając w ten sposób, że serwer WWW i użytkownik zawsze będą mieć uprawnienia do zapisu do wszystkich nowych plików umieszczonych w tym katalogu. Pierwsze 7 oznacza, że ​​właściciel (przykład) może R (odczyt) W (zapis) i X (wykonać) dowolne pliki tutaj. Druga 7 oznacza, że ​​grupa (www-data) może również RW i X dowolne pliki w tym katalogu. Wreszcie 5 oznacza, że ​​inni użytkownicy mogą R i X plików, ale nie mogą pisać.

Kolejnym punktem jest ustawienie poprawnych uprawnień dla pliku settings.php

chmod 444 sites/default/settings.php

Inne uprawnienia mają być domyślne.

Kompletny przewodnik instalacji Drupal: http://itvictories.com/node/21

Aleks
źródło
2

Wybrana odpowiedź nie jest całkiem poprawna, szczególnie gdy jest tam niewiele niewiadomych, jednak Aleks wyjaśnił ją dość obszernie i jest to bardzo podobne podejście, jakie mam na stronach Drupala.

Pomyślałem też, że podzielę się tutaj moim skryptem, ale jako Moduł Drupala, który stworzyłem jakiś czas temu. Możesz umieścić go w ~/.drushpodkatalogu i po prostu wykonać drush file-permissions, będąc w dowolnym działającym podkatalogu strony Drupal.

To siłach swój Drupal witryny, czeków file_private_path, file_public_pathoraz zestawy je do właściwego użytkownika Apache i grupy. Użytkownik / grupa Apache jest określana automatycznie, więc nie polega ona na tym, że użytkownik określi go ręcznie lub nie zapisa na stałe w pliku skryptu.

Strona modułu: https://www.drupal.org/project/file_permissions

Turek
źródło
Byłoby wspaniale przenieść moduł na Drupal 8
Benedikt
moduł nie zmienia uprawnień do folderu tmp. Czy to celowe? W mojej konfiguracji tmp jest ustawione na site / default / tmp i do tego katalogu nie są stosowane żadne zmiany uprawnień.
kiranking
0

Jak wspomnieli inni, prawidłowe pozwolenie to

Wszystkie Drectories -> 755
Wszystkie pliki -> 755
witryn / domyślne -> 755 (to przesłonięcie reguły dla tego katalogu)
witryny / domyślne / pliki -> 775 (to przesłonięcie reguły dla tego katalogu i jego zawartości)
witryny / domyślne / ustawienia. php -> 444 (ta zasada zastępowania tego pliku)

Odpowiednie polecenia do osiągnięcia wspomnianych Reguł podano poniżej w katalogu głównym witryny 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
Yusef
źródło