Можно ли сделать файл Bash запустимым как root в crontab?

Мне нужно, чтобы файл Bash выполнялся периодически, и он должен быть как root.

Возможно ли это?

[[email protected] nutch-0.9]# locate crontab
/etc/crontab
/etc/sysconfig/crontab
/usr/bin/crontab
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man1p/crontab.1p.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim71/syntax/crontab.vim
[[email protected] nutch-0.9]# 

Ответ 1

Да, просто добавьте его к > crontab; выполните команду crontab -e.

Места, в которых хранятся файлы cron, могут быть немного bizzare, поэтому используйте команду crontab -e, которая будет проверять ее в нужном месте, и я считаю, что она проверяет синтаксис.

Ответ 2

Вы можете просто сделать

crontab -e

как root.

Ответ 3

Просто укажите root как пользователя для записи в /etc/crontab:

0 0 *  * *  root  somecommand

В качестве альтернативы вы также можете добавить команду в корневой персональный crontab, используя crontab -e как root.

Ответ 4

Независимо от того, вам нужно будет иметь доступ к учетной записи пользователя root.

  • вы можете добавить его в корень crontab, как предложено
  • вы можете использовать sudo, как предложено
  • вы можете использовать бит setuid. Проблема с битом setuid заключается в том, что она должна быть скомпилированной программой. Если он скомпилирован, вы можете "chmod 4755" и установить владельца файла в root, и он будет запущен с правами root. Если он не скомпилирован, вы можете написать крошечную оболочку в C (или любой другой скомпилированный язык программирования), который просто вызывает ваши script и setuid на обертке, и убедитесь, что оболочка принадлежит root.

Мой совет? Используйте root crontab. Это то, что там есть.

Кроме того, в crontab нет пользовательской записи, как предложено sth... синтаксис:

# .---------------- minute (0 - 59) 
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ... 
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)  OR sun,mon,tue,wed,thu,fri,sat 
# |  |  |  |  |
# *  *  *  *  *  command to be executed

Если вы хотите ввести что-то в crontab как root, просто войдите в свою учетную запись root, "crontab -e" и voila... root crontab.

Ответ 5

Я считаю, что все записи в корневом crontab выполняются с правами root. Вы можете просто заставить его вызывать Bash script как действие, и он должен делать то, что вы хотите.

Ответ 6

Один из способов сделать это (через sudo):

  • Вам нужно настроить sudo prilvileges для запуска учетной записи без ввода учетных данных пользователя.
  • Добавьте команду "sudo/path/to/command" (без ") для запуска команды с правами root. Вы также можете добавить параметры в команду.