chroot()是用linux的系统函数,能改变程序运行时参考的根目录。安装系统或者通过引导盘进入恢复系统时,可以通过chroot()修复GRUB,或者安装软件。

Golang的syscall包提供Chroot()方法。

但进入chroot环境后,如何退出呢?目前我就碰到这个需求。翻遍syscall包,也没看到直接的退出方式。Google后发现,不止我一个人想这么做。有篇文章 给出了python的hack方案。照猫画虎,我用go试着做了一遍:

// hold our real root's file descriptor for switching back lateroldRootF, err := os.Open("/")defer oldRootF.Close()if err != nil {glog.Warningf("fail to open root: %v\n", err)}// change working dir to old rooterr = syscall.Chroot("/mnt/install")if err != nil {glog.Warningf("fail to chroot %v\n", err)}// do some stuff in new root // switch backerr = oldRootF.Chdir()if err != nil {glog.Warningf("chdir() err: %v", err)}err = syscall.Chroot(".")if err != nil {glog.Warningf("chroot back err: %v", err)}

其中的把戏在于,切根之前先保存旧根的文件FD。等到要切回来时,先把当前工作目录切回旧的根目录,再chroot到当前目录。

Golang 退出chroot环境的方法相关推荐

  1. 如何在 Ubuntu 14.04 里面配置 chroot 环境

    如何在 Ubuntu 14.04 里面配置 chroot 环境 你可能会有很多理由想要把一个应用.一个用户或者一个环境与你的 linux 系统隔离开来.不同的操作系统有不同的实现方式,而在 linux ...

  2. 非root用户组启动sftp_如何在 Debian 10 中配置 Chroot 环境的 SFTP 服务 | Linux 中国

    SFTP 是最常用的用于通过 ssh 将文件从本地系统安全地传输到远程服务器的方法https://linux.cn/article-12186-1.html作者:Pradeep Kumar译者:郑 S ...

  3. linux制作chroot环境,Linux构造chroot环境

    关于chroot的简介,可以参考IBM开发者网站上的这篇理解chroot,本文演示了如何构造一个最简单的chroot环境,本文实验环境为CentOS 6.4 64bit. [root@os ~]# d ...

  4. 退出python命令行-在cmd命令行里进入和退出Python程序的方法

    在cmd命令行里进入和退出Python程序的方法 进入: 直接输入python即可,如图所示 退出: 1:输入exit(),回车 2:输入quit(),回车 3:输入ctrl+z,回车 以上这篇在cm ...

  5. Hive自定义UDF的JAR包加入运行环境的方法

    Hive开发udf函数打包jar文件后,需将jar文件放入hive的运行环境,方法有三. 先将http://blog.csdn.net/fjssharpsword/article/details/70 ...

  6. 怎样检查python环境是否安装好_如何搭建pytorch环境的方法步骤

    1.conda创建虚拟环境pytorch_gpu conda create -n pytorch_gpu python=3.6 创建虚拟环境还是相对较快的,它会自动为本环境安装一些基本的库,等待时间无 ...

  7. mysql chroot_在chroot环境下将MySQL日志输出到syslog

    好久没写博客了,这几个月一直在学习nodejs,angularjs,做一些前端开发,目前还是学习阶段,等有一些体会再来分享. 这两天碰到的一个问题是,我们的产品给客户后,客户要统一管理日志,MySQL ...

  8. chroot环境怎么重启linux,linux下简易chroot环境的塔建

    有些人想利用chroot来提高系统的安全性,但chroot后的目录也需要一个linux/unix的环境,最直接的方法就是copy整个系统到chroot后的目录,但这样很容易copy大量不需要的东西,而 ...

  9. mysql日志输出到syslog_在chroot环境下将MySQL日志输出到syslog

    好久没写博客了,这几个月一直在学习nodejs,angularjs,做一些前端开发,目前还是学习阶段,等有一些体会再来分享. 这两天碰到的一个问题是,我们的产品给客户后,客户要统一管理日志,MySQL ...

最新文章

  1. Algs4-1.2.12为SmartDate添加一个方法dayOfTheWeek()
  2. 已经到了快元旦,可是总是不自在
  3. tensorflow中关于vgg16的项目
  4. 高等数学上-赵立军-北京大学出版社-题解-练习5.3
  5. PHP判断文件夹是否存在和创建文件夹的方法
  6. Elasticseach 从零开始学习记录(三) - 分布式部署
  7. IP65防水步进电机可以在什么环境使用?
  8. GIS 地图制作 学习总结
  9. Python爬取网易云音乐评论
  10. 华为er路由器设置虚拟服务器,华为AR111-S路由器双线路策略路由配置笔记
  11. 《2018秋招小结》
  12. CAD图纸比例设置不同时CAD标注样式设置为相同的操作教程
  13. c语言读取无压缩的cbl的源代码,c语言基础算法案例
  14. Ubuntu下将rm命令替换为trash命令
  15. 公链求生记:我要干外包
  16. SVN 显示更早的日志
  17. Word/WPS中页码从指定的页面开始插入方法
  18. Anaconda3-2022.10下载安装运行(Win11)
  19. 在画电路图时,想问下几种地之间的区别? power-GND singal-GND GND
  20. Python量化投资——投资组合的评价和可视化(下):使用Matplotlib生成专业的投资回测数据可视化仪表盘【源码+详解】

热门文章

  1. mysql为什么总是错的_这个mysql如何总是错的
  2. 深入理解docker graph driver - DeviceMapper
  3. myibatis 报错 Could not find result map java.util.HashMap
  4. http web 返回码概念
  5. Java 读取 INI 配置文件的方法
  6. Javascript设计模式(五)代理模式
  7. DevExpress v18.1新版亮点——WPF篇(二)
  8. 快应用采坑与flex布局讲解
  9. vuex文档阅读学习1
  10. 绝对干货:供个人开发者赚钱免费使用的一些好的API接口