banner
Thanks for LaTeX

Thanks for LaTeX

the answer is lying around, somewhere.

onedrive 客戶端 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
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。