Sistema operacional de desktop focado na privacidade leve com base em Devuan e LXC. Um projeto de auto-educação e mais uma tentativa de fazer uma alternativa ao Qubes OS. Ainda não é uma distro e provavelmente nunca o fará. Este é um conjunto de arquivos e patches, um script makecex simples e uma instrução à la LFS.
Trabalho em andamento.
No momento, esse sistema reflete minha experiência e está cheio de preferências pessoais. Alguns deles são bastante infundados. Juro que vou me livrar deles assim que o número de usuários irá além de 1,5. Mas, em geral, a lógica é a seguinte:
Uma mídia inicializável com sistema ao vivo pode ser gerado com MakEcex. Você precisará de um PPA que possa ser criado com scripts de preparação e construção.
Somente o modo de inicialização legado é suportado para AMD64 por enquanto.
O script contém parâmetros no início, revise -os cuidadosamente antes de executar. Você pode escrever parâmetros modificados para makecex.conf em vez de fazer alterações no script.
Rascunhos/seção de sandbox.
Desde que o LXCEX mudou para as montagens idmap, as permissões de arquivos se tornaram mais importantes. Com uidmapshift todos os dados de contêiner eram inacessíveis a partir do usuário não privilegiado no sistema base. Esse não é mais o caso com suportes idmap, porque os usuários não privilegiados em todo o sistema e contêineres têm IDs comuns.
Verifique se todas as subdiretas em /var/lib/lxc têm permissões mínimas e não são legíveis por other . O mesmo se aplica aos dados do contêiner armazenados em outros lugares.
No entanto, para que as montagens IDMapped funcionem, as permissões mínimas devem incluir a travessia do diretório para outros. Isso pode ser trabalhado usando setfacl , mas essa comlicação sobrepende a conveniência.
Se tudo acima é uma preocupação de segurança, não use suportes idmap.
/dev/ptmx depois de um tempo.sh se o Weston for iniciado pelo Runit, onde o shell pai é sh .lxcex codificado, deixe o usuário personalizar isso?uidmapshift por enquanto. Como um substituto para ls -l /var/lib/lxc que mostrou IDs de uidmapshift ED, RECIMENTOS, há um script lxcex-idmap agora que mostra IDs de usuário subordinados para cada contêiner que usa o IDMAP.Ok, deixando cair uma linha aqui. Eu ainda pareço ser um único usuário de toda essa merda e, como dizem meus amigos africanos: "Daz bom!"
Muitos recursos desejados. O número um é se livrar do Runit. O número dois são os utilitários da interface do usuário. Todos os outros desejos são apenas um pouco de coisas.
Até agora tudo bem. Novo capítulo 8 está fora.
Três meses desde o início, e agora posso me despedir, Linuxmint. O LXCEX está em todos os meus laptops a partir de agora.
Principais atualizações:
Mais um marco: Makecex está fora! Este script gera mídia inicializável. Não testado excessivamente, ele funciona apenas para mim.
Pacotes repo está fora. Por enquanto, o único pacote lá é o UIDMAPSHIFT. Planejando adicionar a versão corrigida do libpulse, livrando -se do fixador de permissão do arquivo.
Embora a morte de Laugh não seja meu objetivo final, tive que acrescentar a chave de assinatura para mim, anônimo.
A automação está a caminho. Começou depois que eu consegui travar o sistema simplesmente remando/var/lib/lxc com contêineres em execução. Não percebeu que é tão perigoso. Essa ação destruiu todas as partições montadas, incluindo backup USB Stick, que não tinham nada a ver com isso. Por que???
Ele toca música! A versão inicial do capítulo 6 está fora, a ser atualizada.
O XFCE Desktop Environment está funcionando!
Tag: 0.0.2
Comprometimento e liberação inicial.
Você pode se perguntar como emitir apt upgrade para uma dúzia de contêineres, incluindo o sistema base. É para isso que serve o script de upgrade distante. É baseado no LXCEX-CROOT, que executa o comando arbitratia, correndo corretamente o rootfs do contêiner.
Eles lançaram o repositório apt, então vale a pena seguir suas instruções
No momento da redação deste artigo, o Firefox (versão 123) usa Wayland por padrão. Se você se lembra, Wayland_Display é redefinido em /home/user/.config/sv/xfce4/run e isso faz o Firefox entrar no Infinite Loop dizendo
Warning: ConnectToCompositor() try again : Connection refused
Existem duas opções:
Eu tentei os dois. Inicialmente, escolhi o último, usando um script:
#!/bin/sh
if [ -n "$X_WAYLAND_DISPLAY" ] ; then
export WAYLAND_DISPLAY=$X_WAYLAND_DISPLAY
else
# fallback
export WAYLAND_DISPLAY=wayland-1
fi
firefox
No entanto, isso torna o copiar a cola de cópia, então eu voltei ao modo X por enquanto.
Minhas configurações iniciais eram estranhas e frágeis simplesmente por falta de entendimento das subárvores compartilhadas.
Aqui está a solução:
Faça algum ponto de montagem compartilhado recursivamente. Você não pode fazer um diretório arbitrário no sistema de arquivos RSHARED (esse era o meu ponto de entendimento mal), ele deve ser um ponto de montagem real, ou seja, um diretório em que algum sistema de arquivos é montado.
Eu quero usar /mnt/autofs para autofs, então vamos montar um tmpfs lá e rshare It:
mkdir -p /mnt/autofs
mount -t tmpfs -o size=64K --make-rshared tmpfs /mnt/autofs
mkdir /mnt/autofs/myserver
Crie configuração do 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
e reinicie a Autofs.
Adicione a seguinte linha à configuração do contêiner:
lxc.mount.entry = /mnt/autofs mnt/autofs none create=dir,rbind 0 0
Inicie o contêiner. No interior, ls /mnt/myserver/shared-dir deve funcionar conforme o esperado.
No entanto, Usuário: Grupo não será ninguém: Nogroup e não tenho idéia de como configurar o mapeamento de ID correto.
menulibre parece meio bloatware e atualmente está totalmente quebrado em Excalibur. No entanto, é muito fácil editar os menus manualmente:
.config/menus/xfce-applications.menu.local/share/applicationsOs contêineres são ótimos para isolar os espaços de trabalho como se estivessem funcionando em máquinas separadas. Isso simplifica muito as coisas como a rede que são propensas a erros ou impossíveis de manter em um único sistema.
Mas no nível do contêiner, tudo ainda é o mesmo: diretório doméstico único, onde todos os aplicativos têm acesso total aos dados do usuário.
Isso é perigoso. Potencialmente, todos os programas que usam rede podem vazar seus dados confidenciais, mesmo com internentemente.
Basicamente, todos os programas que funcionam com seus dados devem ser executados em um contêiner com redes desativadas, e provavelmente acabarei com esse acordo.
Mas, por enquanto, tenho alguns ambientes XFCE herdados, cada um em seu próprio contêiner. Uma solução temporária que implantei nesses contêineres é o acesso à rede restrito para o usuário principal e executando todo o software de rede como usuários diferentes. Este software inclui navegadores Firefox, Chromium, Mullvad e Tor, além de Thunderbird. Obviamente, alguns já apoiam Wayland, mas o LXCEX ainda tem problemas de cópia e é um fator de bloqueio para executá-los nativamente.
Aqui está a configuração, no exemplo do Firefox, que pode ser usado como um caldeira para outros programas.
Primeiro, crie um usuário separado:
useradd -g users --skel /etc/skel --shell /bin/bash --create-home firefox
Em seguida, mova os diretórios:
mkdir /home/firefox/.cache
mv /home/user/.mozilla /home/firefox/
mv /home/user/.cache/firefox /home/firefox/.cache/
chown -R firefox /home/firefox
Em seguida, prepare um 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
Na verdade, a variável de ambiente DISPLAY não é necessária aqui, mas esse script pode ser usado como um caldeira para executar outros aplicativos, então eu o deixei intencionalmente.
Finalmente, Create /etc/sudoers.d/50-start-firefox (infelizmente, sudo é necessário):
user ALL = NOPASSWD: /usr/local/bin/start-firefox dosu
Pode ser necessário modificar a entrada do menu do XFCE Iniciar. E para adicionar -p a opção pela primeira vez, caso contrário, o Firefox pode começar com um perfil em branco.
É uma boa ideia compartilhar o diretório Downloads . A abordagem anterior era um diretório criável em grupo com síntulos, mas a melhor maneira é lxces-share .
Deixe Downloads diretórios domésticos do user , como costumava. Em seguida, crie o seguinte sharetab para o contêiner:
/var/lib/lxc/<container-name>/rootfs/home/user/Downloads firefox /home/firefox/Downloads
E use ganchos na configuração de contêiner, conforme mostrado no 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
Descobriu este artigo quando escreveu o Capítulo 6: https://discuss.linuxcontainers.org/t/audio-via-pulseaudio-inside-container/8768 Eles usam LXD e vale a pena dar uma olhada nos proxies da implementação do Socket Socket. Podemos usá -los para reter o soquete do contêiner e nos reconectar ao soquete do host quando o compositor base for reiniciado? Ou quando um recipiente retoma da hibernação?
De novo,
Eu não entendi porque eu tinha que
mount --make-shared /run IE /run , NÃO /run/user Se eu mount --rbind /run/user "${LXC_ROOTFS_MOUNT}/run/host/run/user" em contêineres e queria que todos os submarinos UID se propagassem.
Depois de reler que algumas vezes deve ficar claro, eventualmente.
smartd é a ferramenta mais confiável para desativar os Spindowns de HDD até agora:
/etc/default/smartmontools : smartd_opts="--interval=10 --attributelog=- --savestate=-"
--interval , outros desativam o estado de salvamento que eu nunca precisava.-n de que a opção never esteja em etc/smartd.conf , ou seja: DEVICESCAN -d removable -n never -m root -M exec /usr/share/smartmontools/smartd-runner
Meus pacotes extras, apenas para constar.
gnome-font-viewer , parece desnecessáriogthumbbreeze-icon-theme .systemsettings : instalado apenas por preço, lucro zero até agora.libnss3 , libasound2