我正在尝试做安全的事情,并且有一个程序需要以root身份运行才能在不需要它时删除它的权限.如果我chmod的SUID位是二进制,并且它属于root,那么这很有效,因为现在我有UID =某个用户,而EUID = root,所以我可以使用seteuid(0)和seteuid(getuid())分别提升和删除管理员权限.
但是,如果我使用sudo而不是设置SUID,那么UID == EUID == 0,因此调用seteuid(getuid())不会有任何影响.而且我不能仅仅UID从一些随机用户那里改变一些价值,因为setuid()手册页明确指出,如果从以root身份运行的程序调用它,那么就会失去权利,没有希望让他们回来.
那么,如何让我的程序在运行时暂时失去其权限sudo?