GNU/Linux >> Tutoriales Linux >  >> Linux

Permisos de Linux:una introducción a chmod

[¿Quiere probar Red Hat Enterprise Linux? Descárguelo ahora gratis.]

Si alguna vez ha trabajado con el sistema Linux, seguramente ha tratado con archivos, y eso significa que es posible que haya encontrado mensajes como este a continuación:

localhost@user1$ cat /etc/sudoers
cat: /etc/sudoers: Permission denied

O, de manera similar, mensajes de error como "No tiene los permisos para cargar archivos en esta carpeta", que podrían haberle impedido leer, escribir o acceder a un archivo en particular. Y, naturalmente, este error podría haberlo hecho preguntarse, al menos la primera vez que encontró este problema, por qué se le negó el acceso.

Echemos un vistazo a los permisos de archivos de Linux y las formas de restringirlos, además de jugar un poco con los archivos. Cuando enumera archivos en un directorio particular en Linux, es posible que haya visto r, w y x, y se haya preguntado qué significan estas letras. Tienen una enorme importancia para determinar qué puede hacer exactamente un usuario en particular con un archivo.

Veamos un ejemplo:

localhost@user1$ ls -ltr chmod_directory/
total 0
-rw-r--r--. 1 creator creator 0 Jul 29 21:55 I_Can_Write.txt
-rw-r--r--. 1 creator creator 0 Jul 29 21:55 I_Can_Execute.sh
-rw-r--r--. 1 creator creator 0 Jul 29 21:55 I_Can_Access.txt

Los permisos de archivo predeterminados son rw-r--r-- (del valor umask (que se trata más adelante en el artículo)), como se muestra en el ejemplo anterior.

Cada permiso tiene un valor numérico asignado:

  • r (leer) tiene un valor de 4
  • w (escribir) tiene un valor de 2
  • x (ejecutar) tiene un valor de 1

Estos valores son aditivos para cada "triplete", lo que significa que un permiso de archivo de rw- tiene el valor de 6 y rwx tiene el valor de 7. Como se discutió anteriormente, cualquier archivo recién creado, el valor predeterminado es 644 (rw-r --r--), lo que significa que el propietario del archivo puede leer y escribir, y todos los demás solo pueden leer este archivo. El primer triplete es el permiso para el propietario/creador del archivo, el segundo es para los permisos de grupo y el tercero es para otros (usuarios fuera del propietario/creador o un grupo con permisos). Esta configuración tiene sentido por razones obvias:el propietario debe tener un mayor control sobre el contenido del archivo para poder leerlo y escribirlo. Otros pueden querer leer los contenidos pero no modificarlos. Por supuesto, puede cambiar esta configuración con chmod comando, que es el tema central de este artículo.

Entonces, para comprender este concepto de una manera más simple, piense en los permisos de archivo como una matriz de 3x3, donde los propietarios, grupos y otros tienen configuraciones r, w y x. En el ejemplo anterior:

  • El creador del archivo (propietario/usuario) tiene permisos de lectura y escritura:-rw -r--r--.
  • El creador del grupo del archivo (grupo) tiene permisos de lectura:-rw-r-- r--.
  • Otros tienen permisos de lectura representados por los últimos bits:-rw-r--r-- .

Ahora, veamos los valores de permiso predeterminados para un directorio. Digamos que el directorio chmod_directory se creó con los permisos predeterminados de 755. A diferencia de los archivos, un directorio contiene archivos. Para que cualquier persona que no sea el propietario 'cd ' en el directorio, necesita un permiso de ejecución, lo que a su vez hace que el directorio:

  • Legible, grabable y ejecutable por el propietario (rwx es 7).
  • Legible y ejecutable por el grupo (r-x es 5).
  • Legible y ejecutable para otros (r-x es 5).

Nota:La designación r-x NO significa r menos x, significa lectura y ejecución, pero falta escritura. El - es un marcador de posición para un permiso.

(Tómese un minuto para pensar por qué este es el comportamiento predeterminado).

Bien, ahora que ha aprendido los conceptos básicos de los permisos de archivos y directorios, echemos un vistazo a chmod comando, que ayuda a realizar cambios de permisos para archivos y directorios.

