我使用以下命令显示目录:
os.chroot("/mydir")如何返回到以前的目录前着色?也许这是可能的退色目录?
解决方案:
多亏了菲哈格。我找到了解决办法。简单的例子:
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)更多信息
发布于 2012-04-05 17:23:41
如果您没有更改当前的工作目录,只需调用
os.chroot('../..') # Add '../' as needed当然,这需要CAP_SYS_CHROOT功能(通常只提供给root用户)。
如果您已经更改了工作目录,则可以使用仍逃,但更难的是:
os.mkdir('tmp')
os.chroot('tmp')
os.chdir('../../') # Add '../' as needed
os.chroot('.')如果chroot更改了当前的工作目录,您可以打开该目录并使用fchdir返回。
当然,如果您打算在正常程序的过程中退出chroot (即不是演示或安全漏洞),那么您应该重新考虑您的程序。首先,你真的需要逃离色度吗?为什么你不能事先把需要的信息复制到里面呢?
另外,考虑使用保留在chroot之外的第二个进程,并回答被着色的进程的请求。
https://stackoverflow.com/questions/10033071
复制相似问题