gpt4 book ai didi

java - 是否可以在 unix 中以不同用户(root 用户除外)的身份运行脚本而不提示输入密码?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:54 27 4
gpt4 key购买 nike

我有一个要求,我从 java 代码运行一个 shell 脚本。我一直在使用 rsh 来以不同的用户身份运行脚本,并在成功执行脚本后将控制权交还给前一个用户。

使用的语法是:

rsh -l <username> unix cmd(script here)

现在由于某些安全原因,我只能使用 sh 来实现上述目的。

我的要求是:

  1. 不同的用户可能会运行此脚本而不是 root,并且都有权执行相同的脚本。

  2. 执行脚本的用户较多,无法从代码中获取密码发送给脚本运行成功。

  3. 执行此命令时,命令不应提示输入用户密码。

  4. 我无法使用用户名更新任何配置文件以阻止它提示密码。

我已经尝试过诸如 ssh、su、sudo 等替代方法,但都没有用。

请提出一些可以满足上述所有条件的替代方案。

最佳答案

您可以通过设置来使用名为 setuid 的 *NIX 功能

chmod +s your_file

您可以在 Jonathan Leffler 关于 A usage of setuid? 的回答中找到很好的解释。 .

要检查脚本是否由 root 执行,您可以检查 $EUID,它包含执行脚本的用户的 ID。如果为 0,则表示 root(以及其他具有 root 权限的用户)。

if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi

来自 How to: Check the bash shell script is being run by root or not

关于java - 是否可以在 unix 中以不同用户(root 用户除外)的身份运行脚本而不提示输入密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15806947/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com