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