Introducción
Linux es, por definición, un sistema operativo multiusuario que se basa en los conceptos de Unix de propiedad de archivos y permisos para proporcionar seguridad a nivel del sistema de archivos. Para administrar de manera confiable un servidor en la nube, es esencial que tengas un entendimiento decente de cómo funcionan la propiedad y los permisos. Hay muchas complejidades al tratar con la propiedad y los permisos de archivos, pero este tutorial proporcionará una buena introducción.
Este tutorial cubrirá cómo ver y entender la propiedad y los permisos en Linux. Si estás buscando un tutorial sobre cómo modificar permisos, puedes leer Conceptos Básicos de Permisos en Linux y Cómo Usar Umask en un VPS.
Prerrequisitos
Asegúrate de entender los conceptos cubiertos en los tutoriales anteriores de esta serie:
Para seguir este tutorial, necesitarás acceso a un servidor en la nube. Puedes seguir esta guía para crear un droplet en DigitalOcean.
Acerca de los usuarios
Como se mencionó en la introducción, Linux es un sistema multiusuario. Deberías entender los fundamentos de los usuarios y los grupos de Linux antes de hablar sobre propiedad y permisos, ya que son las entidades a las que se aplican la propiedad y los permisos. Comencemos con lo que son los usuarios.
En Linux, hay dos tipos de usuarios: usuarios del sistema y usuarios regulares. Tradicionalmente, los usuarios del sistema se utilizan para ejecutar procesos no interactivos o en segundo plano en un sistema, mientras que los usuarios regulares se utilizan para iniciar sesión y ejecutar procesos de forma interactiva. Cuando inicializas y accedes por primera vez a un sistema Linux, es posible que notes que ya se han creado muchos usuarios del sistema para ejecutar los servicios de los que depende el sistema operativo. Esto es normal.
Puedes ver todos los usuarios en un sistema mirando el contenido del archivo /etc/passwd
. Cada línea en este archivo contiene información sobre un solo usuario, comenzando con su nombre de usuario (el nombre antes del primer :
). Puedes imprimir el contenido del archivo passwd
con cat
:
Output…
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
landscape:x:110:115::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:111:1::/var/cache/pollinate:/bin/false
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
vault:x:997:997::/home/vault:/bin/bash
stunnel4:x:112:119::/var/run/stunnel4:/usr/sbin/nologin
sammy:x:1001:1002::/home/sammy:/bin/sh
Superusuario
Además de los dos tipos de usuarios, está el superusuario, o usuario root, que tiene la capacidad de anular cualquier restricción de propiedad y permisos de archivos. En la práctica, esto significa que el superusuario tiene derechos para acceder a cualquier cosa en su propio servidor. Este usuario se utiliza para realizar cambios en todo el sistema.
También es posible configurar otras cuentas de usuario con la capacidad de asumir “derechos de superusuario”. A menudo se denomina tener sudo
, porque los usuarios que tienen permisos para obtener temporalmente derechos de superusuario lo hacen precediendo los comandos de nivel de administrador con sudo
. De hecho, crear un usuario normal que tenga privilegios de sudo
para tareas de administración del sistema se considera una práctica recomendada. De esta manera, puedes ser más conservador en el uso de la cuenta de usuario root.
Acerca de los Grupos
Los grupos son colecciones de cero o más usuarios. Un usuario pertenece a un grupo predeterminado y también puede ser miembro de cualquiera de los otros grupos en un servidor.
Puedes ver todos los grupos en el sistema y sus miembros al mirar en el archivo /etc/group
, al igual que lo harías con /etc/passwd
para los usuarios. Este artículo no cubre la gestión de grupos.
Ahora que sabes qué son los usuarios y los grupos, ¡hablemos sobre la propiedad y los permisos de los archivos!
Visualización de la propiedad y los permisos
En Linux, cada archivo es propiedad de un único usuario y un único grupo, y tiene sus propios permisos de acceso. Veamos cómo ver la propiedad y los permisos de un archivo.
La forma más común de ver los permisos de un archivo es usar ls
con la opción de listado largo -l
, por ejemplo, ls -l myfile
. Si quieres ver los permisos de todos los archivos en tu directorio actual, ejecuta el comando sin el argumento myfile
, así:
Nota: Si te encuentras en un directorio de inicio vacío y aún no has creado ningún archivo para ver, puedes seguir adelante listando el contenido del directorio /etc
ejecutando este comando: ls -l /etc
Aquí tienes un ejemplo de captura de pantalla de la salida de ls -l
, con etiquetas de cada columna de salida:
Cada archivo muestra su modo (que contiene permisos), propietario, grupo y nombre. Para ayudar a explicar qué significan todas esas letras y guiones, desglosemos la columna de modo en sus componentes.
Modo de comprensión
Para ayudar a explicar qué significan todos los grupos y letras, aquí hay un desglose de los metadatos del modo del primer archivo en el ejemplo anterior:
Tipo de archivo
En Linux, hay dos tipos de archivos: normales y especiales. El tipo de archivo se indica por el primer carácter del modo de un archivo, en esta guía se referirá como el “campo de tipo de archivo”.
Los archivos normales pueden identificarse por un guión (-
) en sus campos de tipo de archivo. Los archivos normales pueden contener datos o cualquier otra cosa. Se les llama archivos normales o regulares para distinguirlos de los archivos especiales.
Los archivos especiales pueden identificarse por un carácter que no sea un guión, como una letra, en sus campos de tipo de archivo, y son manejados por el sistema operativo de manera diferente que los archivos normales. El carácter que aparece en el campo de tipo de archivo indica el tipo de archivo especial que es un archivo en particular. Por ejemplo, un directorio, que es el tipo más común de archivo especial, se identifica por el carácter d
que aparece en su campo de tipo de archivo (como en la captura de pantalla anterior). Hay varios otros tipos de archivos especiales.
Clases de Permisos
Desde el diagrama, se puede ver que la columna de modo indica el tipo de archivo, seguido por tres tríadas, o clases, de permisos: usuario (propietario), grupo y otros. El orden de las clases es consistente en todos los sistemas Linux.
Las tres clases de permisos funcionan de la siguiente manera:
- Usuario: El propietario de un archivo pertenece a esta clase.
- Grupo: Los miembros del grupo del archivo pertenecen a esta clase. Los permisos de grupo son una forma útil de asignar permisos en un archivo dado a múltiples usuarios.
- Otros: Cualquier usuario que no sea parte de las clases de usuario o grupo para este archivo pertenece a esta clase.
Leyendo Permisos Simbólicos
Lo siguiente en lo que hay que prestar atención son esos conjuntos de tres caracteres. Estos denotan los permisos, en forma simbólica, que cada clase tiene para un archivo dado.
En cada tríada, los permisos de lectura, escritura y ejecución se representan de la siguiente manera:
- Lectura: Indicada por una
r
en la primera posición - Escritura: Indicada por una
w
en la segunda posición - Ejecutar: Indicado por una
x
en la tercera posición. En algunos casos especiales, puede haber un carácter diferente aquí.
A hyphen (-
) in the place of one of these characters indicates that the respective permission is not available for the respective class. For example, if the group (second) triad for a file is r--
, the file is “read-only” to the group that is associated with the file.
Entendiendo Leer, Escribir, Ejecutar
Ahora que sabes cómo leer los permisos de un archivo, deberías saber qué permite hacer cada uno de los permisos a los usuarios. Este tutorial cubrirá cada permiso individualmente, pero ten en cuenta que a menudo se usan en combinación entre sí para permitir un acceso útil a los archivos y directorios.
Aquí tienes un desglose del acceso que los tres tipos de permisos otorgan al usuario:
Leer
Para un archivo normal, el permiso de lectura permite a un usuario ver el contenido del archivo.
Para un directorio, el permiso de lectura permite a un usuario ver los nombres de los archivos en el directorio.
Escribir
Para un archivo normal, el permiso de escritura permite a un usuario modificar y eliminar el archivo.
Para un directorio, el permiso de escritura permite a un usuario eliminar el directorio, modificar su contenido (crear, eliminar y renombrar archivos en él) y modificar el contenido de archivos a los que el usuario tiene permisos de escritura.
Execute
Para un archivo normal, el permiso de ejecución permite a un usuario ejecutar (correr) un archivo; el usuario también debe tener permiso de lectura. Los permisos de ejecución deben establecerse para programas ejecutables y scripts de shell antes de que un usuario pueda ejecutarlos.
Para un directorio, el permiso de ejecución permite a un usuario acceder o atravesar (es decir, cd
) y acceder a metadatos sobre archivos en el directorio (la información que se lista en un ls -l
).
Ejemplos de Modos (y Permisos)
Ahora que sabes cómo leer el modo de un archivo y entender el significado de cada permiso, verás algunos ejemplos de modos comunes, con explicaciones breves, para unir los conceptos.
-rw-------
: Un archivo al que solo el propietario puede acceder-rwxr-xr-x
: Un archivo que es ejecutable por cada usuario en el sistema. Un archivo “ejecutable por todos”-rw-rw-rw-
: Un archivo abierto a modificación por cada usuario en el sistema. Un archivo “editable por todos”drwxr-xr-x
: Un directorio que todos los usuarios en el sistema pueden leer y accederdrwxrwx---
: Un directorio que es modificable (incluyendo su contenido) por su propietario y grupodrwxr-x---
: Un directorio al que se puede acceder por su grupo
El propietario de un archivo generalmente disfruta de los permisos más amplios, en comparación con las otras dos clases. Típicamente, verás que las clases de grupo y otros solo tienen un subconjunto de los permisos del propietario (iguales o menos). Esto tiene sentido porque los archivos solo deben ser accesibles para los usuarios que los necesitan por una razón específica.
Otra cosa a tener en cuenta es que aunque muchas combinaciones de permisos son posibles, solo algunas tienen sentido en la mayoría de las situaciones. Por ejemplo, el acceso de escritura o ejecución casi siempre va acompañado de acceso de lectura, ya que es difícil modificar, e imposible ejecutar, algo que no se puede leer.
Conclusión
Ahora deberías tener una buena comprensión de cómo funcionan la propiedad y los permisos en Linux. Para aprender cómo modificar estos permisos usando chown
, chgrp
y chmod
, consulta Conceptos básicos de permisos en Linux y cómo usar Umask en un VPS.
Si deseas aprender más sobre los fundamentos de Linux, lee el próximo tutorial en esta serie, Una Introducción a la Redirección de E/S en Linux.
Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions