banner
Thanks for LaTeX

Thanks for LaTeX

the answer is lying around, somewhere.

onedrive client for linux 更新エラーの解決方法

日前,更新 Linux 下的 OneDrive 客户端 的时候,按 说明 操作,出现这个错误:

permission denied open config in w mode
  1. 简单版
    先用 root 运行一次 container,目录权限更新以后再用 onedrive 用户运行就可以了。
  2. 详细版
    乍看之下,感觉是 container 中的目录权限不对,因为这个错误之前还有一句
change owner of /onedrive/data to onedrive:onedrive with gosu

然后用 override entrypoint 的模式进去看一眼(默认 entrypoint.sh 会卡在不停重启):

docker run --entrypoint sh -it driveone/onedrive:edge

果然发现 /onedrive/data 是 root,第一反应就是用 root 启动 container:

docker run -it --name onedrive -v onedrive_conf:/onedrive/conf \
    -v "${ONEDRIVE_DATA_DIR}:/onedrive/data" \
    -e "ONEDRIVE_UID=${ONEDRIVE_UID}" \
    -e "ONEDRIVE_GID=${ONEDRIVE_GID}" \
    -e "ONEDRIVE_RUNAS_ROOT=1" \
    driveone/onedrive:edge

果然可以运行了。
然后发现了第二个问题:新创建的本地文件和目录都是 root 权限,用户无法访问。
此时再看 container 中的目录权限已经正确,此时再用 onedrive 用户运行 docker 即可:

docker run -it --name onedrive -v onedrive_conf:/onedrive/conf \
    -v "${ONEDRIVE_DATA_DIR}:/onedrive/data" \
    -e "ONEDRIVE_UID=${ONEDRIVE_UID}" \
    -e "ONEDRIVE_GID=${ONEDRIVE_GID}" \
    driveone/onedrive:edge
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。