¿Por qué no hay permisos como Android o iOS?


26

Cuando instalo un programa como GIMP o LibreOffice en Linux, nunca me preguntan sobre los permisos. Al instalar un programa en Ubuntu, ¿le doy permiso explícito a ese programa para leer / escribir en cualquier lugar de mi disco y tener acceso completo a Internet?

Teóricamente, ¿podría GIMP leer o eliminar cualquier directorio de mi disco que no requiera una contraseña de tipo sudo?

Solo tengo curiosidad si es técnicamente posible, no si es probable o no. Por supuesto, sé que no es probable.


26
Obligatorio XKCD: xkcd.com/1200
Andrea Lazzarotto

10
Porque el modelo de seguridad de Linux data de antes de que alguien pensara en hacer eso. De hecho, data de antes de Internet, cuando su mayor amenaza era que otras personas usaran la misma computadora.
user253751

2
En parte porque muchas de las personas que usan * nix no "instalan" programas, los compilan desde la fuente o los escriben ellos mismos. Así que imagínese si tuviera que pasar por el rigamarole de "permisos" para cada pequeño script de shell que escribió: ¿no sería una pérdida enorme de tiempo?
jamesqf

44
Sin embargo, no compro esta línea de razonamiento, "el código es de código abierto, puede revisarlo y compilarlo usted mismo". Todas estas afirmaciones son ciertas, pero eso no significa que voy a poder revisar cada línea de código que ejecuto, e incluso si lo hice, o lo hizo un equipo de personas, o el mundo entero lo hizo, eso de ninguna manera significa verá códigos maliciosos o malos que afectan negativamente a su computadora. Pero gracias por el aporte, veo cómo podría convertirse en un gran dolor y he descubierto formas de evitarlo ahora.
stackinator

Respuestas:


31

Aquí hay dos cosas:

  • cuando instala un programa por medios estándar (instalador del sistema como apt / apt-get en Ubuntu), generalmente se instala en algún directorio donde está disponible para todos los usuarios (/ usr / bin ...). Este directorio requiere que se escriban privilegios, por lo que necesita privilegios especiales durante la instalación.

  • cuando usa el programa, se ejecuta con su identificación de usuario y solo puede leer o escribir donde los programas ejecutados con su identificación pueden leer o escribir. En el caso de Gimp, descubrirá, por ejemplo, que no puede editar recursos estándar como los pinceles porque están en el modo compartido /usr/share/gimp/y que primero debe copiarlos. Esto también muestra Edit>Preferences>Foldersdónde la mayoría de las carpetas vienen en pares, un sistema que es de solo lectura y un usuario en el que se puede escribir.


