Permisos y propiedad de archivos en Linux con ejemplos

Permisos de archivos en Linux explicados en términos sencillos. Aprendé también a cambiar los permisos y la propiedad de los archivos en Linux en esta detallada guía para principiantes.

Por su diseño, Linux es un sistema operativo multiusuario. En una empresa, habría múltiples usuarios accediendo al mismo sistema. Pero si cualquier usuario pudiera acceder y modificar todos los archivos pertenecientes a otros usuarios o archivos del sistema, esto sería sin duda un riesgo para la seguridad.

Por ello, Linux tiene medidas de seguridad incorporadas. Esto asegura que un archivo o directorio puede ser accedido, modificado o ejecutado sólo por los usuarios adecuados.

El acceso a un archivo por parte de un usuario se decide por dos factores en Linux:

  • La propiedad del archivo
  • Los permisos del archivo

Entender la propiedad y el permiso de los archivos es crucial para un usuario de Linux. Aquí explicaremos estos términos en detalle.

Propiedad de archivos en Linux

Nota: Puede que se use el término archivo aquí pero es aplicable a los directorios también. Supongo que sabés que los directorios son archivos de todos modos.

Cada archivo y directorio en Linux tiene tres tipos de propietarios:

Usuario

El usuario es el propietario del archivo. Cuando creás un archivo, te convertís en el propietario del mismo. La propiedad también puede ser cambiada, pero eso lo veremos más adelante.

Grupo

Cada usuario es parte de un grupo determinado. Un grupo está formado por varios usuarios y es una forma de gestionar los usuarios en un entorno multiusuario.

Por ejemplo, si tenés un equipo de desarrollo, un equipo de control de calidad y un equipo de administración de sistemas accediendo al mismo sistema, deberías crear grupos separados para ellos. De esta forma, podés gestionar los archivos y la seguridad del sistema de forma eficaz. Ahorra tiempo porque en lugar de añadir manualmente el permiso para cada usuario, podés simplemente añadirlos a un grupo y cambiar el permiso para el grupo. Verás cómo hacerlo más adelante en este artículo.

Incluso si sos el único usuario del sistema, seguirás siendo parte de muchos grupos. Distribuciones como Ubuntu también crean un grupo con el mismo nombre que el nombre del usuario.

Otros

‘Otros’ puede considerarse como un supergrupo con todos los usuarios del sistema. Básicamente, cualquier persona con acceso al sistema pertenece a este grupo.

En otras palabras, ‘Usuario’ es un solo usuario, Grupo es una colección de usuarios y Otros consiste en todos los usuarios del sistema.

Permisos de archivos en Linux

Cada archivo y directorio en Linux tiene los siguientes tres permisos para los tres tipos de propietarios:

Permisos para archivos

  • Lectura – Puede ver o copiar el contenido del archivo
  • Escribir – Puede modificar el contenido del archivo
  • Ejecutar – Puede ejecutar el archivo (si es ejecutable)

Permisos para los directorios

  • Leer – Puede listar todos los archivos y copiar los archivos del directorio
  • Escribir – Puede añadir o eliminar archivos en el directorio (también necesita permiso de ejecución)
  • Ejecutar – Puede entrar en el directorio

Entender los permisos y la propiedad de los archivos en Linux

Ahora que conocés la terminología básica de los permisos y la propiedad de los archivos, es el momento de verlo en acción.

Podés utilizar el comando ‘stat’ o ‘ls’ para comprobar los permisos de los archivos.

Si usás el comando ls con la opción -l para un archivo, verás una salida como esta

-rwxrw-r-- 1 emma indu 457 Ago 23 07:54 oriental.ogg

Pero qué significa:

Veamos esto con más detalle:

  • Tipo de archivo: Denota el tipo de archivo. d significa directorio, – significa archivo regular, l significa un enlace simbólico.
  • Permisos: Este campo muestra el permiso establecido en un archivo.
  • Recuento de enlaces duros: Muestra si el archivo tiene enlaces duros. El recuento por omisión es uno.
  • Usuario: El usuario propietario de los archivos.
  • Grupo: El grupo que tiene acceso a este archivo. Sólo un grupo puede ser propietario de un archivo a la vez.
  • Tamaño del archivo: El tamaño del archivo en bytes.
  • Hora de modificación: La fecha y hora en que el archivo fue modificado por última vez.
  • Nombre del archivo: Obviamente, el nombre del archivo o directorio.

