Izin yang benar untuk folder situs, default dan file?


10

Saya hanya perlu tahu apakah izin ini diperbaiki:

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

5
Pertanyaan ini tidak dapat dijawab tanpa mengetahui apa yang menjadi pengguna default: grup pada file dan pengguna dan grup apa yang dijalankan oleh server web Anda. Itu harus ditutup sebagai "tidak jelas apa yang Anda minta". Atau sebagai duplikat dari: drupal.stackexchange.com/questions/373/…
Free Radical

Jawaban:


14

Sebenarnya izinnya harus

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

Lihat 3 jawaban teratas untuk pertanyaan ini untuk beberapa detail yang bagus.


3
Meskipun terangkat dan diterima, ini bukan jawaban yang baik. Pertanyaannya tidak lengkap dan tidak ada cara untuk mengetahui apakah jawaban ini tepat untuk konfigurasi OP (atau untuk orang lain). Satu-satunya hal baik tentang itu adalah tautannya.
Radikal Gratis

Belum lagi direktori adalah situs, bukan situs. : D
Ryan Szrama

5

Dari buku pegangan resmi Drupal :

Salin ini ke file dan beri nama "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"

Sekarang jalankan skrip ini sebagai: sudo bash fix-permissions.sh --drupal_path = Anda / drupal / path --drupal_user = your_user_name

Biola! Izin Anda secara otomatis diperbaiki.


Pastikan Anda membaca seluruh posting itu, dan komentarnya.
mpdonadio

Dan tempelkan file ini di mana? Di direktori apa?
Bruno Vincent

3

Ini adalah bagaimana saya memutuskan untuk menetapkan izin untuk instance Drupal saya:

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

Kami melakukan ini dengan menggunakan 2775 dalam perintah chmod kami. Angka 2 berarti bahwa id grup akan disimpan untuk semua file baru yang dibuat dalam direktori ini. Artinya adalah apache akan selalu menjadi grup pada file apa pun, sehingga memastikan bahwa server web dan pengguna akan selalu memiliki izin menulis untuk file baru apa pun yang ditempatkan di direktori ini. 7 pertama berarti bahwa pemilik (contoh) dapat R (Baca) W (Tulis) dan X (Jalankan) file apa pun di sini. 7 yang kedua berarti grup itu (www-data) juga dapat RW dan X file apa pun dalam direktori ini. Akhirnya, 5 berarti bahwa pengguna lain dapat file R dan X, tetapi tidak menulis.

Poin lainnya adalah mengatur izin yang benar untuk settings.php Anda

chmod 444 sites/default/settings.php

Izin lainnya harus default.

Panduan Instalasi Drupal Lengkap: http://itvictories.com/node/21


2

Jawaban yang dipilih tidak sepenuhnya benar, terutama ketika ada beberapa yang tidak diketahui di sana, namun Aleks menjelaskannya secara luas, dan pendekatan yang sangat mirip yang saya ambil di situs Drupal.

Juga, saya pikir saya akan membagikan skrip saya di sini juga, tetapi sebagai Modul Drupal, yang saya buat beberapa waktu lalu. Anda dapat menempatkannya di ~/.drushsubdirektori dan cukup menjalankannya drush file-permissionssaat berada di subdirektori situs Drupal yang berfungsi.

Itu mem-bootstrap situs Drupal Anda, memeriksa file_private_path, file_public_pathdan mengaturnya untuk memperbaiki pengguna dan grup Apache. Pengguna / grup Apache ditentukan secara otomatis, sehingga tidak bergantung pada pengguna yang menentukannya secara manual atau meminta mereka membuat kode-keras dalam file skrip.

Halaman modul: https://www.drupal.org/project/file_permissions


Akan lebih baik untuk port modul ke Drupal 8
Benedikt

modul tidak mengubah izin untuk folder tmp. Apakah itu disengaja? Dalam konfigurasi saya tmp diatur ke situs / default / tmp dan tidak ada perubahan izin yang diterapkan ke direktori itu.
kiranking

0

Seperti yang disebutkan orang lain, izin yang benar adalah

Semua Drectories -> 755
Semua file -> 755
situs / default -> 755 (ini mengesampingkan aturan direktori ini)
situs / default / file -> 775 (ini menimpa aturan untuk direktori ini dan isinya)
situs / default / pengaturan. php -> 444 (aturan override ini untuk file ini)

Perintah yang tepat untuk mencapai Aturan yang disebutkan datang sebagai berikut, di root situs web Drupal Anda

find . -type f | xargs chmod 644
find . -type d | xargs chmod 755
chmod 444 sites/default/settings.php
chmod 775 -R sites/default/files
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.