linux上使用su的Java交换机用户

linux上使用su的Java交换机用户,java,linux,su,Java,Linux,Su,我正在编写一个java程序dor Oracle EBS,该程序需要切换用户,因为在不同于applmgr的用户上定义了特定权限。 我们采用的方法是使用一个java类,该类将在单独的会话上切换用户,然后从新用户可以访问的文件夹中列出文件 有什么选择吗 到目前为止,我可以创建两个shell脚本文件,然后运行这些shell脚本,一个将存储环境变量,另一个将实际切换用户并列出文件 感谢您的帮助。您可以更改该文件的组权限。您可以启动一个System.process(“su user&&cat文件”);您可以

我正在编写一个java程序dor Oracle EBS,该程序需要切换用户,因为在不同于applmgr的用户上定义了特定权限。 我们采用的方法是使用一个java类,该类将在单独的会话上切换用户,然后从新用户可以访问的文件夹中列出文件

有什么选择吗

到目前为止,我可以创建两个shell脚本文件,然后运行这些shell脚本,一个将存储环境变量,另一个将实际切换用户并列出文件


感谢您的帮助。

您可以更改该文件的组权限。您可以启动一个System.process(“su user&&cat文件”);您可以让另一个用户使用cronjob将文件复制给您…

您可以尝试让Java在系统上启动一个本地命令,然后作为该命令的一部分启动另一个程序(远不是非常干净,但可能会工作)

有关启动本地命令的示例,请查看此类文件:

您应该能够使用-我希望有一个直接在Java中提供的版本,但除此之外,制作您自己的JNI代码来实现这一点应该不难


但是,运行切换用户(例如使用
su
sudo
)然后运行所需Java代码的命令可能更简单

为什么不从一开始就以适当的用户身份运行程序?不确定这是否可行。一旦程序启动,它将拥有该用户的权限…您的shell脚本基本上会提升您的权限,然后使用这些提升的权限启动您的程序。因此java仍然不是提供su的媒介