Я хочу запустить bash-скрипт во время загрузки в CentOS 6. Я добавил скрипт в каталог /etc/init.d/
но все эти скрипты запускаются пользователем root. Я хочу запустить скрипт для любого пользователя.
3 ответа
Вы можете добавить его в свой crontab следующим образом:
@reboot /bin/bash /dir/of/your/script
Если вы не знакомы с crontab
, у вас есть несколько советов:
crontab -l
перечисляет текущие запланированные задания.crontab -e
позволяет вам его редактировать.
Во-первых: это не вопрос программирования - лучше место 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
.
Вы можете использовать su
для удаления привилегий root, используя -c
для запуска команды, например:
# su user -c whoami
user
Если вы хотите, чтобы определенный скрипт отбрасывал привилегии, вы можете просто вызвать сам скрипт с помощью su <user> -c <script> -magic-parameter
где -magic-parameter
указывает скрипту делать то, что вы хотите, чтобы он выполнялся как пользователь без полномочий root.