我想编写一个代表非信任方接收和执行代码的服务器。
为了使这更安全,我希望代码作为专门为运行此代码而创建的用户运行,然后删除。
如何授予非root用户创建,模拟和删除其他用户的权限?
答案 0 :(得分:1)
也许您可以使用sudo和/ etc / sudoers向非root用户授予权限,但这种方式似乎不安全且不是线性的。 我不知道你需要什么,但也许你可以预先创建一些用户然后使用它们。
答案 1 :(得分:1)
你可以想象的唯一方法是使用一个setuid root的代理程序(即chown root my-proxy-process; chmod 47nn my-proxy-process。而setuid代理程序负责处理安全性考虑, setuid'ing到指定用户等
然而,这方面的安全问题应该相当清楚。可以限制的一种方法是确保您的非受益进程与名称组中的用户一起运行。然后用root:myprivategroup chown thet proxy命令并将其命名为4710,这样只有属于myprivategroup成员的用户才能执行它。
这可能是最安全的。主要的是确保代理进程良好且安全并锁定,以便只有相关用户才能通过组成员身份运行它。
如果您知道的任何其他限制可以应用于用户提供的进程,则代理程序可以验证该进程是否符合这些规则。请注意,虽然这可能是一个停止差距,但是对于某人制定通过测试的“坏”程序来说,它不会超出技术领域。
为了增加安全性(推荐),请使用mark4o提到的沙箱或chroot监狱。
答案 2 :(得分:0)
您需要使用某种sandboxing或virtualization;至少至少chroot个环境。另请参阅Sandboxing in Linux。
答案 3 :(得分:0)
这是一个问题,因为你不能在没有终端的情况下使用suvie脚本(可能是安全功能)。我相信你可以通过这种方式破解你的方式,但这可能是有充分理由的。