温馨提示×

ubuntu overlay权限怎么设

小樊
40
2026-10-12 15:24:30
栏目: 智能运维

在 Ubuntu 里,overlay(OverlayFS) 的“权限”问题通常出现在两类场景:

  1. Docker 的 overlay2 存储驱动
  2. 手动 mount overlay 文件系统(overlayfs)

下面分别说明。


一、手动 mount overlay 的权限设置(最常见)

基本 mount 命令

sudo mount -t overlay overlay \
  -o lowerdir=/lower,upperdir=/upper,workdir=/work \
  /merged

权限关键点

  1. 目录本身权限

    • /upper、/work 必须可写
    • 一般用 root 创建:
      sudo mkdir -p /upper /work /merged
      sudo chmod 755 /upper /work
      
  2. 挂载后文件权限

    • overlay 不会修改文件本身的权限
    • 看到的权限 = lower + upper 中文件的原始权限
  3. 以普通用户使用

    • overlay 默认只能 root mount
    • 普通用户访问 /merged 取决于目录权限

常见需求解决方案

✅ 让普通用户可读写

sudo chown -R user:user /upper
sudo chmod 755 /merged

✅ 只读 overlay(防修改)

sudo mount -t overlay overlay \
  -o lowerdir=/lower,upperdir=/upper,workdir=/work,ro \
  /merged

二、Docker overlay2 权限问题

现象

  • 容器里文件权限不对
  • 宿主机和容器 uid 不一致

解决方式

1️⃣ 使用 user namespace(推荐)

sudo nano /etc/docker/daemon.json
{
  "userns-remap": "default"
}
sudo systemctl restart docker

2️⃣ 容器里指定用户

docker run -u 1000:1000 ...

3️⃣ 挂载卷时注意

-v /host/path:/container/path:rw

宿主机目录权限:

sudo chown -R 1000:1000 /host/path

三、SELinux / AppArmor(Ubuntu 一般不是主因)

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


如果你能说清楚:

  • 是 Docker 还是 手动 overlay
  • 报错信息或具体现象

我可以给你更精确的命令。

0 踩