blob: aa0aeb89a626c043edc452074cd23fa962afee00 [file] [log] [blame]
# Copyright 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os
import subprocess
import sys
import tempfile
# Parent passes base path as first argument.
child_path = os.path.join(sys.argv[1], "mountns-enter-child.py")
# Mount tmpfs.
tmpdir = tempfile.mkdtemp(prefix="newns-", dir="/tmp")
ret = subprocess.check_call(["mount", "tmpfs", tmpdir, "-t", "tmpfs"])
test_file = os.path.join(tmpdir, "test")
with open(test_file, "w") as t:
print >> t, "test"
# Exec child and enter existing mount namespace.
ret = subprocess.call(["/sbin/minijail0", "-V", "/proc/1/ns/mnt", "--",
sys.executable, child_path, test_file])
# Clean up.
subprocess.check_call("umount %s" % tmpdir, shell=True)
os.rmdir(tmpdir)
# Return child's exit status.
sys.exit(ret)