使/ home / tmp noexec nodev没有单独的分配

我需要改变一些根文件系统的部分挂载选项,例如/ tmp / var和/ home(添加nodev,nosuid和配额),但我没有能力做一个单独的分区,我没有足够的RAM mount / tmp作为tmpfs。 我已经尝试了mount -o bind,noexec,nodev,nosuid / tmp / tmp,但是看起来不行,因为在那之后我仍然可以从/ tmp执行文件,并在其上进行设备点选。 有没有其他的方法来做到这一点?

您可以使用bind和noexec,nodev,nosuid选项重新挂载/ tmp,但不能一步到位。 由于一些Linux内核VFS层的限制,你必须首先绑定它,然后重新安装适当的选项。

root@utemp:/# /tmp/test.sh uid=0(root) gid=0(root) groups=0(root) root@utemp:/# mount -o bind,noexec /tmp /tmp root@utemp:/# ./tmp/test.sh uid=0(root) gid=0(root) groups=0(root) root@utemp:/# umount /tmp root@utemp:/# mount -o bind /tmp /tmp root@utemp:/# mount -o remount,noexec /tmp root@utemp:/# ./tmp/test.sh bash: ./tmp/test.sh: Permission denied root@utemp:/# umount /tmp 

这很不方便 – 而不是在/ etc / fstab中的一行,你必须在系统启动时调用一些脚本,每个目录有两个mount命令。

更多信息在这个LWN文章。 在较旧的内核中,它不起作用 – 绑定挂载点始终与底层文件系统具有相同的挂载选项。