web-dev-qa-db-ja.com

rootを必要とするサービスをインストールするスクリプトを実行するcronjobを取得できません

Ubuntu 18.04で、cronを介してスクリプトmyscript.shを実行する必要があります。これには、とりわけ、別のスクリプトのインストール手順pluckeye-linux-0.99.40.installerが含まれており、退屈なエラーが発生しています。

問題のスクリプトは Pluckeye のペアレンタルコントロールアプリのインストーラーです。これはルートとして実行する必要があります。配置したmyscript.shの内側

cd "/path/to/pluckeye/"
./pluckeye-linux-0.99.40.installer
  • Sudo crontab -eを実行してそこに配置すると

    * 20 * * * "/path/to/myscript.sh"

    次に、Pluckeyeのインストーラーは不可解なエラーを返します(cronが実行した内容の出力をファイルにリダイレクトしているので、問題の原因を確認できます)。

    0b8e:24: ca151e1e WARNING 32512 0b8e:33: ca151e1e WARNING 0x30b8e019 0b8e:42: ca151e1e WARNING 0x30b8e019 0b8e:78: ca151e1e WARNING 0x30b8e019 0c2c:14: ca151e1e WARNING 0x30b8e019 0b4c:20: ca151e1e WARNING 0x30b8e019 0c70:48: ca151e1e WARNING 0x30b8e019 FAILED TO INSTALL: 6400

  • しかし、Sudoを使用してシェルでインストーラーを正常に実行すると(すぐに返され、エラーが発生します)

    I need to be invoked by root
    FAILED TO INSTALL: 11520

    )問題なく動作します。


これは、cronが独自の最小限の環境を使用しているという事実から来ていると思います。上記の代わりに使用するなど、インターネットで見つけたさまざまなことを試しました

* 20 * * * . $HOME/.profile; "/path/to/myscript.sh"

インストーラーが動作することを期待していますが、何も変わりません。スクリプト内にSudoを配置したくないので、

cd "/path/to/pluckeye/"
Sudo ./pluckeye-linux-0.99.40.installer

私が読んだように、それはセキュリティリスクをもたらします。

Pluckeyeをcron経由でインストールするために何をする必要がありますか?

1
MyCatsHat

多分あなたはこれをするでしょう:

  1. crontab -eを使用
* 20 * * * sh /path/to/myscript.sh
  1. / etc/crontabを使用する
* 20 * * * root cd /path/to/pluckeye/ && sh ./pluckeye-linux-0.99.40.installer