Docker部署Nextcloud无法写入外部存储的权限问题求助
解决NextCloud容器无法写入外部存储的权限问题(除修改所有者外)
我部署了linuxserver/nextcloud:29.0.2-ls324容器,运行正常但无法写入外部存储。容器内主进程php-fpm以abc用户运行,该用户uid=3008、gid=5004,同时属于users组(gid=1000)。外部存储为Docker映射的读写卷,无ACL配置,其Unix权限如下:
# ls -lh /mnt/logs total 24M drwxrwxr-x+ 2 3000 abc 2 Feb 17 22:54 files_inotify drwxrwxr-x+ 2 3000 abc 2 May 11 20:54 files_scan drwxrwxr-x+ 2 3000 abc 42 Jun 14 01:36 nc-pg drwxrwxr-x+ 2 3000 abc 4 Jun 11 17:06 watcher
现寻求除将所有者改为abc之外的权限问题解决方法。
环境信息
- Docker版本:26.1.4,build 5650f9b
- Docker运行于LXC内的Alpine Linux 3.19.1 64bit/Linux 6.6.29-production+truenas
- 主机系统:TrueNAS SCALE Dragonfish-24.04.1.1
解决方法
1. 调整外部存储的组归属为users组
当前目录的组为abc(gid=5004),但容器内abc用户属于users组(gid=1000),将目录组修改为users组即可让容器用户获得组写入权限:
chgrp -R 1000 /mnt/logs/*
2. 临时放宽其他用户写入权限(仅测试用)
若需快速验证权限问题,可临时给目录添加其他用户的写入权限,注意此方式存在安全风险,不建议长期使用:
chmod -R o+w /mnt/logs/*
3. Docker启动时指定用户组映射
修改Docker启动配置,将容器内abc用户的主组gid映射为主机目录的组gid(5004):
- 使用
docker run命令:
docker run -d \ --name nextcloud \ -v /mnt/logs:/path/in/container \ --user 3008:5004 \ linuxserver/nextcloud:29.0.2-ls324
- 使用
docker-compose.yml:
services: nextcloud: image: linuxserver/nextcloud:29.0.2-ls324 volumes: - /mnt/logs:/path/in/container user: "3008:5004"
4. 将容器用户UID加入主机abc组
把容器内abc用户的UID(3008)添加到主机的abc组(gid=5004),让容器用户继承组的读写权限:
gpasswd -a 3008 abc
内容的提问来源于stack exchange,提问作者crackpot
相关产品推荐
相关产品推荐