17
Una vez que se instala el programa, la forma en que se instaló se vuelve irrelevante. Lo único que importa es bajo el cual se ejecuta identificador de usuario ((en otras palabras, que lo está utilizando) A continuación, se asumen los mismos derechos de acceso como todos los demás programas se ejecutan por el mismo usuario..
xenoid

3
@xenoid A menos que el programa esté instalado, propiedad de root y con bit setuid activado. En ese caso, el programa se ejecuta como root, a pesar de ser utilizado por otra persona.
Monty Harder

2
Sí, los 18: mount / umount / ping / sudo ...
xenoid el

2
@xenoid, creo que lo importante es que instalar un paquete no le pide explícitamente permiso para instalar un binario setuid. En cambio, lo que está en el paquete se instala, y solo tiene que "saber" de otra manera si hay programas privilegiados involucrados. Usted depende completamente del empaquetador para asegurarse de que el paquete coincida con la documentación y de que sea seguro, etc., la utilidad del administrador de paquetes no hace nada para ayudarlo.
ilkkachu

3
Sí, así que nada nuevo, es por eso que hay repositorios ... Incluso sin el bit setuid y el software instalado pueden hacer muchas otras cosas desagradables como rm -rf ~/. Si instala desde otras fuentes, debe tener cuidado (o instalar desde la fuente, después de una inspección de código).
xenoid

23

Al instalar un programa en Ubuntu, ¿estoy otorgando explícitamente a ese programa permiso completo para leer / escribir en cualquier lugar de mi disco y acceso completo a Internet?

Sí, si usa sudoo el equivalente, le está dando al instalador permiso completo para leer / escribir en cualquier lugar de su unidad. Esto es sobre todo lo mismo. También hay un indicador que el instalador puede establecer, llamado setuid, que hará que el programa tenga permisos completos después de la instalación también.

Incluso si ignoramos el instalador y si el programa no es setuid (es muy raro que los programas usen setuid), cuando ejecuta el programa, tiene acceso completo a cualquier cosa a la que pueda acceder su cuenta. Por ejemplo, si ha iniciado sesión en su banca en línea, hipotéticamente podría enviar todos sus fondos a Nigeria.

¿Por qué no hay permisos como Android o iOS?

El modelo de seguridad, que significa la forma en que está diseñado el sistema de seguridad, en Linux es muy antiguo. Se hereda de Unix, que se remonta a la década de 1960. En aquel entonces, no había Internet, y la mayoría de las personas en un departamento usaban la misma computadora. La mayoría de sus programas provienen de grandes empresas de confianza. Por lo tanto, el sistema de seguridad fue diseñado para proteger a los usuarios entre sí, no para proteger a los usuarios de los programas que ejecutan.

Hoy en día está bastante desactualizado. Android se basa en Linux, pero funciona creando una "cuenta de usuario" separada para cada aplicación, en lugar de para cada usuario. No sé qué usa iOS. Esfuerzos como Flatpak actualmente intentan llevar el mismo tipo de cosas al escritorio de Linux.


2
En realidad, este es un argumento para ejecutar código potencialmente explotable como un usuario separado sin privilegios y con la esperanza de que no haya una vulnerabilidad de escalada de privilegios en el sistema operativo. O Docker
Willtech

@immibis Android usa el kernel de Linux y una extensión FS. No comparte ninguna otra similitud afaik. No confunda Linux y UNIX (o GNU / Linux). (Al menos no
llamaste a

1
@ wizzwizz4 Linux es un kernel, Android usa el kernel llamado Linux, no estoy seguro de cuál es su punto.
user253751

@Willtech Técnicamente funciona como una medida de seguridad, pero es bastante inconveniente. Por lo general, desea que las aplicaciones puedan acceder a sus archivos, después de todo. Pero solo los archivos a los que les dijiste que accedieran.
user253751

@immibis Los permisos no se implementan en el núcleo, por lo que es engañoso implicar que Android se basa en un sistema que incluye el modelo de permiso. (IIirc el núcleo hace cumplir algunos de los permisos, sin embargo ...)
wizzwizz4

9

Lo que quieres es proporcionado por las aplicaciones Flatpack. Estos son muy equivalentes a las aplicaciones de iOS, Android o Windows Store.

No los he usado, así que no sé si han implementado la GUI todavía, para ver los permisos requeridos por cada aplicación cuando está instalada.

https://blogs.gnome.org/alexl/2017/01/20/the-flatpak-security-model-part-2-who-needs-sandboxing-anyway/

Cada aplicación flatpak contiene un manifiesto, llamado metadatos. Este archivo describe los detalles de la aplicación, como su identidad (app-id) y qué tiempo de ejecución utiliza. También enumera los permisos que requiere la aplicación.

Por defecto, una vez instalada, una aplicación obtiene todos los permisos que solicitó. Sin embargo, puede anular los permisos cada vez que llame a flatpak run o globalmente por aplicación utilizando flatpak override (consulte las páginas de manual para flatpak-run y flatpak-override para más detalles). El manejo de los permisos de la aplicación está actualmente algo oculto en la interfaz, pero el plan a largo plazo es mostrar los permisos durante la instalación y facilitar su anulación.

Tampoco he usado la alternativa de Ubuntu, Snappy, para saber si proporciona una característica visible en la GUI.


¿Los flatpaks tienen permiso de lectura / escritura para mi carpeta de inicio en Ubuntu?
stackinator

1
Al leer el enlace, parece que a) tienen una solución elegante en mente donde las aplicaciones solo tienen acceso a los archivos que el usuario ha elegido en una ventana de abrir / guardar archivos, etc., b) el valor predeterminado era otorgar acceso completo a su directorio de inicio .
sourcejedi

