noexec 是家庭的标准设置吗?

noexec 是家庭的标准设置吗?

有人告诉我 noexec 是开发环境 /home 文件夹的标准设置。有人可以提供一些参考吗?

在 /home 上使用 noexec 会阻止 IDE、编辑器等应用程序按预期正常工作。

答案1

noexec除非在非常受限的环境中,否则作为直接的安全对策是无用的。如果您想执行文件系统中的文件noexec,您可以:

  • /lib/ld.so myfile如果它是动态链接的可执行文件,请直接使用动态链接器(例如 )运行它。
  • /bin/sh myscript如果它是脚本,请直接使用解释器运行它(例如)。
  • 将其复制到另一个允许可执行文件(例如cp myfile /tmp && /tmp/myfile)的文件系统(如果有可以写入的文件系统)。

如果您允许某人在计算机上运行程序,他们将能够在计算机上运行程序......开发商机器,你确实希望它们运行程序。不仅如此,您还希望它们运行没有人验证过的程序(因为五分钟前该程序还不存在)。

noexec作为一个稍微有用被动的安全对策,因为它确实可以防止尝试下载文件并执行它的恶意软件。当然,恶意软件可以轻松解决这个问题,但前提是恶意软件的开发人员考虑到了这一点。大多数恶意软件不受影响(特别是针对浏览器的恶意软件不受影响,因为它仅在浏览器上下文中运行)。因此,它对罕见威胁​​的保护很弱。不值得这么麻烦。

所以noexec用处/home极小。对于开发人员来说,这确实具有破坏性。例如,它破坏了很多图书馆管理程序。所以这是一个坏主意。

即使在由于用户只需要运行一些特定程序而更加锁定的系统上,这也根本不是常见的设置。

答案2

有人告诉我这noexec是开发环境的 /home 文件夹的标准设置。

这是我在其他地方从未见过的观点。

不,这没有什么“标准”。标准意味着标准化,我还没有看到 ISO 标准或 RFC 谈论任何特定于/home.

事实上,大多数 Linux 发行版甚至不(提供)分配/home为单独的分区,如果不是,那么您就不能使用任何特定的安装选项。

答案3

“这些库是在与主目录不同的驱动器/文件夹中开发和运行/测试的。”

就这样吧。这只是愚蠢和糟糕的。

noexec 的目的最初是在不受信任的媒体上设置它,这样 suid 程序就不起作用。出于同样的原因,我们还得到了nosuid和nodev。

但现在,在本世纪,人们正在将 noexec 推向一个它并非设计的目的;这是迫切需要让用户无法运行外部二进制文件(包括他们安装的二进制文件)。这在正常系统上是没有意义的,因为有足够的东西可以/usr/bin对所有内容进行哈希处理(乍一看:bochs, dd, ex, gdb, hexedit, m4, tar, 排除这样的事实:如果存在lua, node, perl, 或等正常的东西python,我不需要运行我自己的二进制文件代码);但可以成为手机等设备的实际安全防御。

然而;如果用户对任何没有 noexec 的文件系统具有写权限,它根本不起作用。管理员们正在打一场失败的战斗,同时表现出无能并在工作过程中破坏东西。

他们可能在某处将“防止运行未经批准的软件”作为复选框。让这一点深入人心;根据定义,开发人员运行未经批准的软件(他们正在开发的新更改),因此他们可以运行未经批准的软件,并且任何配置更改都无法撤消这一点。

相关内容