将文件写入chroot环境

时间:2011-02-02 06:27:48

标签: python linux shell chroot

我正在尝试将数据写入chroot环境中的文件。由于我是非root用户,他们只能通过chroot与chroot通信才能使用schroot命令。

目前我正在使用以下技巧来编写数据。

$ schroot -c chroot_session -r -d /tmp -- bash -c "echo \"$text\" > file.txt"

但是我确信如果文本有一些特殊的字符,引号等,这会给我带来很多的悲伤。所以最好的方法是将$ text发送给chroot。我很可能会通过python脚本使用上面的命令。有更简单的方法吗?

2 个答案:

答案 0 :(得分:1)

有点hackish,但是......

c = ConfigParser.RawConfigParser()
c.readfp(open(os.path.join('/var/lib/schroot/session', chroot_session), 'r'))
chroot_basedir = c.get(chroot_session, 'mount-location')
with open(os.path.join(chroot_basedir, '/tmp/file.txt'), 'w') as fp:
    fp.write(text)

好的,所以特权不允许你通过schroot以外的任何方法进入,是吗?

p = subprocess.Popen(['schroot', '-c', name, '-r', 'tee', '/tmp/file.txt'],
                     stdin=subprocess.PIPE,
                     stdout=open('/dev/null', 'w'),
                     stderr=sys.stderr)
p.stdin.write(text)
p.stdin.close()
rc = p.wait()
assert rc == 0

答案 1 :(得分:0)

你可以使用python将$ text写入文件(python有权写入),
然后将该文件复制到file.txt