SlideShare una empresa de Scribd logo
1 de 30
Distribución
de Aplicaciones
Juanjo Marín <jjmarin@gnome.org>
GUADEC-ES, Tudela, 22 de enero de 2016
¿ Qué es una aplicación?
¿ Qué es un sistema
operativo ?
¿ Es una distribución un
sistema operativo ?
La importancia de separar
las aplicaciones del
sistema operativo
Solución: ¿bundle*?
*lote, bulto, fardo
Primeras aproximaciones,
Klik:Desarrollado por Simon Peter desde 2004
Ficheros .cmg con directorios de aplicaciones
autocontenidos, comprimidos en un sistema de ficheros
CramFS (< 272MB) o iso9660/zisofs
Se hace uso de dispositivos de loopback (/dev/loopX)
para montar los ficheros .cmg
Para solucionar la relocalización de ficheros se parchea
los binarios
Se basa en Debian estable
LinuxPortableApp, sucesor de
KlikRefina la implementación de Klik (y Klik2). Data de 2010
Se usa FUSE (Filesystem in Userspace) en lugar de
dispositivos de loopback
Se incluye una aplicación AppImageKit para la creación
de los bundles, inspirada en ideas de Glick
http://portablelinuxapps.org/
ELF embbeded
Is ISO9660
header
ISO9660 zisofs compressed data containing
AppRun
.DirIcon
SomeAppFile
Pequeña demo de
Klick y LinuxPortableApp
Xdg-app
Desarrollado por Alexander Larsson
Objetivos principales:
- Distribución de software para 3rd
parties
- Sandboxing
Xdg-app
Diferenciación entre:
- Aplicaciones
- Entornos de ejecución (Runtime)
OSTree
Los bundles se distribuyen mediante OSTrees
Como git, pero para directorios de sistemas operativos
Una aplicación es un directorio con ficheros que necesita
Ejemplo de aplicación
├── metadata
├── files
│ ├── bin/hola-mundo
│ ├── etc/ejemplo/hola-mundo.conf
│ ├── lib/lib_especifica.so.1
│ └── share/ejemplo/ejemplo.txt
└── export
├── share/appdata/org.ejemplo.hola-mundo.appdata.xml
├── applications/org.ejemplo.hola-mundo.desktop
└── icons/hicolor/48x48/org.ejemplo.hola-mundo.png
[Application]
name=org.gimp.GimpDevel
runtime=org.gnome.Platform/x86_64/3.18
command=gimp-2.9
Ejemplo de runtime
├── metadata
└── files
├── bin
├── etc
├── lib
└── lib64
[Runtime]
name=org.gnome.Platform/x86_64/3.18
runtime=org.gnome.Platform/x86_64/3.18
/var/xdg-app, ~/.local/share/xdg-app
├── repo
├── app
│ └── org.gimp.GimpDevel
│ ├── current -> x86_64/master
│ └── x86_64
│ └── master
│ ├── cbfe602f4d1c8d0c17e233ac648f44ec9c08cc48ab884a435c5207ae9c625e26
│ └── active -> cbfe602f4d1c8d0c17e233ac648f44ec9c08cc48ab884a435c5207ae9c625e26
├── exports
│ └── share
│ ├── appdata
│ ├── applications
│ ├── dbus-1
│ │ └── services
│ └── icons
└── runtime
└── org.gnome.Platform/x86_64/3.18
├── active -> d570957f1fe8d436f570537f0a3a552fbd6d4891f59b3f9e48dcc36d26b9b640
└── d570957f1fe8d436f570537f0a3a552fbd6d4891f59b3f9e48dcc36d26b9b640
Ejecución de una aplicación
Se hace uso de filesystem namespaces
Los ficheros del runtime se colocan en /usr
Los ficheros de aplicación se colocan en /app
Configuración y otros en
~/.var/app/org.examplo/hola-mundo
Sandboxing
Modelo tradicional unix:
- Máquinas compartidas
- Múltiples usuarios
La seguridad se centra en:
- Proteger unos usuarios de otros
- Proteger a los administradores de los usuarios
- Plena confianza en las fuentes de distribución software
Sandboxing
Modelo actual más común:
- Un solo usuario
- Un portátil
- El usuario es también el administrador
- Se quiere instalar desde varias fuentes de software
La seguridad necesita:
- Proteger a los usuarios de las aplicaciones
- Ejecutar las aplicaciones con los menores privilegios
posibles
- Proteger unas aplicaciones de otras
- Evitar el secuestro de tu máquina (botnet, nodo spam,
bitcoin miner encubierto, etc)
Elementos a proteger
- No dar visbilidad a los ficheros de usuario
- Evitar ataques de escala de privilegios
- Acceder a la red
- El acceso a otros procesos
- Acceso a recursos de otros usuarios
- Proteger de acceso a hardware
- Vulnerabilidades del Kernel
X11
- Se comunica por el socket /tmp/.X11-unix/X0
- Usado por la inmesa mayoria de los programas
- Inseguro por diseño
for i in $(xdotool search --onlyvisible --class terminal); do 
xdotool windowactivate --sync $i 
type $'echo evil was here!n';
done
Wayland
- Se comunica por el socket /run/user/1000/wayland-0t
- Procolo diseñado para ser seguro
- Es el futuro de los escritorio libres
PulseAudio
- Se comunica por el socket /run/user/1000/pulse/native
- Reproduce y graba sonido
- No es seguro, pero se está arreglando
D-Bus session bus
La aplicaciones ven un filtrado del bus
Userspace proxy
Kdbus
Permisos por defecto
Puede tener “com.ejemplo.hola-mundo” y I
“com.ejemplo.hola-mundo.*”
Puede hablar a “org.freedesktop.Dbus”
Puede responder a cualquiere mensaje de este
No puede ver otros nombres
Extensible en app/runtime metadata
Opcinalmente, acceso a todo el bus
Webcams
- Pinos
- Similar a PulseAudio per para video
Configuración tipo
- Sin acceso al directorio home
- Sólo con permisos de escritura al directorio datos de la
aplicación
- Wayland
- Sólo con soporte de salida con PulseAudio
- Acceso filtrado al bus de sesión
- Quizás con acceso a la red
Portales
- Servicio ejecuándose en la sesión
- Se accede por dbus
- Diseñado para ser usado de forma segura desde el
sandbox
- Extiende los que una aplicación sandbox puede hacer
- Wayland, PulseAudio y Pinos son Portales
Org.freedesktop.portal.Docume
nt
- Parte de xdg-app
-Permite el acceso a los ficheros de usuario
- Documentos accesible vía fuse
/run/user/100/doc/a8fb23e3/mi_fichero.odp
Trabajo en progreso
Integración con GNOME Software (libxdgapp)
References
Alexander Larsson - Gnome SDK - a better way to ship apps.
https://www.youtube.com/watch?v=t-2a_XYJPEY
https://wiki.gnome.org/Projects/SandboxedApps
Agradecimientos:

