Search code examples
node.jschmodfs

How do I use chmod with Node.js


How do I use chmod with Node.js?

There is a method in the package fs, which should do this, but I don't know what it takes as the second argument.

fs.chmod(path, mode, [callback])

Asynchronous chmod(2). No arguments other than a possible exception are given to the completion callback.

fs.chmodSync(path, mode)

Synchronous chmod(2).

(from the Node.js documentation)

If I do something like

fs.chmodSync('test', 0755);

nothing happens (the file isn't changed to that mode).

fs.chmodSync('test', '+x');

doesn't work either.

I'm working on a Windows machine btw.


Solution

  • According to its sourcecode /lib/fs.js on line 508:

    fs.chmodSync = function(path, mode) {
      return binding.chmod(pathModule._makeLong(path), modeNum(mode));
    };
    

    and line 203:

    function modeNum(m, def) {
      switch (typeof m) {
        case 'number': return m;
        case 'string': return parseInt(m, 8);
        default:
          if (def) {
            return modeNum(def);
          } else {
            return undefined;
          }
      }
    }
    

    it takes either an octal number or a string.

    e.g.

    fs.chmodSync('test', 0755);
    fs.chmodSync('test', '755');
    

    It doesn't work in your case because the file modes only exist on *nix machines.