通过 PHP 调用的 bash 脚本编辑用户 crontab
Editing a users crontab via bash script called via PHP
我正在尝试通过 PHP 脚本(运行ning 在同一台服务器上)创建一个用户并向用户 crontab(系统上的任何用户)添加一个条目,该脚本调用一个bash 脚本。
我已经解决了创建用户的问题,这工作正常,但是 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=
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)时有效,但在通过脚本调用时 运行 无效?我认为这是一个权限问题,因为我知道命令行可以正常工作,因为它是手动 运行s。
如有任何帮助,我们将不胜感激。谢谢。
你需要 sudo 才能发球,而不是回声。 tee 未以 root 权限执行。
我正在尝试通过 PHP 脚本(运行ning 在同一台服务器上)创建一个用户并向用户 crontab(系统上的任何用户)添加一个条目,该脚本调用一个bash 脚本。
我已经解决了创建用户的问题,这工作正常,但是 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=
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)时有效,但在通过脚本调用时 运行 无效?我认为这是一个权限问题,因为我知道命令行可以正常工作,因为它是手动 运行s。
如有任何帮助,我们将不胜感激。谢谢。
你需要 sudo 才能发球,而不是回声。 tee 未以 root 权限执行。