我有一个 setuid 程序,它需要重新挂载一个通常只读的磁盘,以便可以写入。也就是说,该程序想要运行命令
mount -o remount,rw /
但该mount
命令本身是 setuid,它检查是否由 root 运行时会查看真实的用户 id,因此如果从 setuid 程序运行它会失败,并显示“只有 root 可以使用重新安装选项”或类似的内容。
难道setuid程序真的没有办法运行mount
commnd吗?
答案1
就在我发布问题时,我找到了答案。一个简单的调用
setuid(geteuid())
就在exec()
of之前/bin/mount
就完成了。