Golang 退出chroot环境的方法
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环境的方法相关推荐
- 如何在 Ubuntu 14.04 里面配置 chroot 环境
如何在 Ubuntu 14.04 里面配置 chroot 环境 你可能会有很多理由想要把一个应用.一个用户或者一个环境与你的 linux 系统隔离开来.不同的操作系统有不同的实现方式,而在 linux ...
- 非root用户组启动sftp_如何在 Debian 10 中配置 Chroot 环境的 SFTP 服务 | Linux 中国
SFTP 是最常用的用于通过 ssh 将文件从本地系统安全地传输到远程服务器的方法https://linux.cn/article-12186-1.html作者:Pradeep Kumar译者:郑 S ...
- linux制作chroot环境,Linux构造chroot环境
关于chroot的简介,可以参考IBM开发者网站上的这篇理解chroot,本文演示了如何构造一个最简单的chroot环境,本文实验环境为CentOS 6.4 64bit. [root@os ~]# d ...
- 退出python命令行-在cmd命令行里进入和退出Python程序的方法
在cmd命令行里进入和退出Python程序的方法 进入: 直接输入python即可,如图所示 退出: 1:输入exit(),回车 2:输入quit(),回车 3:输入ctrl+z,回车 以上这篇在cm ...
- Hive自定义UDF的JAR包加入运行环境的方法
Hive开发udf函数打包jar文件后,需将jar文件放入hive的运行环境,方法有三. 先将http://blog.csdn.net/fjssharpsword/article/details/70 ...
- 怎样检查python环境是否安装好_如何搭建pytorch环境的方法步骤
1.conda创建虚拟环境pytorch_gpu conda create -n pytorch_gpu python=3.6 创建虚拟环境还是相对较快的,它会自动为本环境安装一些基本的库,等待时间无 ...
- mysql chroot_在chroot环境下将MySQL日志输出到syslog
好久没写博客了,这几个月一直在学习nodejs,angularjs,做一些前端开发,目前还是学习阶段,等有一些体会再来分享. 这两天碰到的一个问题是,我们的产品给客户后,客户要统一管理日志,MySQL ...
- chroot环境怎么重启linux,linux下简易chroot环境的塔建
有些人想利用chroot来提高系统的安全性,但chroot后的目录也需要一个linux/unix的环境,最直接的方法就是copy整个系统到chroot后的目录,但这样很容易copy大量不需要的东西,而 ...
- mysql日志输出到syslog_在chroot环境下将MySQL日志输出到syslog
好久没写博客了,这几个月一直在学习nodejs,angularjs,做一些前端开发,目前还是学习阶段,等有一些体会再来分享. 这两天碰到的一个问题是,我们的产品给客户后,客户要统一管理日志,MySQL ...
最新文章
- Algs4-1.2.12为SmartDate添加一个方法dayOfTheWeek()
- 已经到了快元旦,可是总是不自在
- tensorflow中关于vgg16的项目
- 高等数学上-赵立军-北京大学出版社-题解-练习5.3
- PHP判断文件夹是否存在和创建文件夹的方法
- Elasticseach 从零开始学习记录(三) - 分布式部署
- IP65防水步进电机可以在什么环境使用?
- GIS 地图制作 学习总结
- Python爬取网易云音乐评论
- 华为er路由器设置虚拟服务器,华为AR111-S路由器双线路策略路由配置笔记
- 《2018秋招小结》
- CAD图纸比例设置不同时CAD标注样式设置为相同的操作教程
- c语言读取无压缩的cbl的源代码,c语言基础算法案例
- Ubuntu下将rm命令替换为trash命令
- 公链求生记:我要干外包
- SVN 显示更早的日志
- Word/WPS中页码从指定的页面开始插入方法
- Anaconda3-2022.10下载安装运行(Win11)
- 在画电路图时,想问下几种地之间的区别? power-GND singal-GND GND
- Python量化投资——投资组合的评价和可视化(下):使用Matplotlib生成专业的投资回测数据可视化仪表盘【源码+详解】