![如果共享对象的调用者不是其中之一,是否可以强制共享对象以 root 身份运行或使用 setuid 或 setgid?](https://linux22.com/image/193916/%E5%A6%82%E6%9E%9C%E5%85%B1%E4%BA%AB%E5%AF%B9%E8%B1%A1%E7%9A%84%E8%B0%83%E7%94%A8%E8%80%85%E4%B8%8D%E6%98%AF%E5%85%B6%E4%B8%AD%E4%B9%8B%E4%B8%80%EF%BC%8C%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%BC%BA%E5%88%B6%E5%85%B1%E4%BA%AB%E5%AF%B9%E8%B1%A1%E4%BB%A5%20root%20%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%E6%88%96%E4%BD%BF%E7%94%A8%20setuid%20%E6%88%96%20setgid%EF%BC%9F.png)
我的应用程序需要具有对 /dev/input/event* 的写访问权限。在我的 Ubuntu 系统上 /dev/input/event* 属于 root:input。如果我使用 sudo,我的应用程序运行良好,但我试图避免这种情况。因此,我将我的应用程序设置为“输入”组并使用 setgid 运行。但它是一个跨平台应用程序(GTK),可以检测并禁止这种情况。 (它的字面意思是 GTK 已检测到它正在尝试作为 setgid 或 setuid 运行,但它不会允许这样做。)但实际上是 .so 文件想要写入 /dev/input/event*。如果我可以允许这个 .so (状态良好并且不会经常更改)以 root 身份运行,我会感觉好多了。或者,如果 .so 文件必须作为 setgid 运行,则 GTK 环境可能无法检测到它。我尝试在 .so 文件上设置特殊位,但是当我运行该应用程序时,它在 /dev/input/event* 上存在相同的权限问题。