Quyền chính xác cho các thư mục trang web, mặc định và tập tin?


10

Tôi chỉ cần biết nếu các quyền này là chính xác:

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

5
Câu hỏi này không thể được trả lời mà không biết người dùng mặc định là gì: nhóm trên các tệp và người dùng và nhóm máy chủ web của bạn chạy như thế nào. Nó nên được đóng lại là "không rõ những gì bạn đang hỏi". Hoặc là một bản sao của: drupal.stackexchange.com/questions/373/ cấp
Cấp tiến miễn phí

Câu trả lời:


13

Trên thực tế, các quyền nên được

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

Xem 3 câu trả lời hàng đầu cho câu hỏi này để biết một số chi tiết tuyệt vời.


3
Trong khi nâng cao và chấp nhận, đây không phải là một câu trả lời tốt. Câu hỏi không đầy đủ và không có cách nào để biết liệu câu trả lời này có phù hợp với cấu hình OP (hay cho bất kỳ ai khác). Chỉ có điều tốt về nó là liên kết.
Cấp tiến miễn phí

Chưa kể thư mục là trang web, không phải trang web. : D
Ryan Szrama 6/2/2016

5

Từ cẩm nang chính thức của Drupal :

Sao chép tệp này vào một tệp và đặt tên là "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"

Bây giờ hãy chạy tập lệnh này dưới dạng: sudo bash fix-permissions.sh --drupal_path = your / drupal / path --drupal_user = your_user_name

Viola! Quyền của bạn được tự động sửa.


Hãy chắc chắn rằng bạn đọc toàn bộ bài viết, và các ý kiến.
mpdon Arena

Và dán file này ở đâu? Trong thư mục nào?
Bruno Vincent

3

Đây là cách tôi quyết định đặt quyền cho phiên bản Drupal của mình:

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

Chúng tôi làm điều này bằng cách sử dụng 2775 trong lệnh chmod của chúng tôi. 2 có nghĩa là id nhóm sẽ được giữ nguyên cho mọi tệp mới được tạo trong thư mục này. Điều đó có nghĩa là apache sẽ luôn là nhóm trên bất kỳ tệp nào, do đó đảm bảo rằng máy chủ web và người dùng sẽ luôn có quyền ghi vào bất kỳ tệp mới nào được đặt trong thư mục này. 7 đầu tiên có nghĩa là chủ sở hữu (ví dụ) có thể R (Đọc) W (Viết) và X (Thực thi) bất kỳ tệp nào ở đây. 7 thứ hai có nghĩa là nhóm (dữ liệu www) cũng có thể RW và X bất kỳ tệp nào trong thư mục này. Cuối cùng, 5 có nghĩa là những người dùng khác có thể tệp R và X, nhưng không thể ghi.

Một điểm khác là đặt quyền chính xác cho settings.php của bạn

chmod 444 sites/default/settings.php

Các quyền khác được mặc định.

Hướng dẫn cài đặt Drupal hoàn chỉnh: http://itvictories.com/node/21


2

Câu trả lời được chọn không hoàn toàn chính xác, đặc biệt là khi có một vài ẩn số ở đó, tuy nhiên Aleks đã giải thích nó khá rộng rãi và cách tiếp cận rất giống với cách tôi sử dụng trên các trang web của Drupal.

Ngoài ra, tôi nghĩ rằng tôi cũng sẽ chia sẻ kịch bản của mình ở đây, nhưng với tư cách là một Mô-đun Drupal, mà tôi đã tạo ra một thời gian trước đây. Bạn có thể đặt nó trong ~/.drushthư mục con và chỉ cần thực thi drush file-permissionstrong khi ở bất kỳ thư mục con trang web Drupal nào đang hoạt động.

Nó bootstraps trang web của bạn Drupal, kiểm tra cho file_private_path, file_public_pathvà bộ họ đúng người sử dụng Apache và nhóm. Người dùng / nhóm Apache đang được xác định tự động, do đó, nó không phụ thuộc vào người dùng chỉ định chúng theo cách thủ công hoặc để chúng được mã hóa cứng trong tệp tập lệnh.

Trang mô-đun: https://www.drupal.org/project/file_permissions


Sẽ thật tuyệt khi chuyển mô-đun sang Drupal 8
Benedikt

mô-đun không thay đổi quyền cho thư mục tmp. Đó có phải là cố ý? Trong cấu hình của tôi, tmp được đặt thành site / default / tmp và không có thay đổi quyền nào được áp dụng cho thư mục đó.
kiranking

0

Như những người khác đề cập đến sự cho phép chính xác là

Tất cả các Drectories -> 755
Tất cả các tệp -> 755
trang web / mặc định -> 755 (quy tắc này ghi đè lên thư mục này)
các trang web / mặc định / tệp -> 775 (quy tắc này ghi đè lên thư mục này và nội dung của nó)
trang web / mặc định / cài đặt. php -> 444 (quy tắc ghi đè lên tệp này)

Các lệnh thích hợp để đạt được Quy tắc được đề cập đến ở phần sau, tại thư mục gốc của trang web Drupal của bạn

find . -type f | xargs chmod 644
find . -type d | xargs chmod 755
chmod 444 sites/default/settings.php
chmod 775 -R sites/default/files
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.