5

Я хочу запустить bash-скрипт во время загрузки в CentOS 6. Я добавил скрипт в каталог /etc/init.d/ но все эти скрипты запускаются пользователем root. Я хочу запустить скрипт для любого пользователя.

3 ответа3

8

Вы можете добавить его в свой crontab следующим образом:

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

Если вы не знакомы с crontab , у вас есть несколько советов:

  • crontab -l перечисляет текущие запланированные задания.
  • crontab -e позволяет вам его редактировать.
0

Во-первых: это не вопрос программирования - лучше место https://superuser.com/.

Второе: вы, вероятно, используете Linux - но это лучше указать;).

Третье: запуск сценариев во время загрузки очень опасен для безопасности системы. Поэтому здесь есть веская причина для скриптов только для root. Итак, если у вас есть root-доступ - используйте его (вы системный администратор, верно?), Если у вас нет доступа - вероятно, лучше оставить его как есть .. :)

Если ваш вопрос касается того, как изменить эффективный UID для некоторого скрипта rc.d, вы можете использовать что-то вроде:

#!/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

Вы можете использовать su для удаления привилегий root, используя -c для запуска команды, например:

# su user -c whoami
  user

Если вы хотите, чтобы определенный скрипт отбрасывал привилегии, вы можете просто вызвать сам скрипт с помощью su <user> -c <script> -magic-parameter где -magic-parameter указывает скрипту делать то, что вы хотите, чтобы он выполнялся как пользователь без полномочий root.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .