【问题标题】:Jekyll: Operation not permitted @ apply2filesJekyll:不允许操作@ apply2files
【发布时间】:2019-12-06 04:07:13
【问题描述】:

我正在使用安装 Jekyll 的 Windows 10 的 Linux 子系统,但是当我运行 bundle exec jekyll serve 时,它给了我:

jekyll 3.8.6 | Error: Operation not permitted @ apply2files - /mnt/e/Work/project/_site/images/banner.jpg

我知道 Windows 和 Linux 权限存在一些不兼容问题,因为出于某种原因我的所有文件都归 root 所有,但有解决此问题的方法吗?

我在这里找到了答案https://scottdorman.blog/2019/02/27/running-jekyll-on-wsl/,作者说我必须关闭并重新打开 bash,但它不起作用。

【问题讨论】:

  • 你解决过这个问题吗?
  • 没有。不幸的是,我最终使用了本机 Windows 安装程序,而不是使用 WSL。原生的按预期工作。
  • 我相信下面的获奖答案是关键。

标签: ruby permissions jekyll windows-subsystem-for-linux


【解决方案1】:

据我所知,操作不允许的错误与用户权限或所有权有关。

我在同事的 MAC 计算机中看到了奇怪的错误。命令ls -al 显示某些文件夹归root 所有。如果这也适用于您的系统,请尝试像这样将所有权更改/转让给您的用户:

sudo chmod -R 777 /mnt/e/Work/project/

sudo chown -R youruser /mnt/e/Work/project/

chmod和chown的区别很简单(详细解释here):

  • chmod 改变模式
  • chown 更改所有权

对于 Windows Linux 子系统,我在 2018 年 1 月的旧 blogpost 中找到了这个:

权限在过去是如何运作的? 在 Build 17063 之前,所有文件/文件夹都将“root”列为所有者并属于“root”组。每个文件/文件夹的权限位来自 Windows 权限——没有检查 Windows 的写入位意味着没有在 WSL 中设置写入位。

此外,尝试对文件/文件夹进行 chmod 或 chown 会导致无操作(他们不会做任何事情!)

权限现在如何工作? 对于没有元数据的文件,我们采用与 17063 之前的版本中描述的方法相同的方法。但是现在,chmod/chown 可以将元数据分配给文件或文件夹。 WSL 中新创建的文件将默认使用元数据创建,并且会尊重您设置的挂载选项(稍后讨论)或您在执行 mkdir/open 时传递的权限。

经过更多研究,我发现了这个 SO 帖子: chmod WSL (Bash) doesn't work,它指出卸载并重新安装驱动器就足以使 chmod 和 chown 工作(在提到的 WSL 更新之后)。

【讨论】:

  • 当我执行ls -al 时,它确实表明root 拥有文件和文件夹。当我执行上面的命令时,它似乎没有将所有者分配给我的用户。
  • @Christian Pre 命令:sudo chown -R mike /mnt/c/workspace/github/github-pages-demo.github.io/ Post
  • 可以更改单个文件的所有权吗?
  • @Christian 不,我不能
  • 这很奇怪,因为我刚刚查看了 Jekyll 网站,我从未更改过任何权限,而且它们似乎都归我的用户所有,而不是 root,而且它们可以正常工作。 WSL 怪癖?不管怎样,我获得了一些宝贵的知识,所以谢谢你。
【解决方案2】:

正如上面在 cmets 中提到的@Mike Cole:如果您使用的是 wsl,则可能会发生这种情况。我通过重新启动我的机器解决了这个问题,它现在神奇地工作了。

【讨论】:

  • 已确认。在 WSL2 中安装 Ubuntu 20.04 的新副本后出现此问题。文件被列为 root 拥有,但重新启动 Windows 后,它们现在列在我的用户名下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
  • 2021-02-10
  • 2021-01-01
  • 2014-11-01
  • 2014-06-30
  • 2012-03-19
  • 2023-04-03
相关资源
最近更新 更多