Método Node.js fs.chmod()

El método fs.chmod() se usa para cambiar los permisos de una ruta dada. Estos permisos se pueden especificar mediante constantes de string o números octales que correspondan a sus respectivos modos de archivo.

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

Sintaxis:

fs.chmod( path, mode, callback )

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

  • ruta: Es una string, Buffer o URL que denota la ruta del archivo del cual se quiere cambiar el permiso.
  • modo: es una string o una constante entera 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.chmod() en Node.js:

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

// Node.js program to demonstrate the
// fs.chmod() method
  
// Import the filesystem module
const fs = require('fs');
  
// Grant only read permission to user
console.log("Granting only read access to user");
  
fs.chmod("example.txt", 0o400, () => {
  console.log("\nReading the file contents");
  console.log(fs.readFileSync("example.txt", 'utf8'));
  
  console.log("\nTrying to write to file");
  try {
    fs.writeFileSync('example.txt', "This file has now been edited.");
  }
  catch (e) {
    console.log("Error Code:", e.code);
  }
  
  // Grant both read and write permission to user
  console.log("\nGranting read and write access to user");
  fs.chmod("example.txt", 0o600, () => {
    console.log("Trying to write to file");
    fs.writeFileSync('example.txt', "This file has now been edited.");
  
    console.log("\nReading the file contents");
    console.log(fs.readFileSync("example.txt", 'utf8'));
  });
});

Producción:

Granting only read access to user

Reading the file contents
This is an example text file.

Trying to write to file
Error Code: EACCES

Granting read and write access to user
Trying to write to file

Reading the file contents
This file has now been edited.

Ejemplo 2: 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.chmod() method
  
// Import the filesystem module
const fs = require('fs');
  
// Grant only read permission to user
console.log("Granting only read access to user");
fs.chmod("example.txt", fs.constants.S_IRUSR, () => {
  
  // Reading the file
  console.log("File Contents:", fs.readFileSync("example.txt", 'utf8'));
  
  // Trying to write to file
  try {
    console.log("\nTrying to write to file");
    fs.writeFileSync('example.txt', "This file now has been edited.");
  }
  catch (e) {
    console.log("Error Occurred, Error Code:", e.code);
  }
  
  // Granting both read and write permission
  console.log("\nGranting both read and write permission to user");
  fs.chmod("example.txt", fs.constants.S_IRUSR | fs.constants.S_IWUSR, () => {
  
    // Check the file mode
    console.log("Current File Mode:", fs.statSync("example.txt").mode);
  
    console.log("Trying to write to file");
    fs.writeFileSync('example.txt', "This file now has been edited.");
  
    console.log("File Contents:", fs.readFileSync("example.txt", 'utf8'));
  });
});

Producción:

Granting only read access to user
File Contents: This file now has been edited.

Trying to write to file
Error Occurred, Error Code: EACCES

Granting both read and write permission to user
Trying to write to file
File Contents: This file now has been edited.

Referencia: https://nodejs.org/api/fs.html#fs_fs_chmod_path_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 *