Open In App

Node.js fs.fchmod() Method

Last Updated : 08 Oct, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

The fs.fchmod() method is used to change the permissions of a given file descriptor. These permissions can be specified as a parameter using string constants or octal numbers that corresponding to their respective file modes.

Note: The Windows platform only supports the changing of the write permission. It does not support the distinction between the permissions of users, groups, or others.

Syntax:

fs.fchmod( fd, mode, callback )

Parameters: This method accept three parameters as mentioned above and described below:

  • fd: It is an integer value which denotes the file descriptor of the file of which the permission has to be changed.
  • mode: It is string constant or octal constant that denotes the permission to be granted. The logical OR operator can be used to separate multiple permissions.
  • callback: It is a function that would be called when the method is executed.
    • err: It is an error that would be thrown if the method fails.

Below examples illustrate the fs.fchmod() method in Node.js:

Example 1: This example shows the usage of string constants and OR operator to give the file permissions.




// Node.js program to demonstrate the
// fs.fchmod() method
  
// Import the filesystem module
const fs = require('fs');
  
// Getting the file descriptor
const fd = fs.openSync('example_file.txt', 'r');
  
// Allowing only read permission
console.log("Giving only read permission to the user");
fs.fchmod(fd, fs.constants.S_IRUSR, (err) => {
  if (err) throw err;
  
  // Check the file mode
  console.log("Current File Mode:",
        fs.statSync("example_file.txt").mode);
  
  // Reading the file
  console.log("File Contents:"
        fs.readFileSync("example_file.txt", 'utf8'));
  
  // Trying to write to file
  try {
    console.log("Trying to write to file");
    fs.writeFileSync('example_file.txt', "Hello");
  }
  catch (e) {
    console.log("Error Found, Code:", e.code);
  }
  
  // Allowing both read and write permission
  console.log("\nGiving both read and write "
                + "permission to the user");
  
  fs.fchmod(fd, fs.constants.S_IRUSR | 
          fs.constants.S_IWUSR, (err) => {
    if (err) throw err;
  
    // Check the file mode
    console.log("Current File Mode:"
        fs.statSync("example_file.txt").mode);
  
    console.log("Trying to write to file");
    fs.writeFileSync('example_file.txt'
        "This file has been written over.");
  
    console.log("File Contents:"
        fs.readFileSync("example_file.txt", 'utf8'));
  });
});


Output:

Giving only read permission to the user
Current File Mode: 33024
File Contents: This file has been written over.
Trying to write to file
Error Found, Code: EACCES

Giving both read and write permission to the user
Current File Mode: 33152
Trying to write to file
File Contents: This file has been written over.

Example 2: This example shows the usage of octal constants to give the file permissions.




// Node.js program to demonstrate the
// fs.fchmod() method
  
// Import the filesystem module
const fs = require('fs');
  
// Getting the file descriptor
const fd = fs.openSync('example_file.txt', 'r');
  
// Allowing only read permission
console.log("Giving only read permission to everyone");
fs.fchmod(fd, 0o444, (err) => {
  if (err) throw err;
  
  // Check the file mode
  console.log("Current File Mode:"
        fs.statSync("example_file.txt").mode);
  
  // Reading the file
  console.log("File Contents:"
        fs.readFileSync("example_file.txt", 'utf8'));
  
  // Trying to write to file
  try {
    console.log("Trying to write to file");
    fs.writeFileSync('example_file.txt', "Hello");
  }
  catch (e) {
    console.log("Error Found, Code:", e.code);
  }
  
  // Allowing both read and write permission
  console.log("\nGiving both read and write "
                  + "permission to everyone");
  
  fs.fchmod(fd, 0o666, (err) => {
    if (err) throw err;
  
    // Check the file mode
    console.log("Current File Mode:"
        fs.statSync("example_file.txt").mode);
  
    console.log("Trying to write to file");
    fs.writeFileSync('example_file.txt'
        "This file has been written over.");
  
    console.log("File Contents:"
        fs.readFileSync("example_file.txt", 'utf8'));
  });
});


Output:

Giving only read permission to everyone
Current File Mode: 33060
File Contents: This file has been written over.
Trying to write to file
Error Found, Code: EACCES

Giving both read and write permission to everyone
Current File Mode: 33206
Trying to write to file
File Contents: This file has been written over.

Reference: https://nodejs.org/api/fs.html#fs_fs_fchmod_fd_mode_callback



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads