我有一个权限为4750的进程.我的
Linux系统中存在两个用户. root用户和appz用户.该进程继承了以“appz”用户身份运行的进程管理器的权限.
我有两个基本的例程:
void do_root (void) { int status; status = seteuid (euid); if (status < 0) { exit (status); } } /* undo root permissions */ void undo_root (void) { int status; status = seteuid (ruid); if (status < 0) { exit (status); } status = setuid(ruid); if (status < 0) { exit (status); } }
我的流程如下:
int main() { undo_root(); do some stuff; do_root(); bind( port 80); //needs root perm undo_root(); while(1) { accept commads() if ( commands needs root user access) { do_root(); execute(); undo_root(); } }
如您所见,我想以root身份执行一些命令.我试图临时删除权限,如果任务需要root访问权限,我在do_root和undo_root调用之间包装命令.
然而,似乎我的程序不起作用.
做这个规范的方法是什么?