Windows上的节点文件模式?

Dom*_*omi 7 windows filesystems node.js

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

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

Tim*_*ple 4

看一下源码。看起来他们唯一做的就是根据文件是否可写来设置 FILE_ATTRIBUTE_READONLY 。

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

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.
   */
Run Code Online (Sandbox Code Playgroud)