Sistema operativo de escritorio centrado en la privacidad liviano basado en Devuan y LXC. Un proyecto para la autoeducación, y otro intento de hacer una alternativa al sistema operativo Qubes. Esta no es una distribución todavía y probablemente nunca lo hará. Este es un conjunto de archivos y parches, un simple script makecex y una instrucción a la lfs.
Trabajo en progreso.
Por el momento, este sistema refleja mi experiencia y está lleno de preferencias personales. Algunos de ellos son bastante infundados. Juro que me deshacaré de ellos tan pronto como el número de usuarios vaya más allá de 1.5. Pero en general, la justificación es la siguiente:
Se puede generar un medio de arranque con sistema en vivo con MakeCex. Necesitará un PPA que se pueda crear con scripts de preparación y construcción.
Solo el modo de arranque heredado es compatible con AMD64 por ahora.
El script contiene parámetros al principio, reviselos cuidadosamente antes de ejecutar. Puede escribir parámetros modificados para makecex.conf en lugar de hacer cambios en el script.
Borradores/sección de sandbox.
Desde que LXCEX se mudó a las monturas de ID de identificación, los permisos de archivos se volvieron más importantes. Con uidmapshift todos los datos del contenedor eran inaccesibles del usuario no privilegiado en el sistema base. Ese ya no es el caso con las monturas de ID de identificación porque los usuarios no privilegiados en todo el sistema base y los contenedores tienen identificaciones comunes.
Asegúrese de que todos los subdirectorios en /var/lib/lxc tengan permisos mínimos y no sean legibles por other al menos. Lo mismo se aplica a los datos del contenedor almacenados en otro lugar.
Sin embargo, para que las monturas de identificación funcionen, los permisos mínimos deben incluir el recorrido de directorio para otros. Esto podría trabajarse utilizando setfacl , pero esa compleja sobrepeso la conveniencia.
Si todo lo anterior es una preocupación de seguridad, no use monturas muidos de identificación.
/dev/ptmx después de un tiempo.sh si Weston es iniciado por Runit, donde el shell principal es sh .lxcex codificado, deje que el usuario personalice eso?uidmapshift por ahora. Como reemplazo de ls -l /var/lib/lxc que mostró ID de uidmapshift ed, Contenedores, hay un script lxcex-idmap ahora que muestra ID de usuario subordinadas para cada contenedor que usa IDMAP.Está bien, dejando caer una línea aquí. Todavía parece ser un solo usuario de toda esta mierda y, como dicen mis amigos africanos, "¡Daz bueno!"
Se buscan muchas características. El número uno es deshacerse de Runit. El número dos es UI Utils. Todos los demás deseos son solo unas pequeñas cosas.
Hasta ahora, todo bien. El nuevo capítulo 8 está fuera.
Tres meses desde el inicio, y ahora puedo decir despedida, LinuxMint. LXCEX está en todas mis computadoras portátiles a partir de ahora.
Actualizaciones principales:
Otro hito más: Makecex está fuera! Este script genera medios de arranque. No es excesivamente probado, solo funciona para mí.
El repositorio de los paquetes está fuera. Por ahora el único paquete hay uidmapshift. Planeando agregar la versión parcheada de Libpulse, lo que elimina el arreglo de permiso del archivo.
Aunque la muerte de la risa no es mi objetivo final, tuve que agregar una clave de firma para mí, anónimo.
La automatización está en camino. Comencé después de que logré bloquear el sistema simplemente volviendo a montar/var/lib/lxc con contenedores en ejecución. No me di cuenta de que es tan peligroso. Esta acción destruyó todas las particiones montadas, incluida la palanca USB de respaldo que no tenía nada que ver con eso. ¿¿¿Por qué???
¡Toca música! La versión inicial del Capítulo 6 está fuera, para actualizarse.
¡El entorno de escritorio XFCE está funcionando!
Etiqueta: 0.0.2
Confirmación y liberación inicial.
Es posible que se pregunte cómo emitir apt upgrade para una docena de contenedores, incluido el sistema base. Para eso es el script degradado de disco. Se basa en LXCEX-Chroot, que ejecuta el comando de árbitro, correctamente cambiando a los raíces del contenedor.
Elaboraron el repositorio apt, por lo que vale la pena seguir sus instrucciones
Al momento de escribir, Firefox (versión 123) usa Wayland de forma predeterminada. Si recuerda, wayland_display se restablece en /home/user/.config/sv/xfce4/run y esto hace que Firefox ingrese a Infinite Loop que dice
Warning: ConnectToCompositor() try again : Connection refused
Hay dos opciones:
Intenté ambos. Inicialmente elegí este último, usando un script:
#!/bin/sh
if [ -n "$X_WAYLAND_DISPLAY" ] ; then
export WAYLAND_DISPLAY=$X_WAYLAND_DISPLAY
else
# fallback
export WAYLAND_DISPLAY=wayland-1
fi
firefox
Sin embargo, esto hace que Copy-Paste sea problemático, así que volví al modo X por ahora.
Mis configuraciones iniciales fueron raras y frágiles simplemente por la falta de comprensión de los subárboles compartidos.
Aquí está la solución:
Haga que un punto de montaje sea compartido recursivamente. No puede hacer un directorio arbitrario en el sistema de archivos rshared (ese fue mi punto de malentendido), debería ser un punto de montaje real, es decir, un directorio donde se monta algún sistema de archivos.
Quiero usar /mnt/autofs para autofs, así que montemos un TMPFS allí y rshare:
mkdir -p /mnt/autofs
mount -t tmpfs -o size=64K --make-rshared tmpfs /mnt/autofs
mkdir /mnt/autofs/myserver
Crear configuración de autofs:
mkdir /etc/auto.maps
echo "/mnt/autofs/myserver /etc/auto.maps/myserver" >/etc/auto.master.d/myserver.autofs
echo "shared-dir myserver.example.com:/var/share/top-secret" >/etc/auto.maps/myserver
y reiniciar autofs.
Agregue la siguiente línea a la configuración del contenedor:
lxc.mount.entry = /mnt/autofs mnt/autofs none create=dir,rbind 0 0
Comience el contenedor. En el interior, ls /mnt/myserver/shared-dir debería funcionar como se esperaba.
Sin embargo, el usuario: el grupo no será nadie: NoGroup y no tenemos idea de cómo configurar la asignación de identificación correcta.
menulibre se ve un poco bloatware y actualmente está totalmente roto en Excalibur. Sin embargo, es bastante fácil editar menús manualmente:
.config/menus/xfce-applications.menu.local/share/applicationsLos contenedores son excelentes para aislar espacios de trabajo como si estuvieran funcionando en máquinas separadas. Esto simplifica en gran medida cosas como redes que son demasiado propensas a errores o imposibles de mantener dentro de un solo sistema.
Pero a nivel de contenedor, todo sigue siendo el mismo: directorio de inicio único donde todas las aplicaciones tienen acceso completo a los datos del usuario.
Esto es peligroso. Potencialmente, cada programa que usa la red puede filtrar sus datos confidenciales, incluso de manera inintecial.
Básicamente, todos los programas que funcionan con sus datos deben ejecutarse en un contenedor con redes para discapacitados, y probablemente terminaré con tal disposición.
Pero por ahora tengo algunos entornos XFCE heredados, cada uno que se ejecuta en su propio contenedor. Una solución temporal que implementé dentro de esos contenedores es el acceso a la red restringido para el usuario principal y ejecutar todo el software de red como usuarios diferentes. Este software incluye los navegadores Firefox, Chromium, Mullvad y Tor, además de Thunderbird. Por supuesto, algunos ya apoyan a Wayland, pero LXCEX todavía tiene problemas de copia y es un factor de bloqueo para ejecutarlos de forma nativa.
Aquí está la configuración, en el ejemplo de Firefox, que puede usarse como una placa para otros programas.
Primero, cree un usuario separado:
useradd -g users --skel /etc/skel --shell /bin/bash --create-home firefox
Entonces, mueva directorios:
mkdir /home/firefox/.cache
mv /home/user/.mozilla /home/firefox/
mv /home/user/.cache/firefox /home/firefox/.cache/
chown -R firefox /home/firefox
A continuación, prepare un script /usr/local/bin/start-firefox :
#!/bin/sh
USER=firefox
if [ -z "$1" ] ; then
xhost +SI:localuser:$USER
exec sudo $0 dosu
elif [ "$1" = "dosu" ] ; then
exec su -l -c "$0 run" $USER
elif [ "$1" = "run" ] ; then
cd /home/$USER
. /usr/local/share/lxcex-xdg.sh
export DISPAY=:0.0
exec firefox --display=:0.0
fi
En realidad, la variable de entorno DISPLAY no es necesaria aquí, pero este script se puede usar como una palerplate para ejecutar otras aplicaciones, por lo que lo dejé intencionalmente.
Finalmente, crea /etc/sudoers.d/50-start-firefox (por desgracia, se requiere sudo):
user ALL = NOPASSWD: /usr/local/bin/start-firefox dosu
Es posible que deba modificar la entrada del menú de inicio XFCE. Y para agregar la opción -p por primera vez, de lo contrario, Firefox puede comenzar con un perfil en blanco.
Es una buena idea compartir el directorio Downloads . El enfoque anterior era un directorio que escribía grupos con enlaces simbólicos, pero la mejor manera es lxces-share .
Deje que Downloads directy estén en el directorio de inicio del user , como solía hacerlo. Luego, cree el siguiente sharetab para el contenedor:
/var/lib/lxc/<container-name>/rootfs/home/user/Downloads firefox /home/firefox/Downloads
Y use ganchos en la configuración del contenedor, como se muestra en el Capítulo 8:
lxc.hook.pre-start = /usr/local/bin/lxcex-share
lxc.hook.mount = /usr/local/bin/lxcex-share
lxc.hook.start = /usr/local/bin/lxcex-share
lxc.hook.post-stop = /usr/local/bin/lxcex-share
Descubrí este artículo cuando se escribió Capítulo 6: https://discuss.linuxcontainers.org/t/audio-via-pulseaudio-inside-container/8768 usan LXD y vale la pena echar un vistazo a las proyectivas de socket de implementación. ¿Podemos usarlos para retener el enchufe del contenedor y volver a conectarlo al enchufe del host cuando se reinicie el compositor base? ¿O cuando un contenedor se reanuda de la hibernación?
De nuevo,
No entendí por qué tuve que
mount --make-shared /run es decir /run , no /run/user si mount --rbind /run/user "${LXC_ROOTFS_MOUNT}/run/host/run/user" en contenedores y quería que todos los submunts UID se propagen.
Después de volver a leer que varias veces debería ser clara, eventualmente.
smartd es la herramienta más confiable para deshabilitar HDD Spindowns hasta ahora:
/etc/default/smartmontools : smartd_opts="--interval=10 --attributelog=- --savestate=-"
--interval , otros deshabilitan el estado de ahorro que nunca necesitaba.-n never esté en etc/smartd.conf , es decir: DEVICESCAN -d removable -n never -m root -M exec /usr/share/smartmontools/smartd-runner
Mis paquetes adicionales, solo para el registro.
gnome-font-viewer , se ve innecesariogthumbbreeze-icon-theme .systemsettings : Instalado por si acaso, cero ganancias hasta ahora.libnss3 , libasound2