特定のパスで複数のファイルを読み書きする必要があるプログラム (syslog-ng) を実行しています。起動時に、そのパスでファイルを開くことができないというエラーが発生していました。
次のディレクトリ構造を想定してください:
/var/platform/program
ディレクトリplatform
の権限は 0655 に設定されています (所有者ユーザーの実行権限ではありません)。この権限を 0755 に変更すると、syslog-ng は正常に動作します。
一方、同じディレクトリ内のファイルを開いて書き込む小さなプログラムを C で作成しましたが、root として実行すると問題なく動作しますが、syslog-ng は失敗します...
この場合、何が問題になるのでしょうか?
答え1
syslog はおそらくchdir
ディレクトリにアクセスする必要があるため、ディレクトリに実行ビットを設定する必要があります。