Seguridad
Unix fue pensado desde su comienzo como un sistema multiusuario. Esto significa que la misma máquina puede ser usada por más de una persona, incluso simultáneamente, debido a que en aquella época los equipos eran muy caros y se diseñaban para ser utilizados por varios usuarios a la vez, cada uno con su pantalla y teclado pero compartiendo el resto del equipo. Linux, la versión más popular de Unix hoy en día continúa respetando todas sus características, que aunque en primer momento no lo parezca hoy en día son más vigentes que nunca.
El permitir la convivencia de varios usuarios motivó la existencia de varios conceptos que permiten la protección y seguridad de los datos de los usuarios.
Cuentas de usuario
Las cuentas de usuario son en principio similares a los perfiles que desde no hace mucho brinda Windows, sin embargo va más allá. Una cuenta de usuario comprende un nombre y clave de identificación, un numero de usuario usado por el sistema, un directorio para el usuario (home), y el shell que usará el usuario. Además se guardan el nombre real del usuario y en algunos casos otros datos personales.
El directorio home es el punto de partida de una sesión de trabajo. En él el usuario guarda sus archivos de datos y sus configuraciones personalizadas de trabajo. De esta forma, cada usuario puede tener todo configurado a su gusto sin conflicto con los demás.
Existe un usuario particular, que es el administrador del sistema. El nombre de su cuenta de acceso es "root", ya que tradicionalmente su directorio home era la raíz del sistema, pero no así en Linux. Lo que hace a root tan particular es que a fin de que pueda llevar a cabo su labor no se le imponen límites en su accionar, pudiendo siempre sortear cuando considere necesario las medidas de seguridad del sistema.
Grupos de usuarios
A fin de facilitar la administración del sistema y el trabajo entre varios usuarios, se pueden definir grupos de usuarios. Un usuario puede pertenecer a varios grupos, y siempre ha de pertenecer a alguno. Así, un usuario puede pertenecer al grupo general de usuarios (users), a un grupo especial de trabajo (proyecto, creado por nosotros), etc.
Permisos
Un archivo tiene tres grupos de permisos. Cada grupo comprende tres permisos: de lectura, de escritura y de ejecución. El permiso de lectura decide si los programas que utilice un usuario pueden acceder a los contenidos de un archivo, mientras que el de escritura permite que puedan escribir en ese archivo. El permiso de ejecución permite o evita que un archivo pueda ser ejecutado. Así, la posibilidad de que un archivo sea ejecutado no depende de una extensión EXE, COM, BAT o ninguna otra, sino de que tenga permisos de ejecución.
Por su parte, los directorios también son afectados por los permisos. El de lectura permite leer su lista de archivos, el de escritura que podamos agregar o eliminar archivos de él, y el de ejecución permite que accedamos o no a los archivos que contiene, es decir es posible que un directorio nos deje ver los archivos que contiene pero no accederlos, o por el contrario que no nos deje ver su contenido pero sí accederlo "a ciegas".
Usuario dueño y grupo dueño
Además de tener permisos, los archivos al ser creados se les asigna un dueño, que es su creador, y un grupo dueño, que es uno de los grupos a los que pertenece el creador. Así, el usuario pepe podría crear el archivo "esquema", el cual asumiría que su dueño es pepe, y si Pepe está trabajando en el proyecto podría hacer que el grupo dueño del archivo sea "proyecto".
Como usamos los permisos
Como decíamos, cada archivo posee entonces tres grupos de permisos de lectura-escritura-ejecución, que permiten que según cual sea el usuario que trate de trabajar con ese archivo pueda o no realizar cada operación.
El primer grupo de permisos afecta al usuario dueño. Por ejemplo, podemos proteger contra escritura archivos que podemos dañar por accidente. El segundo grupo de permisos afecta al grupo dueño. Entonces, podemos hacer que algunos archivos puedan ser leídos, escritos o ejecutados por nuestros compañeros de trabajo, pero no otros archivos personales, y ambos conjuntos de archivos estarán protegidos de todos los demás usuarios.
El tercer grupo afecta a todos los usuarios del sistema. Este esquema de trabajo nos permite una variedad de formas de acceso lo bastante flexible como para poder administrar nuestra privacidad y seguridad contra los otros usuarios.
Programas privilegiados
A veces esto restringe las posibilidades, por esto existen dos permisos extra que afectan a los ejecutables, y que les permiten correr no limitados por los permisos según la situación del usuario que los arranca, sino por los permisos según el usuario dueño del programa, generalmente root. El ejemplo por excelencia es el programa que nos permite cambiar nuestra clave de acceso. Debido a que el archivo que almacena las claves no puede ser alterado por los usuarios normales, debe correr con los permisos de root. Sin embargo, debido a que esta forma de trabajo de los programas atenta contra el esquema de seguridad su uso se limita a casos puntuales y que debe estudiarse ante la posibilidad de que resulten realmente peligrosos.
Ventajas
A pesar de lo complejo que parece en primer momento, no es difícil acostumbrarse, y ofrece ventajas que quizás no hayamos pensado. Salvo el administrador, nadie que no sea el dueño puede eliminar un archivo, por error o por hacer daño, si ha sido adecuadamente protegido.
Otra muy importante es que, por más que en nuestro entorno inmediato no dudemos de la confiabilidad de la gente que usa nuestro equipo, durante años hemos visto los problemas sufridos en sistemas que ignoran todo esquema de seguridad. Estamos hablando de los virus y los troyanos.
Un virus es básicamente un programa que se "pega" a otros programas, y que al ejecutar éstos pega una copia de sí mismo a otro programa. Para hacer esto, debe poder leer y escribir el archivo ejecutable del programa donde quiere copiarse. Si ejecutamos un programa con virus, normalmente estará limitado a alterar los archivos en los que nuestro usuario tiene permisos para escribir, de tal forma que no podrá infectar programas propios de los otros usuarios ni los compartidos por todos los usuarios. En la misma forma, un virus destructor o un troyano no podrán destruir todo el contenido de la máquina, sino sólo aquello donde el usuario tenía permiso de escritura.
La seguridad y los errores del sistema
Puede considerarse que el root, el administrador, puede ejecutar un programa con virus y que en tal caso efectivamente puede causar daño. En la misma forma sucede con un programa con privilegios de root. Sin embargo debe considerarse que tanto el uso de la cuenta root como la definición de programas privilegiados debe hacerse medidamente y con cuidado.
Existe otra fuente de peligro, que es una falla en el sistema operativo que permita violar la seguridad. Existe un virus que haciendo uso de un error de este tipo adquiría por si mismo privilegios para afectar todo el sistema. Sin embargo, en 8 años de Linux, y a pesar de existir más documentación interna que sobre cualquier otro sistema de tan amplia distribución, es el único caso de virus conocido, y que solamente afectaba a una versión en particular (considerando que por su peculiar forma de desarrollo más de 70 versiones estables han sido distribuídas), y que hoy en día es obsoleta.
Todos los sistemas tienen errores que comprometen la seguridad, y todos los días son descubiertos problemas nuevos en diversas áreas. Sin embargo, aún en este caso y contra cualquier expectativa que brinde el soporte de un producto comercial, mientras éstos tardan una semana o más en solucionarlos, en Linux las correcciones tardan entre unas pocas horas y algunos días. Esto es debido a la gran cantidad de profesionales de sistemas que acceden y revisan el código fuente constantemente, lo cual convierte a Linux en uno de los sistemas más seguros de la actualidad.
Julio Cezar Gazquez - julio@lugro.org.ar
- Secciones: