【问题标题】:sudo -u (user) cmd not working in bash scriptsudo -u(用户)cmd 在 bash 脚本中不起作用
【发布时间】:2016-11-03 14:25:48
【问题描述】:

我正在使用 bash 脚本。

此 bash 脚本必须使用 sudo -u (B) cmd 运行命令。

我使用用户 A 执行此脚本。

在我的/etc/sudoers 中,我声明了所有命令。

当我使用终端执行它时,一切都很好。

当我在 tomcat 服务器中使用 java 程序执行它时,我出错了。

我如何从我的 java 程序中执行我的脚本:

command = "/path/my-script.sh arg1"

 private String executeCommand(String command) {

        StringBuffer output = new StringBuffer();

        Process p;
        try {
            p = Runtime.getRuntime().exec(command);
            p.waitFor();
            BufferedReader reader =
                    new BufferedReader(new InputStreamReader(p.getInputStream()));

            String line = "";
            while ((line = reader.readLine())!= null) {
                output.append(line + "\n");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        return output.toString();

 }

在这两种情况下(终端或 Java 程序)我都执行这些命令:

user=$(whoami)
echo "[INFO]: user = $user"

结果:[INFO]: user = A

mkdircmd=$(sudo -u B mkdir -p $project_path)
return_mkdircmd=$?

echo "[INFO]: mkdircmd: $mkdircmd / return mkdircmd: $return_mkdircmd"

cpcmd=$(sudo -u B cp $file_path $project_path)
return_cpcmd=$?


echo "[INFO]: cpcmd: $cpcmd / return cpcmd: $return_cpcmd"

结果:

使用Tomcat服务器执行脚本

[INFO]: mkdircmd:  / return mkdircmd: 1
[INFO]: cpcmd:  / return cpcmd: 1

使用终端执行脚本 (./myscript)

[INFO]: mkdircmd:  / return mkdircmd: 0
[INFO]: cpcmd:  / return cpcmd: 0

有人可以帮我找出我的问题在哪里?

谢谢

【问题讨论】:

  • 您的 tomcat 服务器是否使用用户 ID A 运行?如果它以其他用户身份运行,您的 sudoers 文件可能不允许它执行无密码 sudo。只是一个想法。
  • 是的,确实如此,因为我正在运行 whoami 命令,结果是 A
  • 用户A 是否有在尝试呼叫sudo 时必须输入的密码?也许它在命令行上运行,因为您已经提供了密码并且它已为该会话缓存。尝试打开一个新的 shell 会话并使用 sudo 运行相同的脚本(或执行 sudo -k 并重新运行您的脚本)。

标签: bash shell tomcat sudo


【解决方案1】:

为了调试问题,将用户更改为 tomcat(假设 tomcat 正在使用 tomcat 用户运行)

sudo su - tomcat

执行命令:

sudo -u B (cmd)

调试任何错误。您可能需要使用 tomcat 将 /etc/passwd 中的 /sbin/nologin 更新为 /bin/bashsu

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 2018-01-16
    • 2012-10-16
    • 2011-03-02
    相关资源
    最近更新 更多