Leichtes Desktop-Betriebssystem für Privatsphäre, das auf Privatsphäre ausgelöst wird, basierend auf Devuan und LXC. Ein Projekt zur Selbstbildung und ein weiterer Versuch, eine Alternative zu Qubes OS zu machen. Dies ist noch keine Distribution und wird es wahrscheinlich nie tun. Dies ist eine Reihe von Dateien und Patches, ein einfaches makecex -Skript und eine Anweisung à la lfs.
In Arbeit arbeiten.
Im Moment spiegelt dieses System meine Erfahrung wider und ist voller persönlicher Vorlieben. Einige von ihnen sind ziemlich unbegründet. Ich schwöre, ich werde sie loswerden, sobald die Anzahl der Benutzer über 1,5 hinausgeht. Aber im Allgemeinen ist die Begründung wie folgt:
Ein bootfähiges Medium mit Live -System kann mit Makecex erzeugt werden. Sie benötigen eine PPA, die mit Vorbereitung und Erstellen von Skripten erstellt werden kann.
Für AMD64 wird vorerst nur der Legacy -Boot -Modus unterstützt.
Das Skript enthält am Anfang Parameter und überarbeitet sie vor dem Ausführen sorgfältig. Sie können modifizierte Parameter an makecex.conf schreiben, anstatt Änderungen am Skript vorzunehmen.
Entwürfe/Sandbox -Abschnitt.
Da LXCEX zu IDMapping Mounts wechselte, wurden die Dateiberechtigungen wichtiger. Mit uidmapshift waren alle Containerdaten von unrivilegiertem Benutzer auf dem Basissystem nicht zugänglich. Dies ist bei IDMADD -Halterungen nicht mehr der Fall, da nicht privilegierte Benutzer über das Basissystem und die Container gemeinsame IDs haben.
Stellen Sie sicher, dass alle Unterverzeichnisse in /var/lib/lxc minimale Berechtigungen haben und zumindest nicht nach other lesbar sind. Gleiches gilt für die an anderer Stelle gespeicherten Containerdaten.
Damit die IDMapping -Reittiere arbeiten können, müssen die minimalen Berechtigungen Verzeichnistraversal für andere enthalten. Dies könnte mit setfacl bearbeitet werden, aber diese Komplikation übergewichtet die Bequemlichkeit.
Wenn all das oben genannte Sicherheitsbedenken ist, verwenden Sie keine IDMADD -Halterungen.
/dev/ptmx nach einer Weile.sh , wenn Weston von Runit gestartet wird, wobei die Elternschale sh ist.lxcex loswerden, um dies anzupassen?uidmapshift vorerst behalten. Als Ersatz für ls -l /var/lib/lxc , das IDs von uidmapshift ED, Container, zeigte, gibt es jetzt ein lxcex-idmap -Skript, das untergeordnete Benutzer -IDs für jeden Container anzeigt, der IDMAP verwendet.Okay, hier eine Linie fallen zu lassen. Ich scheine immer noch ein einzelner Benutzer dieser Scheiße zu sein und, wie meine afrikanischen Freunde sagen: "Daz Good!"
Viele Features gesucht. Nummer eins ist, Runit loszuwerden. Nummer zwei ist UI -Utils. Alle anderen Wünsche sind nur ein wenig Dinge.
So weit, ist es gut. Neues Kapitel 8 ist aus.
Drei Monate seit Beginn, und jetzt kann ich sagen, Linuxmint. LXCEX ist ab sofort auf allen Laptops.
Hauptaktualisierungen:
Ein weiterer Meilenstein: Makecex ist raus! Dieses Skript generiert bootbare Medien. Nicht übermäßig getestet, es funktioniert nur für mich.
Pakete Repo ist raus. Im Moment gibt es das einzige Paket, das dort uidmapShift ist. Planen Sie, eine Patched -Version von Libpulse hinzuzufügen und so den Fixierer für die Dateiberechtigung zu entfernen.
Obwohl der Tod durch Lachen nicht mein ultimatives Ziel ist, musste ich mir anonymisch einen Unterzeichnungsschlüssel hinzufügen.
Automatisierung ist unterwegs. Begonnen, nachdem ich es geschafft hatte, das System einfach durch das Ausbau/var/lib/lxc mit laufenden Containern zu stürzen. Ich wusste nicht, dass es so gefährlich ist. Diese Aktion zerstörte alle berittenen Partitionen, einschließlich des Backup -USB -Sticks, der nichts damit zu tun hatte. Warum???
Es spielt Musik! Die erste Version von Kapitel 6 ist veröffentlicht, um aktualisiert zu werden.
XFCE Desktop -Umgebung funktioniert!
Tag: 0.0.2
Erstes Commit and Release.
Möglicherweise fragen Sie sich, wie Sie apt upgrade für ein Dutzend Container einschließlich des Basissystems ausstellen können. Dafür ist das Dist-Upgrade-Skript gedacht. Es basiert auf LXCEX-CHROOT, das den Befehl am Arbitraty ausführt und ordnungsgemäß an den Rootfs des Containers kreist.
Sie haben ein Repository verehrt, daher lohnt es sich, ihren Anweisungen zu befolgen
Zum Zeitpunkt des Schreibens verwendet Firefox (Version 123) Wayland standardmäßig. Wenn Sie sich erinnern, wird Wayland_display in /home/user/.config/sv/xfce4/run zurückgesetzt, und dies macht Firefox dazu, infinite Schleife zu betreten und sagen
Warning: ConnectToCompositor() try again : Connection refused
Es gibt zwei Optionen:
Ich habe beide versucht. Zunächst habe ich Letzteres mit einem Skript ausgewählt:
#!/bin/sh
if [ -n "$X_WAYLAND_DISPLAY" ] ; then
export WAYLAND_DISPLAY=$X_WAYLAND_DISPLAY
else
# fallback
export WAYLAND_DISPLAY=wayland-1
fi
firefox
Dies macht die Kopienpaste jedoch problematisch, sodass ich vorerst in den X-Modus zurückgekehrt bin.
Meine ersten Setups waren seltsam und zerbrechlich, einfach aufgrund des Mangels an Verständnis der gemeinsamen Teilbäume.
Hier ist die Lösung:
Machen Sie etwas Mountspunkt rekursiv geteilt. Sie können kein willkürliches Verzeichnis im Dateisystem Rshared (das war mein Missverständnis) erstellen, es sollte ein tatsächlicher Mountspunkt sein, dh ein Verzeichnis, in dem ein Dateisystem montiert ist.
Ich möchte /mnt/autofs für autofs verwenden.
mkdir -p /mnt/autofs
mount -t tmpfs -o size=64K --make-rshared tmpfs /mnt/autofs
mkdir /mnt/autofs/myserver
Erstellen Sie die AutoFS -Konfiguration:
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
und autofs neu starten.
Fügen Sie der Konfiguration des Containers die folgende Zeile hinzu:
lxc.mount.entry = /mnt/autofs mnt/autofs none create=dir,rbind 0 0
Starten Sie den Behälter. Im Inneren sollten ls /mnt/myserver/shared-dir wie erwartet funktionieren.
Benutzer: Gruppe ist jedoch niemand: NoGroup und ich habe keine Ahnung, wie man die korrekte ID -Zuordnung einstellt.
menulibre sieht irgendwie auf Bloatware aus und ist derzeit in Excalibur völlig kaputt. Es ist jedoch ziemlich einfach, Menüs manuell zu bearbeiten:
.config/menus/xfce-applications.menu aufgeführt.local/share/applicationsBehälter sind großartig, um Arbeitsbereiche zu isolieren, als würden sie auf separaten Maschinen laufen. Dies vereinfacht solche Dinge wie Netzwerke erheblich, die zu fehleranfällig oder unmöglich sind, innerhalb eines einzelnen Systems zu warten.
Auf Containerebene ist jedoch alles immer noch gleich: ein einzelnes Home -Verzeichnis, in dem alle Anwendungen vollen Zugriff auf die Daten des Benutzers haben.
Das ist gefährlich. Potenziell kann jedes Programm, das das Netzwerk verwendet, Ihre sensiblen Daten auch unintonziiert.
Grundsätzlich sollten alle Programme, die mit Ihren Daten arbeiten, in einem Container mit behinderten Netzwerken ausgeführt werden, und wahrscheinlich werde ich eine solche Anordnung treffen.
Aber im Moment habe ich ein paar Legacy -XFCE -Umgebungen, die jeweils in einem eigenen Behälter laufen. Eine temporäre Lösung, die ich in diesen Containern bereitgestellt habe, ist ein eingeschränkter Netzwerkzugriff für den Hauptbenutzer und das Ausführen aller Netzwerksoftware als verschiedene Benutzer. Diese Software umfasst Firefox-, Chrom-, Mullvad- und Tor -Browser sowie Thunderbird. Natürlich unterstützen einige Wayland bereits, aber LXCEX hat immer noch Probleme mit Kopienpasteln und es ist ein Blockierungsfaktor, um sie nativ zu leiten.
Hier ist das Setup am Beispiel von Firefox, das als Kesselplatte für andere Programme verwendet werden kann.
Erstellen Sie zunächst einen separaten Benutzer:
useradd -g users --skel /etc/skel --shell /bin/bash --create-home firefox
Dann verschieben Sie Verzeichnisse:
mkdir /home/firefox/.cache
mv /home/user/.mozilla /home/firefox/
mv /home/user/.cache/firefox /home/firefox/.cache/
chown -R firefox /home/firefox
Erstellen Sie als Nächstes ein Skript /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
Tatsächlich ist hier keine DISPLAY erforderlich, aber dieses Skript kann als Boilerplate verwendet werden, um andere Apps auszuführen, sodass ich es absichtlich verlassen habe.
Schließlich erstellen /etc/sudoers.d/50-start-firefox (leider ist sudo erforderlich):
user ALL = NOPASSWD: /usr/local/bin/start-firefox dosu
Möglicherweise müssen Sie den Menüeintrag des XFCE -Starts ändern. Und um die Option -P -Option zum ersten Mal hinzuzufügen, kann Firefox mit einem leeren Profil beginnen.
Es ist eine gute Idee, Downloads -Verzeichnis zu teilen. Früherer Ansatz war ein gruppengeschriebenes Verzeichnis mit Symlinks, aber der beste Weg ist lxces-share .
Lassen Sie Downloads Direcroty wie früher im Home -Verzeichnis des user sein. Erstellen Sie dann den folgenden sharetab für den Container:
/var/lib/lxc/<container-name>/rootfs/home/user/Downloads firefox /home/firefox/Downloads
Und verwenden Sie Haken in der Containerkonfiguration, wie in Kapitel 8 gezeigt:
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
Entdeckte diesen Artikel, als er Kapitel 6: https://discuss.linuxcontainers.org/audio-via-pulaudio-inside-container/8768 verwenden. Können wir sie verwenden, um die Behälterstecke zu behalten und wieder mit dem Host -Socket zu verbinden, wenn der Basiskompositor neu gestartet wird? Oder wenn ein Behälter vom Winterschlaf wieder aufnimmt?
Wieder,
Ich habe nicht verstanden, warum ich musste
mount --make-shared /run dh /run , nicht /run/user , wenn ich mount --rbind /run/user "${LXC_ROOTFS_MOUNT}/run/host/run/user" in Containern und wollte, dass alle UID -Untermunte sich vermehren.
Nach dem Neu gelesen, dass es ein paar Mal klar sein sollte, sollte es irgendwann klar sein.
smartd ist das zuverlässigste Tool, um HDD Spindowns bisher zu deaktivieren:
/etc/default/smartmontools : smartd_opts="--interval=10 --attributelog=- --savestate=-"
--interval , andere deaktivieren den Speicherzustand, den ich nie brauchte.-n never in etc/smartd.conf ist, dh: DEVICESCAN -d removable -n never -m root -M exec /usr/share/smartmontools/smartd-runner
Meine zusätzlichen Pakete, nur für die Aufzeichnung.
gnome-font-viewer , sieht unnötig ausgthumbbreeze-icon-theme verwendet.systemsettings : Nur für den Fall, dass Null Gewinn bisher.libnss3 , libasound2