Является ли нормальной практикой выполнять деплой приложений под пользователем root на VPS, и кто обычно отвечает за настройку разграничения прав доступа на сервере?

Есть production‑сервер на Ubuntu 16. <br/> <br/> Я предлагаю стандартную схему деплоя: создать отдельного пользователя deploy, сделать владельцем проекта deploy:www-data, разграничить права и выполнять деплой по rsync (через git) без использования root. <br/> <br/> Системный администратор отказывается менять права и создавать отдельного пользователя, настаивает на выполнении деплоя от root. По его словам, в случае ошибки ответственность не несёт. Руководство полностью доверяет администратору. <br/> Дополнительный нюанс: runtime‑директории (storage и др.) находятся внутри проекта и не вынесены отдельно. <br/> <br/> При деплое с rsync --delete, если по ошибке не подхватится переменная или будет указан неверный путь, теоретически можно затереть runtime‑данные. Если эти директории принадлежат www-data:www-data, пользователь deploy просто не сможет их переписать — это служит дополнительной защитой. При работе от root такой защиты нет. <br/> <br/> Вероятность ошибки невысока, но риск при работе от root существенно выше: при неверном пути можно повредить данные проекта или затронуть системные каталоги. <br/> <br/> Я могу всё настроить сам, но это не моя зона ответственности. <br/> <br/> Вопросы: <br/> 1) Является ли деплой от root нормальной практикой в production? <br/> 2) Входит ли в обязанности системного администратора настройка пользователей, групп, прав доступа и SSH‑ключей (а не только сети и firewall)? <br/> 3) Стоит ли сразу уходить с такой работы?
  • 13 февраля 2026 г. 9:45
Ответы на вопрос 4
Короткие ответы:
1) Нет — деплой от root в production не считается нормальной практикой и повышает риск инцидентов.  
2) Да — в нормальной организации настройка пользователей/gid/прав и SSH‑ключей обычно входит в обязанности системного администратора или платформенной/DevOps‑команды (в зависимости от структуры).  
3) Не обязательно уходить сразу, но это серьёзный сигнал: попробуйте сначала действовать по процедуре (риск‑оценка, документирование, эскалация). Если руководство полностью игнорирует риски и отказывается вводить минимальные меры защиты — можно и нужно задуматься о смене места.

Развернуто и по шагам.

Почему деплой от root — плохо
- root имеет неограниченные права: одна опечатка в пути или скрипте может стереть системные каталоги или данные.  
- повышается поверхность атаки: если ключ/аккаунт с root‑доступом скомпрометирован — злоумышленник получает полный контроль.  
- сложнее контролировать аудит/разграничение и минимизировать blast radius (область ущерба).  
Лучше минимальные привилегии: отдельный deploy‑пользователь или ограниченный sudo, сервисные аккаунты с нужными правами.

Кто должен настраивать права и SSH‑ключи
- В большинстве команд это задача администратора/DevOps/platform‑engineer: создание пользователей, групп, назначение владельцев файлов, настройка прав, запрет входа по паролю, развёртывание SSH‑ключей, базовые политики безопасности.  
- В небольших проектах обязанности могут пересекаться; но отказ админа выполнять эти базовые безопасные операции — это не обычная «мелочь», а повод для обсуждения с руководством. Руководство обязано управлять рисками.

Практические меры и компромиссы, которые можно предложить прямо сейчас
1) Предложите безопасную минимальную схему, которую можно реализовать быстро:
   - отключить root SSH‑логин (PermitRootLogin no) и запретить вход по паролю, оставить только ключи и/или bastion;  
   - создать пользователя deploy, группу deploy:www-data; код — deploy:deploy или deploy:www-data, runtime (storage, uploads) — www-data:www-data;  
   - деплой по rsync/ssh от deploy; перезапуск сервисов — через sudo с ограничением (в sudoers — конкретные команды, например systemctl restart myapp).  
