От имени какого пользователя запускает крон sh-файл?
В крон добавлено задание на запуск sh-файла. Файл принадлежит root-root с правами 644. Если ничего не менять, то скрипт не выполняется - нет прав.
Как вариант, можно поставить права на файл 755 - тогда все работает. Может быть корректнее, не менять права, а изменить принадлежность файла, сменив его владельца и группу?
Искал, но не смог найти, какому пользователю передать эти права, чтобы скрипт по крону запускался. ОС - Linux Debian 10.
////////////////////////
Всем спасибо за участие!
Добавление /bin/bash перед именем скрипта решило проблему запуска не меняя атрибуты файла с 644 на 755.
Ответы (1 шт):
От имени какого пользователя запускает крон sh-файл?
От любого.
У каждого пользователя есть свой набор cron-задач. Крон-демон запускает задачи (скрипты) от имени одного из пользователя: root, обычного пользователя, или системного пользователя.
crontab -l- получить задачи текущего пользователяsudo crontab -l -u mysql- получить задачи другого пользователя, в данном случае mysql. Так как вы авторизованы как обычный пользователь, а обычные пользователи не могут видеть/редактировать задачи других пользователей, понадобилось повышение прав до пользователяrootчерез механизмsudo.sudo su,crontab -l -u mysql- то же самое, только сначала мы авторизовались подrootsudo cat /etc/crontab- выводит системные крон-задачи. В этом файле, в отличие от обычного крона, есть столбецuser- от какого пользователя будет запущена задача. А чтобы обычные пользователи не могли редактировать это файл, редактировать может только root.- также есть такие каталоги в
/etc:cron.d/cron.daily/cron.hourly/cron.monthly/cron.weekly/, они для системных задач, ознакомьтесь с содержимым самостоятельно. Там также прописан пользователь.
Файл принадлежит root-root с правами 644. Если ничего не менять, то скрипт не выполняется - нет прав
Скрипт не выполняется потому что атрибут выполнения не выставлен. Вам надо решить на каком уровне поставить этот атрибут - владелец, группа или все. Допустим, файл имеет атрибуты 644 и владельца:группу root:root.
Чтобы скрипт запускался, нужно
chmod u+xилиchmod 764- для владельца (root)chmod g+xилиchmod 674- для группы (root)chmod o+xилиchmod 665- для всех остальных
Может быть корректнее, не менять права, а изменить принадлежность файла, сменив его владельца и группу?
Скрипт получает те же права/привилегии, что и пользователь, от имени которого он запущен. Это значит, что он будет иметь доступ/создавать файлы от этого же пользователя, а также выполнять другие задачи/скрипты.
- если нужен неограниченный доступ, то root
- если действия будут в вашем домашнем каталоге, то назначьте себя владельцем
- если скрипт будет обслуживать задачи веб-сервера apache2, назначьте владельцем apache2
- если нужны пониженные права, но нужно иметь несколько повышенных привилегий на запуск нескольких задач, назначьте владельцем обычного пользователя (или apache2 для веб-сайта) и повысьте часть привилегий через механизм sudo
Если по каким-то причинам вы не хотите делать скрипт исполняемым (а, судя по всему, у вас таких причин нет), то его всегда можно запустить как /bin/bash /path/to/your/script.sh
В общем-то да. Но советую разобраться как все это работает: cron, sudo, права доступа. Отложите насущную задачу, почитайте, и потом вернитесь к ней. И вы поймете всю прелесть системы Linux :)