程式使用原始套接字(raw socket)需 root 權限,但執行時無法透過 sudo 提權。

sudo gcc -o myprog myprog.csudo chmod u+s myprog一般使用者直接執行 ./myprog 即擁有 root 有效 UID,類似 ping 指令行為。
參考 ping 原始碼,建立 raw socket 後立即呼叫 setuid(getuid()) 降權,遵循最小權限原則。
「root 編譯 + SUID」兩步驟缺一不可,讓自製程式免 sudo 即具 root 權限。