gpt4 book ai didi

php - php-fpm 在 docker 中运行或不在 docker 中运行的用户是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:01 43 4
gpt4 key购买 nike

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 组,并将此用户和组提供给我的所有文件和目录。然后设置将登录的用户。但我不知道“写入”权限是如何工作的,因为文件夹有 rwxr-xr-x. 这意味着 php-fpm 在 www.我们从未改变哪个用户在 php-fpm 下运行,它是如何发生的?谁能给我解释一下?

最佳答案

Docker是隔离技术,但是你还是可以用ps -ef之类的,所以直接运行

docker exec -it ${container} ps -ef 

它将返回事件进程及其所有者的列表。

例如简单的 php:8-fpm 显示:

UID          PID    PPID  C STIME TTY          TIME CMD
root 1 0 0 05:16 ? 00:00:00 php-fpm: master
process (/usr/local/etc/php-fpm.conf)
www-data 7 1 0 05:16 ? 00:00:00 php-fpm: pool www
www-data 8 1 0 05:16 ? 00:00:00 php-fpm: pool www

接下来只要在/etc/passwd中找到用户就可以了

docker exec -it ${container} grep 'www-data' /etc/passwd

会显示

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

所以它肯定是 uid 为 33 的 www-data。

如果容器里面没有ps,你有2个选择,你可以安装它,或者手动找到uid

安装使用此命令(示例用于 php:8-fpm):

docker exec -it -u 0 ${container} su -c "apt update -y && apt install procps -y"

对于手动搜索,只需 grep /proc

sudo docker exec -it ${container} ls -ln /proc/

php:8-fpm 因为其他容器以非 root 身份运行 fork 进程,所以用户不会是 0,在本例中是 33

关于php - php-fpm 在 docker 中运行或不在 docker 中运行的用户是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55185750/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com