Método Node.js fs.fchmod()

El método fs.fchmod() se usa para cambiar los permisos de un descriptor de archivo determinado. Estos permisos se pueden especificar como un parámetro utilizando constantes de string o números octales correspondientes a sus respectivos modos de archivo.

Nota: La plataforma Windows solo admite el cambio del permiso de escritura. No admite la distinción entre los permisos de usuarios, grupos u otros.

Sintaxis:

fs.fchmod( fd, mode, callback )

Parámetros: Este método acepta tres parámetros como se mencionó anteriormente y se describe a continuación:

  • fd: es un valor entero que denota el descriptor de archivo del archivo cuyo permiso se debe cambiar.
  • modo: es una constante de string o una constante octal que denota el permiso que se otorgará. El operador lógico OR se puede utilizar para separar varios permisos.
  • devolución de llamada: Es una función que sería llamada cuando se ejecuta el método.
    • err: es un error que se lanzaría si el método falla.

Los siguientes ejemplos ilustran el método fs.fchmod() en Node.js:

Ejemplo 1: este ejemplo muestra el uso de constantes de string y el operador OR para otorgar permisos al archivo.

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

Producción:

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.

Ejemplo 2: Este ejemplo muestra el uso de constantes octales para dar permisos al archivo.

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

Producción:

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.

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

Publicación traducida automáticamente

Artículo escrito por sayantanm19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *