aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Freed <dwfreed@mtu.edu>2014-01-01 21:18:22 +0000
committerBrian Dolbec <dolsen@gentoo.org>2014-01-01 14:03:11 -0800
commite1dffd789f91235190b12f78edb5d1e262affb27 (patch)
treecdf803e156efb75994cdb6352095fbd41dd06301
parentmodules/generic_target.py: Pass TERM through to the chroot environment (diff)
downloadcatalyst-e1dffd789f91235190b12f78edb5d1e262affb27.tar.gz
catalyst-e1dffd789f91235190b12f78edb5d1e262affb27.tar.bz2
catalyst-e1dffd789f91235190b12f78edb5d1e262affb27.zip
Mount /dev/shm in the chroot with the right options
Bind mounting /dev/shm into the chroot isn't a good idea, as there may be collisions and result in weird side effects. Instead, we can just mount a new tmpfs there, with the right options to ensure security.
-rw-r--r--modules/generic_stage_target.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/modules/generic_stage_target.py b/modules/generic_stage_target.py
index 9edafe99..37d1fa14 100644
--- a/modules/generic_stage_target.py
+++ b/modules/generic_stage_target.py
@@ -179,13 +179,13 @@ class generic_stage_target(generic_target):
self.mountmap={"/proc":"/proc","/dev":"/dev","/dev/pts":"/dev/pts",\
"/usr/portage":self.settings["snapshot_cache_path"]+"/portage",\
"/usr/portage/distfiles":self.settings["distdir"],"/var/tmp/portage":"tmpfs",
- "/dev/shm": "/dev/shm"}
+ "/dev/shm": "shmfs"}
else:
self.mounts=["/proc", "/dev", "/usr/portage/distfiles",
"/var/tmp/portage"]
self.mountmap={"/proc":"/proc","/dev":"/dev","/dev/pts":"/dev/pts",\
"/usr/portage/distfiles":self.settings["distdir"],"/var/tmp/portage":"tmpfs",
- "/dev/shm": "/dev/shm"}
+ "/dev/shm": "shmfs"}
if os.uname()[0] == "Linux":
self.mounts.append("/dev/pts")
self.mounts.append("/dev/shm")
@@ -904,7 +904,7 @@ class generic_stage_target(generic_target):
os.makedirs(self.settings["chroot_path"]+x,0755)
if not os.path.exists(self.mountmap[x]):
- if not self.mountmap[x] == "tmpfs":
+ if self.mountmap[x] != "tmpfs" and self.mountmap[x] != "shmfs":
os.makedirs(self.mountmap[x],0755)
src=self.mountmap[x]
@@ -923,6 +923,9 @@ class generic_stage_target(generic_target):
retval=os.system("mount -t tmpfs -o size="+\
self.settings["var_tmpfs_portage"]+"G "+src+" "+\
self.settings["chroot_path"]+x)
+ elif src == "shmfs":
+ retval=os.system("mount -t tmpfs -o noexec,nosuid,nodev shm "+\
+ self.settings["chroot_path"]+x)
else:
retval=os.system("mount --bind "+src+" "+\
self.settings["chroot_path"]+x)