在 Ubuntu 里,overlay(OverlayFS) 的“权限”问题通常出现在两类场景:
下面分别说明。
sudo mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
/merged
目录本身权限
/upper、/work 必须可写sudo mkdir -p /upper /work /merged
sudo chmod 755 /upper /work
挂载后文件权限
以普通用户使用
/merged 取决于目录权限sudo chown -R user:user /upper
sudo chmod 755 /merged
sudo mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work,ro \
/merged
sudo nano /etc/docker/daemon.json
{
"userns-remap": "default"
}
sudo systemctl restart docker
docker run -u 1000:1000 ...
-v /host/path:/container/path:rw
宿主机目录权限:
sudo chown -R 1000:1000 /host/path
Ubuntu 默认用 AppArmor,通常不影响 overlay 权限,除非:
sudo aa-status
如有问题可临时测试:
sudo systemctl stop apparmor
mount | grep overlay
ls -ld /upper /work /merged
stat /merged/somefile
❌ workdir 和 upperdir 在同一文件系统但权限不足
❌ workdir 不是空目录
❌ 用非 root 直接 mount overlay
如果你能说清楚:
我可以给你更精确的命令。