Chroot 방법(루트 필요)

Chroot 방법(루트 필요)

그래서 Kali Linux 배포판에 G'MIC를 설치했고 제대로 작동하려면 일부 패키지를 변경해야 했습니다. 실제로 추가해야 할 패키지를 찾으려면 데비안 저장소를 추가해야 했습니다. Kali는 Debian을 기반으로 하기 때문에 이것이 좋을 것이라고 생각했습니다. 결국 제가 유일하게 문제가 있었던 것은 블렌더였는데, 예전처럼 APT를 사용하지 않고 홈페이지에서 제공하는 버전을 사용해서 해결했습니다.

글쎄, 오늘 나는 마침내 Gnome 시스템 설정도 삭제했다는 사실을 발견했습니다(G'MIC로 만든 이미지를 잠금 화면에 추가하려고 했습니다). 제거된 패키지 목록을 볼 때는 못 봤던 것 같습니다. 이제 패키지를 다시 추가할 수 있다는 것을 알고 있지만 그렇게 하면 G'MIC가 다시 중단될 수 있습니다. 저는 이 플러그인을 정말 좋아합니다.

그래서 제 질문은 G'MIC를 계속 사용하고 설정을 복원하여 잠금 화면 기능에 추가 등을 다시 사용할 수 있도록 이 문제를 처리하는 가장 좋은 방법은 무엇입니까?입니다.

(libopencv 종속성은 G'MIC를 설치할 때 변경해야 했던 첫 번째 종속성이었고 Kali의 gmic 패키지에는 필요한 전체 플러그인이 아닌 데모 프로그램만 포함되어 있습니다.)

여기에 이미지 설명을 입력하세요.

편집: 누군가 Kali의 목표가 좁기 때문에 시스템을 개선하려고 하면 안 된다고 말하는 것에 비추어 저는 듀얼 부팅에 관심이 없기 때문에 Kali의 목표는 내가 관심 있는 것이 아니라고 말하고 싶습니다. G'MIC를 사용할 수 있습니다. 매우 다른 대규모 시스템에서 작업해야 하는 경우 Kali에서 보안을 테스트할 때 Windows에서 했던 것처럼 가상 머신에 로드할 수 있습니다. 이제 문제를 해결했으므로 이 문제를 겪고 있는 사람이 저뿐만이 아닐 것이라고 확신하므로 일반적인 패키지 관리에 도움을 주기 위해 이 질문을 하는 이유입니다.

이제 APT에서 이를 수행할 수 있는 좋은 방법이 없다면 환경을 "가상화"할 수 있는 좋은 방법이 있는지 알아볼 수 있습니다. 내 말은 chroot와 같은 것을 의미합니다. G'MIC를 Gimp 플러그인으로 실행하여 제거된 패키지를 처리할 필요가 없도록 하는 좋은 방법이 있습니까? 아니면 더 나은 솔루션(이중 부팅 외에)이 있습니까?

답변1

인용하다칼리 문서:

Kali Linux 개발팀에서 테스트하지 않은 소프트웨어 리포지토리에 리포지토리를 추가하는 것은 시스템에 문제를 일으키는 좋은 방법입니다.

Kali Linux는 매우 좁은 초점으로 설계되었습니다. 데비안 기반이지만 데비안 리포지토리를 추가하고 패키지를 선택하고 혼합하는 것을 기대할 수 없습니다.

상황에 따라 G'MIC를 사용할 것인지(이 경우 Kali Linux 대신 Debian을 사용해야 함) 또는 Kali Linux를 사용할 것인지(이 경우 G'MIC를 포기해야 함)를 선택해야 합니다.

답변2

Chroot 방법(루트 필요)

먼저 내 솔루션이 chroot 방법이라고 말씀드리겠습니다. 이것은 이 문제를 해결하기 위해 제가 가장 좋아하는 옵션이 아닙니다. 왜냐하면 제가 정말로 원하는 것은 하위 시스템이나 이중 부팅 또는 가상 머신을 생성하는 대신 호스트 시스템에 프로그램 자체를 캡슐화할 수 있는 것이기 때문입니다.

다음 3개의 명령은 3가지 작업을 수행합니다. 먼저 schroot 및 debootstrap을 설치하십시오. chroot 환경을 실행하는 데 모두 필요합니다. 루트 없이 chroot하는 방법도 있지만 이에 대해서는 좀 더 연구를 해봐야겠습니다. 두 번째는 /srv/chroot/jessie에 Debian Jessie용 chroot 환경을 만듭니다. 내 컴퓨터에는 이미 스크립트가 있습니다. 일부 사람들이 스크립트를 가지고 있지 않은 것으로 밝혀지면 이 답변을 업데이트하여 스크립트를 만들 수 있습니다. 세 번째 명령을 사용하면 다음 구성을 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"을 실행하여 이를 수정해야 합니다. 이렇게 하면 두 가지 중 하나가 발생합니다. 누락된 종속성을 설치한 다음 G'MIC를 설치하거나, ​​G'MIC를 제거하고 다른 패키지에 APT를 다시 사용할 수 있게 합니다. 저에게는 Kali에서는 패키지(G'MIC)가 제거되었지만 Debian에서는 설치하기 전에 G'MIC에 필요한 종속성을 설치했습니다. 누락된 패키지를 수동으로 설치하는 경우 APT가 지시한 대로 정확하게 수행하므로 지시하면 시스템 패키지가 제거될 수 있다는 점에 유의하십시오(단, 종속성을 수동으로 설치하는 경우에만 해당). 이제 패키지를 제거할지 묻는 메시지가 표시되므로 유지하려는 패키지를 제거할지 묻는 경우 명령을 실행하고 취소할 수 있습니다.

이제 libcanberra는 플러그인 설치가 어려운 요구 사항이 아닌 패키지 중 하나입니다. 그러나 플러그인이 없으면 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

위의 내용은 호스트 시스템에 대한 하나 이상의 심볼릭 링크를 생성합니다. chroot의 /root/에 하나 만들고 데스크탑에 하나 만들고 싶습니다.

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

내부 루트:

ln -s /public/photoshop /root/photoshop

이제 chroot된 시스템에서는 루트로 실행하고 호스트 시스템에서는 누구든지 실행하고 있기 때문에 권한이 올바르지 않다는 것을 알 수 있습니다. 감사해요전방십자인대앞으로 생성되는 모든 파일(이미 생성된 파일 아님)에 대해 자동으로 권한을 설정할 수 있습니다. 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를 사용하기 때문에) 본격적인 가상 머신을 실행하는 데 리소스를 낭비하지 않는다는 것입니다.

관련 정보