我正在查看 Quake II 源代码,发现它们阻止用户以root
运行游戏:
/* Prevent running Quake II as root. Only very mad
minded or stupid people even think about it. :) */
if (getuid() == 0)
{
printf("Quake II shouldn't be run as root! Backing out to save your ass. If\n");
printf("you really know what you're doing, edit src/unix/main.c and remove\n");
printf("this check. But don't complain if Quake II eats your dog afterwards!\n");
return 1;
}
在 Quake II 中这样做的具体原因是什么?
我怀疑他们有没有想到过任何非常具体的代码。很可能只是所有的软件都有错误,以根权限运行软件会使错误更加危险。
但是导致问题的一个很好的候选人是用于创建 mod 的 QuakeC 语言。特别是因为这些 mod 是由用户制作的,并且不受 Id Softwares 的控制。此外,它是一个具有服务器和客户端的网络应用程序。这本身绝对是足够的理由。
因此,原因很可能是 99 % 的以 root 身份开始游戏的人都是错误的,通常没有任何理由以 root 身份运行游戏。
我真的很喜欢这个。我非常喜欢它,我正在考虑在几乎所有未来的代码中使用这个简单的检查。
编辑:
我想举一个例子是个好主意。有很多情况下,以 root 身份执行东西可能会变坏,但是想象一下,程序或游戏在/tmp/mygame
中存储了一些临时文件,退出时,程序执行类似于rm -rf /tmp/mygame
的内容。现在想象一下,'t'
字符由于任何原因(缓冲区溢出,位翻转,某些程序员“测试字符串”)而损坏。
现在,它将执行rm -rf /
,而不是执行rm -rf /tmp/mygame
。
是的,我确实知道您需要添加--no-preserve-root
才能使这个特定的示例造成任何损坏,但这不是重点。重点是,如果存在使用 root 访问执行程序可能造成损坏的风险,并且不需要使用 root 访问执行程序来执行它应该做的事情,那么明智的做法是完全阻止它以 root 身份执行。它只是增加了一层额外的安全性。
另一个例子是程序可能感染了病毒,如果是这样的话,你肯定不想以 root 身份执行它。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(43条)