通过PHP/Perl脚本运行命令作为Linux上的特权用户

jtd*_*jtd 7 php linux apache perl cgi

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

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

还有其他一些事情......

我基本上都在寻找最安全的方法.我听说过setuid方法,sudo方法,当然还有httpd作为特权用户运行.在执行任何命令之前,将对输入的数据进行完整性检查(即,仅用户名中的字母数字字符)

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

tim*_*dev 5

我会建立一个Web绑定脚本可以写入的队列.

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

这样,唯一可以运行特权的代码就是您的小工作脚本,并且您不需要为Web绑定脚本提供任何路径来获得必要但危险的特权.