Más contenido relacionado

La actualidad más candente (20)

Taller de Instalación, configuración y mantenimiento básico de gnu/linux
Taller de Instalación, configuración y mantenimiento básico de gnu/linuxTaller de Instalación, configuración y mantenimiento básico de gnu/linux
Taller de Instalación, configuración y mantenimiento básico de gnu/linux
 
Agilidad en shell de linux
Agilidad en shell de linuxAgilidad en shell de linux
Agilidad en shell de linux
 
05.asterisk instalacion
05.asterisk instalacion05.asterisk instalacion
05.asterisk instalacion
 
Taller de Instalación y configuración de gnu/linux
Taller de Instalación y configuración de gnu/linuxTaller de Instalación y configuración de gnu/linux
Taller de Instalación y configuración de gnu/linux
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 
UBUNTU
UBUNTUUBUNTU
UBUNTU
 
Respaldos con Rsync
Respaldos con RsyncRespaldos con Rsync
Respaldos con Rsync
 
Instalacionoracle10 g
Instalacionoracle10 gInstalacionoracle10 g
Instalacionoracle10 g
 
Linux
LinuxLinux
Linux
 
Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.
 
S
SS
S
 
Cómo crear una distribución Linux
Cómo crear una distribución LinuxCómo crear una distribución Linux
Cómo crear una distribución Linux
 
