私はそれがすべての始まりで使用されることを望みます/etc/rc.local
。
たとえば、私のスクリプトが呼び出され、startscript.sh
保存場所/home/debian
は次のようになります。まず、名前付きファイルを生成しようとしたtest.log
後、別の操作を実行します。
しかし、起動時にエラーを読みました。touch: cannot touch ‘test.log’: Permission denied
rc.local
私の理解によると、rootとして実行されると、実行されるすべてのエントリもrootとして実行される必要があるため、test.log
とにかく生成する必要があります。どのようにこれが可能ですか?
startscript.sh
:
#!/bin/sh
touch test.log
#... other stuff
rc.local
フラグメント:
#!/bin/sh -e
#.. other stuff
sh /home/debian/startscript.sh
ベストアンサー1
このアプローチには2つの問題があります。 1つはルートによって実行されることです。したがって、生成されたすべてのファイルは、実行しrc.local
ない限りルートが所有します。chown
第二に、これはセキュリティ上の脆弱性であり、rootとして実行されたコードはroot権限を持たないユーザーによって修正される可能性があります。
より良い方法は、次を使用することです。@再起動cron
権限のないユーザーの時間指定子。すでに持っているなら予約されたことファイルを編集してこの行を追加し、crontab <yourcrontab>
コマンドを実行します。または、crontab -e
コマンドを使用してこの行を直接入力します。
@reboot /home/debian/startscript.sh
sh
で始まるので、スクリプトを実行する必要はありません#!/bin/sh
。