Java包装器脚本w / sudo无法正常工作

时间:2012-02-16 19:52:53

标签: java linux sudo

我有一个Java可执行文件,它接受命令行参数以在我的Linux机器上启动root保护的应用程序。我们有单独的用户帐户,这些帐户具有sudo访问权限,可以启动单个Java可执行文件,然后用户可以使用该帐户启动受根保护的应用程序。我对sudo的理解是,用户在单个调用期间以及之后的任何后续调用(即Java执行程序对应用程序的调用)中假定根“角色”。它适用于我的大多数应用程序,但只适用于其他应用程序。特别是有时启动的外部应用程序无法正常运行,并且似乎输出无法打开文件的错误(所有人都可以读取)。如果我以root身份运行可执行文件,可执行文件和后续应用程序都运行良好,所以我知道它有一些事情可以做sudo。

如果有必要,我可以提供更多详细信息,但是看看是否有人知道sudo是否会更改我不知道的环境或运行时问题。

更新:

配置文件位于可读目录中。为了测试肯定我创建了Java exec试图启动的二进制文件,可供所有人访问。从我的测试人员帐户,我然后启动Java exec(没有sudo),应用程序运行正常。然后我只对二进制文件进行root保护,并使用sudo运行Java exec并且应用程序启动失败并给出一个错误,如:

“录音机:无法打开edtrecorder.cfg”

所有人都可以读取该文件及其所在的目录。

1 个答案:

答案 0 :(得分:1)

在某些发行版(例如ubuntu)上,sudo使用受限环境(具有不同的搜索路径)运行程序到运行该命令的用户shell。这是一个安全功能;例如,程序可能已经更改了PATH,以便在用户键入命令时运行流氓程序而不是真实程序 - 这在sudo下将是灾难性的。 见sudo changes PATH - why?