
これは私が少し前に尋ねた質問に関連しています。
Linux 上で特定のサービスを誰が再起動したかに関する詳細をログに記録したい。
例えば:
ユーザー X が Apache を再起動すると、ユーザー名、時間、サービス (つまり Apache)、およびステータス (成功/失敗) がログに記録されます。
小さなスクリプトを書いて、それをサービス起動スクリプトに手動で追加することで、これを実行できます。
しかし、数千台のサーバーと数十のサービスがあるため、これは不可能です。
サービス起動スクリプトを操作せずにこれを行う他の方法はありますか?
答え1
システムをロックダウンすることをお勧めします。 ユーザーに の使用を義務付けsudo
、 を使用した特定のコマンドのみの実行を許可しsudo
、 や などを禁止して任意のコマンドの実行を禁止しsudo su
ますsudo bash
。
sudo
は、当然ながらサービスの再起動も含め、それを介して実行されたすべてのコマンドをログに記録します。私のマシンでは/var/log/secure
、 のみが読み取り可能な にログが記録されますroot
。
ただし、これでは成功か失敗かという、最後に望んでいた結果は得られません。ただし、ラッパー スクリプトを使用して追加のログ記録を簡単に実装し、サービスを直接起動する代わりにユーザーに使用させるようにすることができます。ただし、ラッパー スクリプトは安全に行うように注意してください。
したがって、ユーザーは次のように入力します。
sudo wrapper_script start service
またはそのようなもの。
sudoはログに記録することに注意してください両方元のユーザーと、sudo を実行しているユーザー (デフォルトでは root)。