gpt4 book ai didi

linux - 以不同的用户身份运行特定的 java 程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:00 27 4
gpt4 key购买 nike

我们正在做一些测试,需要以 root 以外的用户身份运行 java 程序。这是在 CentOS 6.5 机器上。 with java 8. 脚本调用并执行java程序。我在那个脚本上做了以下操作,但没有任何运气。

chown user:user script
chmod 06755 script

这仍然以 root 身份运行该进程。下面是调用java程序和生成流程的脚本部分。让它以用户而不是 root 身份运行的最佳方法是什么。

#SHOWCLASSES="-verbose:class"
SHOWCLASSES=

exec /opt/jdk32/bin/java $SHOWCLASSES -Xms80M -Xmx120M com.integra.linkage.ProgramDirector "$@"

当我尝试使用此修改运行脚本时,出现以下错误

su -c "exec /opt/jdk32/bin/java $SHOWCLASSES -Xms80M -Xmx120M com.integra.linkage.ProgramDirector "$@"" -s /bin/sh esadmin

ProgramDirector: No operational mode chosen.
Usage: ProgramDirector [-wsdl programname ...]
-wsdl - Generate a WSDL file
programname - The name of one or more program classes

-mcs - Connect to MCS and wait for messages.

最佳答案

摘自 how to run script as another user without password

尝试使用:

su -c "Your command right here" -s /bin/sh username

只是更改文件的所有权不会导致它以该用户身份运行,您只是说谁可以运行它(root 可以运行一切)。您需要以另一个用户身份执行命令。

作为对您更新的回应,让我们看看为什么它没有接收您传入的参数:

su -c "exec /opt/jdk32/bin/java $SHOWCLASSES -Xms80M -Xmx120M com.integra.linkage.ProgramDirector "$@"" -s /bin/sh esadmin

我将去掉多余的内容以引起您对此处重要内容的注意:

su -c "exec ... "$@"" -s /bin/sh esadmin

您有四组未转义的双引号!这肯定会导致一些问题。相反,您可以避免转义内部引号,简单地使用单引号传递命令并重试:

su -c 'exec /opt/jdk32/bin/java $SHOWCLASSES -Xms80M -Xmx120M com.integra.linkage.ProgramDirector "$@"' -s /bin/sh esadmin

关于linux - 以不同的用户身份运行特定的 java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31410035/

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