Chrootメソッド(ルートが必要)

Chrootメソッド(ルートが必要)

そのため、Kali LinuxディストリビューションにG'MICをインストールし、正しく機能するためにいくつかのパッケージを変更する必要がありました。実際に追加するパッケージを見つけるには、Debianリポジトリを追加する必要がありました。 KaliはDebianに基づいているので、これは良いと思いました。結局私が唯一の問題があったのはBlenderでしたが、以前のようにAPTを使わずにホームページで提供するバージョンを使って解決しました。

まあ、今日私はついにGnomeシステム設定も削除したことを発見しました(G'MICで作成した画像をロック画面に追加しようとしました)。削除されたパッケージのリストを見るときに見えなかったようです。これでパッケージを再追加できることがわかりましたが、そうするとG'MICが再び中断される可能性があります。私はこのプラグインが大好きです。

だから私の質問は、G'MICを引き続き使用し、設定を復元してロック画面機能に追加などを再利用できるように、この問題を処理する最善の方法は何ですか?

(libopencvの依存関係は、G'MICをインストールするときに変更しなければならなかった最初の依存関係でした。

ここに画像の説明を入力してください。

編集:誰かがKaliの目標が狭いので、システムを改善しようとするべきではないと言うことに照らして、私はデュアルブートに興味がないので、Kaliの目標は私が興味がないと言いたいと思います。 G'MICが利用可能です。非常に異なる大規模システムで作業する必要がある場合は、KaliでセキュリティをテストするときにWindowsが行ったように仮想マシンにロードできます。これで問題を解決したので、この問題を経験している人が私だけではないと確信しているので、一般的なパッケージ管理を支援するためにこの質問をする理由です。

APTでこれを行うための良い方法がない場合は、環境を「仮想化」するための良い方法があるかどうかを確認できます。私の言葉はchrootのようなものです。 G'MICをGimpプラグインとして実行して、削除されたパッケージを処理する必要がないようにする良い方法はありますか?それとも、より良いソリューション(デュアルブートに加えて)はありますか?

答え1

引用するカリ文書:

Kali Linux開発チームがテストしていないソフトウェアリポジトリにリポジトリを追加することは、システムに問題を引き起こす良い方法です。

Kali Linuxは非常に狭い焦点で設計されています。 Debian ベースですが、Debian リポジトリを追加してパッケージを選択して混合することは期待できません。

状況に応じて、G'MICを使用するか(この場合はKali Linuxの代わりにDebianを使用する必要があります)、またはKali Linuxを使用するか(この場合はG'MICを放棄する必要があります)を選択する必要があります。

答え2

Chrootメソッド(ルートが必要)

まず、私の解決策がchrootの方法だと思います。これはこの問題を解決するために私のお気に入りのオプションではありません。なぜなら、私が本当に望むのは、サブシステムやデュアルブートや仮想マシンを作成するのではなく、ホストシステムにプログラム自体をカプセル化できるからです。

次の3つのコマンドは3つのことを行います。まず、schrootとdebootstrapをインストールします。 chroot環境を実行するためにすべて必要です。ルートなしでchrootする方法もありますが、これについてはもう少し研究をしてみてください。 2つ目は、/srv/chroot/jessieにDebian Jessie用のchroot環境を作成します。私のコンピュータにはすでにスクリプトがあります。一部の人がスクリプトを持っていないことが判明した場合は、この回答を更新してスクリプトを作成できます。 3番目のコマンドを使用すると、次の設定をgeditに貼り付けてchroot環境を起動できます。 vimやnanoなどのテキストベースのエディタもあり、他の人はグラフィカルアプリケーションが利用できないときにそれを使用する方法を説明しました。

注文する

sudo apt-get install schroot debootstrap
sudo debootstrap jessie /srv/chroot/jessie
sudo gedit /etc/schroot/chroot.d/jessie.conf

構成

[jessie]
description=Debian Jessie x64
directory=/srv/chroot/jessie
groups=sbuild-security
aliases=stable
personality=linux

このコマンドを使用すると、ディスプレイ番号を表示、記録、または記憶することができます(特に設定がない限り、通常は0)。

echo $DISPLAY

次に、ルートが指定されたコンピュータ(同じ物理デバイス)からグラフィック環境への接続を実際に許可するようにプライマリシステムに指示する必要があります。これウィキペディア少し役に立ちます。このコマンドを.profileまたは.bashrcに入れると、必要に応じて実行できます。

xhost +local:

プリロードされた Chroot マウント

だからG'MICを動作させるには、以下の指示に従いました。chroot内のホスト別デバイスのインストール

chrootシステムではなくホストシステムでこれを実行しようとしています。基本的にこれによりホストシステムの特別なデバイスを使用することができます(どのくらい安全であるかを確認するにはさらに調査する必要がありますが、chroot自体は本質的に安全ではないため、安全を確保するためにこのソリューションに加えてより良いことが必要になります)。 )。

