cronスケジューリングジョブを実行するためにrootを使用することから抜け出そうとします。したがって、実行する必要があるすべてのcronジョブを実行するために、ログインしないシステムアカウント(/dev/null home、/sbin/nologin shell)を作成することが考えられます。 。一般的に、root に制限されている通常のファイルやフォルダの所有権を変更せずに必要な場所で実行できるように、これらのアカウントに適切な権限を付与する方法が疑問に思います。
たとえば、このシステムアカウントが実行している操作のログファイルを/var/logに出力したいが、/var/log/はrootが所有し、755に設定されているとします。このプロセスは、rootとして実行しないとログファイルを生成できません。そうですか?
Linuxカーネル機能を使用することがこれを達成するための最良の方法であると仮定するのは正しいですか?
答え1
これを達成する 1 つの方法は、ログを下のサブフォルダーに入れてから、サブフォルダーの/var/log
権限を設定することです。
別の理由は、システムログにログインlogger
し、フィルタを使用してログを特定のファイルにリダイレクトすることです。
例えば
# /etc/rsyslog.d/10-myrules.conf
if $programname == ["script1", "script2"]
then {
action(type="omfile" file="/var/log/myscripts/sys.log")
stop
}
これを実行するときは、logrotateルールも設定する必要があります。