สิทธิ์ที่ถูกต้องสำหรับไซต์เริ่มต้นและโฟลเดอร์ไฟล์หรือไม่


10

ฉันแค่ต้องรู้ว่าสิทธิ์เหล่านี้ถูกต้องหรือไม่:

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

5
คำถามนี้ไม่สามารถตอบได้โดยไม่ทราบว่าผู้ใช้เริ่มต้น: กลุ่มอยู่ในไฟล์และสิ่งที่ผู้ใช้และกลุ่มเว็บเซิร์ฟเวอร์ของคุณทำงานเป็น ควรปิดเป็น "ไม่ชัดเจนสิ่งที่คุณถาม" อีกทางเลือกหนึ่งเป็นซ้ำของ: drupal.stackexchange.com/questions/373/…
ฟรี Radical

คำตอบ:


14

ที่จริงแล้วการอนุญาตควรเป็น

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

ดูคำตอบ 3 อันดับแรกสำหรับคำถามนี้เพื่อดูรายละเอียดที่ดี


3
ในขณะที่อัปโหลดและยอมรับแล้วนี่ไม่ใช่คำตอบที่ดี คำถามไม่สมบูรณ์และไม่มีทางรู้ว่าคำตอบนี้เหมาะสำหรับโครงแบบ OPs (หรือสำหรับคนอื่น) สิ่งเดียวที่ดีเกี่ยวกับมันคือลิงค์
ฟรี Radical

ไม่พูดถึงไดเรกทอรีเป็นเว็บไซต์ไม่ใช่เว็บไซต์ : 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

Viola! สิทธิ์ของคุณได้รับการแก้ไขโดยอัตโนมัติ


ให้แน่ใจว่าคุณอ่านโพสต์ทั้งหมดและความคิดเห็น
mpdonadio

และวางไฟล์นี้ที่ไหน? ในไดเรกทอรีใด
Bruno Vincent

3

นี่คือวิธีที่ฉันตัดสินใจตั้งค่าการอนุญาตสำหรับอินสแตนซ์ Drupal ของฉัน:

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

เราทำสิ่งนี้โดยใช้ 2775 ในคำสั่ง chmod ของเรา 2 หมายความว่ารหัสกลุ่มจะถูกเก็บไว้สำหรับไฟล์ใหม่ใด ๆ ที่สร้างขึ้นในไดเรกทอรีนี้ สิ่งที่หมายถึงคือ apache จะเป็นกลุ่มในไฟล์ใด ๆ ดังนั้นจึงมั่นใจได้ว่าเว็บเซิร์ฟเวอร์และผู้ใช้จะมีสิทธิ์ในการเขียนไปยังไฟล์ใหม่ใด ๆ ที่อยู่ในไดเรกทอรีนี้เสมอ 7 แรกหมายความว่าเจ้าของ (ตัวอย่าง) สามารถ R (อ่าน) W (เขียน) และ X (ดำเนินการ) ไฟล์ใด ๆ ที่นี่ 7 ที่สองหมายความว่ากลุ่ม (www-data) สามารถ RW และ X ไฟล์ใด ๆ ในไดเรกทอรีนี้ ในที่สุด 5 หมายถึงผู้ใช้รายอื่นสามารถไฟล์ R และ X แต่ไม่ได้เขียน

อีกจุดหนึ่งคือการตั้งค่าการอนุญาตที่ถูกต้องสำหรับ settings.php ของคุณ

chmod 444 sites/default/settings.php

สิทธิ์อื่น ๆ จะเป็นค่าเริ่มต้น

คู่มือการติดตั้ง Drupal ฉบับสมบูรณ์: http://itvictories.com/node/21


2

คำตอบที่เลือกนั้นไม่ถูกต้องโดยเฉพาะอย่างยิ่งเมื่อมีสิ่งแปลกปลอมอยู่เล็กน้อยที่นั่นอย่างไรก็ตามAleksอธิบายอย่างกว้างขวางและเป็นวิธีการที่คล้ายกันมากที่ฉันใช้กับเว็บไซต์ Drupal

นอกจากนี้ฉันคิดว่าฉันจะแบ่งปันสคริปต์ของฉันที่นี่เช่นกัน แต่เป็นโมดูล Drupal ที่ฉันได้สร้างบางเวลาที่ผ่านมา คุณสามารถวางไว้ใน~/.drushไดเรกทอรีย่อยและดำเนินการdrush file-permissionsในขณะที่อยู่ในไดเรกทอรีย่อยของไซต์ Drupal ที่ใช้งานได้

มันวัฏจักรเว็บไซต์ของคุณ Drupal, ตรวจสอบfile_private_path, file_public_pathและชุดพวกเขาในการแก้ไขของผู้ใช้และกลุ่มอาปาเช่ ผู้ใช้ / กลุ่ม Apache กำลังถูกกำหนดโดยอัตโนมัติดังนั้นจึงไม่ต้องพึ่งพาผู้ใช้ที่ระบุด้วยตนเองหรือกำหนดให้มีการเขียนโค้ดลงในไฟล์สคริปต์

หน้าโมดูล: https://www.drupal.org/project/file_permissions


จะดีมากที่จะย้ายโมดูลไปที่ Drupal 8
Benedikt

โมดูลไม่เปลี่ยนสิทธิ์สำหรับโฟลเดอร์ tmp มันตั้งใจหรือไม่ ในการกำหนดค่า tmp ของฉันถูกตั้งค่าเป็น site / default / tmp และไม่มีการเปลี่ยนแปลงสิทธิ์จะถูกนำไปใช้กับไดเรกทอรีนั้น
kiranking

0

ตามที่คนอื่น ๆ กล่าวถึงการอนุญาตที่ถูกต้องคือ

All Drectories -> 755
All files -> 755
sites / default -> 755 (แทนที่กฎนี้ไดเรกทอรีนี้)
sites / default / files -> 775 (แทนที่กฎนี้สำหรับไดเรกทอรีนี้และเนื้อหา)
เว็บไซต์ / default / settings 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.