Comandos de linux
Comandos de linuxComandos de linux
Comandos de linux
 
Instalanción enjaulada de instalción de Linux Debian 7.6
Instalanción enjaulada de instalción de Linux Debian 7.6Instalanción enjaulada de instalción de Linux Debian 7.6
Instalanción enjaulada de instalción de Linux Debian 7.6
 
tarea taller
tarea tallertarea taller
tarea taller
 
Comandos básicos GNU/Linux
Comandos básicos GNU/LinuxComandos básicos GNU/Linux
Comandos básicos GNU/Linux
 
Intro
IntroIntro
Intro
 
01 practicas de laboratorio
01 practicas de laboratorio01 practicas de laboratorio
01 practicas de laboratorio
 
Linux basico-7.PDF
Linux basico-7.PDFLinux basico-7.PDF
Linux basico-7.PDF
 
Nachos sistema operativo
Nachos sistema operativoNachos sistema operativo
Nachos sistema operativo
 

Destacado

Introducción a gsettings
Introducción a gsettingsIntroducción a gsettings
Introducción a gsettingsJuanjo Marin
 
Comprendiendo gnome
Comprendiendo gnomeComprendiendo gnome
Comprendiendo gnomeJuanjo Marin
 
GNOME Accessibility Team Report – GUADEC 2013
GNOME Accessibility Team Report – GUADEC 2013GNOME Accessibility Team Report – GUADEC 2013
GNOME Accessibility Team Report – GUADEC 2013Juanjo Marin
 
Learning Free Software Development from Real­World Experience
Learning Free Software Development from Real­World ExperienceLearning Free Software Development from Real­World Experience
Learning Free Software Development from Real­World ExperienceJuanjo Marin
 
Cómo colaborar en GNOME
Cómo colaborar en GNOMECómo colaborar en GNOME
Cómo colaborar en GNOMEJuanjo Marin
 
Las nuevas Guias para Interfaces Humanas de GNOME
Las nuevas Guias para Interfaces Humanas de GNOMELas nuevas Guias para Interfaces Humanas de GNOME
Las nuevas Guias para Interfaces Humanas de GNOMEJuanjo Marin
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldabaux singapore
 

Destacado (9)

Introducción a gsettings
Introducción a gsettingsIntroducción a gsettings
Introducción a gsettings
 
Comprendiendo gnome
Comprendiendo gnomeComprendiendo gnome
Comprendiendo gnome
 
GNOME Accessibility Team Report – GUADEC 2013
GNOME Accessibility Team Report – GUADEC 2013GNOME Accessibility Team Report – GUADEC 2013
GNOME Accessibility Team Report – GUADEC 2013
 
Evaluando GNOME
Evaluando GNOMEEvaluando GNOME
Evaluando GNOME
 
Learning Free Software Development from Real­World Experience
Learning Free Software Development from Real­World ExperienceLearning Free Software Development from Real­World Experience
Learning Free Software Development from Real­World Experience
 
Cómo colaborar en GNOME
Cómo colaborar en GNOMECómo colaborar en GNOME
Cómo colaborar en GNOME
 
Las nuevas Guias para Interfaces Humanas de GNOME
Las nuevas Guias para Interfaces Humanas de GNOMELas nuevas Guias para Interfaces Humanas de GNOME
Las nuevas Guias para Interfaces Humanas de GNOME
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
 
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job? Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
 

