【问题标题】:Editing a users crontab via bash script called via PHP通过 PHP 调用的 bash 脚本编辑用户 crontab
【发布时间】:2016-02-09 17:13:13
【问题描述】:

我正在尝试通过调用 bash 脚本的 PHP 脚本(在同一台服务器上运行)创建一个用户并向用户 crontab(系统上的任何用户)添加一个条目。

我已经解决了创建用户的问题,这工作正常,但是通过 PH 脚本调用时,bash 脚本中用于向该新用户添加条目的最后一行 crontab 不起作用。我已经确认它在本地运行时确实有效。

我有以下 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 而不是 echo。 tee 不是以 root 权限执行的。
  • @GerdK 谢谢您,先生,这非常有效。请标记为我接受的答案

标签: php bash crontab


【解决方案1】:

对于 tee 而不是 echo,您需要 sudo。 tee 不是以 root 权限执行的。

【讨论】:

    猜你喜欢
    • 2014-08-29
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2012-06-10
    • 2021-10-28
    相关资源
    最近更新 更多