サイト、デフォルト、ファイルフォルダーの正しい権限はありますか?


10

これらの許可が正しいかどうかを知る必要があります:

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

5
この質問は、デフォルトのuser:groupがファイルにどのようなものであり、ウェブサーバーがどのユーザーとグループで実行されているかを知らない限り、答えることはできません。それは「あなたが何を求めているのか不明確」として閉じられるべきです。代わりとしての重複:drupal.stackexchange.com/questions/373/...
フリーラジカル

回答:


13

実際には、権限は

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

詳細については、この質問の上位3つの回答をご覧ください。


3
これは賛成と賛成ですが、良い答えではありません。質問は不完全であり、この答えがOP構成(または他の誰にとっても)にとって正しいかどうかを知る方法はありません。それについて良いことだけがリンクです。
フリーラジカル

ディレクトリは言うまでもなく、サイトではなくサイトです。: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 = your / drupal / path --drupal_user = your_user_name

ビオラ!アクセス許可は自動的に修正されます。


その投稿全体とコメントを必ずお読みください。
mpdonadio

そして、このファイルをどこに貼り付けますか?どのディレクトリに?
Bruno Vincent

3

これが、Drupalインスタンスに権限を設定することを決定した方法です。

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

これを行うには、chmodコマンドで2775を使用します。2は、このディレクトリで作成された新しいファイルのグループIDが保持されることを意味します。つまり、Apacheは常にすべてのファイルのグループになるため、Webサーバーとユーザーの両方が、このディレクトリに配置されたすべての新しいファイルに対して常に書き込み権限を持つようになります。最初の7は、所有者(例)がR(読み取り)W(書き込み)およびX(実行)をここにあるすべてのファイルにできることを意味します。2番目の7は、グループ(www-data)もこのディレクトリ内の任意のファイルをRWおよびXできることを意味します。最後に、5は、他のユーザーがRおよびXファイルを作成できるが書き込みはできないことを意味します。

もう1つのポイントは、settings.phpに正しい権限を設定することです

chmod 444 sites/default/settings.php

その他の権限はデフォルトです。

完全なDrupalインストールガイド:http : //itvictories.com/node/21


2

選択された答えは正確ではありません。特に不明点が少ない場合は特にそうですが、Aleksはそれをかなり広範囲に説明しており、私がDrupalサイトで採用しているアプローチと非常によく似ています。

また、自分のスクリプトもここで共有したいと思いましたが、少し前に作成したDrupalモジュールとして使用しました。それを~/.drushサブディレクトリに配置し、drush file-permissionsDrupalサイトの作業中のサブディレクトリで実行することができます。

Drupalサイトをブートストラップし、をチェックしてfile_private_pathfile_public_pathApacheユーザーとグループを修正するように設定します。Apacheのユーザー/グループは自動的に決定されるため、ユーザーが手動で指定したり、スクリプトファイルにハードコードしたりする必要はありません。

モジュールページ:https : //www.drupal.org/project/file_permissions


モジュールをDrupal 8に移植するのは素晴らしいことです
Benedikt

モジュールはtmpフォルダーのアクセス許可を変更しません。それは意図的ですか?私の設定では、tmpはsite / default / tmpに設定されており、そのディレクトリには権限の変更が適用されていません。
18

0

他の人が述べたように正しい許可は

すべてのDrectories-> 755
すべてのファイル-> 755
サイト/デフォルト-> 755(これは、このディレクトリのルールをオーバーライドします)
sites / default / files- > 775(このディレクトリとそのコンテンツのルールをオーバーライドします)
sites / default / settings。 php-> 444(これはこのファイルのルールを上書きします)

上記のルールを達成するための適切なコマンドは、Drupal Webサイトのルートにあります。

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.