Windows上的节点文件模式?

时间:2014-04-27 21:47:58

标签: windows node.js filesystems

Node中,文件模式(例如fs.open)定义为in the terms of the POSIX world(三位八进制值)。但是,这并没有映射到Windows的工作方式。 Windows在用户权限和文件系统之间没有这种紧密耦合。 Windows“OpenFile function甚至没有任何相关参数。但是从我到目前为止收集的内容来看,它们也没有被完全忽略。

是否有关于如何在Windows上使用节点文件模式的任何解释?

1 个答案:

答案 0 :(得分:2)

看看the source。看起来他们唯一要做的就是根据文件是否可写来设置FILE_ATTRIBUTE_READONLY。

  if (flags & _O_CREAT) {
    if (!((req->mode & ~current_umask) & _S_IWRITE)) {
      attributes |= FILE_ATTRIBUTE_READONLY;
    }
  }

关于fs.chmod的说明也很有趣。

  /* Todo: st_mode should probably always be 0666 for everyone. We might also
   * want to report 0777 if the file is a .exe or a directory.
   *
   * Currently it's based on whether the 'readonly' attribute is set, which
   * makes little sense because the semantics are so different: the 'read-only'
   * flag is just a way for a user to protect against accidental deleteion, and
   * serves no security purpose. Windows uses ACLs for that.
   *
   * Also people now use uv_fs_chmod() to take away the writable bit for good
   * reasons. Windows however just makes the file read-only, which makes it
   * impossible to delete the file afterwards, since read-only files can't be
   * deleted.
   *
   * IOW it's all just a clusterfuck and we should think of something that
   * makes slighty more sense.
   *
   * And uv_fs_chmod should probably just fail on windows or be a total no-op.
   * There's nothing sensible it can do anyway.
   */