Httpd ディレクトリの読み取り権限のみの問題

Httpd ディレクトリの読み取り権限のみの問題

私のシナリオでは、'/var/log/' の 'httpd' ディレクトリを 'devs' グループ (Amazon Linux 2) のユーザーが読み取り可能にする必要があります。これを実現する方法を教えていただけませんか?

システムを保守する開発者が数人おり、ルート アクセスを必要とせずに /var/log/httpd 内のログ ファイルを簡単に読み取れるようにしたいと考えています。

これは役に立ちますか?

chmod -R go+r /var/log/httpd

またはchmod -R go+rX /var/log/httpd

それとも、次のようにする必要がありますか:

chmod 644 /var/log/httpd

chgrp -R apache /var/log/httpd
chmod 02750 /var/log/httpd
chmod 0640 /var/log/httpd/*
create 0640 root apache

ls

[root@ip-10-0-10-165 httpd]# ls -la
total 48
drwx------ 19 root   devs   4096 Apr  3 03:42 .
drwxr-xr-x 11 root   devs   4096 Apr  8 07:45 ..
-rw-r--r--  1 root   root      0 Feb 15 14:55 access_log
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u1-dev.qwerty.com
-rw-r--r--  1 root   root   1648 Apr  3 03:42 error_log
-rw-r--r--  1 root   root    883 Mar 13 03:41 error_log-20220313
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u4-dev.qwerty.com
drwxr-xr-x  2 root   root     41 Mar  1 20:44 langs.qwerty.com
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u8-dev3.qwerty.com
-rw-r--r--  1 root   root      0 Feb 15 14:55 ssl_access_log
-rw-r--r--  1 root   root    314 Apr  3 03:42 ssl_error_log
-rw-r--r--  1 root   root    157 Mar  6 03:50 ssl_error_log-20220313
-rw-r--r--  1 root   root      0 Feb 15 14:55 ssl_request_log
drwxr-xr-x  2 apache apache  253 Apr  3 03:42 www.qwerty.com
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u13-dev.qwerty.com
[root@ip-10-0-20-173 httpd]#

これらの権限セットを変更するにはどうすればよいでしょうか? ここでの最善のアプローチは何ですか?

答え1

このディレクトリに acl を使用して、devs グループに権限を付与することができます。例:

setfacl -m g:devs:rx httpd/

ディレクトリのファイル アクセス リストを設定できます。例では、ユーザー/グループの root のみに権限が設定された httpd ディレクトリがあります。

# ls -la| grep httpd
drwx------   2 root     root        4096 Apr  8 10:11 httpd

このディレクトリに ACL リストがないことを確認できます:

getfacl httpd/
# file: httpd/
# owner: root
# group: root
user::rwx
group::---
other::---

devs グループに読み取り権限と実行権限を設定します。

setfacl -m g:devs:rx httpd/

権限を設定すると、次のようになります。

getfacl httpd/
# file: httpd/
# owner: root
# group: root
user::rwx
group::---
group:devs:r-x
mask::r-x
other::---

ls コマンドの既存の ACL には追加の記号 (+) が付いていることに注意してください。

# ls -la| grep httpd
drwxr-x---+  2 root     root        4096 Apr  8 10:11 httpd

デフォルトの権限を設定するには、-b スイッチを使用して setfacl コマンドを繰り返すのがよいでしょう。私は通常、そのようにしています。

-d, --default
           All operations apply to the Default ACL. Regular ACL entries in the input set are promoted to Default ACL entries. Default ACL entries in the input set are discarded. (A warning  is  issued
           if that happens).

よろしく

答え2

質問にタグを付ける方法によると、Redhat スタイルの環境を使用しているようです。標準の Apache httpd インストールを使用していると仮定すると、おそらく、舞台裏で logrotate を扱っていることになります。デフォルトでは、logrotate は から毎日実行されます/etc/cron.daily。現在のログ ファイルを移動し、新しいログ ファイルを作成して再起動し、httpd新しく作成された空のログ ファイルの使用を開始します。

チェックしてください/etc/logrotate.d/httpd。たとえば、標準バージョンでは次のように表示されます。

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

中括弧内に次のような行を追加すると、logrotate はログ ファイルを適切にローテーションし、正しい所有者とグループ メンバーシップで再作成します。

    create 0640 root devs

rootこれは、logrotate に、所有者、devsグループ、所有者の読み取り/書き込み権限とグループの読み取り権限を持つ新しいログ ファイルを作成するように指示します。

次に、次のように、権限と所有権を使用して httpd ログ ディレクトリを設定できます。

chown root:devs /var/log/httpd
chmod 0750 /var/log/httpd

最初の日には、ログ ファイルの権限を手動で設定することもできます。そうすれば、logrotate は次の日に取得します。

chown root:devs /var/log/httpd/*log
chmod 0640 /var/log/httpd/*log

上記の @KuchnMar が示したように、ACL を巧みに利用することもできますが、このソリューションでは、さまざまな *nix およびファイルシステム タイプ間でシンプルかつ互換性が保たれます。

これは Debian スタイルのホストでも同様ですが、apache2代わりに logrotate 構成ファイルが呼び出される場合があります。

詳細は以下をご覧ください:

関連情報