python取消根目录

python取消根目录,python,directory,chroot,Python,Directory,Chroot,我使用以下命令创建目录: os.chroot("/mydir") 如何在chrooting之前返回到上一个目录? 也许可以取消根目录的锁定 解决方案: 多亏了菲哈格。我找到了解决办法。简单的例子: import os os.mkdir('/tmp/new_dir') dir1 = os.open('.', os.O_RDONLY) dir2 = os.open('/tmp/new_dir', os.O_RDONLY) os.getcwd() # we are i

我使用以下命令创建目录:

os.chroot("/mydir")
如何在chrooting之前返回到上一个目录? 也许可以取消根目录的锁定

解决方案:

多亏了菲哈格。我找到了解决办法。简单的例子:

import os
os.mkdir('/tmp/new_dir')
dir1 = os.open('.', os.O_RDONLY)
dir2 = os.open('/tmp/new_dir', os.O_RDONLY)

os.getcwd()                # we are in 'tmp'
os.chroot('/tmp/new_dir')  # chrooting 'new_dir' directory
os.fchdir(dir2)
os.getcwd()                # we are in chrooted directory, but path is '/'. It's OK.
os.fchdir(dir1)
os.getcwd()                # we came back to not chrooted 'tmp' directory

os.close(dir1)
os.close(dir2)

如果您尚未更改当前的工作目录,只需调用

os.chroot('../..') # Add '../' as needed
当然,这需要
CAP\u SYS\u CHROOT
功能(通常只提供给root)

如果您已经更改了工作目录,则可以更改,但更难的是:

os.mkdir('tmp')
os.chroot('tmp')
os.chdir('../../') # Add '../' as needed
os.chroot('.')
如果
chroot
更改了当前的工作目录,您可以通过打开目录并使用返回来绕过此问题

当然,如果您打算在正常程序过程中退出chroot(即,不是演示或安全漏洞攻击),您应该重新考虑您的程序。首先,你真的需要逃离chroot吗?为什么你不能事先把需要的信息复制到里面

也可以考虑使用第二个过程,该过程位于色度之外,并回答着色的请求。