web-dev-qa-db-ja.com

通常のユーザーの起動時にスクリプトを実行するにはどうすればよいですか?

CentOS 6で起動時にbashスクリプトを実行したいのですが、スクリプトを/etc/init.d/ディレクトリに追加しましたが、これらのスクリプトはすべてrootによって実行されます。すべてのユーザーに対してスクリプトを実行したい。

5
Waqas Rana

次のようにcrontabに追加できます。

@reboot /bin/bash /dir/of/your/script

crontabに慣れていない場合は、次のヒントがあります。

  • crontab -l現在スケジュールされているジョブを一覧表示します。
  • crontab -e編集できます。
8
fedorqui

最初に:それはプログラミングの質問ではありません-より良い場所は 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で実行されます。

0
jm666

suを使用してルート権限を削除するには、-cを使用して次のようなコマンドを実行します。

# su user -c whoami
  user

特定のスクリプトに特権を削除させたい場合は、su <user> -c <script> -magic-parameterを使用してスクリプト自体を呼び出すことができます。ここで、-magic-parameterは、root以外のユーザーとして実行したいことを実行するようにスクリプトに指示します。

0
jbr