fbpx Permisos en Linux: chmod, chown, umask y ACLs – Guía | Certificação Linux

Permisos de archivos en Linux: chmod, chown, umask y ACLs

📅 19/04/2020 ⏱ 7 min ✍️ Uira Ribeiro
Linuxcómo-hacer
Permisos de archivos en Linux: chmod, chown, umask y ACLs
Exam Pass App — mais de 7.000 questões LPI, offline, em 5 idiomas, disponível no Android e na App Store
Disponible en
Google Play
Disponible en
App Store

Como Linux es un sistema operativo multiusuario, los permisos de acceso a archivos, directorios y otros dispositivos son necesarios para garantizar que los usuarios tengan acceso únicamente a los recursos que pueden utilizar. 

La Gestión de Permisos de Archivos y Propiedad en Linux es bastante fácil, a diferencia de lo que parece.

Estos recursos pueden ser desde un simple archivo hasta una impresora o una grabadora de CD-ROM. 

Cada archivo en Linux tiene definido su control de acceso. Este control se define por tres clases:

  • Permisos de usuario: Definen el permiso para el usuario que es el "propietario" del archivo, quien lo creó y lo mantiene;
  • Permisos de grupo: Definen el permiso para el grupo de usuarios al cual pertenece el archivo;
  • Permisos para otros usuarios: Definen el permiso para todos los demás usuarios (no propietario y no forma parte del grupo). 
Clases de Permisos

Y para cada clase podemos definir tres tipos de acceso: lectura (r), escritura (w) y ejecución (x). Cuando no hay acceso para un tipo determinado, el sistema lo indica con un guión "-".

Las tres primeras posiciones de la izquierda representan los permisos para el usuario propietario del archivo. Quien crea el archivo es su propietario.

Las tres siguientes representan los permisos relativos a un grupo (puede ser que el usuario propietario pertenezca al grupo o no).

Los tres últimos permisos representan a los otros (que no es el usuario propietario del recurso y no pertenece al grupo).

Entonces, al intentar acceder a un recurso, o eres el propietario del archivo, o formas parte del grupo al cual pertenece el archivo, o eres "los otros".

Como en Linux todo es un archivo, esto facilita mucho trabajar con los permisos, ya que el esquema es el mismo para todo. No importa si estás hablando de un archivo, directorio o recurso de hardware.

Esta división cubre prácticamente todas las necesidades en términos de seguridad.  

La opción "-l" del comando ls muestra los permisos de los archivos:

Cómo leer la salida del comando ls

Los archivos pueden ser clasificados por su tipo:

  • (-) Archivo común
  • (d) Directorio
  • (b) Dispositivo de Bloque
  • (c) Dispositivo de Carácter
  • (s) Socket
  • (p) Pipe (conductos)
  • (l) Enlace Simbólico

La primera letra que aparece a la izquierda en "ls -l" indica el tipo de archivo. Cuando no hay letra, sino un guión, el archivo es común.

Las definiciones de lectura, escritura y ejecución tienen matices diferentes para archivos y directorios. Ver la siguiente tabla:

ObjetoLectura (r)Escritura (w)Ejecución (x)
ArchivoPermite leer el contenido del archivo.Permite alterar el contenido del archivo.Permite ejecutar el archivo como un programa
DirectorioPermite listar el contenido del directorio. Permite crear, mover, renombrar y borrar archivos en el directorio.Permite leer y grabar archivos en el directorio, así como cambiar el directorio actual al directorio con "cd".

Los permisos se graban en forma binaria, con 12 bits para cada archivo en el sistema, y estos bits pueden ser representados en forma octal, según la siguiente figura:

Bits de Permisos

Bits de permisos especiales en Linux

Los tres primeros bits de izquierda a derecha son bits de atributos especiales, a saber:

SUID (Set User ID): El bit de SUID afecta únicamente a los archivos ejecutables. Normalmente los programas se ejecutan con el permiso del usuario que los ejecutó. El SUID cambia esta condición, haciendo que el programa se ejecute bajo los permisos del usuario Propietario del archivo, sin importar quién lo llamó. El SUID generalmente se utiliza para dar a un programa permisos de root. Es necesario que el administrador tenga mucho cuidado al utilizar el SUID, ya que un programa malintencionado puede tener acceso elevado al sistema;

SGID (Set Group ID): El bit de SGID funciona como el bit SUID. Hace que los programas se ejecuten bajo el permiso de grupo del propietario del archivo. Si se aplica a un directorio, el SGID hará que todos los archivos creados dentro de este directorio tengan el mismo grupo del directorio;

