How to test file permissions using node.js?

Checking readability is not so straightforward as languages like PHP make it look by abstracting it in a single library function. A file might be readable to everyone, or only to its group, or only to its owner; if it is not readble to everybody, you will need to check if you are actually a member of the group, or if you are the owner of the file. It is usually much easier and faster (not only to write the code, but also to execute the checks) to try to open the file and handle the error.


There is fs.accessSync(path[, mode]) nicely mentioned:

Synchronously tests a user's permissions for the file or directory specified by path. The mode argument is an optional integer that specifies the accessibility checks to be performed. Check File Access Constants for possible values of mode. It is possible to create a mask consisting of the bitwise OR of two or more values (e.g. fs.constants.W_OK | fs.constants.R_OK).

If any of the accessibility checks fail, an Error will be thrown. Otherwise, the method will return undefined.

Embeded example:

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

I am late, but, I was looking for same reasons as yours and learnt about this.

fs.access is the one you need. It is available from node 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
});