我正在用C语言编写一个绑定到端口的程序< 1024.我希望它之后以非root权限运行。
我知道我需要调用setuid(),但是用什么参数? UID因系统而异。
答案 0 :(得分:3)
答案 1 :(得分:1)
您可以使用getpwnam()
按名称查找用户uid / gid:
#include <sys/types.h>
#include <unistd.h>
#include <pwd.h>
int changepriv(const char *user) {
struct passwd *pw;
int rv;
pw = getpwnam(user);
if (!pw)
return -1;
rv = setgid(pw->pw_gid);
if (rv == -1)
return -2;
rv = setuid(pw->pw_uid);
if (rv == -1)
return -3;
return 0;
}