別の残念な問題があります。 「テスト」グループに属するユーザーのセットがあります。 setgid ビットが設定されている /var/log/projects にフォルダがあります。これにより、/ projectsで作成されたすべての新しいファイルまたはフォルダが常に「testing」というグループの所有権を保持します。
[root@system log]# ll | grep projects
drwxr-s---. 4 root testing 4096 Jun 10 19:36 projects
そのディレクトリにファイルをタッチするかフォルダを作成すると、正しい権限と所有権が継承されます。
[root@system log]# touch /var/log/projects/testfile
[root@system log]# ll /var/log/projects/
total 4
-rw-r--r--. 1 root testing 0 Jun 10 19:49 testfile
新しいフォルダを作成すると、期待どおりに機能します。
[root@system projects]# mkdir folder1
[root@system projects]# ll
total 8
drwxr-sr-x. 2 root testing 4096 Jun 10 19:52 folder1
-rw-r--r--. 1 root testing 0 Jun 10 19:49 testfile
今まではそんなに良くなった。しかし、私はこのフォルダを使用して他のシステムのリモートシステムログを保存しています。 rsyslogdサービスを開始すると、プロセスによって生成されたすべてのファイルフォルダはルート:ルートの所有権を継承します。
drwx--S---. 2 root root 4096 Jun 10 19:44 remotehost
私の考えでは、setgidビットの目的は私のユースケースです。私が間違っているか、rsyslogdプロセスによって生成されたすべてのフォルダ/ファイルが「テスト」というグループの所有権を持つようにこの問題を解決する方法を教えてくれる人はいますか?これはRHEL 6サーバーにあります。
答え1
生成された方法は、出力の権限と所有権を具体的に管理しませんが、rsyslogdは管理するプログラムのためのものです。
Rsyslogd
出力モジュール文書ページfileGroup [groupName]
設定ディレクティブを使用して出力ファイルグループのデフォルト値を設定できることを示します。
答え2
rsyslog は setgid 固定ビットを無視するため、rsyslogd.conf カスタムテンプレート構成で次のディレクティブを使用して問題を解決できました。
$template TmplAuth, "/var/log/projects/%FROMHOST-IP%/%PROGRAMNAME%.log"
$template TmplMsg, "/var/log/projects/%FROMHOST-IP%/%PROGRAMNAME%.log"
$umask 0000
$DirCreateMode 0750
$FileCreateMode 0640
$FileGroup testing
$DirGroup testing
authpriv.* ?TmplAuth
*.info,mail.none,authpriv.none,cron.none ?TmplMsg
$umask 0000ディレクティブを使用してデフォルトのumaskをオーバーライドしないと、$DirCreateModeと$FileCreateModeは何もしません。