запуск сценарію, що містить sudo в cron


0
#!/bin/bash
value=$(<man.txt)
echo "$value"

if [ "$value" == "true" ]; then
    echo "startedif_manthan"
      ps -ef|grep sym |awk '{ print $2 }'|sudo  xargs kill -9;
      sleep 30;
    sudo sh /var/www/symmetric-ds-3.1.6/bin/sym --port 8082 --server;
fi

Мені потрібно бігти над скриптом у cron. Чи буде він виконаний у cron без пароля?

Будь-які пропозиції?


Він буде виконуватися лише без необхідного запиту пароля, якщо ви запускаєте його з crontab root або якщо ви спеціально надали користувачеві ці права без пароля у sudoфайлі конфігурації, який можна редагувати за допомогою команди visudo.
Даніель Андерссон

Відповіді:


0

Ви можете налаштувати sudoне вимагати пароль:

  1. Зробити /var/www/symmetric-ds-3.1.6/bin/symвиконуваним:

    $ chmod a+x /var/www/symmetric-ds-3.1.6/bin/sym
    
  2. Замініть у своєму сценарії:

    sudo sh /var/www/symmetric-ds-3.1.6/bin/sym --port 8082 --server
    

    з:

    sudo /var/www/symmetric-ds-3.1.6/bin/sym --port 8082 --server
    
  3. Використовуйте visudoдля додавання наступного рядка до /etc/sudoers:

    <user who runs the cronjob> ALL = NOPASSWD:/path/to/xargs [-0-9 a-z]*, /var/www/symmetric-ds-3.1.6/bin/sym [-0-9 a-z]*
    

Користувачеві також потрібно буде надати без паролів права xargsна вбивство програми, коли сценарій стоїть.
Даніель Андерссон

2

Я краще викладу сценарій, подібний до:

#!/bin/sh
read value < /path/to/man.txt

if [ "$value" = "true" ]; then
    pkill -u root '^sym$' && sleep 30
    sh /var/www/symmetric-ds-3.1.6/bin/sym --port 8082 --server
fi

Оскільки ви хочете все-таки запустити кожну команду як root, покладіть її в crontab root. Якщо вам не потрібно нічого запускати як root, не робіть цього. Якщо вам потрібно запустити його sudoчерез спеціально налаштовані права для певних програм, поверніться назад sudo, але зауважте, що вам також знадобляться спеціально налаштовані права, щоб знищити програму (якщо вона не еквівалентна --killкомутатору).

Я зняв echos, оскільки зайві заяви про друк у crontab просто захарастять журнали. Ви можете реалізувати механізм реєстрації в сценарії, якщо це необхідно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.