Tag: root

为什么getpwnam()总是在函数中返回根信息?

我编写了一个简单的程序,在用户名上调用getpwnam() ,将该用户名传递给函数,然后再次调用getpwnam() 。 出于某种原因,我总是在函数内部获取root的passwd信息。 #include #include #include void printuser(char *username) { printf(“USERNAME2: %s\n”, username); struct passwd *user_info = getpwnam(username); printf(“USERNAME3: %s\n”, username); printf(“USERNAME4: %s\n”, user_info->pw_name); } int main(int argc, char *argv[]) { struct passwd *user_info = getpwnam(argv[1]); printf(“USERNAME1: %s\n”, user_info->pw_name); printuser(user_info->pw_name); printf(“USERNAME5: %s\n”, user_info->pw_name); } 该程序始终生成以下输出: $ ./test_getpwnam chenxiaolong USERNAME1: chenxiaolong USERNAME2: chenxiaolong USERNAME3: root […]

使用system()在C中执行sudo命令

我正在编写一段C代码,它将在system(“sudo ip route …”)函数调用中运行一些sudo命令。 这个调用是在主线程创建的pthread中完成的, sudo ./program在启动时用sudo ./program执行。 当我运行程序时,Ubuntu提示我输入密码给任何人: [sudo] password for nobody: 我也尝试直接做system(“ip route …”)但它给了我负面的回报意味着它没有被执行。 我应该在线程中做什么来允许system()调用使用从主程序inheritance的sudo权限?