22
2024
03
11:47:07

在非root环境下使用需要root权限的程序

在使用Replit等容器或没有sudo权限的Shell等情况下,想要运行apt来安装软件、使用systemctl设置服务等都是非常麻烦的,那么有没有方法能使其更简单呢。
proot通过虚拟化文件系统和修改系统调用来模拟root权限,允许在非特权用户环境中运行需要root权限的应用程序。
本文将介绍如何使用proot模拟root权限,方便在容器中使用root权限的程序

使用一键脚本

由于步骤较为繁琐,我写了一键脚本,方便使用
curl https://r2.endercat.eu.org/rootkit/proot.sh -o proot.sh && bash proot.sh
Bash
注意,需要已经安装curl,如果没有,请手动下载并上传proot.sh到目标机器内,使用bash proot.sh 执行,然后按照提示下载相关文件
脚本没有设置中国优化镜像,可能导致下载缓慢,可以自行替换相关镜像
当你运行过一次后,在执行的目录下运行以下命令即可再次启动容器
./proot -S rootfs /bin/bash
Bash

手动安装

对于部分无法使用脚本的场景可以使用手动安装
  1. 下载相关文件

    1. rootfs.xz.tar:容器的系统文件,相当于系统镜像
      https://r2.endercat.eu.org/rootkit/rootfs.tar.xz
      Bash
      proot:proot二进制可执行文件,由于非root环境无法使用apt,故使用此方法,该镜像提取自debian系统,可能导致不兼容
      https://r2.endercat.eu.org/rootkit/proot
      Bash
  1. 解压rootfs

    1. 在目录下创造一个用于存放系统文件的文件夹(相当于模拟容器的根目录)
      mkdir 文件夹名
      Bash
      解压
      tar -xvf rootfs.tar.xz -C 文件夹名
      Bash
  1. 启动

    1. 赋权:
      chmod 777 proot
      Bash
      启动容器
      ./proot -S 文件夹名 /bin/bash
      Bash
      如果此时没有报错,说明你已经进入容器了,使用id可看到已经是root权限
  1. systemctl解决方案

    1. 由于proot的限制,无法使用默认的systemctl,可使用python代替
      安装python2:
      apt install python2
      Bash
      替换systemctl
      curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py -o /bin/systemctl
      Bash
      chmod +x /bin/systemctl
      Bash
      现在可以使用systemctl了,不过无法自动运行服务,下次启动需要自行systemctl start




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/5532.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: