Domina los permisos de los directorios y archivos de Linux

Domina los permisos de los directorios y archivos de Linux

Rubén Velasco

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.

Es cierto que este sistema de permisos puede parecer algo complicado. Pero, a continuación, te explicamos en qué se basa y cómo podemos cambiar a nuestro gusto estos permisos. De hecho, los usuarios habituales de estos sistemas de código abierto en multitud de ocasiones presumen, y con razón, de esta función para la designación de permisos para sus contenidos. Este es un apartado que está mucho más avanzado y es más controlable por parte del usuario de lo que podemos llevar a cabo en Windows. De ahí precisamente que diferentes distribuciones de Linux se usen en servidores multipropósito y multiusuario para gestionar todo tipo de carpetas y ficheros.

Estos permisos de los que os vamos a hablar a continuación dan la oportunidad a los usuarios de Linux de controlar al máximo el uso de todos estos contenidos por parte de terceros. Aunque en un principio todas estas tareas parezcan un tanto complejas, en realidad su gestión es mucho más sencilla de lo que podríamos pensar en un principio.

Permisos Linux RWX

Qué significan los «números» o «letras» en los permisos de Linux

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).

Por ejemplo, supongamos que tenemos un archivo llamado «softzone» en nuestro disco duro con Linux. Vamos a configurar que el propietario tenga control total sobre él (rwx), los miembros del grupo solo lectura (r–) y los demás usuarios ningún permiso (—). En ese caso, los permisos serían los siguientes:

TipoPropietarioGrupoOtros
-rwxr-----

Estos son parámetros que en un principio deberíamos memorizar, aunque la experiencia nos ayudará mucho en este sentido, para así gestionar estos permisos sobre archivos y carpetas de una manera mucho más rápida y funcional. En realidad, son algunos caracteres creemos tener en consideración para posteriormente aprovecharnos mejor de esta funcionalidad que os comentamos.

Cómo funcionan los permisos de Linux mediante números

Si no nos gustan las letras, también podemos usar el código numérico para cambiar los permisos de Linux. Este código no es más que el valor del código binario según los permisos que estén o no usados. Supongamos que cada uno de los permisos ocupa una posición en binario. En este caso, rwx equivaldría a 111 binario, que en decimal sería 7. r– sería 100 en binario, o lo que es lo mismo, 4 en decimal. Y — sería 000 en binario, 0 en decimal.

Siguiendo estas directrices, los permisos del ejemplo del caso anterior sería 740. El primer dígito corresponde al propietario del archivo, el segundo al grupo y el tercero a todos los demás. Los números de permisos que nos podemos encontrar serán los siguientes:

  • 0 = —
  • 1 = –x
  • 2 = -w-
  • 3 = -wx
  • 4 = r-
  • 5 = r-x
  • 6 = rw-
  • 7 = rwx

Algunos ejemplos de esto serían:

 PropietarioGrupoOtrosResultado
Código de letrasrwxr-----rwxr-----
Código numérico740740
---
Código de letrasr--------r--------
Código numérico400400
---
Código de letrasr-xrw---xr-xrw---x
Código numérico561561

Ambos sistemas son igual de efectivos, y cada uno tiene sus ventajas e inconvenientes. Mientras que las letras nos permiten tener ver más claro el nivel de permisos, los números son mucho más simples, aunque hay que pensar un poco más.

Todo dependerá de aquello a lo que estemos acostumbrados o sencillamente el método que más sencillo nos resulte para el día a día. Hay que tener en cuenta que, si nos planteamos gestionar un sistema operativo de estas características, todo aquello relacionado con los permisos que podemos o no podemos asignar debemos tenerlo muy presente.

Cómo cambiar los permisos en Linux

Para cambiar los permisos en Linux es necesario usar el comando «chmod». Este comando 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».

