【问题标题】:fs mkdir/copy intermittently fails in protected directory, despite having permissionsfs mkdir/copy 在受保护的目录中间歇性失败,尽管有权限
【发布时间】:2023-02-14 05:17:17
【问题描述】:

我在 Mac 上有一个具有完整磁盘权限的电子应用程序。我正在使用 fs 在受保护的文件夹中创建目录,并将文件从临时文件夹复制到新目录。

使用fs.copy 时,我会定期收到两种不同类型的错误:

  • 如果该目录已经存在并且归用户所有:

    • 尝试覆盖现有目录时出现 EPERM 错误(不允许操作,取消链接 xxx),特别是在替换 manifest.json 文件时。这是非常断断续续的。
  • 如果该目录不存在或由 root 拥有:

    • 尝试创建目录或将文件复制到新位置时出现 EACCES 错误。

代码:

[...Array(sourceDirs.length).keys()].map(async (idx) => {
    try {
        await fs.ensureDir(destPaths[idx]);    
    }
    catch (e) {
        console.log('Directory does not exist and could not be created');
    }
    try {
        await fs.copy(sourceDirs[idx], destPaths[idx]);
    }
    catch (e) {
        console.log('Copy error:', e);
    }
});

【问题讨论】:

    标签: macos permissions electron sudo node.js-fs


    【解决方案1】:

    经过更多研究,我确定目录的 R/W 权限根据创建目录的实体而有所不同。该目录及其子目录的某些元素归根所有,everyone 仅具有读权限,而其他文件夹归everyone 所有并具有写权限。

    以编程方式,解决此问题的唯一方法是生成带有 sudo 的 chmod 命令来更新权限。就我而言,获取目录的所有权没有任何问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多