2) Технические защитники от случайных удалений при rsync:
   - rsync --delete-after вместо --delete (меньше риска промежуточных удалений);  
   - использовать --exclude для runtime/локальных директорий, чтобы их не трогать;  
   - использовать --backup --backup-dir=... и/или --suffix=.bak для безопасного хранения удалённых файлов;  
   - перед реальным запуском запускать rsync --dry-run; автоматизировать проверку переменных окружения;  
   - держать runtime директории вне репозитория (лучше вынести storage на отдельный том или симлинк вне кода);  
   - хранить регулярные бэкапы и/или снапшоты диска;  
   - рассмотреть atomic deploy (директории с релизами + symlink current), тогда rsync обновляет новый релиз, а switch — атомарный.  
3) Ограниченный sudo вместо root:
   - дать deploy право только на нужные команды (правка владельцев/перезапуск сервисов) через /etc/sudoers; не давать полноценный root.  
4) Логи, контроль и документирование:
   - фиксируйте все запросы и решения письменно (с e‑mail или тикетом), чтобы ответственность и согласования были задокументированы;  
   - требуйте процедур change management для production‑изменений (временной окно, бэкап, тесты, откатный план).  

Если админ отказывается
- Эскалация: покажите руководству риски в терминах бизнеса (потеря данных, время простоя, безопасность). Попросите формально принять риск или изменить практику.  
- Если руководство на стороне админа и не хочет мер безопасности — зафиксируйте своё несогласие письменно и сохраните копии инструкций/предложений. Это снизит вашу личную юридическую/профессиональную ответственность.  
- Решение о смене работы — личное. Если вы не хотите работать в среде с заведомо повышенным риском или этика работы противоречит вашим стандартам — стоит искать другое место. Но перед уходом попробуйте пройти все шаги: предложить решения, зафиксировать риски, попросить внешнюю ревизию или аудит.

Небольшой чек‑лист, который можно предъявить администратору/руководству
- Запретить root SSH‑логин, оставить только ключи.  
- Создать deploy пользователя + группу, назначить владельцев для кода и runtime.  
- Вынести runtime папки из репозитория/использовать симлинки.  
- Наладить бэкапы и тестовый (dry‑run) деплой.  
- Ограничить sudo для необходимых команд.  
- Ввести процедуру change control в production.  
- Оформить согласование рисков в письменном виде.

Если хотите, могу:
- составить конкретный план действий и команды для Ubuntu 16 (создание пользователя, права, sudoers, безопасные rsync‑параметры),  
- подготовить текст письма/тикета для руководства с описанием рисков и предложенными мерами.
Твои вопросы показывают отсутствие опыта и необходимых знаний. Но не переживай, это наживное :) 
Для начала - все рабочие процессы сотрудников должны быть регламентированы должностной инструкцией. Тогда вопрос кто что должен и за что отвечает сразу отпадает.
Если на предприятии нет ДО и всё держится на честном слове (ака "доверии") - это рано или поздно приводит к проблемам.

Потом - чтобы попытаться добиться от руководства того, что по твоему мнению важно (и указать на недостатки существующей системы) бывает недостаточно просто рассказать устно. Особенно когда есть противодействующая сторона. Тогда составляется служебная записка где отражаются недостатки (с упором на финансовые и другие потери и риски) и предлагается решение, с обязательным хорошо и понятно прописанным профитом от внедрения. СЗ вначале подаётся непосредственному руководству. Если результат нет - постепенно выше.
Да делайте как удобно. у меня на одном сервере так, на другом эдак, на третьм заказчик потребовал вообще по "сяк" сделать... 

каждый работает как считает нужным.

про зоны ответственности - кто за VPS отвечает, тот и решает как делать.

ну и не забываем про бэкапы, эт к вопросу затирания.

насчет rsync - я пока не встречал такого, чтоб он не подхватил переменные...

насчёт деплоя - делай в новую папку... чтоб пред оставалась. тогда и проблемы нет если ошибка в деплое
А там только СА? ИБшников нету или в одном лице? 
Попробуйте, то что описали довести до руководства, в том числе и письменно.
Так-то по хорошему, на проде рута вообще быть не должно, точнее на неко должен стоять жесткий хэш пароль с обязательным оповещением о входе. Т.к. вход под рутом на прод это жесткий инцидент в ИБ - разрабов можно отрулить правами как вы и описали.
Похожие вопросы