removespread / Docker
DOCKER · МОДУЛЬ 05 · УРОК 1

Какие права нужны HTTP-сервису

16 мин

UID, USER и файловые разрешения на примере приложения, которое только читает свой код.

Права и данные~16 мин
После урока вы сможете
  • Определять пользователя процесса
  • Задавать USER в Dockerfile
  • Диагностировать Permission denied без chmod 777

Начните с необходимого действия

Наш сервер читает /app/app.py, принимает запросы на порту 8000 и пишет ответ в сокет. Ему не нужно изменять системные файлы или устанавливать программы после старта. Поэтому запуск с административными правами не следует из его задачи.

В Linux у процесса есть числовые идентификаторы пользователя и группы — UID и GID. UID 0 означает root. Посмотреть реального пользователя полезнее, чем довериться имени образа или комментарию «secure» в Dockerfile.

docker exec qa-api python -c "import os; print(os.getuid(), os.getgid())"

Минимальные права уменьшают возможности ошибочного или скомпрометированного приложения. Они не превращают контейнер в отдельную виртуальную машину и не заменяют остальные ограничения среды. Для этого урока измерим конкретное свойство: HTTP работает с ненулевым UID.

Шаг 1 из 5