Ahora que entendiste la salida del comando ls -l, vamos a centrarnos en la parte del permiso del archivo.

En el comando anterior, se ve el permiso del archivo así en el formato de nueve dígitos:

rwxrw-r--

Cada letra denota un permiso particular:

Los permisos están siempre en el orden de lectura, escritura y ejecución, es decir, rwx. Y luego estos permisos se establecen para los tres tipos de propietarios: Usuario, Grupo y Otros.

Así que, a partir de la imagen de arriba, se puede decir lo siguiente acerca de los permisos del archivo:

  • El archivo tiene permisos de lectura, escritura y ejecución para el usuario propietario. ¿Pero quién es el propietario del archivo? Tenés esta información en la salida de ls -l (es decir, el usuario emma).
  • El archivo tiene permisos de lectura y escritura para el Grupo pero no de ejecución. ¿De qué grupo se trata? Tenés la información del grupo en la salida del comando ls -l (grupo indu).
  • El archivo sólo tiene permiso de lectura para Otros, es decir, todos los que tienen acceso al sistema. No necesitas saber de qué otros se trata porque ‘otros’ significa todos los usuarios.

Ahora si ves el comando ls -l completo una vez más, podés leer los permisos y la propiedad del archivo juntos.

-rwxrw-r-- 1 emma indu 457 Ago 23 07:54 oriental.ogg

El archivo oriental.ogg es propiedad del usuario emma, que tiene permisos de lectura, escritura y ejecución. Todos los miembros del grupo indu tienen acceso de lectura y escritura a este archivo mientras que todos los demás sólo tienen acceso de lectura.

Nota: El usuario root tiene ‘superpoderes’ y normalmente, tiene permisos de lectura, escritura y ejecución en todos los archivos, aunque no lo veas en los permisos de los archivos.

Un mismo usuario puede ser miembro de varios grupos, pero sólo el grupo primario del usuario es el propietario de un archivo creado por ese usuario. El grupo primario de un usuario puede ser encontrado usando el comando id como id -gn <nombre de usuario>. Dejá el nombre de usuario en blanco si estás tratando de encontrar tu propio grupo primario.

Ahora que sabes cómo averiguar los permisos, vamos a ver cómo se puede cambiar el permiso y la propiedad de un archivo.

Cambiar los permisos de un archivo en Linux

Podés usar el comando chmod para cambiar los permisos de un archivo en Linux.

Dato: Los permisos solían llamarse modo de acceso (mode of access) y de ahí que chmod fuera la abreviatura de cambiar el modo de acceso (change mode of access).

Hay dos maneras de usar el comando chmod:

  • Modo absoluto
  • Modo simbólico

Usar chmod en modo absoluto

En el modo absoluto, los permisos se representan en forma numérica (sistema octal para ser precisos). En este sistema, cada permiso de archivo está representado por un número.

r (lectura) = 4
w (escritura) = 2
x (ejecución) = 1
– (sin permiso) = 0

Estos valores numéricos se pueden combinar y así un solo número puede representar todo el conjunto de permisos.

Número Permiso
0
1 –x
2 -w-
3 (2+1) -wx
4 r–
5 (4+1) r-x
6 (4+2) rw-
7 (4+2+1) rwx

¿Podés deducir los permisos en números del archivo oriental.ogg de nuestro ejemplo? Así es, es 764.

Ahora que sabés qué número representa cada permiso, veamos cómo cambiar el permiso del archivo usando este conocimiento.

Supongamos que querés cambiar el permiso del archivo oriental.ogg para que todos puedan leer y escribir pero nadie pueda ejecutarlo. En ese caso, podés usar el comando chmod así

chmod 666 oriental.ogg

Si ahora listás oriental.ogg, verás que el permiso ha sido cambiado.

-rw-rw-rw- 1 emma indu 457 Ago 23 10:38 oriental.ogg

Usando chmod en modo simbólico

El problema con el modo absoluto es que siempre se deben proporcionar tres números, uno para cada propietario, incluso si querés cambiar los permisos para un solo propietario.

Aquí es donde podés usar el modo simbólico con chmod.

En el modo simbólico, los propietarios se denotan de la siguiente forma:

  • u = usuario
  • g = grupo
  • o = otros
  • a = todos (usuario + grupo + otros)

