我想用PHP在网页上显示一些syslog信息来远程监控我的家庭linux盒子。 即从/var/log/daemon.log
中用grep过滤的一些东西<?php
$output = `grep ddclient /var/log/daemon.log`;
echo "<pre>$output</pre>";
?>
现在文件/var/log/daemon.log由root拥有,PHP用户(www-data)无法访问。 显然,上面的内容会返回空白。
解决方案是什么?
谢谢, 格特
答案 0 :(得分:2)
这是Puggan Se的setuid解决方案的变体,但恕我直言更好。
创建一个grep_ddclient.sh
shell脚本,其中包含:
#!/bin/sh
grep ddclient /var/log/daemon.log
然后将以下内容添加到/etc/sudoers
:
apache ALL=NOPASSWD: /path/to/grep_ddclient.sh
然后从PHP运行sudo /path/to/grep_ddclient.sh
答案 1 :(得分:1)
替代1: 更改文件/var/log/daemon.log的读访问权限,以便apache可以读取它。
替补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