平时习惯这样进入 php-fpm 容器:

$ docker exec -it php-fpm bash

进去以后,默认是 root 帐号。

现在有些指令想用 www-data 帐号来执行,切换 www-data 帐号时却提示该帐号未启用:

$ su www-data
This account is currently not available.

因为 www-data 帐号的 shell 是 /usr/sbin/nologin,即禁止登录。

这个很好解决,在容器中把 /etc/passwd 中 www-data 帐号的 shell 改成 /bin/bash 就可以了。

还有另一种便捷的方法,不需要修改任何配置,进入容器时使用 -u 参数来指定帐号:

$ docker exec -it -u www-data php-fpm bash

以此类推,不进入容器,直接以 www-data 帐号身份执行某些指令:

$ docker exec -u www-data php-fpm bash -c "cd /var/www/xxx && php artisan demo"