我想拥有不同的坐骑,只有特定的过程或用户才能看到。 我正在考虑的一个用例是,当我想要挂载一个unionfs或aufs时,可以为一个用户使用。 所以我可以在同一个挂载点上为不同的用户安装多个挂载点。
以下是如何使用pam_namespace在Ubuntu 12.10中启用每个用户的挂载命名空间:
编辑/etc/security/namespace.conf
取消最后一行的注释。 为了安全,请将您当前的用户添加到排除列表中。
/tmp /tmp-inst/ level root,adm,myuser /var/tmp /var/tmp/tmp-inst/ level root,adm,myuser
编辑/etc/security/namespace.init并将#!/bin/sh -p更改为#!/bin/bash --noprofile或#!/bin/sh这是因为sh实际上是dash 。
要testing编辑/etc/pam.d/su并在文件末尾追加:
session required pam_namespace.so
在testing用户上testing:
su - testuser
作为testing用户运行:
echo diff '<(sort /proc/'$$'/mounts) <(sort /proc/mounts)'
这将生成一个命令,如:
diff <(sort /proc/31987/mounts) <(sort /proc/mounts)
从testing用户shell和root运行生成的diff。 从testing用户你将没有输出,但从根本上你会看到像这样的东西:
4,7d3 < /dev/sda1 /tmp ext4 rw,relatime,errors=remount-ro,data=ordered 0 0 < /dev/sda1 /tmp/tmp-inst ext4 rw,relatime,errors=remount-ro,data=ordered 0 0 < /dev/sda1 /var/tmp ext4 rw,relatime,errors=remount-ro,data=ordered 0 0 < /dev/sda1 /var/tmp/tmp-inst ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
test_user /tmp文件夹将被映射为/tmp/tmp-inst/test_user ,只有该用户才能访问它。
为什么不只是在〜/ specificmountpoint上挂载。 相应地设置权限。 每个用户都会有相同的(差不多)分割点。
看起来像现在这是可能的:
至less在理论上。 检查这篇文章的更多细节: http : //lwn.net/Articles/531114/