Como se menciona en la página man:

This manual page documents the GNU version of chmod. chmod changes the file mode bits of each given file according to mode, which can be either a symbolic representation of changes to make, or an octal number representing the bit pattern for the new mode bits.

The format of a symbolic mode is [ugoa...][[+-=][perms...]...], where perms is either zero or more letters from the set rwxXst, or a single letter from the set ugo. Multiple symbolic modes can be given, separated by commas.

A combination of the letters ugoa controls which users' access to the file will be changed: the user who owns it (u), other users in the file's group (g), other users not in the file's group (o), or all users (a). If none of these are given, the effect is as if a were given, but bits that are set in the umask are not affected.

Usando representación octal

Para cambiar los permisos de archivo, puede usar la representación octal (numérica) o la representación simbólica (las letras). En la representación octal, el primer dígito es para el usuario, el segundo dígito es para el grupo y el tercero es para los demás. Veamos dos ejemplos de configuración de permisos con representación octal para comprender este concepto.

Ejemplo 1 :Si desea otorgar permisos de lectura (4), escritura (2) y ejecución (1) tanto al usuario como al grupo, y solo permiso de lectura (4) a otros, puede usar:

localhost@user1$ chmod 774 <file-name>

Ejemplo 2 :si desea restringir los permisos de escritura a todos los demás excepto al propietario del archivo, puede usar:

localhost@user1$ chmod 744 <file-name>

Usando representación simbólica

También puede cambiar los permisos mediante una representación simbólica en lugar de numérica. La representación simbólica es la asignación de permisos al usuario (u), grupo (g) y otros (o) usando letras (símbolos) y las designaciones de letras:r, w y x.

Veamos estos ejemplos nuevamente, pero usando representación simbólica.

Ejemplo 1 :Leer, escribir y ejecutar para el usuario y el grupo, además de solo leer para otros, mapas como:

localhost@user1$ chmod ug+rwx,o+r <filename>

Ejemplo 2 :Leer, escribir y ejecutar para el usuario y solo permisos de lectura para grupos y otros mapas como:

localhost@user1$ chmod u+rwx,go+r <file-name>

Impresionante, estoy orgulloso de todos ustedes:ahora dominan los conceptos de permisos de archivos. Pero le advierto que hay dos escenarios peligrosos que quizás desee evitar, así que mantenga esto como la mejor práctica mientras usa chmod. Evite el uso de casos límite, como chmod 777 <file-name> y chmod 000 <filename> . Usando chmod 777 <file-name> otorga a todos los permisos rwx y, por lo general, no es una buena práctica otorgar plenos poderes a todos los usuarios de un sistema. El segundo caso, dejaré que ustedes lo averigüen.

Uso de umasks

Los dejaré con un concepto más que deben tener en cuenta (umask) que decide los permisos predeterminados para un archivo. En general, los valores predeterminados son:

  • Umáscara:0022
  • Archivo:0666
  • Directorio:0777

Como recordará, el valor de permiso de archivo predeterminado es 0644 y el del directorio predeterminado es 0755. El valor predeterminado de umask se resta del valor predeterminado general del archivo/directorio. Puede establecer los valores de umask en /etc/profile o en ~/.bashrc .

Resumiendo

Chmod es un excelente comando de Linux para manipular permisos de archivos y directorios. Con los conceptos mencionados en este artículo, está equipado con el conocimiento suficiente para manejar permisos en distribuciones basadas en Linux.


Linux
  1. Introducción al comando chmod de Linux

  2. Una introducción a la supervisión de cuentas de usuario de Linux

  3. Linux chmod y chown:cómo cambiar los permisos y la propiedad de los archivos en Linux

  4. Cambio de permisos de Linux

  5. Verifique los permisos de archivos de Linux con ls

Comando Chmod en Linux (Permisos de archivo)

Comando Chmod en Linux

Permisos de Linux:cómo encontrar los permisos de un archivo

Comando Chmod:cómo cambiar los permisos de archivo en Linux

Comprender los permisos de archivos de Linux

Ejemplos de comandos chmod de Linux