2

我想使用 PHP 在网页上显示一些系统日志信息,以远程监控我的家庭 linux 机器。即用grep从/var/log/daemon.log中过滤出来的一些东西

<?php
  $output = `grep ddclient /var/log/daemon.log`;
  echo "<pre>$output</pre>";
?> 

现在文件 /var/log/daemon.log 归 root 所有,PHP 用户 (www-data) 无权访问。所以很明显上面的返回是空的。

解决方案是什么?

谢谢,格特

4

2 回答 2

2

这是 Puggan Se 的 setuid 解决方案的一个变体,但恕我直言更好一些。

创建一个grep_ddclient.shshell 脚本,包含:

#!/bin/sh
grep ddclient /var/log/daemon.log

然后将以下内容添加到/etc/sudoers

apache ALL=NOPASSWD: /path/to/grep_ddclient.sh

然后sudo /path/to/grep_ddclient.sh从 PHP运行

于 2013-05-31T19:33:40.310 回答
1

Alt 1:更改文件 /var/log/daemon.log 的读取访问权限,以便 apache 可以读取它。

Alt 2:放入grep ddclient /var/log/daemon.log一个shell文件,然后激活它上面的SETUID标志,并赋予apache执行它的权利

chown root:apache grep_ddclient.sh
chmod 550 grep_ddclient.sh
chmod +s grep_ddclient.sh

然后从 php 运行 grep_ddclient.sh

于 2013-05-31T19:12:46.163 回答