Site, varsayılan ve dosya klasörleri için doğru izin?


10

Sadece bu iznin düzeltilip düzeltilmediğini bilmem gerekiyor:

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

5
Bu soru, dosyalarda varsayılan kullanıcı: grubunun ne olduğunu ve web sunucunuzun hangi kullanıcı ve grupların çalıştığını bilmeden cevaplanamaz. "Sorduğunuz şey net değil" olarak kapatılmalıdır. Alternatif olarak aşağıdakinin kopyası olarak: drupal.stackexchange.com/questions/373/…
Free Radical

Yanıtlar:


14

Aslında izinler

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

Bazı harika ayrıntılar için bu sorunun ilk 3 cevabına bakın.


3
Onaylanmış ve kabul edilmiş olsa da, bu iyi bir cevap değildir. Soru eksik ve bu cevabın OP konfigürasyonu (ya da başka biri) için doğru olup olmadığını bilmenin bir yolu yok. Bu konuda iyi olan tek şey bağlantıdır.
Ücretsiz Radikal

Dizinden bahsetmiyorum bile siteler, siteler değil. : D
Ryan Szrama

5

Gönderen Drupal resmi el kitabı :

Bunu bir dosyaya kopyalayın ve "fix-permissions.sh" olarak adlandırın.

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

Şimdi bu betiği şu şekilde çalıştırın: sudo bash fix-permissions.sh --drupal_path = your / drupal / path --drupal_user = your_user_name

Viyola! İzinleriniz otomatik olarak düzeltilir.


Yazının tamamını ve yorumları okuduğunuzdan emin olun.
mpdonadio

Ve bu dosyayı nereye yapıştırın? Hangi dizinde?
Bruno Vincent

3

Drupal örneğim için izinleri ayarlamaya şöyle karar verdim:

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

Bunu chmod komutumuzda 2775'i kullanarak yapıyoruz. 2, grup kimliğinin bu dizinde oluşturulan tüm yeni dosyalar için korunacağı anlamına gelir. Bu, apache'nin her zaman herhangi bir dosyadaki grup olacağı, böylece web sunucusunun ve kullanıcının bu dizine yerleştirilen yeni dosyalara her zaman yazma izinlerine sahip olacağıdır. İlk 7, sahibin (örnek) buradaki herhangi bir dosyayı R (Oku) W (Yaz) ve X (Yürüt) yapabileceği anlamına gelir. İkinci 7, grubun (www-data) bu dizindeki herhangi bir dosyayı da RW ve X yapabileceği anlamına gelir. Son olarak, 5, diğer kullanıcıların R ve X dosyalarını yazabileceği, ancak yazamayacağı anlamına gelir.

Başka bir nokta, ayarlarınız için doğru izinleri ayarlamaktır. Php

chmod 444 sites/default/settings.php

Diğer izinler varsayılan olmalıdır.

Komple Drupal Kurulum kılavuzu: http://itvictories.com/node/21


2

Seçilen cevap oldukça doğru değil, özellikle orada az sayıda bilinmeyen olduğunda, ancak Aleks bunu oldukça kapsamlı bir şekilde açıkladı ve Drupal sitelerinde aldığım çok benzer bir yaklaşım.

Ayrıca, senaryomu da burada paylaşacağımı düşündüm, ancak bir süre önce oluşturduğum bir Drupal Modülü olarak. Sen yerleştirebilirsiniz ~/.drushalt dizin ve sade yürütmek drush file-permissionsherhangi çalışma Drupal sitemi alt dizininde olurken.

Bu sizin Drupal site için çek bot file_private_path, file_public_pathve doğru Apache kullanıcı ve grup setleri onları. Apache kullanıcısı / grubu otomatik olarak belirlenir, bu nedenle bunları manuel olarak belirleyen veya bir kod dosyasında sabit kodlanmış olan kullanıcıya güvenmez.

Modül sayfası: https://www.drupal.org/project/file_permissions


Modülü Drupal 8
Benedikt'a

modül tmp klasörü iznini değiştirmez. Bu kasıtlı mı? Benim yapılandırmada tmp site / default / tmp olarak ayarlanmış ve bu dizine izin değişikliği uygulanmamış.
kiranking

0

Diğer adamların da belirttiği gibi doğru izin

Tüm Dizinler -> 755
Tüm dosyalar -> 755
site / varsayılan -> 755 (bu dizini geçersiz kılma kuralı bu
siteler ) siteler / varsayılan / dosyalar -> 775 (bu dizin ve içeriği için bu geçersiz kılma kuralı)
siteler / varsayılan / ayarlar. php -> 444 (bu dosya için bu geçersiz kılma kuralı)

Bahsedilen Kurallara ulaşmak için uygun komutlar, Drupal web sitenizin kökünde aşağıdaki gibidir

find . -type f | xargs chmod 644
find . -type d | xargs chmod 755
chmod 444 sites/default/settings.php
chmod 775 -R sites/default/files
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.