File 如何使用node.js测试文件权限?

File 如何使用node.js测试文件权限?,file,node.js,permissions,File,Node.js,Permissions,如何检查运行中的node.js进程对给定文件的权限(读/写/执行) 我希望该网站有一些关于权限的信息,但我没有看到任何信息。是否有一些内置函数允许我执行此类检查?例如: var filename='/path/to/some/file'; 如果(fs.canRead(filename))//确定。。。 如果(fs.canWrite(filename))//确定。。。 如果(fs.canExecute(filename))//确定。。。 当然,我不必尝试在每种模式下打开文件,并将错误处理为否定肯

如何检查运行中的node.js进程对给定文件的权限(读/写/执行)

我希望该网站有一些关于权限的信息,但我没有看到任何信息。是否有一些内置函数允许我执行此类检查?例如:

var filename='/path/to/some/file';
如果(fs.canRead(filename))//确定。。。
如果(fs.canWrite(filename))//确定。。。
如果(fs.canExecute(filename))//确定。。。

当然,我不必尝试在每种模式下打开文件,并将错误处理为否定肯定,对吗?必须有一种更简单的方法…

检查可读性并不像PHP这样的语言通过在单个库函数中抽象它来让它看起来那么简单。一个文件可能对每个人都可读,或者只对其组可读,或者只对其所有者可读;如果不是每个人都可以读取,则需要检查您是否是组的成员,或者您是否是文件的所有者。尝试打开文件并处理错误通常更容易、更快(不仅编写代码,而且执行检查)。

如何使用


不确定进程和*child\u进程*是否共享相同的权限。

我迟到了,但是,我在寻找与您相同的原因,并了解了这一点

就是你需要的那个。可从节点v0.11.15获取

function canWrite(path, callback) {
  fs.access(path, fs.W_OK, function(err) {
    callback(null, !err);
  });
}

canWrite('/some/file/or/folder', function(err, isWritable) {
  console.log(isWritable); // true or false
});
有人提到:

同步测试用户对路径指定的文件或目录的权限。mode参数是一个可选整数,用于指定要执行的可访问性检查。检查文件访问常量以了解模式的可能值。可以创建由两个或多个值(例如fs.constants.W|u OK | fs.constants.R_OK)组成的按位或按位掩码

如果任何可访问性检查失败,将抛出一个错误。否则,该方法将返回undefined

嵌入示例:

try {
  fs.accessSync('etc/passwd', fs.constants.R_OK | fs.constants.W_OK);
  console.log('can read/write');
} catch (err) {
  console.error('no access!');
}

我认为没有api函数可以实现这一点。实际上,直接打开文件并处理任何出现的错误通常是正确的方法。您可以测试文件是否可读,但它需要更多的工作(即使它隐藏在核心库中,工作仍会执行)。
fs.Stats
对象已经提供了
模式
属性,不需要执行外部进程;此外,文件的权限不会因用户的不同而发生神奇的变化looking@lanzz,如果进程在不同的用户上下文下运行,它将具有不同的文件访问权限。子进程如何在不同的用户上下文下运行?
try {
  fs.accessSync('etc/passwd', fs.constants.R_OK | fs.constants.W_OK);
  console.log('can read/write');
} catch (err) {
  console.error('no access!');
}