cd /srv/chroot/jessie/
sudo mount -t proc proc proc/
sudo mount -t sysfs sys sys/
sudo mount -o bind /dev dev/

より良いことは、起動時にこれらのコマンドを開始できるシステムサービスを作成する必要があることです。起動するたびに一度だけ実行できます。それ以外の場合は、再起動するまでシェルがロックされます。

このコマンドを実行してファイルを生成し、次のファイルを貼り付けます。

sudo gedit /etc/init.d/mountChroot

/etc/init.d/mountChrootに貼り付けます。

#!/bin/sh

### BEGIN INIT INFO
# Provides:          chrootMount
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     5
# Default-Stop:      
# Short-Description: mounts chroot special devices
### END INIT INFO

set -e

#PATH="/sbin:/bin"

. /lib/lsb/init-functions

error=0
case "$1" in
start)
    mount -t proc proc /srv/chroot/jessie/proc/
    mount -t sysfs sys /srv/chroot/jessie/sys/
    mount -o bind /dev /srv/chroot/jessie/dev/
    ;;
stop)
    #Do Nothing!
    ;;
restart|force-reload)
    #Do Nothing!
    ;;
status)
    #Do Nothing!
    ;;
*)
    #Do Nothing!
    ;;
esac

exit 0

次に、次のコマンドを実行して正しい権限を設定し、サービスを有効にして開始します。

sudo chmod 755 /etc/init.d/mountChroot
sudo systemctl enable mountChroot.service
sudo systemctl start mountChroot.service

起動環境

このコマンドは、実際にchroot環境を起動するために使用されるコマンドです。

sudo schroot -c jessie -u root

以下は、chroot環境で実行したい操作のより具体的な説明です。デフォルトでは、コマンドは変更される可能性がありますが、Kaliも実行中で、Gnome設定を維持しながらG'MICが協力するようにしたい場合は、これに注意してください。

私がaptコマンドにgmicを追加するのを見たことがない理由は、Kaliのリポジトリと同様に、そのバージョンにも私が必要とする実際のプラグインがありませんでした。だから私は魔法の管理権限を使ってデスクトップからchrootsホームフォルダに正しいパッケージをコピーしました。

魔法管理者権限

sudo cp /home/senor/Desktop/gmic_debian_jessie_amd64.deb /srv/chroot/jessie/root/

もちろん、魔法の管理権限にアクセスできないか、wgetが良いと思うかもしれません。その場合は、代わりに次のようにします(Chroot環境内)。

apt-get install ca-certificates
wget https://gmic.eu/files/linux/gmic_debian_jessie_amd64.deb

インストールカリフォルニア証明書opensslがインストールされるだけでなく、安全な接続を確立するために必要な証明書がwgetに提供されます(gmicはLet's Encryptを使用しますが、wgetは通知するまで有効な証明書であることを認識していないためです)。また、wgetは64ビットバージョンのG'MICを現在のフォルダ(おそらく/ root /)にダウンロードします。

内部 Chroot

apt-get install gimp libcanberra-gtk-module
dpkg -i /root/gmic_debian_jessie_amd64.deb

G'MICを直接インストールすると、APTが不平を言って依存関係が欠落していると言うことができるので、「apt-get -f install」を実行してそれを修正する必要があります。これにより、2つのうちの1つが発生します。欠落している依存関係をインストールしてからG'MICをインストールするか、G'MICを削除して別のパッケージでAPTを再利用できるようにします。私はKaliではパッケージ(G'MIC)を削除しましたが、Debianではインストール前にG'MICに必要な依存関係をインストールしました。欠落しているパッケージを手動でインストールする場合は、APTが指示したとおりに正確に実行するため、指示するとシステムパッケージが削除される可能性があります(ただし、依存関係を手動でインストールする場合のみ)。パッケージを削除するかどうかを尋ねるメッセージが表示されるので、保持したいパッケージを削除するかどうかを尋ねる場合は、コマンドを実行してキャンセルできます。

libcanberraはプラグインのインストールが難しい要件ではないパッケージの1つです。しかし、プラグインがなければ、G'MICは単に表示するだけで、実際に画像を変更するのではなく、静かにクラッシュし、端末にいくつかの出力を生成します。建物。

グラフィックプログラムがインストールされているので、chroot環境を起動するたびに(グラフィックプログラムで使用するために)このコマンドを実行する必要があります。

