Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

153
Vistas
¿Puedo usar un archivo de política de Java para ejecutar de forma segura una aplicación que no sea de confianza con sudo?

Estoy ejecutando una aplicación J2SE que es algo confiable (Minecraft) pero que probablemente contenga complementos completamente no confiables (y probablemente incluso algunos hostiles).

Me gustaría crear un complemento que pueda acceder a los pines GPIO en Raspberry PI.

Cada solución que he visto requiere que dicha aplicación reciba sudo-superpowers porque se accede a gpio a través del acceso directo a la memoria.

Parece que la solución correcta es proporcionar una opción de línea de comandos como esta:

 -Djava.security.policy=java.policy

que parece no tener permisos predeterminados (incluso acceso a archivos y puertos altos), luego agregue los que su aplicación necesita nuevamente con el archivo de políticas.

En efecto, parece que está otorgando poderes "sudo" a Java y luego confiando en el modelo de seguridad de Java para otorgar solo los poderes apropiados a varias clases. Supongo que esto hace que la aplicación sea segura para ejecutar con sudo, ¿es correcto?

Es gracioso que haya estado usando Java casi todos los días desde 1.0 y nunca lo haya necesitado antes... Aprendes algo nuevo todos los días.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

[Descargo de responsabilidad: no estoy muy convencido del modelo de seguridad de Java.]

La forma en que resolvería esto es hacer que el código que necesita para acceder al hardware se ejecute como un proceso privilegiado separado, luego haga que su aplicación Java se ejecute como un proceso sin privilegios y se conecte al proceso privilegiado para que realice ciertas acciones en su nombre.

En el proceso privilegiado, debe verificar con máxima desconfianza cada solicitud si es segura de ejecutar. Si tiene miedo de que otros procesos sin privilegios también puedan conectarse al demonio y hacer que ejecute comandos que no debería, puede hacer que su socket sea propiedad de un grupo especial y setgid() la aplicación Java a ese grupo mediante un pequeño contenedor escrito en C antes de que se inicie.

Los sockets de dominio Unix son probablemente la mejor opción, pero si desea hacer chroot() en la aplicación Java, es posible que necesite un socket TCP/IP.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda