untar 在 Docker 中 xenial 上的已安装卷中创建只读文件夹

untar 在 Docker 中 xenial 上的已安装卷中创建只读文件夹

由于 ,我无法在 xenial 上以 root 身份解压档案Cannot mkdir: Permission denied

环境

  • Ubuntu 18.04 Docker 容器
  • 主机操作系统:macOS 但这可能不相关,我无法在其他主机操作系统上测试
  • 从主机系统安装卷到/tmp/folder
  • Docker 命令:docker run -ti --rm -v ``pwd``:/tmp/nodemcu-firmware ubuntu:18.04 /bin/bash

重现步骤

  • cd /tmp/nodemcu-firmware
  • mkdir cache && cd cache
  • apt-get update && apt-get install -y wget xz-utils
  • wget https://github.com/jmattsson/esp-toolchains/releases/download/linux-x86_64-20181106.0/toolchain-esp32-linux-x86_64-20181106.0.tar.xz
  • tar -xJf toolchain-esp32-linux-x86_64-20181106.0.tar.xz

解压失败,因为从存档中tar创建了一个新文件夹esp32-linux-x86_64-20181106.0,但它是只读的:dr-x------。因此,解压所有后续(子)工件都会失败。

解压同一个 tarball外部这个挂载的 Docker 卷工作正常。这是谁的错?Docker 的错、Ubuntu 的错还是我的错?

更新 2019-07-31

根本原因是 tarball 中的奇怪权限。

$ tar -tvf toolchain-esp32-linux-x86_64-20181106.0.tar.xz|grep dr-
dr-xr-xr-x johny/johny       0 2018-11-06 02:07 esp32-linux-x86_64-20181106.0/

我不知道如何解决这个问题,但作者同意创建一个具有更新权限的新 tarball。

相关内容