Índice

Gestión de permisos en Linux

Si hay un aspecto que destaca de Linux respecto a otros sistemas, como Windows, es la seguridad. Y no solo hablamos de vulnerabilidades y privacidad, sino también de la forma en la que gestiona los archivos personales de sus usuarios. Cada archivo y cada carpeta cuenta con unos permisos definidos, sin los cuales nadie podrá acceder al archivo en cuestión. Y, si estamos aprendiendo a usar Linux, los permisos es uno de los aspectos que debemos conocer y aprender. El sistema de archivos que utiliza Linux es mucho más avanzado, y a la vez sencillo, que el que utilizan otros sistemas, como Windows. Este se basa en especificar si el propietario, el grupo de usuarios o cualquiera, puede leer, escribir o ejecutar el archivo. Sin duda, es una forma muy eficaz de mantener a cada usuario del sistema controlado, evitando que este pueda acceder a los datos de los demás sin permiso.

¿Qué son los permisos en Linux?

Los permisos son la manera de restringir las funciones que un usuario tiene permitido realizar sobre un archivo. Los tres parámetros básicos que se regulan a través de los permisos son la lectura(r), la escritura(w) y la ejecución(x) de los archivos. A cada archivo se aplican estos permisos y cada archivo tienen divididos estos permisos en tres secciones, una para los Usuarios, otra para los Grupos y una para Otros. Dentro de cada uno de estos se especifican cuáles de los tres permisos se aplican. La estructura básica de los permisos es:

Cada archivo o carpeta que nos encontremos al listar el contenido de un directorio irá indicado con un símbolo:

  • o . : Indica que se trata de un archivo.
  • d : Indica que se trata de un directorio.
  • l : Indica que se trata de un enlace (acceso directo, por ejemplo).

 

Seguido veremos los tres niveles de permisos. Los permisos están definidos por las letras (r, w, x) y cuando el permiso no está aplicado se sustituye por –.

Son tres niveles (Usuarios/Grupos/Otros) y dentro de cada uno especificaremos los permisos.

¿Gestión de permisos en Linux?

Podemos especificar si queremos aplicar estos permisos de manera independiente entre Usuarios, Grupos y Otros: Usuario: Eres tú, por ejemplo, cuando inicias tu sistema Linux. Ingresas al iniciar sesión con el usuario que creaste, ese nombre de usuario se puede usar como el “propietario” de un archivo y corresponde a este tipo: “usuario”. Grupo: Es el grupo al que pertenece el archivo y cualquier usuario que pertenezca a ese grupo (incluido tal vez el usuario) tiene los permisos asignados sobre ese archivo. Otros: Se refiere a cualquier otro usuario que no corresponda al “usuario” ni al “Grupo”, incluso aquellos que no son usuarios del sistema como por ejemplo un usuario anónimo que lee un archivo por medio de una página web (y que accede desde fuera, por internet) tiene que tener permisos para poder leer ese archivo, este usuario anónimo corresponde a este tipo: “otros”.

Tipos de permisos en Linux

A su vez, cada uno de estos niveles puede tener 3 valores diferentes en función del grado de privilegios que especifiquemos en el sistema. Estos valores podemos especificarlos por las siguientes letras:

  • r : Permiso de lectura (permite abrirlo, copiarlo, etc).
  • w : Permiso de escritura (permite modificarlo, borrarlo, etc).
  • x : Permiso de ejecución (si es binario, permite ejecutarlo).   

Los permisos en Linux se pueden reflejar tanto con letras como con números. Ambas formas son correctas e igual de funcionales. Sin embargo, lo más intuitivo son las letras, ya que nos permiten comprender mejor de qué permiso se trata. Los números son más usados por usuarios avanzados, al ser más rápido de especificar. Más adelante realizaremos prácticas y veremos como aplicar también los números.

¿Cómo ver los permisos de un archivo?

Podemos ver los permisos que tienen los archivos situados en el directorio actual utilizando el comando ls -l. En el siguiente ejemplo, podemos ver con ls que dentro del directorio existe el archivo prueba1.txt:

Para poder ver sus permisos simplemente añadimos la opción -l al comando ls. Ahora vemos como nos reporta mucha más información que antes:

En primer lugar nos muestra el tipo de archivo y sus permisos:

