我正在尝试做安全的事情,并且有一个程序需要以 root 身份运行以在不需要它们时放弃其权限。如果我的二进制文件带有 SUID 位,这很好chmod
用,并使其属于 root,因为现在我有 UID = 某个用户和 EUID = root,所以我可以使用seteuid(0)
和seteuid(getuid())
分别提高和删除管理员权限。
但是如果我使用sudo
而不是设置SUID,那么UID == EUID == 0,所以调用seteuid(getuid())
不会有任何效果。而且我不能只是UID
从某个随机用户那里更改为某个值,因为setuid()
手册页清楚地指出,如果它是从以 root 身份运行的程序调用的,则将永远失去特权,并且没有希望找回它们。
那么,如何让我的程序在运行时暂时失去特权sudo
?