在 Linux 里,OverlayFS(overlay)本身的权限不是“直接设置”的,而是由底层目录(lower / upper)的权限 + mount 选项 + 内核行为共同决定的。下面按常见场景说明。
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
/merged
✅ overlay 不会自动改 uid/gid/mode
chown -R app:app /upper /lower
chmod 755 /upper
挂载后 /merged 就继承这些权限。
适合容器、U盘、跨用户:
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
-o uid=1000,gid=1000 \
/merged
⚠️ 注意:
mount -t overlay overlay \
-o lowerdir=/lower,ro \
/merged
或者:
mount -o remount,ro /merged
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work,noatime,nosuid,nodev
通常不是 overlay 的问题,而是:
解决:
docker run -v /data:/app:rw -u 1000:1000 ...
或修改目录:
chown -R 1000:1000 /data
ls -Z /merged
如果是 unlabeled_t:
chcon -R -t container_file_t /upper /lower
或临时关闭测试:
setenforce 0
namei -l /merged/path
stat /merged/path
mount | grep overlay
OverlayFS 没有自己的权限系统,权限 = 底层目录权限 + mount 选项
如果你能告诉我:
我可以直接给你可复制的命令。