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.
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:
Tipo | Propietario | Grupo | Otros |
---|---|---|---|
- | rwx | r-- | --- |
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 con 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:
Propietario | Grupo | Otros | Resultado | |
---|---|---|---|---|
Código de letras | rwx | r-- | --- | rwxr----- |
Código numérico | 7 | 4 | 0 | 740 |
--- | ||||
Código de letras | r-- | --- | --- | r-------- |
Código numérico | 4 | 0 | 0 | 400 |
--- | ||||
Código de letras | r-x | rw- | --x | r-xrw---x |
Código numérico | 5 | 6 | 1 | 561 |
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.
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. Para ello, en vez de usar el comando «chmod», el que tenemos que usar es el comando «chown» de la siguiente manera:
chown [usuario:grupo] [archivo]
Por ejemplo, podemos cambiar el propietario de un archivo llamado «softzone.txt», para que su dueño sea «admin1» con el siguiente comando:
- chown admin1 softzone.txt
Si, por el contrario, lo que queremos hacer es cambiar el grupo al que pertenece dicho archivo, también podemos hacerlo. Por ejemplo, podemos hacer que pertenezca al grupo «administradores» de manera que «admin1», «admin2» y todos los demás usuarios dentro de ese grupo puedan acceder al archivo. Lo haríamos de la siguiente manera:
- chown :administradores softzone.txt
Lo importante, en este comando, son los dos puntos que hay antes del grupo, lo que le indica al comando «chown» que, efectivamente, lo que buscamos es cambiar el grupo, y no asignárselo a un usuario llamado «administradores» que, probablemente, no exista.
Por supuesto, también podemos cambiar el usuario y el grupo del fichero con un solo comando. Para ello, lo que haremos será ejecutarlo de la siguiente manera:
- chown usuario1:administradores softzone.txt
De esta forma, el usuario «usuario1» será el propietario del archivo, y además, como pertenecerá al grupo «administradores», todos los usuarios dentro de este grupo (como admin1, admin2, etc) podrán usar igualmente el archivo.
Calculadora de permisos
En realidad, una vez que entendemos cómo funcionan los permisos en un sistema Linux no es difícil saber usarlos y configurar el sistema en función de nuestras necesidades. Sin embargo, si no se nos da muy bien, y queremos evitar cometer errores a la hora de establecer los permisos de archivos y directorios de Linux, en la red podemos encontrar varias webs que van a funcionar como calculadoras de permisos para saber qué comando chmod exacto debemos ejecutar.
Chmod Calculator. Esta es una de las más básicas y sencillas que podemos encontrar. En esta web tenemos una serie de casillas con las que vamos a poder seleccionar los permisos que queremos que tenga el creador, el grupo o los usuarios públicos del sistema. Podemos marcar los permisos de lectura, escritura y ejecución para cada categoría y, abajo, veremos el código chmod que debemos ejecutar. Podemos entrar a esta página desde aquí.
Unix Permissions. Un poco menos cuidada estéticamente (parece una página de los años 90 o 2000), pero totalmente útil y fiable. Tenemos en ella unas casillas donde marcaremos los permisos de escritura (w), lectura (r) y ejecución (x) para cada tipo de usuario. Al hacer clic sobre el botón «Calculate» podremos ver dos ejemplos del comando «chmod» que debemos ejecutar. Accede a esta página desde este enlace.
Nettools. Otra página similar a las anteriores. Tenemos varias casillas en función del tipo de usuario y el permiso que queramos darle, y en la parte inferior nos enseña los permisos en forma de número o simbólicos. Se trata de una web muy sencilla de usar para que nadie tenga dudas a la hora de especificar estos permisos. Además de la calculadora de permisos, en esta página encontramos otras muchas herramientas, como un generador de contraseñas, editor de CRON, conversores de Base64 y mucho más. Entra a ella haciendo clic aquí.
Gracias a estas webs, si tienes dudas sobre qué comando chmod debes ejecutar para configurar correctamente los permisos del sistema operativo, ya no tendrás más dudas.
Qué son los permisos heredados de Linux
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.
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.