Как создать скрипт bash, для запуска которого требуется доступ пользователя root

#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 и т. Д.).