当有人描述如何挂载 tmpfs 或 ramfs 时,我经常在网上看到这两个选项。通常也使用 noexec,但我对 nodev 和 nosuid 特别感兴趣。我基本上讨厌只是盲目地重复某人的建议,而没有真正的理解。而且由于我只在网上看到有关此的复制/粘贴说明,所以我在这里问。
这来自文档:
nodev - 不要解释文件系统上的块特殊设备。
nosuid - 阻止 suid 和 sgid 位的操作。
但我想要一个实际的解释,如果我把这两个排除在外会发生什么。假设我已经配置了系统上特定(非 root)用户可以访问(读+写)的 tmpfs 或 ramfs(没有设置这两个提到的选项)。该用户可以做什么来损害系统?排除ramfs情况下消耗所有可用系统内存的情况
您不必盲目地遵循这一硬性规则。但更多以安全为重点的情况的原因如下。
nodev
mount 选项指定文件系统不能包含特殊设备:这是一种安全预防措施。您不希望像这样的用户世界可访问的文件系统具有创建字符设备或访问随机设备硬件的潜力。mount 选项指定文件系统
nosuid
不能包含 set userid 文件。在全球可写文件系统上防止setuid
二进制文件是有道理的,因为那里存在根升级或其他可怕的风险。对于它的价值,我不经常使用这些参数……只在有其他合规性考虑的面向公众的系统上使用。