2011-02-02 16 views
0

chroot環境でファイルにデータを書き込もうとしています。私はroot以外のユーザーですから、chrootと通信できるのは、schrootコマンドを使用している場合だけです。chroot環境にファイルを書き込む

現在、私は以下のトリックを使用してデータを書き込みます。

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

しかし、私はテキストはいくつかの特殊文字が含まれている場合、これは私の悲しみの多くを与えると確信して、chroot環境に$テキストを送信するより良い方法をいただきましたのでなどを引用しています。おそらく私はPythonスクリプトを通して上記のコマンドを使用しています。もっと簡単な方法はありますか?

答えて

1

ちょっとハック、しかし...

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) 

をfile.txtにそのコピー

だから、特権はあなたが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 
+0

私はそれを考えました。しかし私は特権のないユーザーです。 – Neo

+0

スーパー回答これはまさに私が探していたもの、パイプ工法のようなものです。ありがとうございました。 – Neo

0

ファイルに$テキストを書くためのpythonを使用することができます(のpythonを書くための権利を持っている)、
は、そのファイルが

+0

親環境からChrootにファイルをコピーするにはどうすればよいですか?私は特権を持っていないユーザーです。これは、schrootの使用の全ポイントです。 – Neo

関連する問題