Docker 指定 UID、GID 造成內部權限問題

在 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 權限就不會套用

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料