php - 在 Linux 上以特权用户身份通过​​ PHP/Perl 脚本运行命令

标签 php linux perl cgi apache

背景:我正在为一家允许用户通过网络界面创建 FTP 帐户的公司编写脚本。在后台,脚本必须运行一堆命令:

  • 将用户添加到系统(useradd)
  • 打开和编辑各种文件
  • 通过sendmail给用户发邮件

还有一些其他的东西......

我基本上是在寻找最安全的方式来做到这一点。我听说过 setuid 方法、sudo 方法,当然还有以特权用户身份运行 httpd。当然,在执行任何命令之前,将对输入的数据进行完整性检查(即用户名中只有字母数字字符)

那里流行的脚本(例如 webmin)使用什么方法,因为它必须相当安全?

最佳答案

我会设置一个队列,网络绑定(bind)脚本可以写入该队列。

然后我会从该队列中读取一些特权进程并采取适当的操作。您可以通过 cron 作业驱动命令行脚本,或者用 PHP 编写一个小守护程序来检查队列并比 cron 允许的更频繁地执行工作。

这样,唯一可以特权运行的代码就是你的小工作脚本,你不需要为网络绑定(bind)脚本提供任何路径来获得必要但危险的特权。

关于php - 在 Linux 上以特权用户身份通过​​ PHP/Perl 脚本运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2822528/

相关文章:

php - 有没有类似Wamp Server的东西?

arrays - 包含在数字范围内的组哈希键

perl - 为什么 "print/regex/? print a : print b"将 "1"放在每行之前?

c - 在不知道其原型(prototype)的情况下在运行时动态调用 C 函数

linux - 杀死在子 shell 中运行的 tftp 命令

linux - Net::SSH::Perl 不工作但是是最新的

php - Jquery AJAX 和 PHP

PHP - 在 PHP 中检索 ajax 发布的 json 对象

php - PHP 7 中的 "Allocation of JIT memory failed, PCRE JIT will be disabled"警告

linux - while循环cp给出部分文件的副本(linux)