Similar a Distribucion_aplicaciones

97132962-instalacion-de-open meetings-en-squeeze
 97132962-instalacion-de-open meetings-en-squeeze 97132962-instalacion-de-open meetings-en-squeeze
97132962-instalacion-de-open meetings-en-squeezexavazquez
 
Open Solaris Multimedia
Open Solaris MultimediaOpen Solaris Multimedia
Open Solaris Multimediajuandanielp
 
Curso Basico Ponencia 1
Curso Basico Ponencia 1Curso Basico Ponencia 1
Curso Basico Ponencia 1Antonio Durán
 
Slackware asterisk
Slackware asteriskSlackware asterisk
Slackware asteriskpavel
 
Slackware asterisk
Slackware asteriskSlackware asterisk
Slackware asteriskpavel
 
Expo Adrenalinux
Expo AdrenalinuxExpo Adrenalinux
Expo Adrenalinuxoswchavez
 
Introduccion a Ansible
Introduccion a AnsibleIntroduccion a Ansible
Introduccion a AnsibleOsvaldo
 
Entornos de desarrollo portables, reproducibles y ligeros
Entornos de desarrollo portables, reproducibles y ligerosEntornos de desarrollo portables, reproducibles y ligeros
Entornos de desarrollo portables, reproducibles y ligerosbetabeers
 
PROGRAMAS DE APLICACIONES EN LINUX UNIDAD 4
PROGRAMAS DE APLICACIONES EN LINUX UNIDAD 4PROGRAMAS DE APLICACIONES EN LINUX UNIDAD 4
PROGRAMAS DE APLICACIONES EN LINUX UNIDAD 4taylerx
 
Trabajo windows xp
Trabajo windows xpTrabajo windows xp
Trabajo windows xpJaime_95
 

Similar a Distribucion_aplicaciones (20)

Memorias
MemoriasMemorias
Memorias
 
97132962-instalacion-de-open meetings-en-squeeze
 97132962-instalacion-de-open meetings-en-squeeze 97132962-instalacion-de-open meetings-en-squeeze
97132962-instalacion-de-open meetings-en-squeeze
 
Open Solaris Multimedia
Open Solaris MultimediaOpen Solaris Multimedia
Open Solaris Multimedia
 
Debian
DebianDebian
Debian
 
Archlinux
ArchlinuxArchlinux
Archlinux
 
Open Build Service
Open Build ServiceOpen Build Service
Open Build Service
 
Debian
DebianDebian
Debian
 
Curso Basico Ponencia 1
Curso Basico Ponencia 1Curso Basico Ponencia 1
Curso Basico Ponencia 1
 
Slackware asterisk
Slackware asteriskSlackware asterisk
Slackware asterisk
 
Slackware asterisk
Slackware asteriskSlackware asterisk
Slackware asterisk
 
Despues de instalar fedora 14
Despues de instalar fedora 14Despues de instalar fedora 14
Despues de instalar fedora 14
 
Expo Adrenalinux
Expo AdrenalinuxExpo Adrenalinux
Expo Adrenalinux
 
Docker 2014 v2
Docker 2014 v2Docker 2014 v2
Docker 2014 v2
 
Introduccion a Ansible
Introduccion a AnsibleIntroduccion a Ansible
Introduccion a Ansible
 
Debian
DebianDebian
Debian
 
FreeBSD Para Linuxeros
FreeBSD Para LinuxerosFreeBSD Para Linuxeros
FreeBSD Para Linuxeros
 
Entornos de desarrollo portables, reproducibles y ligeros
Entornos de desarrollo portables, reproducibles y ligerosEntornos de desarrollo portables, reproducibles y ligeros
Entornos de desarrollo portables, reproducibles y ligeros
 
Instalación Knoppix
Instalación KnoppixInstalación Knoppix
Instalación Knoppix
 
