在我的Ubuntu服务器上,我有一个应用程序MyApp ,它以自己的用户myapp作为守护程序运行。
然后,我有一个Web应用程序MyPortal ,它以用户www-data在空格httpd中运行。 此应用程序为Redeploy MyAppbutton的网页提供服务。 单击此button时,我想启动脚本redeploymyapp 。 此脚本停止MyApp deamon,升级应用程序并再次启动守护进程。
问题是, redeploymyapp脚本需要由用户myapp执行,而MyPortal则以www-dataforms运行。
什么是解决这个问题的最好方法?
configurationsudo以让www-data以myapp或root身份执行该脚本(取决于哪个脚本是首选的),然后将其作为sudo redeploymyapp执行。
它应该像下面这样简单:
www-data ALL =(myapp)NOPASSWD:redeploymyapp
通过visudo添加。 也许值得注意的是,redeploymyapp应该是完全独立的(也就是说,没有networking请求提供的参数,不使用环境variables等)
一种select是让MyPortal在按下button时将值写入数据库或文件中。 MyApp继续监视那个数据库/文件。
否则,您可以使用一些suexec魔术来确保redeploymyapp可以作为myapp用户运行。 什么suexec解决scheme是最合适的取决于你正在使用的脚本语言等
(处理PHP脚本我对suPHP有很好的经验。)
那么,正如詹姆斯所提到的那样,还有sudo路线。