用户不允许使用crontab

问题描述 投票:0回答:3

我想每天编辑 cron 选项卡来删除/添加一些作业..所以我添加了 cron 作业(辅助作业)来运行 php 脚本来处理这些编辑。

当我通过浏览器运行此脚本时工作正常..但是当它使用未运行的帮助程序作业运行时,我收到来自 cpanel 的通知邮件,其中包含此错误:

请注意,我与 C-Panel 共享托管计划,因此我没有 root 访问权限..但从浏览器运行时代码工作正常。

错误:

You (dcfn35c8st1b) are not allowed to use this program (crontab)
See crontab(1) for more information
You (dcfn35c8st1b) are not allowed to use this program (crontab)
See crontab(1) for more information
You (dcfn35c8st1b) are not allowed to use this program (crontab)
See crontab(1) for more information
You (dcfn35c8st1b) are not allowed to use this program (crontab)
See crontab(1) for more information
You (dcfn35c8st1b) are not allowed to use this program (crontab)
See crontab(1) for more information

PHP 脚本:

exec('crontab -l', $crontab);
$record_found = false;
foreach($crontab as $key => $value){
    if(strpos($value, 'record_extra.php') !== false){
        //echo $key . ' ' . $value . '<br>';
        unset($crontab[$key]);
        $record_found = true;
    }
        if(strpos($value, 'record.php') !== false){
        //echo $key . ' ' . $value . '<br>';
        unset($crontab[$key]);
    }
}
if($record_found){
    file_put_contents('/tmp/crontab.txt', arrayToString($crontab) . $firstJob.PHP_EOL);
    if(exec('crontab /tmp/crontab.txt')){
        //echo 'success <br>'; 
    } else {
        //echo 'error <br>'; 
    }
    $output = shell_exec('crontab -l');
    file_put_contents('/tmp/crontab.txt', $output . $secondJob.PHP_EOL);
    if(exec('crontab /tmp/crontab.txt')){
        //echo 'success <br>'; 
    } else {
        //echo 'error <br>'; 
    }
} else {
    $output = shell_exec('crontab -l');
    file_put_contents('/tmp/crontab.txt', $output . $firstJob.PHP_EOL);
    if(exec('crontab /tmp/crontab.txt')){
        //echo 'success <br>'; 
    } else {
        //echo 'error <br>'; 
    }
    $output = shell_exec('crontab -l');
    file_put_contents('/tmp/crontab.txt', $output . $secondJob.PHP_EOL);
    if(exec('crontab /tmp/crontab.txt')){
        //echo 'success <br>'; 
    } else {
        //echo 'error <br>'; 
    }
}

需要你的帮助。 预先感谢。

php cron cron-task
3个回答
3
投票

似乎不允许用户运行 crontab。查看文件“/etc/cron.allow”和“/etc/cron.deny”。如果 cron.allow 存在,则只有该列表中的用户才能使用 crontab。 cron.deny 中的用户,无法使用。如果两者都不存在,则只有 root 用户可以使用 crontab。


0
投票

我查看了许多“无法运行 crontab”帖子,但没有一个能解决我的问题。我想报告我独特的解决方案。

我的服务提供商将我的系统复制到另一个地方,显然他们实际上使用了“cp”命令来执行此操作,这意味着没有保留 setuid 位。 /usr/bin/crontab 是我必须恢复 setuid 位的几个文件之一。

如果没有设置 setuid 位,则无法运行 crontab。


0
投票

以下可以修复

You (dcfn35c8st1b) are not allowed to use this program (crontab) 
中的
redhat 9

echo dcfn35c8st1b > /etc/cron.allow

© www.soinside.com 2019 - 2024. All rights reserved.