2016-02-09 81 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权限执行。