我正在编写一个网站 GUI 来管理运行 CentOS 的数据服务器设备。很多电器都是这样做的。供应商基本上构建了仅用于更改某些配置参数的 GUI,并锁定了其他所有内容。但我很确定我遇到了权限问题,我正在寻找最安全的方法来做到这一点。即,当用户通过 GUI 提交主机名更改时,shell_exec 命令似乎作为 apache 运行。Apache 可能无权更改主机名,这就是为什么这不起作用。授予 Apache 这些权限可能是不安全的,对吗?那么解决方案是什么?所有设备供应商如何能够编写更改主机名的 GUI,他们是如何(安全地)做到这一点的?
代码摘录:
<form action="Settings.php" method="get">
<div class="box">
<h1>Device Settings</h1>
Hostname: <input type="text" name="Hostname" label="Hostname" value="<?php echo $Hostname; ?>"><br />
<input type="submit" value="Set"><br />
</div>
</form>
$Hostname=shell_exec("hostname"); /*gethostname**/
if (isset($_GET['Hostname'])){
$Hostname=$_GET['Hostname'];
$output1=shell_exec("sudo hostname ". $Hostname. " 2>&1");*/
}