web-dev-qa-db-ja.com

/ var / www / htmlおよびWebサイトのドキュメントルートの自分のホームディレクトリに関する権限の問題

私はnot/var/www/htmlフォルダで777許可を与えようとしていますが、Sudoなしでファイルを編集したいです。したがって、/var/www/html内のホームディレクトリにフォルダのシンボリックリンクを作成します。 Sudo ln -sT /home/andre/www/moodle/ moodleを使用して作成し、ls -la出力は次のとおりです。

andre@andre-270E5G:/var/www/html$ ls -la
total 8
drwxr-xr-x 2 root root 4096 Mai  4 10:20 .
drwxr-xr-x 4 root root 4096 Abr 29 14:29 ..
lrwxrwxrwx 1 root root   23 Mai  4 10:20 moodle -> /home/andre/www/moodle/

したがって、私のmoodleフォルダーには、すべてのユーザーの読み取り、書き込み、実行の許可がありますが、それは私が望むものではありません。コマンドを変更しようとしてSudo chmod -R 775 moodle/を使用しましたが、すべてのユーザーに対して読み取り、書き込み、および実行の許可を保持しました。 /home/andre/www/moodleのmoodleフォルダーで同じことを試みましたが、同じままでした。 ls -la/home/andre/www/の出力は次のとおりです。

andre@andre-270E5G:~/www$ ls -la
total 28
drwxrwxr-x  3 andre andre  4096 Mai  4 10:02 .
drwx------ 49 andre andre 20480 Mai  4 10:01 ..
drwxrwxr-x 41 andre andre  4096 Mai  4 10:02 moodle

したがって、/home/andre/www/moodleフォルダーには、必要な権限があります。

追加の問題として、localhost/moodleにアクセスすると、403 Forbiddenエラーが発生します。

ここで何が間違っていますか?

33
André Carvalho

許可の問題を解決するためにシンボリックリンクを使用するという考え全体に欠陥があり、機能しません。シンボリックリンク自体に表示される権限はほとんど無関係であり、「実際の」ディレクトリの権限を回避するために使用することはできません。 /var/www/html/moodleから/home/andre/www/moodle/へのシンボリックリンクを作成しても、/home/andre/www/moodle/の権限は回避されません。 /var/www/html/moodleで必要な権限を持っている場合に限り、/home/andre/www/moodle/で何かをしたい人は誰でもそうすることができます。

Sudo chmod -R 775 moodle/を実際に実行するとdidに影響がありますが、シンボリックリンクの許可を変更せず、シンボリックリンクのターゲット/home/andre/www/moodle/の許可を変更したとは考えていません。

ウェブサーバーで発生する403エラーは、おそらくウェブサーバーに/home/andreを入力するために必要な権限がないためです。これは「追加の問題」ではなく、同じ権限の問題によるものです。

そのため、シンボリックリンクを使用する代わりに、ファイルとWebサーバーを編集してそれらにアクセスする(または、アプリケーションによっては編集することもできる)アクセス許可を把握する必要があります。正確にこれらのアクセス許可が何であるかは、使用事例(アプリケーションとサーバーの構成)によって異なります。

一般に、ファイルを所有し、rwパーミッションを持ち、Webサーバーはグループパーミッションを介してファイルへの読み取りアクセスのみを持ち、他のすべてのユーザーはアクセス権をまったく持たないことをお勧めします。

許可の例(情報が不足しているため、ユースケースでは機能しない場合があります):

andre@fermat:/var/www/html$ ls -al moodle/
total 0
drwxr-x--- 2 andre www-data 60 mai  4 16:20 .
drwxr-xr-x 3 root  root     80 mai  4 16:20 ..
-rw-r----- 1 andre www-data  0 mai  4 16:20 index.html

ディレクトリには、所有者がディレクトリを入力してそのコンテンツを変更するのに十分なアクセス権があることがわかります。Webサーバー(グループwww-data内)が入力および読み取りを行えます。ファイル自体は、ユーザー(所有者)が読み取りおよび書き込み可能で、Webサーバー(グループwww-data内)が読み取り可能です。他のすべてのユーザーは一切アクセスできません。

繰り返しますが、これは例としてのみ使用してください。 Webサーバーの正確なユーザー/グループは、構成によって異なります。そして、あなたのアプリケーション(moodle)は異なるパーミッションを必要とするかもしれません、あなたはそのドキュメントを調べる必要があります。

2
mastov

トーマス・ワードによる優れた回答 https://askubuntu.com/a/767534/71786

8つのコマンドの代わりに、わずか3つのコマンドですべての推奨手順を実行できます。

3つのコマンド:

Sudo chown -R ubuntu:www-data /var/www
Sudo find /var/www -type d -exec chmod 2750 {} \+
Sudo find /var/www -type f -exec chmod 640 {} \+

次の8つのコマンドと同じ作業を行います:

Sudo chgrp -R www-data /var/www
Sudo find /var/www -type d -exec chmod g+rx {} +
Sudo find /var/www -type f -exec chmod g+r {} +
Sudo chown -R ubuntu /var/www/
Sudo find /var/www -type d -exec chmod u+rwx {} +
Sudo find /var/www -type f -exec chmod u+rw {} +
Sudo find /var/www -type d -exec chmod g+s {} +
Sudo chmod -R o-rwx /var/www/
2
vipin mehta