CentOS 6で起動時にbashスクリプトを実行したいのですが、スクリプトを/etc/init.d/
ディレクトリに追加しましたが、これらのスクリプトはすべてrootによって実行されます。すべてのユーザーに対してスクリプトを実行したい。
次のようにcrontabに追加できます。
@reboot /bin/bash /dir/of/your/script
crontab
に慣れていない場合は、次のヒントがあります。
crontab -l
現在スケジュールされているジョブを一覧表示します。crontab -e
編集できます。最初に:それはプログラミングの質問ではありません-より良い場所は https://superuser.com/ です。
2番目:おそらくLinuxを使用していますが、;)を指定することをお勧めします。
3番目:起動時にスクリプトを実行すると、システムのセキュリティにとって非常に危険です。したがって、これがルートのみのスクリプトの正当な理由です。したがって、がルートアクセスを持っている場合-それを使用します(あなたはシステム管理者ですよね?)、アクセスしていない場合は-おそらくより良いでしょうあなたはそれをそのままにしておくからです.. :)
Rc.dスクリプトの有効なUIDを変更する方法について質問がある場合は、次のようなものを使用できます。
#!/bin/bash
export MYHOME=/path/to/somewhere
case $1 in
start) /bin/su <username> $MYHOME/bin/startup.sh ;;
stop) /bin/su <username> $MYHOME/bin/shutdown.sh ;;
restart)
/bin/su <username> $MYHOME/bin/shutdown.sh
/bin/su <username> $MYHOME/bin/startup.sh
;;
esac
exit 0
したがって、スクリプトはどこにでも置くことができ、init-scriptからsu
で実行されます。
su
を使用してルート権限を削除するには、-c
を使用して次のようなコマンドを実行します。
# su user -c whoami
user
特定のスクリプトに特権を削除させたい場合は、su <user> -c <script> -magic-parameter
を使用してスクリプト自体を呼び出すことができます。ここで、-magic-parameter
は、root以外のユーザーとして実行したいことを実行するようにスクリプトに指示します。