私は現在経験していることです。星雲チャレンジ存在するUtilize-exercises.comと課題の一つcronに依存するスクリプト。
crontab -u flag03
このジョブは他のユーザー(flag03)によって実行されており、ログインしたユーザー(level03)にはジョブを表示するために実行する権限がありません。
プロンプトは、スクリプトがcronによって実行されることを明確に示します。また、これはディレクトリ内の唯一のスクリプトなので、さらに調査することもできます/home/flag03
。
しかし、これが現実の世界であれば、このスクリプトがcronによって実行されているという事実はわかりませんでした。
したがって、問題は、権限のないユーザーの観点からジョブが実行されているかどうかをどのように検出できるかということです。
私は以下を試しました:
while true; do ps au | grep <scriptname> | grep -v grep; done;
これにより、長い間実行されているプロセスを見ることができますが、すぐに終了するプロセスはほとんど見えません。また、私はスクリプトの名前を知っていると仮定します。
具体的な環境はUbuntuです。 apt-getは利用できませんが、gccにはアクセスできます。
どんなアイデアがありますか?
答え1
どのバージョンのUbuntuですか?を使用すると、開始されたすべてのプロセスが直系の子プロセスになるため、私が作成したcgroupをsystemd
使用できます。cron
systemd
cron
この情報を取得する1つのオプションはpsコマンドを使用することです。たとえば、次のようになります。
ps -eo user,pid,cmd,unit | grep cron.service | grep flag03
答え2
あなたはできません。最も近い方法は次のとおりです。
inotifywait -m /home/flag03/script
実行内容は表示されませんが、オープンscript
またはアクセスされた時間は表示されます。
答え3
おそらく/ proc / [0-9] +ディレクトリでinotifywaitを使用すると、短期実行プロセスのより良いアイデアを得ることができます。
答え4
この特別なケースにはファイルがあり、/var/spool/cron/crontabs/flag03
そのアカウントを使用してファイルを読み取ることができますnebula
。
ただし、level03
アクセスする権限が不十分です。