Sticky (Pegado en memoria): El bit especial llamado sticky o bit de pegado en memoria originalmente hacía que los programas permanezcan en la memoria incluso después de terminados. Esto hacía que los programas se ejecuten más rápidamente la próxima vez que sean llamados. Este bit cuando se aplica en directorios hace que únicamente el propietario del directorio, el propietario del archivo o root puedan renombrar o borrar archivos en este directorio.

En las implementaciones recientes en Linux y Unix este bit ya no se usa para "pegar en memoria", sino para evitar que archivos que lo tengan habilitado sean borrados por usuarios que no sean su propietario. Si está habilitado en un directorio este bit confiere que su contenido pueda únicamente ser borrado por los respectivos propietarios de los archivos contenidos en él, el propio propietario del directorio o root.

Lógicamente, el administrador no necesita escribir los permisos en 12 bits. De esta forma, los permisos pueden ser representados por letras o en octetos según la siguiente tabla:

OctalBinarioLetrasDescripción
0000---Sin acceso
1001--xSolo Ejecución
2010-w-Solo Escritura
3011-wrSolo Escritura y Ejecución
4100r--Solo Lectura
5101r-xSolo Lectura y Ejecución
6110rw-Solo Lectura y Escritura
7111rwxLectura, Escritura y Ejecución

Esta representación puede ser utilizada para cada clase (Propietario, Grupo y Otros), así como para los bits especiales (SUID, SGID, Sticky).

Ejemplo:

rwxr-x---	root	users	Script.sh

En el ejemplo, el archivo Script.sh tiene permisos de lectura, grabación y ejecución (rwx) para el usuario root, permisos de lectura y ejecución (r-x) para el grupo users y ningún (---) permiso para otros usuarios que no sean del grupo users. 

Los permisos del archivo Script.sh pueden representarse mediante el octeto 750, siendo 7 (4+2+1) para los permisos del propietario del archivo (rwx), 5 (4+1) para los permisos del Grupo (r-x) y 0 (---) para los permisos de Otros.

De esta forma, lectura (r) tendrá el valor de 4, escritura (w) tendrá valor 2, y ejecución tendrá valor (1). Entonces, para cada clase de permiso - propietario, grupo, u otros - se suman los valores del permiso, de la forma que rwxr-x---, cuando se suman por grupo, tendrán el permiso 750 (4+2+1, 4+0+1, 0+0+0).

Como los bits de permisos especiales se utilizan con poca frecuencia y bajo condiciones especiales, se representan con la letra (s) en lugar del (x) de ejecución para los bits SUID y SGID en las clases de Propietario del archivo y Grupo, y (t) en lugar del (x) para el bit sticky en la clase de Otros.

Vea el Ejemplo:

rwsr-x--- root users Firewall

El archivo Firewall tiene permiso de lectura, escritura y ejecución (rws) para el usuario root, lectura y ejecución (r-x) para usuarios del grupo users y ningún permiso (---) como Otros.

Y además posee el bit de SUID habilitado (la "s" en lugar de "x" para el Propietario del archivo).

De esta forma, el programa Firewall tiene poderes de superusuario cuando se ejecuta, ya que su propietario es root. Sus permisos también pueden representarse mediante el octeto 4750.

Conozca el Curso en Línea de Pfsense de Certificación Linux!

No necesitas memorizar la tabla de permisos

Basta con memorizar que los permisos de Lectura siempre tienen el valor 4.

Los permisos de Escritura siempre tienen el valor 2 y los permisos de ejecución siempre el valor 1.

Las tres clases de permisos (Propietario, Grupo y Otros) se representan mediante 3 números.

Si descompone cada número, encontrará los permisos de cada clase. Vea la figura siguiente:

Permisos en Octetos

Aprenda mucho más sobre Linux en nuestro curso en línea. Puede realizar la inscripción aquí. Si ya tiene una cuenta, o quiere crear una, simplemente ingrese o cree su usuario aquí.

¿Le gustó? Comparta

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Después de años viendo profesionales perder horas en tareas simples por no conocer las herramientas correctas de Linux, decidí enseñar.
Hoy soy autor de la mayoría de los Materiales de Aprendizaje oficiales de la LPI y mentor de más de 14,000 alumnos certificados.

Conoce mi historia completa →

Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.

Certificação Linux — a plataforma líder em certificações Linux no Brasil
WhatsApp