Open In App

Node.js fs. lchown() Method

Last Updated : 13 Jun, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

The fs.lchown() method is used to asynchronously change the owner and group of the given path, however, it does not dereference symbolic links if the path is one, unlike the fs.chown() method which does dereference the links to their path. The function accepts a user id and group id that can be used to set the respective owner and group. It does not return anything. 

Syntax:

fs.lchown( fd, uid, gid, callback )

Parameters: This method accepts four parameters as mentioned above and described below:

  • fd: It is an integer that denotes the file descriptor of the file for which the owner and group has to be changed.
  • uid: It is a number that denotes the user id that corresponds to the owner to be set.
  • gid: It is a number that denotes the group id that corresponds to the group to be set.
  • 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.lchown() method in Node.js: 

Example 1: This example shows the setting of the owner and group using the lchown() method. 

javascript




// Node.js program to demonstrate the
// fs.lchown() method
 
// Import the filesystem module
const fs = require('fs');
 
let filepath = "example_file.txt";
let symlinkpath = "symlinkFile";
 
// Create a symlink to the file
fs.symlinkSync(filepath, symlinkpath);
 
// Set the owner and group of the symbolic
// link to a new one
// New owner is "geeksforgeeks" with user id 1200
// New group is "editor" with group id 1201
fs.lchown(symlinkpath, 1200, 1201, (err) => {
  if (err)
    console.log(err);
  else {
    console.log("Given uid and gid set successfully");
  }
});


Before Running the Code:

xubuntu@xubuntu: ~/Desktop/fs-lchown$ ls -l
total 4
-rw-rw--w- 1 xubuntu xubuntu 4 Apr 26 05:10 example_file.txt
-rw-rw-r-- 1 xubuntu xubuntu 290 Apr 26 05:15 index.js

Output of the Code:

Given uid and gid set successfully

After Running the Code:

xubuntu@xubuntu: ~/Desktop/fs-lchown$ ls -l
total 4
-rw-rw--w- 1 xubuntu xubuntu 4 Apr 26 05:10 example_file.txt
-rw-rw-r-- 1 xubuntu xubuntu 290 Apr 26 05:15 index.js
lrwxrwxrwx 1 geeksforgeeks editor 16 Apr 26 09:15 symlinkFile -> example_file.txt

Example 2: This example shows the comparison between chown() and lchown() in dereferencing the symbolic link. 

javascript




// Node.js program to demonstrate the
// fs.lchown() method
 
// Import the filesystem module
const fs = require('fs');
 
let filepath = "example_file.txt";
let symlinkpath1 = "symlinkFile1";
let symlinkpath2 = "symlinkFile2";
 
// Create two symlinks to the file
fs.symlinkSync(filepath, symlinkpath1);
fs.symlinkSync(filepath, symlinkpath2);
 
// Use lchown() on the first symlink
// New owner is "geeksforgeeks" with user id 1200
// New group is "owner" with group id 1300
fs.lchown(symlinkpath1, 1200, 1300, (err) => {
  if (err)
    console.log(err);
  else {
    console.log("lchownSync: uid and gid set successfully");
  }
});
 
// Use chown() on the second symlink
// New owner is "max" with user id 1100
// New group is "author" with group id 1202
fs.chown(symlinkpath1, 1100, 1202, (err) => {
  if (err)
    console.log(err);
  else {
    console.log("chownSync: uid and gid set successfully");
  }
});


Before Running the Code:

xubuntu@xubuntu: ~/Desktop/fs-lchown$ ls -l
total 4
-rw-rw--w- 1 xubuntu xubuntu 6 Apr 26 09:15 example_file.txt
-rw-rw-r-- 1 xubuntu xubuntu 777 Apr 26 09:16 index.js

Output of the Code:

lchown: uid and gid set successfully
chown: uid and gid set successfully

After Running the Code:

xubuntu@xubuntu: ~/Desktop/fs-lchown$ ls -l
total 4
-rw-rw--w- 1 max author 6 Apr 26 09:15 example_file.txt
-rw-rw-r-- 1 xubuntu xubuntu 777 Apr 26 09:16 index.js
lrwxrwxrwx 1 geeksforgeeks owner 16 Apr 26 09:15 symlinkFile1 -> example_file.txt
lrwxrwxrwx 1 root root 16 Apr 26 09:15 symlinkFile2 -> example_file.txt

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



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

Similar Reads