El modo simbólico utiliza operadores matemáticos para realizar los cambios de permisos:

  • + para añadir permisos
  • – para eliminar permisos
  • = para anular los permisos existentes con un nuevo valor

Ahora que ya sabés, veamos cómo usar el comando chmod en modo simbólico.

Siguiendo el ejemplo anterior, si querés añadir un permiso de ejecución para el grupo, podés usar el comando chmod así

chmod g+x oriental.ogg

Si ahora miras los permisos de este archivo, verás que se ha añadido el permiso de ejecución:

-rw-rwxrw- 1 emma indu 457 Ago 23 10:38 oriental.ogg

También podés combinar varios cambios de permisos en un solo comando. Supongamos que querés eliminar los permisos de lectura y escritura y añadir permisos de ejecución para Otros. También querés añadir el permiso de ejecución para el usuario. Podés hacer todo esto en un solo comando:

chmod o-rw+x,u+x oriental.ogg

Los permisos resultantes serían los siguientes

-rwxrwx--x 1 emma indu 457 Ago 23 10:38 oriental.ogg

Si querés cambiar los permisos de los tres tipos de usuario al mismo tiempo, podés hacerlo de la siguiente manera

chmod a-x oriental.ogg

Esto eliminará el permiso de ejecución para todos.

-rw-rw---- 1 emma indu 457 Ago 23 10:38 oriental.ogg

Algunas personas encuentran que convertir los permisos de los archivos de un modo a otro es un trabajo tedioso. Por eso se puede usar esta herramienta que permite calcular en línea los permisos de archivos de Linux en varios modos. Claro que esto es sólo cuestión de costumbre, al familiarizarse con el uso se vuelve un proceso mental automático.

Cambiar la propiedad de un archivo en Linux

Para cambiar la propiedad de un archivo, puede utilizar el comando chown. Es fácil deducir que chown significa cambiar el propietario (change owner).

Podés cambiar el usuario de un archivo de la siguiente manera:

chown <nombre_de_usuario> <nombre_del_archivo>

Si querés cambiar el usuario y el grupo, podés utilizar el comando chown así

chown <nuevo_usuario>:<nuevo_grupo> <nombre_archivo>

Si sólo querés cambiar el grupo, podés usar el comando chown de esta manera

chown :<nuevo_grupo> <nombre_de_archivo>

o utilizar el comando chgrp, que se utiliza específicamente para cambiar el grupo de un archivo o directorio. Claro que chgrp significa cambio de grupo (change group).

chgrp <nuevo_grupo> <nombre_de_archivo>

En nuestro ejemplo, si querés cambiar el usuario y el grupo a root, podés usar el comando chown así

sudo chown root:root oriental.ogg

Esto cambiará la propiedad del archivo a root tanto para el usuario como para el grupo.

-rw-rw---- 1 root root 457 Ago 23 11:10 oriental.ogg

¿Notás que tuve que usar sudo con chown? Es porque root está involucrado aquí y para tratar con root, necesitás permisos de superusuario.

¿Existe una precedencia en los permisos de los archivos?

Pensá en una situación, en la que el usuario propietario no tiene ningún permiso, el grupo tiene permiso de lectura mientras que los demás tienen permisos de lectura y escritura.

----r--rw- 1 emma indu 457 Ago 23 11:10 oriental.ogg

Ahora, si el usuario emma intenta leer el archivo usando el comando cat o less, ¿podrá hacerlo? La respuesta es no porque no tiene el permiso de lectura.

Pero el usuario emma es parte del grupo indu y el grupo tiene acceso de lectura. Otros tiene permiso de lectura y escritura. Esto debería significar que todo el mundo (incluido el usuario emma) puede leer y escribir en el archivo, ¿verdad? Pues resulta que no es así.

En Linux, la precedencia va desde el usuario, luego el grupo y luego a otros. El sistema comprueba quién inició el proceso (cat o less en nuestro ejemplo). Si el usuario que inició el proceso es también el usuario propietario del archivo, los bits de permiso del usuario se establecen.

Si el propietario del archivo no inició el proceso, entonces el sistema Linux comprueba el grupo. Si el usuario que inició el proceso está en el mismo grupo que el grupo propietario del archivo, se establecen los bits de permiso de grupo.

Si el propietario del proceso ni siquiera está en el grupo como el propietario del archivo, entonces se establecen los bits de permiso para otros.

 

https://linuxhandbook.com/linux-file-permissions/

1 comentario

Dejar un comentario

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