デフォルトでは、/var/log/messages* は「root」ユーザーのみの読み取り/書き込み権限で作成されます。アプリケーションがログ ファイル内のデータを読み取って処理できるようにするなど、ログ ファイルを誰でも読み取り可能にする必要がある場合があります。 「chmod」を使用してそのようなファイルのアクセス許可を変更することは、次の logrotate cron ジョブ中に元のアクセス許可で再作成されるため、一時的な解決策になる可能性があります。この投稿は、/var/log/messages にカスタム権限 (例:644) を永続的に設定する方法を理解するのに役立ちます。
CentOS/RHEL 4 および 5 の場合 (syslogd を使用)
1. 「xxxx の作成」 」 /etc/logrotate.d/syslog のディレクティブ config ファイルは、syslogd デーモンによって管理されるログ ファイルのアクセス許可を制御します。
2. 以下の例は、/var/log/messages の権限を 644 (誰でも読み取り可能) に変更する方法を示しています。単一のログ ファイル (例:/var/log/messages) のパーミッションのみを変更することを目的としているため、/var/log/messages の変更専用に /etc/logrotate.d/syslog に新しい構成セクションを作成しています。 /P>
現在の権限:
# ls -l /var/log/messages -rw-------. 1 root root 424848 June 22 09:18 /var/log/messages
3. まず、ファイル /etc/logrotate.d/syslog のメイン セクションから /var/log/messages を削除します。
# vi /etc/logrotate.d/syslog /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron { ### Remove /var/log/messages from main section sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
以下に示すように /var/log/messages の新しいセクションを作成し、同じファイルに追加します。
/var/log/messages { ### add /var/log/messages to a sub-section sharedscripts create 0644 ### This directive will change the permission on /var/log/messages* to 644 postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true endscript }注意 :syslogd は、既存のファイルのアクセス許可を自動的に変更しません。元のファイルをコピーまたは移動し、変更を有効にするためにすぐにローテーションを強制します。
4. syslog を手動でローテーションして、権限の変更を確認します。
# logrotate --force /etc/logrotate.d/syslog
# ls -l /var/log/messages -rw-r--r--. 1 root root 231 June 22 09:19 /var/log/messages
以降のすべてのログ ファイルは、「644」権限で作成されます。
CentOS/RHEL 6 および 7 の場合 (rsyslogd バージョン>3 を使用)
$FileCreateMode ディレクティブと $umask /etc/rsyslog.conf のディレクティブ 構成ファイルを使用すると、rsyslogd が新しいファイルを作成する作成モードを指定できます。デフォルトでは、$FileCreateMode ディレクティブは 0644 としてコンパイルされます。理想的には、rsyslog によって管理されるファイルを権限 644 で作成する必要がありますが、実際の権限は rsyslogd のプロセス umask に依存するため、すべてのファイルは権限 600 で作成されます。これを修正するには、/etc/rsyslog.conf を編集し、変更が必要なファイルの先頭に「$umask 0000」を追加します。
以下の例は、/var/log/messages の許可を 644 (誰でも読み取り可能) に変更する方法を示しています
1. /va/log/messages ファイルの現在の権限を確認します:
# ls -l /var/log/messages -rw-------. 1 root root 424848 June 22 09:18 /var/log/messages
2. /etc/rsyslog.conf 構成ファイルと、ファイルの先頭にあるディレクティブ「$umask 0000」を編集します。
# vi /etc/rsyslog.conf .. $umask 0000 ### Add this to reset the umask# $FileCreateMode 0644 ### This line can be omitted as the compiled in default is already set to 644. Modify this value if you need to set permissions other than 644# *.info;mail.none;authpriv.none;cron.none /var/log/messages $umask 0077 ### Add this to set umask back to default, otherwise all files managed by rsyslogd (/eg /var/log/secure) will be created as world readable (644)注意 :rsyslogd は、既存のファイルのアクセス許可を自動的に変更しません。新しいアクセス許可を有効にするには、ファイルを削除または移動し、rsyslogd をリロードする必要があります。
3. 現在の /var/log/messages ファイルを別の場所に移動します。これにより、新しく定義した権限で新しいメッセージ ファイルを作成できます。
# mv /var/log/messsages /tmp/
4. rsyslog サービスを再起動して、新しい /var/log/messages ファイルを生成します。
# service rsyslog restart ### CentOS/RHEL 6 # systemctl restart rsyslog ### CentOS/RHEL 7
5. ファイルのパーミッションを再度確認してください。
# ls -l /var/log/messages -rw-r--r--. 1 root root 231 June 22 09:19 /var/log/messages
それだけです。以降のすべてのログ ファイルは、「644」権限で作成されます。