基於Devuan和LXC的輕巧以隱私為重點的桌面操作系統。一個自我教育的項目,也是為Qubes OS替代的另一次嘗試。這還不是一個發行版,也許永遠不會。這是一組文件和補丁程序,簡單的makecex腳本和一個指令。
正在進行中。
目前,該系統反映了我的經驗,並且充滿了個人喜好。其中一些是毫無根據的。我發誓,一旦用戶數量超過1.5,我就會盡快擺脫它們。但總的來說,基本原理如下:
可以使用MakeCex生成具有實時系統的可引導媒體。您需要一個可以通過準備和構建腳本創建的PPA。
目前,AMD64僅支持舊版啟動模式。
該腳本在開始時包含參數,在運行之前仔細修改它們。您可以將修改後的參數寫入makecex.conf ,而不是對腳本進行更改。
草稿/沙盒部分。
由於LXCEX移至ID圖表的安裝座,因此文件權限變得越來越重要。使用uidmapshift所有容器數據都無法從基本系統上的無特點用戶訪問。 ID映射的安裝座不再是這種情況,因為跨基本系統的無特權用戶和容器具有通用ID。
確保/var/lib/lxc中的所有子目錄具有最小的權限,並且other不可讀取。同樣的是存儲在其他地方的容器數據。
但是,要使ID圖的坐騎起作用,最小的權限必須包括其他人的目錄遍歷。這可以使用setfacl來解決,但是舒適超重可以方便。
如果以上所有內容都是安全問題,請不要使用IDMAPPED安裝座。
/dev/ptmx 。sh ,如果韋斯頓是由runit啟動的,parent shell為sh 。lxcex ,讓用戶自定義嗎?uidmapshift 。作為替代ls -l /var/lib/lxc ,顯示了uidmapshift ED的ID,容器,現在有一個lxcex-idmap腳本顯示使用IDMAP的每個容器的下屬用戶ID。好吧,在這裡放一條線。我似乎仍然是所有這些狗屎的單身用戶,正如我的非洲朋友所說的那樣,“達茲好!”
想要很多功能。第一是擺脫跑跑。第二個是UI UTILS。其他所有的願望只是一點東西。
到目前為止,一切都很好。新章第8章已經淘汰。
自成立以來三個月,現在我可以說告別,linuxmint。從現在開始,我的所有筆記本電腦都在我的所有筆記本電腦上。
主要更新:
另一個里程碑:Makecex出了!該腳本生成可引導媒體。沒有過度測試,它只是對我有用。
包裝存儲庫不在。目前,那裡唯一的軟件包是uidmapshift。計劃添加libpulse修補版本,從而擺脫文件許可修復程序。
儘管笑而不是我的最終目標,但我不得不為我添加簽名鑰匙,匿名。
自動化正在進行中。在我設法通過使用運行容器重新安裝/var/lib/lxc崩潰後開始,開始了系統。沒有意識到這是如此危險。該動作摧毀了所有已安裝的分區,包括備用USB棒,這與此無關。為什麼? ? ?
它播放音樂!第6章的初始版本已發布,將要更新。
XFCE桌面環境正在工作!
標籤:0.0.2
初始提交和發布。
您可能會想知道如何為包括基本系統在內的十幾個容器發布apt upgrade 。這就是Dist升級腳本的目的。它基於運行仲裁命令的LXCEX-CHROOT,適當地與容器的rootfs合理。
他們對公寓存儲庫進行了關注,因此值得遵循他們的指示
在撰寫本文時,Firefox(123版)默認使用Wayland。如果您還記得,Wayland_display是在/home/user/.config/sv/xfce4/run中重置的,這使Firefox進入無限循環說
Warning: ConnectToCompositor() try again : Connection refused
有兩個選擇:
我嘗試了兩者。最初,我使用腳本選擇了後者:
#!/bin/sh
if [ -n "$X_WAYLAND_DISPLAY" ] ; then
export WAYLAND_DISPLAY=$X_WAYLAND_DISPLAY
else
# fallback
export WAYLAND_DISPLAY=wayland-1
fi
firefox
但是,這使復製紙變得麻煩了,因此我暫時返回X模式。
我最初的設置僅僅是因為缺乏對共享子樹的了解而怪異而脆弱。
這是解決方案:
遞歸共享一些安裝點。您不能在文件系統中創建一個任意目錄RSHARED(這是我的誤解點),它應該是一個實際的安裝點,即安裝某些文件系統的目錄。
我想將/mnt/autofs用於自動,所以讓我們在那里安裝tmpfs並將其放置:
mkdir -p /mnt/autofs
mount -t tmpfs -o size=64K --make-rshared tmpfs /mnt/autofs
mkdir /mnt/autofs/myserver
創建自動配置:
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
並重新啟動自動。
將以下行添加到容器的配置中:
lxc.mount.entry = /mnt/autofs mnt/autofs none create=dir,rbind 0 0
啟動容器。內部, ls /mnt/myserver/shared-dir應該按預期工作。
但是,用戶:組將是任何人:非元素群,我不知道如何設置正確的ID映射。
menulibre看起來有點膨脹軟件,目前在Excalibur中完全被打破了。但是,手動編輯菜單非常容易:
.config/menus/xfce-applications.menu中列出.local/share/applications中容器非常適合隔離工作區,就好像它們在單獨的機器上運行一樣。這大大簡化了諸如網絡之類的內容,這些網絡容易出錯或無法在單個系統中維護。
但是在容器級別上,一切仍然相同:所有應用程序都可以完全訪問用戶數據的單個主目錄。
這很危險。潛在地,每個使用網絡的程序甚至可能會洩露您的敏感數據。
基本上,所有與您的數據一起使用的程序都應在具有禁用網絡的容器中運行,並且可能最終以這種安排。
但是目前,我有一些舊的XFCE環境,每個環境都在自己的容器中運行。我在這些容器中部署的臨時解決方案是主要用戶的限製網絡訪問,並以不同的用戶運行所有網絡軟件。該軟件包括Firefox,Chromium,Mullvad和Tor瀏覽器,以及Thunderbird。當然,有些人已經支持Wayland,但是LXCEX仍然存在復制問題,這是本地運行它們的阻礙因素。
以Firefox為例,這是設置,可以用作其他程序的樣板。
首先,創建一個單獨的用戶:
useradd -g users --skel /etc/skel --shell /bin/bash --create-home firefox
然後,移動目錄:
mkdir /home/firefox/.cache
mv /home/user/.mozilla /home/firefox/
mv /home/user/.cache/firefox /home/firefox/.cache/
chown -R firefox /home/firefox
接下來,準備腳本/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
實際上,在這裡不需要DISPLAY環境變量,但是該腳本可以用作運行其他應用程序的樣板,因此我有意將其保留。
最後,create /etc/sudoers.d/50-start-firefox /50-start-firefox(a,需要Sudo):
user ALL = NOPASSWD: /usr/local/bin/start-firefox dosu
您可能需要修改XFCE啟動菜單條目。並首次添加-P選項,否則Firefox可能以空白配置文件開頭。
分享Downloads目錄是一個好主意。以前的方法是一個具有符號鏈接的可劃分目錄,但最好的方法是lxces-share 。
讓Downloads Direcroty在user的主目錄中,如前所述。然後,為容器創建以下sharetab :
/var/lib/lxc/<container-name>/rootfs/home/user/Downloads firefox /home/firefox/Downloads
並在容器配置中使用鉤子,如第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
在編寫第6章時發現了這篇文章:https://discuss.linuxcontainers.org/t/audio-via-pulseaudio-inside-container/8768他們使用LXD,值得看看實現OD od socket Proxies。當基本合成器重新啟動時,我們可以使用它們保留容器插座並重新連接到主機插座嗎?還是當容器從冬眠恢復時?
再次,
我沒有明白為什麼我必須
mount --make-shared /run即/run ,如果我登錄了,則不/run/user mount --rbind /run/user "${LXC_ROOTFS_MOUNT}/run/host/run/user"在容器中,並希望所有的UID submounts傳播。
在重新閱讀了幾次之後,最終應該很清楚。
smartd是迄今為止禁用HDD Spinds的最可靠的工具:
/etc/default/smartmontools : smartd_opts="--interval=10 --attributelog=- --savestate=-"
--interval ,其他人禁用保存狀態,而我從不需要的保存狀態。-n選項never在etc/smartd.conf中,即: DEVICESCAN -d removable -n never -m root -M exec /usr/share/smartmontools/smartd-runner
我的額外包裹,僅用於記錄。
gnome-font-viewer ,看起來不必要gthumbbreeze-icon-theme 。systemsettings :安裝以防萬一,到目前為止的利潤為零。libnss3 , libasound2