3

我有一个要求,其中我从 java 代码运行 shell 脚本。为此,我一直在使用 rsh 以其他用户身份运行脚本,并在成功执行脚本后将控制权返回给前一个用户。

使用的语法是:

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

现在由于某些安全原因,我必须仅将 sh 用于上述目的。

我的要求是:

  1. 不同的用户可能会运行除 root 之外的此脚本,并且所有人都有执行相同的权限。

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

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

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

我已经经历了诸如ssh, su, sudo等之类的替代方案,但徒劳无功。

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

4

1 回答 1

3

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

如何:检查 bash shell 脚本是否由 root 运行

于 2013-04-04T09:18:01.540 回答