我最近收到了一个项目,我想知道如何以正确和安全的方式做某事。
情况如下:
有管理linux用户,mysql用户和数据库以及apache虚拟主机的类。它们习惯于在小型共享托管环境中自动添加用户。然后在命令行脚本中使用这些类为系统管理员提供一个很好的界面。
我现在被要求构建一个简单的Web界面,为管理员提供GUI,然后直接向用户提供一些功能(更改其unix密码和其他日常过程)。
我不知道如何实现Web应用程序。它将在Apache(使用apache用户)中运行,但类需要访问只有root用户可以执行必要更改的文件和命令(例如useradd和虚拟主机配置文件)。使用命令行脚本时,它不是问题,因为它们在正确的用户下运行。授予apache用户权限可能会很危险。
通过Web应用程序允许此操作的最佳技术是什么?我想尽可能直接使用这些类(比调用外部进程和解析输出这样的命令行脚本更方便)但是我看不出如何以安全的方式执行此操作。
我看到现有产品做类似的事情(webmin,eBox,...),但我不知道它是如何工作的。
PS:我收到的课程很简单,但编程非常糟糕,几乎没有评论。它们实际上是在PHP中,但我打算将它们移植到python中。然后我想使用Django框架来构建Web管理界面。如果问题不够清楚,请表示歉意。
编辑:我读了一下关于webmin的内容,发现它使用了自己的迷你网络服务器(名为miniserv.pl)。这似乎是一个很好的解决方案。然后,运行此服务器的用户应具有修改文件和使用命令的权限。我怎么能和Django做类似的事情?使用开发服务器?使用像CherryPy这样的东西会更好吗?答案 0 :(得分:0)
您可以使用sudo仅为您的Web应用程序所需的命令/脚本授予apache用户root权限。
答案 1 :(得分:0)
您好 您可以使用符合WSGI标准的Web框架(如CherryPy2)和模板引擎(如Genshi)轻松地在Python中创建Web应用程序。您可以使用“子进程”模块来管理外部命令......