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),但調用時不運行通過腳本?我認爲這是一個權限問題,因爲我知道命令行在手動運行時能夠正常工作。
任何幫助,將不勝感激。謝謝。
你需要sudo才能用於回聲。 tee不以root權限執行。 –
@GerdK謝謝你,先生,這工作完美。請標記爲我接受的答案 – omega1