PROGRAMAS DE APLICACIONES EN LINUX UNIDAD 4
PROGRAMAS DE APLICACIONES EN LINUX UNIDAD 4PROGRAMAS DE APLICACIONES EN LINUX UNIDAD 4
PROGRAMAS DE APLICACIONES EN LINUX UNIDAD 4
 
Trabajo windows xp
Trabajo windows xpTrabajo windows xp
Trabajo windows xp
 

Distribucion_aplicaciones

  • 1. Distribución de Aplicaciones Juanjo Marín <jjmarin@gnome.org> GUADEC-ES, Tudela, 22 de enero de 2016
  • 2. ¿ Qué es una aplicación?
  • 3. ¿ Qué es un sistema operativo ?
  • 4. ¿ Es una distribución un sistema operativo ?
  • 5. La importancia de separar las aplicaciones del sistema operativo
  • 7. Primeras aproximaciones, Klik:Desarrollado por Simon Peter desde 2004 Ficheros .cmg con directorios de aplicaciones autocontenidos, comprimidos en un sistema de ficheros CramFS (< 272MB) o iso9660/zisofs Se hace uso de dispositivos de loopback (/dev/loopX) para montar los ficheros .cmg Para solucionar la relocalización de ficheros se parchea los binarios Se basa en Debian estable
  • 8. LinuxPortableApp, sucesor de KlikRefina la implementación de Klik (y Klik2). Data de 2010 Se usa FUSE (Filesystem in Userspace) en lugar de dispositivos de loopback Se incluye una aplicación AppImageKit para la creación de los bundles, inspirada en ideas de Glick http://portablelinuxapps.org/ ELF embbeded Is ISO9660 header ISO9660 zisofs compressed data containing AppRun .DirIcon SomeAppFile
  • 9. Pequeña demo de Klick y LinuxPortableApp
  • 10. Xdg-app Desarrollado por Alexander Larsson Objetivos principales: - Distribución de software para 3rd parties - Sandboxing
  • 11. Xdg-app Diferenciación entre: - Aplicaciones - Entornos de ejecución (Runtime)
  • 12. OSTree Los bundles se distribuyen mediante OSTrees Como git, pero para directorios de sistemas operativos Una aplicación es un directorio con ficheros que necesita
  • 13. Ejemplo de aplicación ├── metadata ├── files │ ├── bin/hola-mundo │ ├── etc/ejemplo/hola-mundo.conf │ ├── lib/lib_especifica.so.1 │ └── share/ejemplo/ejemplo.txt └── export ├── share/appdata/org.ejemplo.hola-mundo.appdata.xml ├── applications/org.ejemplo.hola-mundo.desktop └── icons/hicolor/48x48/org.ejemplo.hola-mundo.png [Application] name=org.gimp.GimpDevel runtime=org.gnome.Platform/x86_64/3.18 command=gimp-2.9
  • 14. Ejemplo de runtime ├── metadata └── files ├── bin ├── etc ├── lib └── lib64 [Runtime] name=org.gnome.Platform/x86_64/3.18 runtime=org.gnome.Platform/x86_64/3.18
  • 15. /var/xdg-app, ~/.local/share/xdg-app ├── repo ├── app │ └── org.gimp.GimpDevel │ ├── current -> x86_64/master │ └── x86_64 │ └── master │ ├── cbfe602f4d1c8d0c17e233ac648f44ec9c08cc48ab884a435c5207ae9c625e26 │ └── active -> cbfe602f4d1c8d0c17e233ac648f44ec9c08cc48ab884a435c5207ae9c625e26 ├── exports │ └── share │ ├── appdata │ ├── applications │ ├── dbus-1 │ │ └── services │ └── icons └── runtime └── org.gnome.Platform/x86_64/3.18 ├── active -> d570957f1fe8d436f570537f0a3a552fbd6d4891f59b3f9e48dcc36d26b9b640 └── d570957f1fe8d436f570537f0a3a552fbd6d4891f59b3f9e48dcc36d26b9b640
  • 16. Ejecución de una aplicación Se hace uso de filesystem namespaces Los ficheros del runtime se colocan en /usr Los ficheros de aplicación se colocan en /app Configuración y otros en ~/.var/app/org.examplo/hola-mundo
  • 17. Sandboxing Modelo tradicional unix: - Máquinas compartidas - Múltiples usuarios La seguridad se centra en: - Proteger unos usuarios de otros - Proteger a los administradores de los usuarios - Plena confianza en las fuentes de distribución software
  • 18. Sandboxing Modelo actual más común: - Un solo usuario - Un portátil - El usuario es también el administrador - Se quiere instalar desde varias fuentes de software La seguridad necesita: - Proteger a los usuarios de las aplicaciones - Ejecutar las aplicaciones con los menores privilegios posibles - Proteger unas aplicaciones de otras - Evitar el secuestro de tu máquina (botnet, nodo spam, bitcoin miner encubierto, etc)
  • 19. Elementos a proteger - No dar visbilidad a los ficheros de usuario - Evitar ataques de escala de privilegios - Acceder a la red - El acceso a otros procesos - Acceso a recursos de otros usuarios - Proteger de acceso a hardware - Vulnerabilidades del Kernel
  • 20. X11 - Se comunica por el socket /tmp/.X11-unix/X0 - Usado por la inmesa mayoria de los programas - Inseguro por diseño for i in $(xdotool search --onlyvisible --class terminal); do xdotool windowactivate --sync $i type $'echo evil was here!n'; done
  • 21. Wayland - Se comunica por el socket /run/user/1000/wayland-0t - Procolo diseñado para ser seguro - Es el futuro de los escritorio libres
  • 22. PulseAudio - Se comunica por el socket /run/user/1000/pulse/native - Reproduce y graba sonido - No es seguro, pero se está arreglando
  • 23. D-Bus session bus La aplicaciones ven un filtrado del bus Userspace proxy Kdbus Permisos por defecto Puede tener “com.ejemplo.hola-mundo” y I “com.ejemplo.hola-mundo.*” Puede hablar a “org.freedesktop.Dbus” Puede responder a cualquiere mensaje de este No puede ver otros nombres Extensible en app/runtime metadata Opcinalmente, acceso a todo el bus
  • 24. Webcams - Pinos - Similar a PulseAudio per para video
  • 25. Configuración tipo - Sin acceso al directorio home - Sólo con permisos de escritura al directorio datos de la aplicación - Wayland - Sólo con soporte de salida con PulseAudio - Acceso filtrado al bus de sesión - Quizás con acceso a la red
  • 26. Portales - Servicio ejecuándose en la sesión - Se accede por dbus - Diseñado para ser usado de forma segura desde el sandbox - Extiende los que una aplicación sandbox puede hacer - Wayland, PulseAudio y Pinos son Portales
  • 27. Org.freedesktop.portal.Docume nt - Parte de xdg-app -Permite el acceso a los ficheros de usuario - Documentos accesible vía fuse /run/user/100/doc/a8fb23e3/mi_fichero.odp
  • 28. Trabajo en progreso Integración con GNOME Software (libxdgapp)
  • 29. References Alexander Larsson - Gnome SDK - a better way to ship apps. https://www.youtube.com/watch?v=t-2a_XYJPEY https://wiki.gnome.org/Projects/SandboxedApps

Notas del editor

  1. En concreto nos estamos refiriendo a aplicaciones de escritorio, no web apps Y una aplicación es un programa que permite al usuario realizar una tarea Es una definición muy genérica, quizás lo mejor es realizar opuesta
  2. El sistema operativo no es una aplicación Una definición más exacta podría ser que un sistema operativo es el mínimo siftware necesario para tener una abstracción del hardware