
通常のユーザーとして 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)に追加することです。