ログファイルへのアクセス許可が拒否されました

ログファイルへのアクセス許可が拒否されました

通常のユーザーとして Apache からのログ ファイルを表示できるようにしたいと考えています。このファイルを root として 777 に設定しましたが、通常のユーザーとして表示できません。なぜでしょうか。

#I have set permissions for everyone
root@senior:/var/log/apache2# ls -l
total 200
-rwxrwxrwx 1 root root   1951 Feb 27 23:07 access.log
-rwxrwxrwx 1 root root  89508 Feb 27 23:07 error.log
-rwxrwxrwx 1 root root 101601 Feb 27 23:06 other_vhosts_access.log

#I have also set directory permission 
root@senior:/var/log# ls -l
drw-rw-r-- 2 root        adm          4096 Feb 27 23:08 apache2

しかし、まだファイルを表示できません

kubi@senior:$ ls -l /var/log/apache2/
ls: cannot access /var/log/apache2/other_vhosts_access.log: Permission denied
ls: cannot access /var/log/apache2/error.log: Permission denied
ls: cannot access /var/log/apache2/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? error.log
-????????? ? ? ? ?            ? other_vhosts_access.log
kubi@senior:/$ ls /var/log/apache2/error.log
ls: cannot access /var/log/apache2/error.log: Permission denied

私はDebianを実行しています

答え1

ディレクトリは750ではなく である必要があります664。また、ユーザーを グループに追加する必要があります。実際、ログの読み取りがグループadmの重要な目的です。adm

ディレクトリのパーミッションはファイルとは少し異なります。簡単に言うと、ディレクトリは名前とアドレスのリストです。名前はファイル名、アドレスはファイルの実際の場所です。パーミッションはxこのリストへのアクセスを制御します。特定のファイルのアドレスを検索するには、その親ディレクトリの実行ビットが必要で、そのディレクトリの親などにも実行ビットが必要です。パーミッションはr次に、リストファイル: がある場合--x、ファイル名がわかっていればファイルにアクセスできますが、 はできませんls。最後に、wはファイルの作成、名前変更、および削除を制御します。したがって、ファイルにアクセスするには、常に ビットが必要ですx

また、ログファイルを777に設定しないでください。644または640のいずれかに設定する必要があります。理由は2つあります。1つは、実行可能ではないため、ビットをxオフにする必要があることです。2つ目、より重要なのは、通常のユーザーが一度もないApache ログ ファイルに書き込み、読み取りのみを行います。これは、サーバーの潜在的なセキュリティ ホールです。

答え2

含まれるファイルを一覧表示できるようにするには、ディレクトリに実行フラグを設定する必要があります。

しかし、より良い解決策は、ファイルの権限を変更するのではなく、ユーザーを管理者グループ(adm)に追加することです。

関連情報