2013-05-31 32 views
2

我想使用PHP來顯示一些網頁上的syslog信息,以遠程監控我的主機linux盒子。 也就是說有些東西使用grep過濾掉/var/log/daemon.log從php訪問/ var/log文件

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

現在文件/var/log/daemon.log由根部和PHP用戶(www數據)所擁有無權訪問的。 所以顯然上面的返回是空的。

解決方案是什麼?

感謝, 格特

回答

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權

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