2012-04-03 51 views
2

退出我可以Dir.chroot如何从chroot环境

Dir.chroot("/var/chroot/mychroot") 

的chroot但我怎么可以从chroot环境恢复回来?

+1

严正花,为什么不使用块? :-) – Reactormonk 2012-04-03 09:16:33

+1

你是什么意思? 'Dir.chroot(路径){执行}'? – fl00r 2012-04-03 09:18:49

+0

可能。 – Reactormonk 2012-04-03 09:34:56

回答

4

一个chroot的一点是,你不能出去之前,就保存当前路径。但是,如果你不chdir/var/chroot/mychroot,那么你仍然可以访问使用.外部文件系统,..

我不知道很多红宝石,但这里的Python中招:

/tmp$ sudo python 
>>> import os 
>>> os.chroot("/var") 
>>> os.listdir("/") # list our new root 
['backups', 'log', 'opt', 'cache', 'spool', 'lib', 'local', 'run', 'lock', 'games', 'mail', 'tmp'] 
>>> os.listdir(".") # list a directory outside our jail 
['.X0-lock', '.ICE-unix', '.X11-unix'] 
>>> os.listdir("..") # list the outside root 
['lost+found', 'bin', 'mnt', 'boot', 'opt', 'scratch', 'var', 'proc', 'usr', 'etc', 'lib', 'srv', 'sys', 'media', 'root', 'selinux', 'vmlinuz', 'dev', 'tmp', 'home', 'sbin'] 
+0

它是如何工作的?这是一个真正的chroot吗?或者,也许Python的chroot只是垃圾? chroot的想法是永远留在chroot中。 – Nowaker 2013-12-29 15:36:49

+0

@DamianNowak:正如我在答案中解释的,你需要将'chdir'放入'chroot'中才能生效。您还需要关闭外部目录中的文件描述符。 'chroot'不是一个神奇的子弹,它应该小心使用。 – 2013-12-30 11:00:44

+0

好的,我现在明白了。谢谢。 – Nowaker 2013-12-30 13:18:22

-2

使用Dir.chroot,使用Dir.pwd

+0

由'pwd'返回的字符串在'chroot'后面没用,因为它改变了文件名查找规则。 – 2012-04-03 10:02:46