#linux #bash #shell #csh
Вопрос:
У меня есть сценарий bash, в котором есть функция, написанная на Perl-скрипте, вызываемая в сценарии bash. Но когда я пытаюсь запустить скрипт в cron, cron не может извлечь скрипт, так как в нем говорится, что для этого требуется доступ пользователя root. Когда я выполняю сценарий, я переключаюсь на роль менеджера данных для выполнения. Что я могу сделать, чтобы cron также мог выполнить сценарий?
Немногие предложили преобразовать сценарий bash в сценарий csh также для справки попросили меня добавить
source /central/confg/global.cshrc
это есть в сценарии, но я не силен в написании сценариев оболочки, поэтому у меня возникли проблемы с преобразованием сценария bash в сценарий csh.
Если у кого-нибудь есть какие-либо идеи о том, что здесь можно сделать, пожалуйста, поделитесь ими.
Комментарии:
1. По предоставленной вами информации трудно сказать, что происходит. Знаете ли вы конкретно, почему в нем говорится, что для этого требуется корневой доступ? Работает ли нормально запуск скрипта (т. Е. Не с помощью cron), или это также говорит о том, что для него требуется root? И не имеет смысла, что использование csh будет иметь какое-либо отношение к этому; кто предложил преобразовать его в csh, и у вас есть какие-либо идеи, почему они подумали, что это поможет?
Ответ №1:
добавьте нижеприведенную строку в файл: /etc/sudoers
$(USERNAME) ALL=(ALL:ALL) NOPASSWD: $(PATH TO SCRIPT)
Ответ №2:
Пользователь по умолчанию-root, если при создании cronjob пользователь не указан в качестве параметра. Предоставьте сценарию разрешения на выполнение для успешного запуска и задайте любые переменные среды, необходимые корневому пользователю для запуска сценария.
Примечание: Пользователь root не должен использоваться по соображениям безопасности, если это не необходимо.
Комментарии:
1. Это неверно; для заданий cron нет пользователя по умолчанию. В общесистемных файлах crontab (обычно /etc/crontab и файлах в /etc/cron.d/) есть явное поле имени пользователя для запуска от имени после полей времени и даты и перед командой. В файлах crontab для каждого пользователя (обычно в /var/spool/cron/crontabs/) имя пользователя определяется именем файла (например, записи в /var/spool/cron/crontabs/root запускаются от имени root, записи в /var/spool/cron/crontabs/fred запускаются от имени fred и т. Д.).