以root权限创建一个CLI应用程序
问题描述:
我正在开发一个php应用程序,它用作一个seever端应用程序的GUI。由于应用程序的性质,它需要运行需要root权限的exec命令。 (比如重新启动服务)。我可以通过给nginx sudo访问特定的命令来解决它。但是它仍然需要一些使用CLI很容易实现的功能。以root权限创建一个CLI应用程序
现在我面临的问题是以php为参数,以root身份启动此应用程序。这是我启动我的应用程序,
path/application - e "command I want"
的Web应用程序将只有一个安装在服务器上(有点像一个控制面板)。我应该专注于提供服务而不是应用程序吗?如果我做了一项服务,我将如何让php联系它?我在过去使用.NET和C++开发了Windows应用程序。
我确实看过dotnet core来制作Linux服务,但我不认为这将是我所需要的。我能有什么建议吗?我需要的应用程序都是root访问,可能没有sudo。
答
该应用程序可以是一个setuid根应用程序吗?请测试它的安全性做之前,所以
chown root /path/to/binary
chmod u+s /path/to/binary
好,如果这可以作为根用户身份执行应用程序的话,我只会让命令的应用程序中的白名单(具体的命令),所以只有他们才能运行。我对Linux没有太多的知识,所以我会尝试这种方法并让你知道。 – kks21199
此方法有效。你也可以在C++的main函数中设置'setuid(0)'。虽然它没有在我的情况下工作。我使用可以通过参数访问的硬编码命令编写了我的C++应用程序..这样应用程序就不会造成太大的损害。唯一的缺点是,当需要新功能时,应用程序将需要更新。 – kks21199