2012-04-03 77 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