Я отвечаю за поддержку серии скриптов, целью которых является получение данных из API один раз в день и обновление базы данных. Когда я взял на себя эту роль, сценарии хранились в SVN, и раз в день задание cron запускалось от имени пользователя root, обновляло svn, а затем запускало сценарии из каталога svn.
Теперь я хотел бы переработать логику этой настройки, переключиться с root на сервисную учетную запись и т. Д. Я бы хотел, чтобы скрипты находились под контролем версий, но кажется странным выходить из каталога SVN.
Как лучше всего это устроить?
Думаю, вы уже определили две вещи, которые следует изменить:
Прекратите запускать сценарии от имени пользователя root. Для этого не должно быть никаких причин, и это создает уязвимость для простого повышения привилегий, если только root не может писать в сценарии. Из вашего описания кажется, что единственные разрешения, которые должны потребоваться скриптам, - это обновление дерева SVN и запись в базу данных. Поэтому создайте специальную учетную запись пользователя для этой цели и дайте ей достаточно разрешений для выполнения этих двух задач. Затем запустите сценарии из задания cron, принадлежащего этому пользователю.
Если я правильно понимаю, это звучит так, как будто программы и данные, которые они извлекают, хранятся в одном репозитории SVN. Думаю, это работает, но смешивание программ и данных - плохая практика, тем более, что программы будут обновляться только время от времени, а данные обновляются ежедневно. Я бы разделил их на отдельные репозитории SVN.