Node.js – fs.open / fs.writeFile, mode, file permissions, umask, and how they interact
While working with Node.js recently, I ran into a situation with the mode parameter used in several functions; fs.open, fs.appendFile, fs.writeFile, etc. When trying to create a new file and specifying a specific mode parameter to allow user and group writes, I found that the file would get created, however would have the wrong permissions. After much experimenting, I realized that the Linux server’s umask was getting applied, and preventing the creation of a file with the permissions I wanted.
The work around turned out to be fairly simple, although it does create a slight security hole, and should only be used in cases where you can control access to the application.
I simply wrapped the file create calls with the following code :
oldmask = process.umask(newmask); fs.open(path, flags, [mode], callback) process.umask(oldmask);
This only needs be performed when the open (or other method) will create a new file. Let me know if you have experienced a similar issue, and if you have found other solutions to resolve.
- April Showers bring May Flowers
- How to Rotate Logs using PM2 Process Manager for Node.js