php-fpm是在docker中运行的还是没有docker的用户?

时间:2019-03-15 15:20:10

标签: php linux docker nginx permissions

RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www
COPY . /var/www
COPY --chown=www:www . /var/www
USER www

在dockerfile中,我得到了这个。

我的问题是:如何检查哪个用户正在php-fpm容器下运行?在nginx中,如果我想找出答案,请检查/etc/nginx/nginx.conf文件,并在其中写入用户信息。但是对于php-fpm我不知道。 我如何解决?请勿告诉我使用whoami或类似的方式,因为这是当前登录的用户。

我在上面显示的命令(我不知道它是怎么做的),但是它使www用户和www组成为一个用户,并将该用户和组分配给我的所有文件和目录。然后设置将要登录的USER。但是我不知道“写”权限的工作原理,因为文件夹具有rwxr-xr-x.,这意味着php-fpm在www下运行。我们从未更改过哪个用户正在php-fpm下运行,它是如何发生的?有人可以向我解释吗?

2 个答案:

答案 0 :(得分:2)

Docker是隔离技术,但是您仍然可以使用ps axu等,因此只需运行

docker exec -it container ps axu 

,它将看到所有树,包括分叉的进程及其所有者。

例如简单的NGINX显示:

PID   USER     TIME  COMMAND
1 root      0:00 nginx: master process nginx -g daemon off;
6 nginx     0:00 nginx: worker process
7 root      0:00 ps axu

对于php-fpm,您还可以grep / proc

docker exec -it container cat /proc/7/status

它将显示

Name:   php-fpm
Uid:    33  33  33  33
Gid:    33  33  33  33

尝试grep / etc / passwd

www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

所以绝对是带有uid 33的www-data

答案 1 :(得分:0)

USER www 将容器运行的用户更改为 www。如果 php-fpm 以非 root 身份运行,那么它将忽略池配置的 usergroup 指令并以当前用户身份运行。这些指令仅在 php-fpm 以 root 身份运行时适用。

标准的 php-fpm docker 容器以 root 身份运行,但池配置为 www-data