Partiendo de un archivo «softzone», estos son algunos ejemplos para cambiar los permisos usando el código de letras:

  • chmod +rwx softzone -> añade permiso de lectura, escritura y ejecución al propietario.
  • chmod g+rwx softzone -> añade permiso de lectura, escritura y ejecución al grupo del usuario propietario.
  • chmod o+rwx softzone -> añade permiso de lectura, escritura y ejecución al resto de usuarios.
  • chmod -x softzone -> quita el permiso de ejecución al propietario.
  • chmod g-wx softzone -> quita los permisos de escritura y ejecución al grupo del usuario propietario.
  • chmod o-rwx softzone -> quita todos los permisos al resto de usuarios.
  • chmod a+r -> añade permiso de lectura a propietario, grupo y resto de usuarios.

También podemos usar el código numérico para cambiar el nivel de permisos de cualquier archivo de la siguiente manera:

  • chmod 777 softzone – permiso rwx para propietario, grupo y resto de usuarios.
  • chmod 700 softzone – permiso rwx para propietario, y grupo y usuarios sin permisos.
  • chmod 327 softzone – permiso de escritura y ejecución para propietario, escritura para grupo y rwx para resto de usuarios.
  • chmod 644 softzone – este comando se utiliza para no permitir la escritura a nadie que no sea el propietario.
  • chmod 755 softzone – con este permiso el propietario del archivo en Linux tiene la posibilidad de leer, escribir y ejecutar el archivo, pero el resto no lo podrá ejecutar.
  • chmod 666 softzone – aquí lo que se hace es dar permisos de lectura y escritura a todos los usuarios excepto la ejecución. Todos podrán leer su contenido y modificarlo.

Para cambiar los privilegios a un directorio, los comandos son los mismos, con la diferencia de que en vez del nombre del archivo tendremos que especificar el directorio en cuestión. Es posible que en un principio todos estos comandos de los que os hablamos os parezcan un tanto confusos o difíciles de memorizar. Sin embargo, al igual que sucede con los comandos que utilizamos en otros sistemas operativos como Windows, todo es cuestión de experimentar y entender bien lo que estamos haciendo para así aprovecharlo en el futuro.

Qué son las 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.

Con todo esto puede jugar aquel que esté configurando el sistema operativo para así tener un mayor control sobre los contenidos y poder administrarlos de una manera más rápida y eficaz.

Cambiar el propietario o grupo de un archivo o directorio

Además de cambiar los permisos de los archivos o los directorios, si tenemos problemas también podemos cambiar nosotros el propietario o el grupo al que pertenece cualquiera de ellos.

Por ejemplo, podemos cambiar el grupo de un archivo (o directorio) usando el comando «chgrp groupname archivo» (cambiando «groupname» por el nombre del grupo que queremos añadir, y «archivo» por el nombre del fichero o el directorio que corresponda).

También podemos cambiar quién es el propietario de cualquier archivo. Para ello, usaremos el comando «chown» seguido del nombre del nuevo propietario del archivo, y el nombre del archivo o directorio sobre el que realizar el cambio.

Dar permiso de ejecución a un script

Aunque es raro que nos pongamos a mirar uno a uno los permisos de los archivos de Linux, sí que es probable que una de las tareas más habituales que tengamos que hacer es dar permisos de ejecución a un script, ya sea bajado de Internet o que nosotros mismos hayamos creado. Esto se debe a que, debido a la configuración de «seguridad por defecto» de Linux, los nuevos archivos que podemos crear, o que llegan a nuestro PC desde Internet, no se pueden ejecutar como tal.

Para ello, debemos hacer un sencillo cambio. Ya hemos explicado en detalle cómo funcionan los permisos en Linux, pero si no queremos complicarnos, podemos hacerlo de forma muy rápida y sencilla ejecutando simplemente este comando:

sudo chmod +x nombrescript.sh

Con este comando no cambiaremos ninguno de los permisos de lectura o escritura del archivo; simplemente le estaremos indicando al sistema que se puede ejecutar, ya sea como programa binario (si está compilado), o como script.

¡Sé el primero en comentar!