2
Las aplicaciones web son una solución mucho más estándar para este problema, aunque molestamente ineficiente en muchos casos. Cualquier navegador web popular es un entorno limitado altamente versátil y probado.
sudo

6

Es técnicamente posible y las soluciones incluyen apparmor, selinuxy firejailo incluso contenedores llenos gusta LXCo una máquina virtual completa (por ejemplo VirtualBox, kvmo vmware). Para la creación de redes, existe opensnitchun clon del littlesnitchprograma de OSX.

Las razones por las que no hay un modelo de seguridad generalizado con permisos otorgados por el usuario es que tradicionalmente tienes cuidado con lo que ejecutas en tu PC. El 90% de lo que hay en las tiendas de aplicaciones de los sistemas móviles se consideraría malware en las PC.

Hay escáneres de adware (es decir, adaware o Spybot D&D) que clasificarían el comportamiento como conectar Facebook, Google Analytics y redes de publicidad como malware en la PC. El ecosistema móvil es como un reinicio completo de la informática cuando se trata de estas cosas. Todos empaquetan adware, solo porque es fácil y agregan análisis, solo porque tiene curiosidad. Los efectos secundarios son la disminución de la privacidad y la seguridad. La parte de seguridad está representada por el modelo sandbox, la parte de privacidad sigue siendo un problema abierto.

Otra razón para no tener esto en la PC por mucho tiempo es la complejidad de un sandbox, lo que significa que ambos pueden ser demasiado lentos para las PC más antiguas hace algún tiempo y requerir más ingeniería para algo que tenía poca ventaja en ese momento.

Hoy vemos intentos de usar sandboxing en nuevos formatos de paquete como snap y flatpak y los navegadores también lo usan para sus extensiones. Chromium usa un modelo de permiso desde el principio y Firefox usa uno para todas las extensiones webe (desde 57 las únicas extensiones que puede instalar). Esto es bastante razonable, porque las personas instalan extensiones de navegador de autores desconocidos al igual que las aplicaciones de personas de las que nunca han oído hablar, pensando que no son más peligrosas que un sitio web que visitan, lo cual es un error fatal cuando no hay un entorno limitado para protegerlos.


4

Android utiliza un modelo de seguridad de "mercado": las diferentes aplicaciones provienen de diferentes proveedores (semi-confiables) y deben aislarse de los recursos protegidos y entre sí. La mayoría de las aplicaciones se distribuyen con fines de lucro: se venden (programas de pago), muestran publicidad paga o "monetizan" a sus usuarios vendiendo sus datos a terceros. Hay una gran motivación para participar en el acceso a datos ilícitos, incluso si son atrapados.

La mayoría de las aplicaciones en Debian, Red Hat y distribuciones Linux "clásicas" similares se distribuyen en forma de fuente: después de que una aplicación de código abierto gana suficiente tracción, los encargados de la distribución la eligen manualmente para su inclusión. Hay poca motivación para realizar el acceso ilícito a los datos; las ganancias potenciales no justifican los esfuerzos.

Vale la pena señalar que el modelo de seguridad avanzado de Android es una de las razones por las que ganó tanta tracción, superando fácilmente a iOS en los mercados móviles. Las distribuciones modernas de Linux de escritorio no son solo "diferentes", sino que en realidad están muy atrasadas en cuanto a sus modelos de seguridad y distribución.

Algunas de las distribuciones de Linux están mejorando su sistema de distribución de software: repositorios de software de terceros centralizados (AUR), formatos de paquetes especializados para distribuir software de terceros (AppImage, Snappy, Flatpack), sistemas de repositorios secundarios (Docker). Desafortunadamente, esas mejoras ganan muy poca fuerza con el tiempo: AppImage se inventó en 2004, la primera versión de AUR se lanzó en 2005, pero ninguna de las distribuciones modernas de Linux adoptó oficialmente sus características después de> 10 años.


