ระบบปฏิบัติการเดสก์ท็อปที่มุ่งเน้นความเป็นส่วนตัวที่มีน้ำหนักเบาขึ้นอยู่กับ Devuan และ LXC โครงการสำหรับการศึกษาด้วยตนเองและความพยายามอีกครั้งในการสร้างทางเลือกให้กับ Qubes OS นี่ไม่ใช่ distro และอาจจะไม่เคย นี่คือชุดของไฟล์และแพตช์สคริปต์ makecex ที่เรียบง่ายและคำสั่งà la lfs
ทำงานระหว่างดำเนินการ
ในขณะนี้ระบบนี้สะท้อนประสบการณ์ของฉันและเต็มไปด้วยความชอบส่วนตัว บางคนค่อนข้างไม่มีมูลความจริง ฉันสาบานว่าฉันจะกำจัดพวกเขาทันทีที่จำนวนผู้ใช้จะไปเกิน 1.5 แต่โดยทั่วไปเหตุผลมีดังนี้:
สามารถสร้างสื่อที่สามารถบูตได้ด้วยระบบสดด้วย Makecex คุณจะต้องมี PPA ที่สามารถสร้างได้ด้วยการเตรียมและสร้างสคริปต์
รองรับโหมดบูตแบบดั้งเดิมเท่านั้นสำหรับ AMD64 สำหรับตอนนี้
สคริปต์มีพารามิเตอร์ที่จุดเริ่มต้นแก้ไขอย่างระมัดระวังก่อนที่จะทำงาน คุณสามารถเขียนพารามิเตอร์ที่แก้ไขได้ไปยัง makecex.conf แทนที่จะทำการเปลี่ยนแปลงสคริปต์
ส่วนร่าง/Sandbox
เนื่องจาก LXCEX ย้ายไปที่ IDMapped Mounts การอนุญาตไฟล์จึงมีความสำคัญมากขึ้น ด้วย uidmapshift ข้อมูลคอนเทนเนอร์ทั้งหมดไม่สามารถเข้าถึงได้จากผู้ใช้ที่ไม่มีสิทธิ์ในระบบฐาน นั่นไม่ใช่กรณีที่มีการติดตั้ง IDMapped อีกต่อไปเนื่องจากผู้ใช้ที่ไม่มีสิทธิ์ ในระบบฐานและคอนเทนเนอร์มี ID ทั่วไป
ตรวจสอบให้แน่ใจว่าไดเรกทอรีย่อยทั้งหมดใน /var/lib/lxc มีสิทธิ์น้อยที่สุดและไม่สามารถอ่านได้อย่าง other เช่นเดียวกับข้อมูลคอนเทนเนอร์ที่เก็บไว้ที่อื่น
อย่างไรก็ตามสำหรับการติดตั้ง IDMapped เพื่อทำงานการอนุญาตขั้นต่ำจะต้องรวมถึงการสำรวจไดเรกทอรีสำหรับผู้อื่น สิ่งนี้สามารถแก้ไขได้โดยใช้ setfacl แต่ความสะดวกสบายที่มีน้ำหนักเกินความสะดวกสบาย
หากทั้งหมดข้างต้นเป็นข้อกังวลด้านความปลอดภัยอย่าใช้ IDMapped Mounts
/dev/ptmx หลังจากนั้นไม่นานsh หาก Weston เริ่มต้นโดย Runit ที่เชลล์หลักคือ shlxcex ให้ผู้ใช้ปรับแต่งได้หรือไม่?uidmapshift ไว้ในตอนนี้ เป็นการแทนที่สำหรับ ls -l /var/lib/lxc ที่แสดง IDS ของ uidmapshift ED, คอนเทนเนอร์, มีสคริปต์ lxcex-idmap ตอนนี้ที่แสดง ID ผู้ใช้รองสำหรับแต่ละคอนเทนเนอร์ที่ใช้ IDMAPโอเควางสายที่นี่ ฉันยังดูเหมือนจะเป็นผู้ใช้คนเดียวของอึทั้งหมดนี้และอย่างที่เพื่อนชาวแอฟริกันพูดว่า "Daz Good!"
ต้องการคุณสมบัติมากมาย อันดับหนึ่งคือการกำจัด Runit หมายเลขสองคือ UI Utils ความปรารถนาอื่น ๆ ทั้งหมดเป็นเพียงสิ่งเล็ก ๆ น้อย ๆ
จนถึงตอนนี้ดีมาก บทใหม่ 8 ออกแล้ว
สามเดือนนับตั้งแต่เริ่มก่อตั้งและตอนนี้ฉันสามารถกล่าวอำลา Linuxmint LXCEX อยู่ในแล็ปท็อปทั้งหมดของฉันนับจากนี้เป็นต้นไป
การอัปเดตที่สำคัญ:
อีกครั้งสำคัญ: Makecex หมดแล้ว! สคริปต์นี้สร้างสื่อที่สามารถบู๊ตได้ ไม่ได้ทดสอบมากเกินไปมันใช้ได้กับฉัน
แพ็คเกจ repo หมดแล้ว สำหรับตอนนี้แพ็คเกจเดียวที่มี UIDMAPSHIFT การวางแผนที่จะเพิ่ม Libpulse เวอร์ชันที่ได้รับการแก้ไขจึงเป็นการกำจัด Filemer Fixer
แม้ว่าความตายจากการหัวเราะไม่ใช่เป้าหมายสูงสุดของฉัน แต่ฉันต้องเพิ่มคีย์การลงนามให้ฉันไม่ระบุชื่อ
ระบบอัตโนมัติกำลังเดินทาง เริ่มหลังจากที่ฉันจัดการกับการขัดข้องระบบง่ายๆโดยการใหม่/var/lib/lxc ด้วยคอนเทนเนอร์ที่รัน ไม่ได้ตระหนักว่ามันอันตรายมาก การกระทำนี้ทำลายพาร์ติชันที่ติดตั้งทั้งหมดรวมถึงแท่ง USB สำรองซึ่งไม่มีส่วนเกี่ยวข้องกับสิ่งนั้น ทำไม???
มันเล่นดนตรี! เวอร์ชันเริ่มต้นของบทที่ 6 จะได้รับการอัปเดต
สภาพแวดล้อมเดสก์ท็อป XFCE ทำงานอยู่!
แท็ก: 0.0.2
เริ่มต้นและปล่อย
คุณอาจสงสัยว่าจะออก apt upgrade สำหรับคอนเทนเนอร์ได้อย่างไรรวมถึงระบบฐาน นั่นคือสิ่งที่สคริปต์อัพเกรดมีไว้สำหรับ มันขึ้นอยู่กับ LXCEX-chroot ซึ่งรันคำสั่งอนุญาโตตุลาการโดยใช้รูทของคอนเทนเนอร์อย่างถูกต้อง
พวกเขาใช้ที่เก็บ apt apt ดังนั้นจึงคุ้มค่าที่จะทำตามคำแนะนำของพวกเขา
ในขณะที่เขียน Firefox (เวอร์ชัน 123) ใช้ Wayland โดยค่าเริ่มต้น หากคุณจำได้ว่า wayland_display จะถูกรีเซ็ตใน /home/user/.config/sv/xfce4/run และสิ่งนี้ทำให้ Firefox เข้าสู่ Infinite Loop พูดว่า
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 ในตอนนี้
การตั้งค่าเริ่มต้นของฉันแปลกและเปราะบางเพียงเพราะขาดความเข้าใจของทรีย่อยที่ใช้ร่วมกัน
นี่คือวิธีแก้ปัญหา:
ทำให้ Mount Point แบ่งปันกันซ้ำ คุณไม่สามารถสร้างไดเรกทอรีโดยพลการในระบบไฟล์ rshared (นั่นคือจุดที่ฉันเข้าใจผิด) มันควรจะเป็นจุดเมาท์จริงเช่นไดเรกทอรีที่มีการติดตั้งระบบไฟล์บางระบบ
ฉันต้องการใช้ /mnt/autofs สำหรับ autofs ดังนั้นให้ติดตั้ง tmpfs ที่นั่นและ rshare มัน:
mkdir -p /mnt/autofs
mount -t tmpfs -o size=64K --make-rshared tmpfs /mnt/autofs
mkdir /mnt/autofs/myserver
สร้างการกำหนดค่า 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
และรีสตาร์ทอัตโนมัติ
เพิ่มบรรทัดต่อไปนี้ในคอนเทนเนอร์ของ Config:
lxc.mount.entry = /mnt/autofs mnt/autofs none create=dir,rbind 0 0
เริ่มคอนเทนเนอร์ ข้างใน ls /mnt/myserver/shared-dir ควรทำงานตามที่คาดไว้
อย่างไรก็ตามผู้ใช้: กลุ่มจะไม่มีใคร: nogroup และฉันไม่รู้ว่าจะตั้งค่าการแมป ID ที่ถูกต้องได้อย่างไร
menulibre ดูค่อนข้าง bloatware และปัจจุบันแตกหักใน 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 ไม่จำเป็นที่นี่ แต่สคริปต์นี้สามารถใช้เป็นแผ่นหม้อไอน้ำเพื่อเรียกใช้แอพอื่น ๆ ดังนั้นฉันจึงตั้งใจทิ้งไว้
ในที่สุดให้สร้าง /etc/sudoers.d/50-start-firefox (ALAS, Sudo เป็นสิ่งจำเป็น):
user ALL = NOPASSWD: /usr/local/bin/start-firefox dosu
คุณอาจต้องแก้ไขรายการเมนูเริ่มต้น XFCE และเพื่อเพิ่มตัวเลือก -p เป็นครั้งแรกมิฉะนั้น Firefox อาจเริ่มต้นด้วยโปรไฟล์ว่าง
เป็นความคิดที่ดีที่จะแบ่งปันไดเรกทอรี Downloads วิธีการก่อนหน้านี้คือไดเรกทอรีที่เขียนได้แบบกลุ่มที่มี symlinks อยู่ แต่วิธีที่ดีที่สุดคือ lxces-share
ให้ Downloads direcroty อยู่ในไดเรกทอรีโฮมสอร์ของ user ตามที่เคยเป็นมา จากนั้นสร้าง sharetab ต่อไปนี้สำหรับคอนเทนเนอร์:
/var/lib/lxc/<container-name>/rootfs/home/user/Downloads firefox /home/firefox/Downloads
และใช้ hooks ในการกำหนดค่าคอนเทนเนอร์ดังแสดงในบทที่ 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 และมันคุ้มค่าที่จะดูการใช้งาน เราสามารถใช้พวกเขาเพื่อเก็บซ็อกเก็ตคอนเทนเนอร์และเชื่อมต่อกับซ็อกเก็ตโฮสต์เมื่อผู้แต่งฐานเริ่มต้นใหม่หรือไม่? หรือเมื่อคอนเทนเนอร์ดำเนินการต่อจากการจำศีล?
อีกครั้ง,
ฉันไม่เข้าใจว่าทำไมฉันถึงต้องทำ
mount --make-shared /run IE /run , Not /run/user ถ้าฉัน mount --rbind /run/user "${LXC_ROOTFS_MOUNT}/run/host/run/user" ในคอนเทนเนอร์และต้องการให้ uid ubmounts ทั้งหมดเผยแพร่
หลังจากอ่านอีกครั้งว่ามันควรจะชัดเจนในที่สุด
smartd เป็นเครื่องมือที่น่าเชื่อถือที่สุดในการปิดการใช้งาน HDD Spindowns จนถึงตอนนี้:
/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-themesystemsettings : ติดตั้งในกรณีที่ไม่มีกำไรเป็นศูนย์libnss3 , libasound2