Можно ли сделать файл 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. Вы также можете добавить параметры в команду.