En orden de importancia:
- La gestión de derechos en Linux se hace a nivel de proceso. Es decir, cada programa sólo puede hacer aquello que la cuenta de usuario que lo inicia podría haber hecho. Ni siquiera puede ver otros archivos, ni mucho menos modificarlos.
- La mayoría de los Linux vienen con una protección extra sobre eso. En la rama de RedHat y Suse se obtiene SE Linux - seguridad mejorada. Esto restringe aún más cada programa de sólo permitir que incluso los componentes de hardware sólo ser visto por ese programa, y sólo ser capaz de escribir a los que cuando se le da permiso explícitamente. Similar es el AppArmour en la rama Debian de Linuxes.
- Un usuario en una máquina Linux sólo tiene acceso a nivel de usuario. Sólo puede escribir archivos en su carpeta de inicio. Pueden ver otros lugares, y tal vez ejecutar desde otros lugares, pero nunca cambiarlos. Las partes sensibles están incluso ocultas a la vista. Así que ningún programa que ejecuten puede hacer más de lo que ese usuario en particular podría haber hecho tampoco.
- Cada archivo y directorio en Linux tiene niveles de acceso aplicados a él. Tanto lo que puede hacer el propietario/creador del archivo como lo que pueden hacer los demás. Hay 3 subdivisiones, que dan 3 derechos cada una. El propietario, el grupo al que pertenece el propietario y todos los demás. A cada uno de ellos se le pueden dar privilegios de lectura, escritura y ejecución independientes unos de otros. Estos están automáticamente configurados para todos los programas estándar de Linux - permitiendo a los usuarios normales ejecutar programas y leer archivos de configuración, mientras que no permiten ningún cambio en los archivos / carpetas que no han hecho ellos mismos. También se ocultan cosas que ni siquiera deberían ver - por ejemplo, los certificados de encriptación, las carpetas de inicio de otros usuarios, etc. Ni siquiera pueden ver las carpetas en las que residen estas cosas, ni leer los archivos reales, ni editarlos.
- Las tareas administrativas son manejadas por el usuario root exclusivamente. Algunas cuentas de usuario pueden tener derechos para escalar a un privilegio de usuario root - a través de cosas como sudo (Super User do). Pero en cada una de ellas tienen que introducir una contraseña antes de que pueda ocurrir. Por lo tanto, no son posibles tales cambios en todo el sistema sin el consentimiento explícito del usuario.
- Todo en Linux, y casi todos los aditivos en la parte superior de Linux es de código abierto. Es decir, se comprueban y vuelven a comprobar constantemente por múltiples programadores independientes. Si se comete un error se encuentra muy rápidamente. Si alguien hizo una puerta trasera (como si fuera un colador entero detrás de Windows), entonces se le llama la atención y ese programa se pone en la lista negra o se arregla pronto. En el código cerrado, sólo la compañía puede hacer esto, normalmente no tienen los recursos o el incentivo para hacerlo. En el caso de Windows, Microsoft realmente quiere esas puertas traseras - lea su EULA para ver por qué (quieren una forma de entrar en su máquina por lo que tienen que dejarlas, en realidad las hacen a propósito, una vez que alguien se entera de ellas lanzan un "parche de seguridad" para cerrar esa puerta y abrir otra).
- Linux (por defecto) sólo ejecuta programas específicamente diseñados para él. Ningún archivo EXE se va a ejecutar al hacer doble clic en él. Simplemente no puede hacerlo. Hay formas de hacer que se ejecuten, por ejemplo, usando Mono para ejecutar EXEs de DotNet y Wine para ejecutar EXEs normales de Windows. Pero ambos son instalaciones adicionales y ambos siguen funcionando en una caja de arena a través del nivel de usuario y los controles de AppArmour anteriores. Así que ningún virus específico de Windows tiene ninguna esperanza de comenzar en una máquina Linux. Lo mejor que puede hacer es rellenar la caja de arena creada alrededor del paquete de Wine por el que se está ejecutando.
- Por último, aunque esto es espurio en el mejor de los casos, los escritores de virus / malware tienen un incentivo menor para hacer tales programas para Linux. Simplemente porque hay menos usuarios de escritorio, y los que sí utilizan Linux tienden a ser más conocedores de la informática. Por lo tanto, es tanto más difícil como un objetivo más pequeño para esta gente mala.
Nótese que esto último es espurio, ya que no tiene en cuenta otros lugares en los que Linux es realmente el más prevalente. Por ejemplo, los servidores web están basados en Linux en un 90% hoy en día. Si un escritor de malware pudiera entrar en estos servidores, tendría acceso a la información de miles o millones de personas a la vez. Un incentivo mucho mayor para ir a esos objetivos que para tratar de entrar en las fotos de vacaciones de un individuo. Y sin embargo, cada vez que algo así sucede es una noticia extrema ya que ocurre muy pocas veces, cada vez en la historia de Linux también debido a que los administradores del servidor simplemente hacen algo estúpido, no por culpa de Linux. Sin embargo, en el lado de Windows Server, ¡Oh, Dios! ¿Qué es lo que ocurre en el salvaje oeste?
¿Nota lo del código abierto arriba? ¿Notan que dije "casi todos los aditivos"? Un ejemplo de esto son los teléfonos Android. Parte del conjunto de herramientas de Android instaladas en todos los teléfonos es de código cerrado. Ya sea de Google o del fabricante que hace ese teléfono. Esos son los puntos débiles de Android. Su kernel (Linux) es en realidad tan seguro como cualquier Linux. Pero debido a esas cosas de código cerrado, ha habido algunos incidentes, sólo descubiertos demasiado tarde una vez que el teléfono de alguien ha sido infectado - nadie podría haber comprobado esto antes (debido al código cerrado).
En realidad, como un ejemplo más de lo mucho más seguro que las cosas se vuelven debido al código abierto. Los medios de comunicación tienden a saltar sobre las historias de alguna "vulnerabilidad" en Linux, en el kernel. Cosas como un error que permitía a un programa ejecutado por un usuario escalar a un superusuario sin pasar por los controles de seguridad. Eso ocurrió realmente. Pero ¿adivina por qué los medios de comunicación dejaron de hacerlo? Porque se dieron cuenta de que cuando tuvieron la oportunidad de informar, escribir en un blog o en un artículo de noticias, la actualización ya se había implementado para corregir ese error, un día, si no semanas, antes de que se enteraran. Y ya casi todos los Linuxes han sido parcheados.
Consiga aquellos con sistemas de código cerrado, y no es extraño ver tales cosas ser dejadas por días, semanas, incluso años antes de que alguien realmente haga algo al respecto. Ya no se ven esas historias a menudo, no porque no ocurran, sino porque los medios de comunicación han aprendido que no es útil informar sobre ellas. En Linux siempre es demasiado tarde, y en Windows ocurre cada día o dos - por lo que no sería "sensacionalista".