En esta guía aprenderemos a denegar los permisos de los archivos en Linux.
La función de los permisos y los archivos es mucho más clara en Linux en comparación con Windows. La mayoría de la gente lo encuentra más fácil de entender en comparación con el complejo sistema de grupos y usuarios que encontramos en el concepto de permisos de Windows. Por ejemplo, cada archivo en un sistema operativo basado en Linux tiene tres conjuntos de permisos: el primero son los permisos del propietario, el segundo es para un grupo específico de usuarios, y los permisos del último grupo son responsables del resto del sistema.
Los niveles de acceso a la lectura, escritura y ejecución se describen a continuación con una escala que va del 1 al 7. Un valor de ‘1’ permite la ejecución del archivo, ‘2’ permite el acceso de escritura, y ‘4’ permite la lectura del archivo. Para combinar varios permisos, basta con sumar los números. Por ejemplo, si quieres acceso de lectura y escritura para un archivo, pero no acceso para ejecutar este archivo, el valor a establecer para los permisos sería 2 + 4, que es 6.
En este tutorial, veremos cómo crear un archivo de manera que sólo el propietario tenga permisos completos sobre él. También veremos qué sucede cuando otro usuario intenta leer o modificar ese archivo. Por último, veremos el papel de los usuarios “sudo” que asumen el rol de root por sí mismos, y cómo podemos implementar una seguridad férrea de los archivos ocultando los contenidos incluso al root si es necesario.
Para esta guía voy a utilizar una maquina virtual creada sobre Oracle VirtualBOX con Vagrant, puedes ver como se hace en este tutorial:
Creación de un archivo con permisos de “sólo propietario”
Digamos que tenemos un archivo cuyo contenido queremos tener oculto para los demás. En esencia, los demás podrían ver que el archivo existe, y eso es todo. No queremos que vean lo que hay dentro, ni que puedan modificarlo de ninguna manera. Hacemos esto usando el siguiente comando:
sudo chmod 700 prueba.txt
Donde prueba.txt es el nombre del archivo que quiero proteger. Una vez que ejecutamos este comando, el archivo se vuelve “verde” cuando lo listamos en un comando como “ls”, y muestra los nuevos permisos del archivo con el comando “ls -l”, así:
Aquí puedes ver que los permisos de los archivos están restringidos sólo al primer grupo -el propietario- que tiene “rwx”, o sea, permisos de lectura, escritura y ejecución. Y la tercera columna de “ls -l” es el nombre del propietario, que en este caso es “root”.
Por comodidad, hemos creado este archivo en el directorio principal de otro usuario llamado “testuser”. Esto es lo que ocurre cuando entramos como el nuevo usuario e intentamos leer el contenido de test.txt:
Como puedes ver, a charlie se le niega la capacidad de acceder al archivo de cualquier manera. Cualquier otro usuario que intente abrir este archivo recibirá el mismo mensaje de error. De esta manera, puedes asegurarte de que tus archivos importantes se mantengan ocultos a otros usuarios.
Denegar los permisos de los archivos en Linux, permitir que otros sólo lean el archivo
Quizá haya un documento o conjunto de normas importante que quieras que otros puedan leer, pero no modificar. Podemos conseguirlo con el siguiente comando:
chmod 744 test.txt
Aquí, “744” en lugar de “700” da a todos los demás el permiso para leer el archivo, pero nada más. Aquí puedes ver que “testuser” es capaz de acceder al contenido del archivo después de que se le hayan asignado sus permisos “744”:
Sin embargo, si luego intentan modificar el archivo usando un editor de archivos, como “nano”, obtienen la advertencia que usted espera, como se muestra aquí:
Utilice esta variante del comando chmod cuando necesite que otros vean el archivo, pero no lo modifiquen de ninguna manera.
Los usuarios root o “sudo” siguen teniendo acceso
Desafortunadamente, los permisos de los archivos no se aplican a los usuarios root o sudo. Para este ejemplo, he añadido “charlie” al archivo sudoers para que puedan usar ejecutar comandos de root usando sudo.
sudo usermod -aG sudo charlie
Editamos el archivo en modo sudo
sudo nano prueba.txt
Y cuando hacen esto, pueden acceder al archivo protegido como se muestra aquí:
No hay manera de evitar esto usando los permisos de los archivos. Los usuarios root y los que pertenecen al grupo “wheel” pueden simplemente usar “sudo” para evitar estas restricciones. Por supuesto, es una buena práctica ser sabio con las capacidades que le das a tus usuarios – dar permisos sudo a todo el mundo no es una buena idea. Dado que esto es una práctica común, los sistemas Linux bien configurados no deberían tener este problema.
Verdadera seguridad de los archivos – Incluso desde “root”
En última instancia, la única forma de ocultar tus archivos de todo el mundo -incluidos los usuarios root- es utilizar un cifrado basado en una frase de contraseña. Ningún otro método puede ocultar tu información con un 100% de seguridad de todos, ¡incluyendo a los usuarios root y sudo!
¡Que tengas un Ingenioso día!
¡que tengas un ingenioso día!
Contrata tu plan Ingenios@ de Sistemas por 5€ al mes y responderé a todas tus preguntas sobre tecnología en el menor tiempo posible. Pasa a formar parte de la comunidad Ingenios@s de Sistemas y disfruta de contenido exclusivo y aprende sobre sistemas Open Source, Blockchain, SmarContract, Web3, Inteligencia Artificial y Reaidad Virtual, súbete al tren de la Revolución 4.0
Si quieres estar al día y no perderte nada Suscribete al Podcast Ingenios@s de Sistemas, un episodio diario que te mantendrá informado y formado en esta vertiginosa carrera.