首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么以超级用户身份运行Quake II是愚蠢的?

为什么以超级用户身份运行Quake II是愚蠢的?
EN

Stack Overflow用户
提问于 2020-01-04 01:03:35
回答 1查看 159关注 0票数 4

我正在查看Quake II的源代码,发现它们阻止用户以root身份运行游戏

代码语言:javascript
复制
/* 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;
}

在《地震2》中这样做的具体原因是什么?

EN

回答 1

Stack Overflow用户

发布于 2020-01-04 01:08:39

我怀疑他们有没有想过任何非常具体的代码。很可能所有的软件都有bug,以root权限运行软件会使bug变得更加危险。

但是,用来创建mods的QuakeC语言是一个很好的候选方案。特别是由于这些mods是由用户制作的,并且不受Id软件的控制。同时,它也是一个包含服务器和客户端的网络应用程序。这本身就是足够的理由。

所以原因很可能很简单,99%的以root身份启动游戏的人是错误地这样做的,通常情况下,没有任何理由以root身份运行游戏。

实际上我真的很喜欢这个。我非常喜欢它,所以我正在考虑在几乎所有未来的代码中使用这个简单的检查。

编辑:

我想举个例子会是个好主意。作为根用户执行程序可能会出错的情况有很多,但是想象一下,程序或游戏在/tmp/mygame中存储了一些临时文件,在退出时,程序会执行类似于rm -rf /tmp/mygame的东西。现在假设't'字符由于任何原因(缓冲区溢出、位翻转、一些程序员“测试某件东西”而没有恢复或其他原因)而损坏,并获得值'\0'。记住,C字符串是NUL结尾的。

现在,它将执行rm -rf /,而不是执行rm -rf /tmp/mygame。如果发生这种情况,您可能希望它不是以root权限执行的。

是的,我知道您需要添加--no-preserve-root,才能使这个特定的示例造成任何破坏,但这不是重点。关键是,如果程序以root访问权限执行时存在可能导致损坏的风险,并且程序不需要以root访问权限执行来执行它应该做的事情,那么明智的做法是完全阻止它以root用户身份执行。它只是增加了一层额外的安全性。

另一个例子是程序可能感染了病毒。如果是这种情况,您肯定不想以root用户身份执行它。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59582491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档