注意超级权限位的设置,一般linux的可执行程序是755,比如cat。
passwd的s位设置了之后,相当于root用户对others用户暴露的接口,其他用户可以访问passwd文件,获取root在passwd的u位的权限,进而读写执行所有root的u位拥有的文件,所以这类Suid设置的要求是u+s, o+x, 如果出现SUID和SGID,则以SUID为优先。
如下例子所示:
#include <stdio.h>
int main(void)
{
FILE *fpt;
char text[1000];
fpt=fopen("test.txt","r");
fscanf(fpt,"%s",text);
printf("%s\n",text);
fclose(fpt);
return 0;
}
因此test.out在普通用户下可以访问root属主的test.txt文件。