Seguido nos muestra el nombre del propietario del archivo y del grupo, el tamaño del archivo y su fecha de creación. El tema de los usuarios y los grupos lo iremos desarrollando poco a poco más adelante.

Asignar permisos con Chmod:

Manual Comando Chmod

Los permisos en Linux se pueden reflejar tanto con letras como con números. Ambas formas son correctas e igual de funcionales. Sin embargo, lo más intuitivo son las letras, ya que nos permiten comprender mejor de qué permiso se trata. Los números son más usados por usuarios avanzados, al ser más rápido de especificar. Cada archivo o carpeta que nos encontremos al listar el contenido de un directorio irá indicado con un símbolo:
  • – : Indica que se trata de un archivo.
  • d : Indica que se trata de un directorio.
  • l : Indica que se trata de un enlace (acceso directo, por ejemplo).
Y cada archivo o directorio lleva tres niveles de permisos diferentes: uno para el propietario, otro para los usuarios del mismo grupo que el propietario, y otro para los demás usuarios. A su vez, cada uno de estos niveles puede tener 3 valores diferentes en función del grado de privilegios que especifiquemos en el sistema. Estos valores podemos especificarlos por las siguientes letras:
  • r : Permiso de lectura (permite abrirlo, copiarlo, etc).
  • w : Permiso de escritura (permite modificarlo, borrarlo, etc).
  • x : Permiso de ejecución (si es binario, permite ejecutarlo).
De esta manera, tenemos que elegir los permisos (rwx) para cada nivel de usuario (dueño, grupo y otros). Chmod debe ir acompañado del nuevo nivel de privilegios que queramos darle al nuevo archivo o directorio, así como de un «+» si lo que vamos a hacer es darle ese nuevo permiso, o un «» si lo que vamos a hacer es quitarle permisos. También podemos cambiar los permisos del «grupo» y «otros usuarios» añadiendo los parámetros «g» y «o» respectivamente. El propietario se indicaría sin este parámetro, o con una «u». Y si queremos cambiar los permisos a todos a la vez, podemos usar el parámetro «a».
				
					chmod [opciones] [permisos] [nombre del archivo]
				
			

Asignar Permisos con Números Octales con Chmod:

Manual Comando Chmod

Para representar los permisos en octal,  cada dígito es una combinación de los números 4 , 2 , 1 y 0:
  • 4 significa «leer».
  • 2 significa «escribir».
  • 1 significa «ejecutar».
  • 0 significa «sin permiso». 
Por ejemplo, en caso de querer representar chmod 754 archivo, entonces 7 es la combinación de permisos 4 + 2 + 1 (leer, escribir y ejecutar), 5 es 4 + 0 + 1 (leer, no escribir y ejecutar), y 4 es 4 + 0 + 0 (leer, no escribir y no ejecutar). Los números de permisos que nos podemos encontrar serán los siguientes:
  • 0 = (Sin permisos)    
  • 1 = –x (Solo permisos de ejecución)
  • 2 = -w- (Solo permisos de escritura)
  • 3 = -wx (Permisos de escritura y ejecución)
  • 4 = r– (Solo permisos de lectura)
  • 5 = r-x (Permisos de lectura y ejecución)
  • 6 = rw- (Permisos de lectura y escritura)
  • 7 = rwx (Todos los permisos)

Dependencias en los permisos:

Debemos tener en consideración que cuando nos referimos a estos permisos en el sistema operativo de código abierto sobre un archivo, generalmente estos dependen de forma directa de los permisos de la carpeta que los alberga. Básicamente con esto lo que os queremos decir es que, aunque un archivo tenga una serie de permisos determinados, los usuarios tendrán que adaptarse a los que estén en un principio asignados a la carpeta principal donde se guardan. Es decir que, si se les asigna en el fichero un permiso de lectura y escritura, si esto está bloqueado en la carpeta superior, no se harán efectivos.

Evidentemente esto puede resultar muy útil para los administradores del sistema, ya que, para efectuar determinadas restricciones en multitud de archivos al mismo tiempo, basta con configurar correctamente los permisos de la carpeta contenedora. Por tanto, esto es lo que realmente significa la dependencia que tienen esos ficheros con respecto al directorio donde se guardan y que está a un nivel por encima.