Chroot方法(需要Root)

Chroot方法(需要Root)

因此,我在 Kali Linux 发行版上安装了 G'MIC,并且需要更改一些软件包才能使其正常工作。我必须添加 Debian 的存储库才能真正找到我需要添加的软件包。我认为这会很好,因为 Kali 是基于 Debian 的。毕竟,唯一出现问题的是 Blender,我通过使用网站上的版本而不是像以前那样使用 APT 来解决这个问题。

好吧,今天我发现我最终也删除了 Gnome 系统设置(我试图将我用 G'MIC 制作的图像添加到我的锁屏中)。我想当我查看已删除的软件包列表时我没有看到它。现在,我知道我可以重新添加软件包,但这会导致 G'MIC 再次损坏,我真的很喜欢这个插件。

所以,我的问题是,处理这个问题的最佳方法是什么,这样我仍然可以使用 G'MIC 并恢复我的设置,以便我可以再次使用它的添加到锁屏功能等功能?

(libopencv 依赖项是我在安装 G'MIC 时首先必须更改的依赖项,而 Kali 中的 gmic 包仅包含演示程序,而不是我需要的完整插件。)

在此输入图像描述

编辑:鉴于有人说 Kali 的目标是狭隘的,因此我不应该尝试改进我的系统,我要声明的是,它的目标不是我关心的,因为我不关心双启动,这样我就可以使用 G'MIC。如果我需要处理一些非常不同的大型系统,那么我可以将其加载到虚拟机中,就像我在 Kali 测试安全性时使用 Windows 所做的那样。好吧,现在我已经解决了这个问题,我问这个问题的原因是为了帮助通用包管理,因为我确信我不是唯一遇到这个问题的人。

现在,如果从APT没有好的方法来做到这一点,那么我们可以尝试看看是否有好的方法来“虚拟化”环境。我的意思是类似 chroot 的东西,有没有一种好方法可以让 G'MIC 作为 Gimp 插件运行,这样我就不必处理已删除的软件包,或者是否有更好的解决方案(除了双启动之外)。

答案1

引用Kali 文档

将未经 Kali Linux 开发团队测试的存储库添加到您的软件源中是导致系统出现问题的好方法。

Kali Linux 的设计重点非常狭窄。尽管它基于 Debian,但您不能指望添加 Debian 存储库以及选择和混合软件包。

根据您的情况,您需要选择:要么您想要使用 G'MIC,在这种情况下您应该使用 Debian 而不是 Kali Linux,要么您想使用 Kali Linux,在这种情况下您应该放弃 G'MIC。

答案2

Chroot方法(需要Root)

首先,我要说我的解决方案是 chroot 方法。这不是我最喜欢的解决这个问题的选择,因为我真正想要的是能够将程序本身封装在主机系统上,而不是创建子系统或双引导或虚拟机。

下面的 3 个命令做了 3 件事。第一个安装 schroot 和 debootstrap。它们都是运行 chroot 环境所必需的。有一些方法可以在没有 root 的情况下进行 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

然后您需要告诉您的主系统实际上允许从您的 chroot 计算机(在同一物理设备上)连接到您的图形环境。这维基百科应该有一点帮助。将此命令放入您的 .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/

更好的是,您将需要创建一个可以在引导时启动这些命令的系统服务。每次启动时您只能运行一次,否则您将被锁定在 shell 之外,直到重新启动为止。

运行此命令来创建文件,然后将以下内容粘贴到该文件中

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 并试图让 G'MIC 合作,同时仍然保留你的 Gnome 设置程序,那么请严格遵循。

你没有看到我将 gmic 添加到 apt 命令的原因是因为事实证明,该版本也缺少我需要的实际插件,就像 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

安装中ca 证书不仅会安装 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

内部 Chroot:

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 的形式访问命令(请记住,任何没有安全性(例如密码)的 root 权限本质上都是不安全的)

%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(或其他一些菜单管理器)

决定使用 sudoers 而不是 setuid 因为自动路径设置和其他安全增强功能。显然,在没有密码的情况下运行root(即使对于单个命令)仍然是不安全的,我希望能够无root运行,我只是还没有弄清楚如何运行。

如果您还没有菜单管理器,则可以安装 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 上留下了一些图片来展示点菜应用程序菜单

好了,您已经知道了一种将 Gimp 与 G'MIC 加载到 Kali Linux 上的方法。玩得开心!!!

优点缺点

缺点

现在,这个解决方案需要注意的是,与 Kali 上的相比,缺少窗口管理器使得 Gimp 看起来很丑,对于艺术插件的简单设置来说这有点复杂,而且这不能像这样工作我可以下载该程序并期望它能够工作。

优点

这样做的一些优点是,我不必为插件进行双重启动(特别是因为我使用 Kali 进行笔测试),并且我不会浪费资源来运行成熟的虚拟机。

相关内容