gpt4 book ai didi

java - 我可以使用 java 策略文件通过 sudo 安全地运行不受信任的应用程序吗

转载 作者:太空狗 更新时间:2023-10-29 12:28:16 24 4
gpt4 key购买 nike

我正在运行一个 J2SE 应用程序,该应用程序在某种程度上受信任 (Minecraft),但可能包含完全不受信任的(甚至可能是一些敌对的)插件。

我想创建一个可以访问 Raspberry PI 上的 GPIO 引脚的插件。

我见过的每个解决方案都需要为这样的应用程序提供 sudo-superpowers,因为 gpio 是通过直接内存访问来访问的。

看起来正确的解决方案是提供如下命令行选项:

-Djava.security.policy=java.policy

这似乎默认您没有权限(甚至访问文件和高级端口),然后将您的应用需要的权限添加回策略文件。

实际上,您似乎是在赋予 Java“sudo”权力,然后相信 Java 的安全模型只会将适当的权力授予各种类。我猜这会让应用程序可以安全地使用 sudo 运行——这对吗?

有趣的是,从 1.0 开始,我几乎每天都在使用 Java,而以前从来不需要它...您每天都能学到新东西。

最佳答案

[免责声明:我不太相信 Java 安全模型。]

我解决这个问题的方法是让需要访问硬件的代码作为单独的特权进程运行,然后让您的 Java 应用程序作为非特权进程运行并连接到特权进程让它代表它执行某些操作。

在特权进程中,你应该以最大的不信任来检查每个请求是否可以安全执行。如果您担心其他非特权进程也可能连接到守护进程并使其执行不应该执行的命令,您可以将其套接字设置为一个特殊组所有,并将 Java 应用程序设置为 setgid()在开始之前由一个用 C 编写的小包装器分组。

Unix 域套接字可能是最佳选择,但如果您想chroot() Java 应用程序,则可能需要 TCP/IP 套接字。

关于java - 我可以使用 java 策略文件通过 sudo 安全地运行不受信任的应用程序吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35419314/

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