Node.js | fs. lchown() Method

The fs.lchown() method is used to asynchronously change the owner and group of the given path, however, it does not deference 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.



filter_none

edit
close

play_arrow

link
brightness_4
code

// 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");
  }
});

chevron_right


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.

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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");
  }
});

chevron_right


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




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.