2012-04-26 3 views
0

У меня есть ночной скрипт, который выполняет домашнее хозяйство данного пользователя, а затем выключается. Завершение работы требует прав root, но задачи администратора должны выполняться как пользователь, чьи файлы очищаются. Очистка занимает неопределенное время для запуска, поэтому очистка и завершение работы должны выполняться в одном скрипте. Мой вопрос в том, как я могу создать сценарий с этими двумя командами, первый из которых должен запускаться обычным пользователем (скажем, Боб); а следующий должен запускаться как root (shutdown) только после завершения первого. Я экспериментировал с системой crontab (которая может запускать администратора как Bob, но затем не может завершить работу); и как root crontab (который может завершить работу, но не запускать задачи администратора как Bob). Помощь будет высоко оценена.system crontab: как запускать скрипты как root И как пользователь

ответ

0

Вы можете использовать sudo для выполнения команды как другого пользователя.

Я пробовал следующее на Debian.

Написал сценарий, который включал следующее.

#!/bin/bash 

echo $HOME 

И выполнил следующую команду корня.

sudo -u nonrootuser ./script && some-admin-command 

/home/nonrootuser помещавших и выполнил some-admin-command

, который показывает, что корень был в состоянии выполнить и как обычный пользователь и как корень. Поэтому сохраните свой пользовательский скрипт для домашнего хозяйства в script, замените nonrootuser на Bob и some-admin-command командой shutdown и запустите ее как root.

0

В файле cronjob, можно выполнив следующую команду команду как:

0 5 * * * sudo -u nonrootser -H bash script.sh && some-command-another 

И вы можете написать файл script.sh, который включал следующие как:

#!/bin/bash 
echo "Hello World" 
Смежные вопросы