DevuanとLXCに基づく軽量プライバシーに焦点を当てたデスクトップオペレーティングシステム。自己教育のためのプロジェクト、およびQubes OSの代替案を作成するもう1つの試み。これはまだディストリビューションではなく、おそらく決してそうすることはありません。これは、ファイルとパッチのセット、単純なmakecexスクリプト、およびLFSの命令です。
進行中の作業。
現時点では、このシステムは私の経験を反映しており、個人的な好みに満ちています。それらのいくつかは非常に根拠がありません。ユーザーの数が1.5を超えるとすぐに、私はそれらを取り除くことを誓います。しかし、一般的に、理論的根拠は次のとおりです。
ライブシステムを備えた起動可能なメディアは、Makecexで生成できます。スクリプトを準備および構築することで作成できるPPAが必要です。
今のところ、AMD64ではレガシーブートモードのみがサポートされています。
スクリプトには最初にパラメーターが含まれており、実行する前に注意深く修正します。スクリプトを変更する代わりに、変更されたパラメーターをmakecex.confに記述できます。
ドラフト/サンドボックスセクション。
LXCEXはIDMappedマウントに移動したため、ファイル許可がより重要になりました。 uidmapshiftを使用すると、すべてのコンテナデータは、ベースシステム上の非特権ユーザーからアクセスできませんでした。 Base SystemおよびContainerが共通のIDを搭載しているため、IDMapped Mountsの場合はそうではありません。
/var/lib/lxcのすべてのサブディレクトリには、最小限の権限があり、少なくともotherが読み取れないことを確認してください。同じことが、他の場所に保存されているコンテナデータにも当てはまります。
ただし、IDMAPPEDマウントが機能するには、最小限の権限には、他の人のディレクトリトラバーサルを含める必要があります。これは、 setfaclを使用して回避できますが、そのcomlicationは利便性を過ぎています。
上記がすべてセキュリティの懸念である場合、IDMappedマウントを使用しないでください。
/dev/ptmx 。sh sh使用します。lxcexを取り除き、ユーザーにそれをカスタマイズしてもらいますか?uidmapshiftを維持します。 uidmapshift edのIDを示したls -l /var/lib/lxcの代替として、コンテナ、IDMAPを使用する各コンテナの従属ユーザーIDを表示するlxcex-idmapスクリプトがあります。さて、ここに線を落とします。私はまだこのすべてのたわごとの1人のユーザーであるように見えますが、アフリカの友人が言うように、「Daz Good!」
たくさんの機能が必要です。ナンバーワンは、Runitを取り除くことです。 2番目はUI UTILSです。他のすべての願いはちょっとしたことです。
ここまでは順調ですね。新しい第8章が出ています。
創業から3か月、そして今、私は別れ、LinuxMintと言うことができます。 LXCEXは、これから私のすべてのラップトップにあります。
主要な更新:
さらに別のマイルストーン:Makecexが出ています!このスクリプトは、起動可能なメディアを生成します。過度にテストされていませんが、それは私だけのために機能します。
パッケージリポジトリが出ています。今のところ、唯一のパッケージはuidmapshiftです。 PathedバージョンのLibpulseを追加することを計画しているため、ファイル許可フィクサーを取り除きます。
笑いからの死は私の究極の目標ではありませんが、私は匿名の署名キーを追加しなければなりませんでした。
自動化が進行中です。実行中のコンテナを使用して/var/lib/lxcを再開するだけで、システムをクラッシュさせることができた後に始まりました。それがそれほど危険であることに気づきませんでした。このアクションは、それとは関係のないバックアップUSBスティックを含むすべてのマウントされたパーティションを破壊しました。なぜ???
音楽を演奏します!第6章の初期バージョンが更新されます。
XFCEデスクトップ環境が機能しています!
タグ:0.0.2
最初のコミットとリリース。
ベースシステムを含む数十のコンテナのapt upgradeをどのように発行するか疑問に思うかもしれません。それがDist-Upgradeスクリプトの目的です。 Arbitratyコマンドを実行するLxcex-Chrootに基づいており、コンテナのrootfに適切にクルーティングされています。
彼らはaptリポジトリを削ったので、彼らの指示に従う価値があります
執筆時点で、Firefox(バージョン123)はデフォルトでWaylandを使用しています。覚えている場合、Wayland_displayは/home/user/.config/sv/xfce4/runでリセットされています。
Warning: ConnectToCompositor() try again : Connection refused
2つのオプションがあります。
両方を試しました。最初は、スクリプトを使用して後者を選択しました。
#!/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に任意のディレクトリを作成することはできません(これが私の誤解のポイントでした)、それは実際のマウントポイント、つまりいくつかのファイルシステムがマウントされるディレクトリである必要があります。
Autofに/mnt/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
オートフを再起動します。
コンテナの構成に次の行を追加します。
lxc.mount.entry = /mnt/autofs mnt/autofs none create=dir,rbind 0 0
コンテナを起動します。内部では、 ls /mnt/myserver/shared-dir予想どおりに機能するはずです。
ただし、ユーザー:グループは誰もいません:Nogroupと私は、正しいIDマッピングをセットアップする方法がわかりません。
menulibreちょっと肥大化しているように見え、現在はExcaliburで完全に壊れています。ただし、メニューを手動で編集するのは非常に簡単です。
.config/menus/xfce-applications.menuにリストされています.local/share/applicationsにありますコンテナは、ワークスペースを別々のマシンで実行しているかのように分離するのに最適です。これにより、単一のシステム内でエラーが発生しやすい、または維持することができないネットワークなどが大幅に簡素化されます。
ただし、コンテナレベルでは、すべてが同じです。すべてのアプリケーションがユーザーのデータに完全にアクセスできる単一のホームディレクトリです。
これは危険です。潜在的に、ネットワークを使用するすべてのプログラムは、機密データを漏らし、さらには無意味に漏洩する可能性があります。
基本的に、データを使用して動作するすべてのプログラムは、無効なネットワーキングを備えたコンテナで実行する必要があります。おそらく、そのような取り決めになります。
しかし今のところ、それぞれ独自のコンテナで実行されているレガシーXFCE環境がいくつかあります。これらのコンテナ内に展開した一時的なソリューションは、メインユーザーのネットワークアクセスが制限され、すべてのネットワークソフトウェアを別のユーザーとして実行します。このソフトウェアには、Firefox、Chromium、Mullvad、およびTorブラウザとThunderbirdが含まれます。もちろん、すでにウェイランドをサポートしている人もいますが、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 (残念ながら、sudoが必要です):
user ALL = NOPASSWD: /usr/local/bin/start-firefox dosu
XFCEスタートメニューエントリを変更する必要がある場合があります。また、初めて-Pオプションを追加するには、Firefoxが空白のプロファイルから開始する場合があります。
Downloadsディレクトリを共有することをお勧めします。以前のアプローチは、Symlinksを備えたグループに耐えるディレクトリでしたが、最良の方法はlxces-shareです。
以前のように、DirecrotyをuserのホームディレクトリにDownloads 。次に、コンテナ用に次の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ソケットプロキシを見る価値があります。それらを使用してコンテナソケットを保持し、ベースコンポジタが再起動されたときにホストソケットに再接続できますか?または、コンテナが冬眠から再開するとき?
また、
なぜ私がしなければならなかったのかわかりませんでした
mount --make-shared /run IE /run 、not /run/user mount --rbind /run/user "${LXC_ROOTFS_MOUNT}/run/host/run/user" in contaersで、すべてのuidサブマウントを伝播することを望んでいました。
数回それを再読した後、それは明確になるはずです。
smartd 、これまでのHDDスピンダウンを無効にするための最も信頼できるツールです。
/etc/default/smartmontools : smartd_opts="--interval=10 --attributelog=- --savestate=-"
--interval 、他の人は私が必要としなかった保存状態を無効にします。-nオプションがetc/smartd.confにneverを確認してください。 DEVICESCAN -d removable -n never -m root -M exec /usr/share/smartmontools/smartd-runner
記録のためだけの私の余分なパッケージ。
gnome-font-viewer 、不要に見えますgthumbbreeze-icon-themeを使用しました。systemsettings :念のため、これまでにゼロの利益がインストールされています。libnss3 、 libasound2