为什么我不能以超级用户身份执行systemctl命令?

时间:2016-11-30 16:41:54

标签: bash ubuntu kubernetes systemctl

我写了一个脚本,在ubuntu机器上下载并安装kubernetes。

脚本的最后一部分是启动kubelet服务。

<?php

    $n = 11;
    $o = $_POST["maxprime"];
    echo 'The script calculated the next primenumbers:</br>';
    echo '2, 3, 5, 7, ';
    while (true) { 
        $t = 6;
        while (true) { 
            if ($n % ($t - 1) == 0) {
                break;
            } 
            if ($n % ($t + 1) == 0) {
                break;
            }
            if ($t > sqrt($n)) {
                echo("$n,  "); 
                break;
            } 
            $t += 6; 
        }
        if (($n + 1) % 6 == 0) {
            $n += 2;
        } else {
            $n += 4;
        } 
        if ($n > $o) {
            break;
        }
    }

?>

我强迫用户以root用户身份运行脚本。但是,当脚本到达systemctl命令时,它无法执行它。此外,我尝试以root用户身份手动执行命令。我无法这样做。但是,我能够以普通用户身份执行它。 有谁知道为什么?有解决方法吗?

1 个答案:

答案 0 :(得分:0)

可能的解决方法是以普通用户身份启动服务,即使脚本以root身份运行也是如此。首先,您需要找出谁是“原始”用户:

originalUser="$(logname 2>/dev/null)"

然后以此用户身份调用服务:

su - "$originalUser" -c "systemctl start kubelet.service"

也许该特定服务依赖于非root用户运行(某些程序测试该服务)。