在 Docker 裡面 www-data、apache-cli 互為 Group
Linux 透過 www-data 建立檔案,設定權限664
但是 apache-cli 於 cli 的程式要寫入檔案,出現權限不足的狀況,到底發生什麼事情?
Docker 指定 UID、GID 造成內部權限問題
- Docker 內有兩個使用者:www-data、apache-cli (並且互相設定為 group)
在 Docker 裡面,www-data、apache-cli 互相為 Group,可以互相寫入,但是只要指定 gid 帶進去,就不會吃 Docker 內部的 /etc/group 群組
- sudo docker exec -it -u 1000:1000 container-name /bin/bash # 失敗,group 沒有包含 www-data
- apache-cli@container-name:/home/apache-cli$ id
- uid=1000(apache-cli) gid=1000(apache-cli) groups=1000(apache-cli)
- sudo docker exec -it -u 1000 container-name /bin/bash # 正常
- apache-cli@container-name:/home/apache-cli$ id
- uid=1000(apache-cli) gid=1000(apache-cli) groups=1000(apache-cli),33(www-data)
- sudo docker exec -it -u apache-cli container-name /bin/bash # 正常
- apache-cli@container-name:/home/apache-cli$ id
- uid=1000(apache-cli) gid=1000(apache-cli) groups=1000(apache-cli),33(www-data)
簡單說,Docker 命令 -u uid:gid,後面 gid 沒事不要指定進去,不然內部的 /etc/group 權限就不會套用