通过Web界面修改系统配置文件并使用系统命令

3 投票
2 回答
512 浏览
提问于 2025-04-16 09:54

我最近接到一个项目,想知道怎么做才能既正确又安全。

情况是这样的:

有一些类用来管理Linux用户、MySQL用户、数据库和Apache虚拟主机。这些类的目的是为了在一个小型共享主机环境中自动添加用户。这些类会在命令行脚本中使用,为系统管理员提供一个友好的界面。

现在我被要求建立一个简单的网页界面,给管理员提供一个图形化的操作界面,并且还要给用户提供一些功能,比如更改他们的Unix密码和其他日常操作。

我不知道该怎么实现这个网页应用。它会在Apache上运行(用Apache用户),但是这些类需要访问一些只有根用户才能使用的文件和命令,以进行必要的更改(比如添加用户和虚拟主机配置文件)。在命令行脚本中运行时,这不是问题,因为它们是在正确的用户下运行的。如果给Apache用户权限,可能会很危险。

那么通过这个网页应用,最好的方法是什么呢?如果可以的话,我想直接使用这些类(这样比调用命令行脚本作为外部进程并解析输出要方便),但我不知道怎么做到这一点才能保证安全。

我看到有一些现成的产品做类似的事情(比如webmin、eBox等),但我不知道它们是怎么工作的。

附注:我收到的这些类很简单,但编写得很糟糕,几乎没有注释。它们实际上是用PHP写的,但我打算把它们移植到Python。然后我想用Django框架来构建网页管理界面。

谢谢,如果问题不够清楚我很抱歉。

编辑:我稍微了解了一下webmin,发现它使用了自己的迷你网页服务器(叫做miniserv.pl)。这似乎是个不错的解决方案。运行这个服务器的用户应该有权限修改文件和使用命令。我该如何用Django做类似的事情?使用开发服务器吗?还是用CherryPy会更好?

2 个回答

0

你可以用sudo这个命令来给apache用户一些特殊权限,让它只在你需要的命令或脚本上拥有管理员权限,这样可以更安全地运行你的网页应用。

0

你好!
你可以使用符合WSGI标准的网络框架,比如CherryPy2,轻松地在Python中创建网页应用。同时,你还可以使用像Genshi这样的模板引擎来帮助你处理网页的布局和内容。此外,你可以利用' subprocess'模块来管理外部命令的执行...

撰写回答