
特定のユーザーがcrontabを使用できることを確認したいと思います。シェルスクリプトでこの検証を使用したいと思います。
これを行う正しい方法は何ですか?
答え1
VISUAL=true EDITOR=true crontab -e 2>/dev/null
このコマンドは自動ですが、終了ステータスはスクリプト(およびそれを実行しているユーザー)が利用可能かどうかを示しますcrontab
。
他のユーザーの追加をテストするには-u username
(crontab
サポートされている場合)、スクリプトが-u
他のユーザーの代わりに実行するのに十分な権限を持っている場合にのみ機能します。許可されていないスクリプトは、他のユーザーが使用できないかのようにcrontab
終了状態を持ちます。1
crontab
sudo -u username …
sudo
それともそうではないかもしれません。構成に応じて環境を設定できます。
欠点:
- サポートする
crontab
こともサポートしない場合もあります-e
(POSIXではオプションと言います)。 - この方法は、「ユーザーが利用できるかどうか」
crontab
を正確に確認するのではなく、「スクリプトがユーザーcrontab
の代わりに使用できるか」を確認することです。これはあなたが望むものかもしれないし、そうでないかもしれません。 「特定のユーザー」が「スクリプトを実行しているユーザー」を意味する場合は、これは不要であり、-u
メソッドは正しく機能します。
利点:
/etc/cron.allow
andを分析する必要はありません/etc/cron.deny
(使用されている場合は実装定義ディレクトリにあります)。最終的な回答を構成するためにロジックを構築する必要はありません。crontab
それはあなたのためにすべてを自分で行います。
メモ:
- 私は Kubuntu 18.04.5 LTS で以前
crontab
確認しましたが、VISUAL
EDITOR
POSIX仕様のみ言及されましたEDITOR
。これがこの答えが2つの変数を設定する理由です。 - より良く見えるかもしれませんが、
crontab -l
crontabがない場合、コマンドは失敗を返します(少なくとも私のKubuntuではそれがうまくいきます)。 VISUAL=true crontab -e
私のKubuntu 18.04.5 LTSにcrontabが存在しない場合いいえ空のものをインストールします。他の実装についてはよくわかりません。 crontabがない場合は、空のcrontabをインストールすると副作用が発生する可能性があります。