3

Cuando instalo un programa como GIMP o LibreOffice en Linux, nunca me preguntan sobre los permisos.

Estas aplicaciones se instalan en una parte privilegiada del sistema de archivos que usted y la mayoría de los usuarios normalmente no tienen acceso para cambiar.

En las distribuciones convencionales configuradas para el escritorio, el usuario único configurado inicialmente al instalar normalmente tendrá derechos de administrador. Todo lo que normalmente se les pedirá es su propia contraseña de inicio de sesión para instalar el software, y no siempre eso.

Una vez instalado, el software se configurará de manera predeterminada para que sea ejecutable por los usuarios normales y permita que se lean los archivos de datos. Eso es todo lo que se necesita.

Al instalar un programa en Ubuntu, ¿le doy permiso explícito a ese programa para leer / escribir en cualquier lugar de mi disco y tener acceso completo a Internet?

No es el programa. Lo que sucede es que la cuenta de usuario pertenece a diferentes grupos y los diferentes grupos otorgan acceso a diferentes recursos.

El modelo de seguridad en Linux es que su cuenta de usuario tiene ciertos derechos, y los grupos a los que pertenece su cuenta tienen derechos específicos. Para acceder a cualquier parte del sistema de archivos se requieren privilegios de root, que normalmente no se otorgan a los usuarios. Incluso cuando usa sudo no obtiene todos los derechos.

Las cuentas de usuario normales suelen tener acceso a los recursos que se espera que necesiten, como Internet.

Teóricamente, ¿podría GIMP leer o eliminar cualquier directorio de mi disco que no requiera una contraseña de tipo sudo?

La aplicación que inicie puede acceder a cualquier directorio o archivo al que usted, como usuario, tenga derechos de acceso, ya que generalmente hereda sus derechos. Un usuario normalmente conectado no tendrá el derecho de alterar por defecto la mayoría de los archivos críticos del sistema o archivos compartidos.

Solo tengo curiosidad si es técnicamente posible, no si es probable o no. Por supuesto, sé que no es probable.

Tenga en cuenta que la mayoría de los usuarios suelen instalar aplicaciones desde repositorios que están bien vigilados y el riesgo de código hostil es bajo.

Probablemente sugeriría algunas lecturas adicionales para familiarizarse con los permisos de Linux.

El modelo de seguridad de Android está evolucionando para satisfacer las necesidades de los usuarios que no solo no entienden generalmente nada sobre el modelo de seguridad subyacente del sistema operativo, sino que casi no entienden nada sobre las computadoras.

El modelo de Linux (que francamente me gusta más) está diseñado para permitir a los usuarios (y a los administradores en particular) ejercer más control sobre la seguridad en el sistema (dentro de los límites si tienen los permisos permitidos).

Creo que desde el punto de vista del usuario, se describe mejor como la diferencia entre el control totalmente automático y semiautomático o manual. Los consumidores modernos quieren auto completo. Linux tiene semiautomático y manual. La mayoría de los usuarios de Linux nunca necesitan saber sobre el modelo de seguridad en estos días, pero el control está ahí si lo necesita o lo quiere.


2

Cuando instala algunos programas, puede instalarlos dentro de su propio espacio de usuario (es decir, autónomo dentro de su directorio de inicio) y no en todo el sistema. Como tal, no se le solicitan privilegios de superusuario porque no los necesita para instalar un programa para uso propio de un usuario. De hecho, un programa así instalado no podría acceder a los archivos a los que no se les haya otorgado el permiso "los propietarios no pertenecientes al grupo que no sean propietarios pueden leer este" sin una escalada de privilegios.


Si el programa está instalado en mi directorio de inicio, ¿puede leer y escribir en cualquier lugar dentro del directorio de inicio?
stackinator

2
Se ejecuta con sus permisos, por lo que puede acceder a cualquier cosa a la que pueda acceder.
DopeGhoti

1
En una máquina de un solo usuario, el acceso solo para usuarios no es mucho más seguro que el acceso root. De cualquier manera, todo lo importante es probablemente accesible por su usuario.
sudo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.