背景:我正在为一家允许用户通过网络界面创建 FTP 帐户的公司编写脚本。在后台,脚本必须运行一堆命令:
- 将用户添加到系统(useradd)
- 打开和编辑各种文件
- 通过sendmail给用户发邮件
还有一些其他的东西......
我基本上是在寻找最安全的方式来做到这一点。我听说过 setuid 方法、sudo 方法,当然还有以特权用户身份运行 httpd。当然,在执行任何命令之前,将对输入的数据进行完整性检查(即用户名中只有字母数字字符)
那里流行的脚本(例如 webmin)使用什么方法,因为它必须相当安全?
最佳答案
我会设置一个队列,网络绑定(bind)脚本可以写入该队列。
然后我会从该队列中读取一些特权进程并采取适当的操作。您可以通过 cron 作业驱动命令行脚本,或者用 PHP 编写一个小守护程序来检查队列并比 cron 允许的更频繁地执行工作。
这样,唯一可以特权运行的代码就是你的小工作脚本,你不需要为网络绑定(bind)脚本提供任何路径来获得必要但危险的特权。
关于php - 在 Linux 上以特权用户身份通过 PHP/Perl 脚本运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2822528/