hsuyelin / nas-tools

NAS媒体库管理工具
GNU Affero General Public License v3.0
2.38k stars 454 forks source link

[错误报告]: docker s6_services_init中/config权限修改问题 #486

Open sxyzy1016 opened 11 months ago

sxyzy1016 commented 11 months ago

确认

当前程序版本

3.3.13

问题类型

Docker或运行环境问题

问题描述

docker镜像中/etc/s6-overlay/s6-rc.d/init-020-fixuser/run文件最后修改权限:

chown -R nt:nt "${WORKDIR}" "${HOME}" /config /usr/lib/chromium /etc/hosts

有可能会导致chown: Operation not permitted报错

产生过程如下: 1、我的docker宿主机用户user(uid=1026,gid=100,与群晖一致)home家目录是通过nfs4挂载的群晖共享目录,并且user具有完全控制权限,但是root用户(uid=gid=0)在群晖nfs权限中被映射为guest(安全起见); 2、此时user在home家目录(即群晖共享目录)创建nastools-config目录: /home/user/nastools-config,并通过chown设置权限归属为user:users(即uid=1026,gid=100),通过-v /config:/home/user/nastools-config挂载给nastools容器; 3、此时若设置-e PUID=1026 -e PGID=100启动容器实际上nastools程序本身已经可以正常访问/config目录读写配置文件了,但是s6-init会以root身份运行上面的/etc/s6-overlay/s6-rc.d/init-020-fixuser/run文件来修改/config的权限,从而因为nfs权限映射导致一系列类似如下报错:

[ERROR] s6-rc: service init-020-fixuser: chown: changing ownership of '/config/xxxx': Operation not permitted

从而导致docker启动失败(特别是其中存在旧版本nastools配置文件时)

因此可否考虑在对/config目录进行chown之前加上该目录的权限判断(如权限符合PUID PGID就不用chown了)?谢谢!

发生问题时系统日志和配置文件

No response

DDSDerek commented 11 months ago

config目录下会存在其他的二级目录,也有可能出现权限不匹配的问题,所以目前不会选择更改

而且我记得这个可以通过更改nfs的设置来解决

Jie2GG commented 9 months ago

config目录下会存在其他的二级目录,也有可能出现权限不匹配的问题,所以目前不会选择更改

而且我记得这个可以通过更改nfs的设置来解决

@DDSDerek 实际测试, 我在群晖中设置 NFS Server 将所有用户映射为 root 用户(放开权限)时, 容器依旧提示没有权限使用 /config 文件夹, 同台机器中的其他容器不存在此问题.

以下是容器运行时的日志

s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service init-010-update: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
[INFO] 更新主程序...
From https://github.com/hsuyelin/nas-tools
 * branch            master     -> FETCH_HEAD
HEAD is now at 30e0e24 build(docker): 修改beta打包 workflow
[INFO] 主程序更新成功
s6-rc: info: service init-010-update successfully started
s6-rc: info: service init-020-fixuser: starting
[INFO] 以PUID=1026,PGID=100的身份启动程序...
chown: /config: Operation not permitted
chown: /config: Operation not permitted
s6-rc: warning: unable to start service init-020-fixuser: command exited 1

群晖 NFS 共享设置 image