首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sudo通过PHP执行shell命令

使用sudo通过PHP执行shell命令
EN

Stack Overflow用户
提问于 2013-07-26 13:54:10
回答 1查看 2.1K关注 0票数 1

到目前为止,我的搜索已经显示了在尝试从PHP内部执行sudo命令时可能会出现的安全漏洞。

我当前的问题是,我需要通过PHP的exec()函数在我的工作web服务器上作为sudo运行bash脚本。我们目前托管的网站略少于200个。将这样做的网站仅限于从我办公室的IP地址访问。这会消除任何可用的解决方案带来的潜在安全问题吗?

其中一种方法是将apache用户添加到sudoers文件中,我假设这将适用于整个服务器,因此仍然会在所有其他网站上造成问题。

是否有任何解决方案,不构成安全威胁时,使用在一个网站,可以访问我们的办公室?

提前谢谢。

编辑:一个简单的背景

以下是对我所要达到的目标的简要描述。我工作的公司开发旅游相关业务的网站等等。在创建一个新网站时,我需要设置一个托管包,其中包括:为新站点创建目录结构,创建一个包含在httpd.conf中的apache文件,添加一个新的FTP用户,创建一个新的数据库以便与CMS一起使用,举几个例子。

目前,服务器上有一个bash脚本,它创建目录结构、添加用户、创建apache配置文件并优雅地重新启动apache。这只是其中一部分,我想要做的是在PHP脚本中使用这个shell脚本,以一种简单易用的方式自动化整个网站生成过程,对于其他同事和一般的效率。

EN

回答 1

Stack Overflow用户

发布于 2013-07-26 14:02:30

你至少有4种选择:

  1. 将apache用户添加到sudoers文件(并限制它运行一个命令!) !
    • 在本例中,php中的一些安全漏洞--应用程序也可能运行脚本(例如,如果它们可以包括调用php--或者甚至通过使用另一个也调用脚本的url mod_rewrite来绕过对ip的限制)。

  1. s位标记脚本
    • 危险,别这么做。

  1. 运行另一个仅绑定到本地接口且无法从外部访问的web服务器。
    • 这是我更喜欢的解决方案,因为调用php的链接可以通过主the服务器的链接访问,并且安全性可以单独处理。您甚至可以为此服务器创建一个新用户。一些简单的服务器完成了这项工作,例如python和perl有服务器模块。甚至没有必要在php安装中启用exec!

  1. 运行一个守护进程(例如,inotify来监视文件事件)或cron作业,它读取一些文件或db-条目,然后运行命令。
    • 这可能太复杂,而且有一个缺点,即守护进程无法检查哪个脚本生成了条目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17883218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档