NodeJS:检测用户是否对文件具有读访问权限

时间:2018-08-02 17:57:36

标签: node.js unix permissions filesystems access

在以非root user1身份运行的NodeJS脚本中,如何检测指定的user2是否具有对磁盘上文件的读取访问权限?

请注意,此过程不可用,并且user2的登录凭据不可用,因此sudo -u user2 namei /path/to/file之类的操作是不可行的。

2 个答案:

答案 0 :(得分:0)

根据Node.js文档,fs.access()可用于确定访问权限:

// Check if the file is readable.
fs.access(file, fs.constants.R_OK, (err) => {
  console.log(`${file} ${err ? 'is not readable' : 'is readable'}`);
});

err的存在表明该文件不可读。

答案 1 :(得分:0)

这是我使用的解决方案(不是 NodeJS 特定的)来查找 user1 是否可以访问现有文件:

  1. 文件是否全局可读?如果是,返回true,否则转到2
  2. 文件组是否可读?如果是,转3,否则转4
  3. user1 的 group 是否包含文件的组 ID?如果是,返回true,否则转4
  4. 文件用户可读吗?如果是,则转到 5,否则返回 false
  5. 文件所有者是 user1 吗?如果是,返回true,否则返回false

这会检查文件的所有常见访问和组限制。