操作系统是Linux SuSE 2.6.16.60-0.21-smp
我有一个已配置SUID的可执行bin文件(名称为bmu),如下图
-rwsr-sr-x 1 root root 14968899 2012-03-29 10:35 bmu
而这个程序在里面调用dmidecode
。
如果是 root 运行的,操作是可以的,但dmidecode
如果程序是非 root 用户运行的,调用会返回 null。
这个问题的原因是什么以及如何解决?
编辑:从评论中添加代码和描述:
read_fp = popen("dmidecode | grep 'Product Name'", "r");
/* ...... */
chars_read = fread(buffer, sizeof(char), BUFSIZ-1, read_fp);
返回的read_fp
不是null,而是缓冲区的长度为0,应该有一些值。