crontabで.shを実行する

crontabで.shを実行する

crontabで次のスクリプトを実行しています。

@reboot sh  /home/root1/ssh.sh

このファイルには、ssh.sh次の内容のみが含まれています。

sudo systemctl start ssh.service

ただし、デバイスが起動してもSSHサービスは実行されません。

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; disabled; vendor preset:>
     Active: inactive (dead)
       Docs: man:sshd(8)
             man:sshd_config(5)
lines 1-5/5 (END)

出力は次のとおりですcat /var/log/cron.log

Dec  9 09:40:34 ubuntu cron[843]: (CRON) INFO (pidfile fd = 3)
Dec  9 09:40:34 ubuntu cron[843]: (CRON) INFO (Running @reboot jobs)
Dec  9 09:40:34 ubuntu CRON[915]: (root1) CMD (sh  /home/root1/ssh.sh)
Dec  9 09:41:04 ubuntu systemd-timesyncd[709]: Initial synchronization to time server 91.189.89.198:123 (ntp.ubuntu.com).
Dec  9 09:44:56 ubuntu crontab[3018]: (root1) LIST (root1)

以下で出力を見つけますsudo -l

root1@ubuntu:~$ sudo -l

Matching Defaults entries for root1 on ubuntu: <br/>
    env_reset, mail_badpass,<br/> secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin <br/>

User root1 may run the following commands on ubuntu:<br/>
    (ALL : ALL) NOPASSWD: /home/root1/ssh.sh <br/>
    (ALL : ALL) ALL

sudoers で "root1 ALL=(ALL:ALL) NOPASSWD:ALL" を使用すると、crontab は再起動時にシェルスクリプトを実行します。

ただし、「root1(ALL:ALL)NOPASSWD:/home/root1/ssh.sh」を使用すると、再起動時にシェルスクリプトが機能せず、手動で実行してもパスワードの入力を求められます。

ベストアンサー1

それを設定ルートのクローンタブユーザーcrontabの代わりに:

$ sudo crontab -e

エディタが開いたら、コマンドを追加します。コマンドを@reboot入力しないでください。sudocrontab

メモ: crontab一部を使用している限り、rootでジョブを実行するための特別なセキュリティリスクはありません。常識。ここで最も重要なのは、実行中のスクリプトへの書き込みアクセスをrootユーザーに制限する必要があることです。これにより、「一般」ユーザーがroot権限で実行されるスクリプトを変更するのを防ぎます。

おすすめ記事