2016-02-09 80 views
0

我試圖創建一個用戶,並添加通過PHP腳本(在同一臺服務器上運行)到用戶的crontab條目(系統上的任何用戶)所謂的bash腳本調用一個bash的crontab腳本。編輯用戶通過通過PHP

我已經解決了有關創建用戶的問題,該工程確定,但在bash腳本中的最後一行添加到新用戶的crontab時通過PH腳本調用不工作的條目。我已經確認它在本地運行時可以正常工作。

我有以下的PHP腳本:

<?php 
//system("whoami"); 
chdir('/var/www/html/sandpit/users/'); 
$user = "test2"; 
$user=escapeshellarg($user); 
$output = shell_exec("./create_user.sh $user"); 
echo "<pre>$output</pre>"; 
//echo "<br>ends"; 
?> 

而且create_user.sh的內容是:

#!/bin/bash 
export user=$1 
sudo /usr/sbin/useradd $user -M 
sudo echo "0 1 * * * /root/test.sh" | tee -a /var/spool/cron/crontabs/test2 

在最後一行我已經硬編碼的變量轉化爲實際的名稱「test2的」一次處理一個問題,但我知道$ user包含'test2',因爲它正確地創建了用戶。

我已經添加了這些行到/ etc/sudoers文件:

www-data ALL=(ALL:ALL) ALL 
www-data ALL=(ALL) NOPASSWD: ALL 

所以我的問題是,爲什麼最後一行來編輯用戶的crontab工作時,本地運行(作爲root),但調用時不運行通過腳本?我認爲這是一個權限問題,因爲我知道命令行在手動運行時能夠正常工作。

任何幫助,將不勝感激。謝謝。

+0

你需要sudo才能用於回聲。 tee不以root權限執行。 –

+0

@GerdK謝謝你,先生,這工作完美。請標記爲我接受的答案 – omega1

回答

1

您需要使用sudo才能進行回聲。 tee不以root權限執行。