Давайте разберемся, что это за пользователь и как его используют приложения.
ubuntu - новоустановленная убунта сразу имеет пользователя www-data (id=33)
nginx - по-умолчанию запускается на 80 порту (80 порт может открывать только root-пользователь), но внутри nginx обрабатывает все запросы от пользователя www-data (id=33). Так, если зайти в docker-образ nginx, то мы видим что внутри тоже есть пользователь www-data (id=33).
Забавно, что "nginx:1.25.4-alpine" по-умолчанию работает от: uid=101(nginx) gid=101(nginx) groups=101(nginx),101(nginx) и внутри контейнера вообще нет пользователя www-data (id=
33).
php-fpm - запускается от того пользователя, от которого запускается, например можно запустить его от www-data:
docker run --rm -u "www-data" php:8.3.3-fpm-alpine php-fpm -iа если заглянуть в php:8.3.3-fpm-alpine, то увидим, что пользователь www-data имеет id=88, неожиданно, правда?
Мне же удобно в докер-контейнере иметь те же права, что и на хост-машине, поэтому я меняю ID пользователю www-data в контейнере на 1000:
ENV UID=1000
ENV GID=1000
ENV USER=www-data
ENV GROUP=www-data
# чтобы заполучить usermod, нам потребуется установить пакет shadow, в которую входит usermod
RUN apk --no-cache add shadow
# директория /home/www-data указана потому, что когда разработчик использует ssh-агента, то в /home/www-data создаются файлы, например /home/www-data/.ssh/known_hosts
RUN usermod -u $UID $USER --home /home/www-data && groupmod -g $GID $GROUPи для ubuntu:
RUN usermod -u $UID $USER --home /home/www-data && groupmod -g $GID $GROUP
RUN mkdir /home/www-dataЯ даже меняю пользователя, от которого по-умолчанию запускается контейнер на пользователя www-data:
# чтобы даже консольные команды выполнялись от пользователя www-data
USER $USERТаким образом www-data имеет разные ID в разных местах, а вот что с этим делать, решать Вам, а я для себя решил так:
php-fpm - создавая файлы дает права всем желающим читать их (0775)nginx - ничего с файлами не делает, только читает их, так что прав ему хватает.ОС устанавливаясь предлагает нам завести пользователя, а могла бы просто давать нам пользователя www-data, вот почему:
В то время как www-data пользователя используют ряд программ, которым не нужны особые права и выше указанное.
Комментарии
Комментариев пока нет.