export DISPLAY=":0"

これでGimpを実行し(gimpと入力して)、G'MICプラグインを使って実際に画像を作成できます。残っているのは、画像をメイン(ホスト)システムと簡単に共有し、Gimpを簡単に/自動で起動できるようにすることです(または魔法の管理機能を使用することもできます)。

chroot システムをホストに接続する

まあ、まずホストシステムへのシンボリックリンクがゲスト(またはサブシステム)システムに存在しないフォルダへの壊れたリンクを作成するので、それをリンクしてより良いリンクを作成するのは少し奇妙だと言います。代わりに、ゲストシステムにフォルダを作成してホストシステムに接続することにしました。 /root/ world を読みやすくしたくないので、ファイル権限のみを処理するだけです。

sudo mkdir -p /srv/chroot/jessie/public/photoshop
sudo ln -s /srv/chroot/jessie/public/photoshop /home/senor/.data/photoshop
sudo chmod o+r /srv/chroot/jessie/public
sudo chmod o+rw /srv/chroot/jessie/public/photoshop

上記は、ホストシステムへの1つ以上のシンボリックリンクを生成する。 chrootの/root/に1つ作成し、デスクトップに1つ作成したいと思います。

sudo ln -s /srv/chroot/jessie/public/photoshop /home/senor/Desktop/photoshop

内部ルート:

ln -s /public/photoshop /root/photoshop

これで、chrootされたシステムではrootとして実行され、ホストシステムでは誰でも実行しているため、権限が正しくないことがわかります。ありがとう前方十字靭帯将来作成されるすべてのファイル(すでに作成されたファイルではない)に対して自動的に権限を設定できます。 chrootの内部で実行されます。

chmod g+s /public/photoshop
setfacl -d -m g::rwx /public/photoshop
setfacl -d -m o::rwx /public/photoshop

生成されたすべてのファイルを再帰的に設定するには... chroot内で実行します。

chmod -R og+w /public/photoshop

chroot Gimpを起動するスクリプト

まず、環境変数をより簡単にエクスポートするには、chrootで次のコマンドを実行できます。

echo -e "export DISPLAY=:0\ngimp" > /bin/run-gimp.sh
chmod +x /bin/run-gimp.sh

パスワードを要求せずにスクリプトを実行するには、このコマンドを入力し、ファイルに%sudoを含む行を入力します。

sudo visudo -f /etc/sudoers.d/02_insecurities

パスワードなしでsudoでコマンドにアクセスできるように端末に配置します。セキュリティ(パスワードなど)がないルート権限は本質的に安全ではありません。

%sudo   ALL=(root) NOPASSWD: /usr/bin/schroot --directory /root/ -c jessie -u root /bin/bash /bin/run-gimp.sh

これで、パスワードなしで次のコマンドを入力できます(sudoグループのメンバーである場合)。

sudo /usr/bin/schroot --directory /root/ -c jessie -u root /bin/bash /bin/run-gimp.sh

Alacarte(または他のメニューマネージャ)

setuidの代わりにsudoersを使用することにしました。自動ルーティングなどのセキュリティ強化。明らかに、パスワードなしでルートを実行することはまだ安全ではありません(単一のコマンドの場合でも)。ルートなしで実行できるようにしたいのですが、まだ方法が見つかりませんでした。

まだメニューマネージャがない場合は、アラカルト(alacarte)をインストールしてください。使用するマネージャによってGUIを操作する方法が異なります。 alacarteをインストールするには、ホストシステムで次のコマンドを実行します。

sudo apt-get install alacarte

これで、メニュー項目を作成して保存するときにGuiを使用して、次のコマンドをalacarteのコマンドセクションに貼り付けることができます。既存のエントリを変更(または削除)するには、ログアウト/ログインまたは再起動するまで変更が有効になります。

sudo /usr/bin/schroot --directory /root/ -c jessie -u root /bin/bash /bin/run-gimp.sh

Imgurに写真をいくつか残しました。注文食品そしてアプリケーションメニュー

まあ、あなたはすでにKali LinuxにGimpとG'MICをロードする方法を知っています。楽しくお過ごしください! ! !

長所短所

欠点

このソリューションに関する注意点は、ウィンドウマネージャがないため、KaliのGimpと比較して見苦しく、アートプラグインの簡単な設定が少し複雑で、これがうまくいかないということです。ダウンロードできます。プログラムを実行し、それが動作すると期待しています。

利点

これのいくつかの利点は、プラグインをダブルブートする必要がなく(特にペンテストにKaliを使用するため)、本格的な仮想マシンの実行にリソースを無駄にしないことです。

関連情報