Per le app Java:
In realtà per la custodia JDownloader, è un design modulare. L'icona del vassoio viene fornita come un plug-in che può essere disabilitato da:
JDownloader → Componenti aggiuntivi → Gestione componenti aggiuntivi → Estensioni → Deseleziona Attiva casella per JD Light Tray
Per il caso generale delle applicazioni Java, è possibile utilizzare il gestore sicurezza Java scrivendo regole di politica personalizzate.
Crea java.policy
file in ~/.jdownloader
contiene:
grant codeBase "file:/home/user/.jdownloader/-" {
// full access
// permission java.security.AllPermission;
// AWTPermission full or only selected elements from it
// permission java.awt.AWTPermission "*";
permission java.awt.AWTPermission "accessClipboard";
permission java.awt.AWTPermission "accessEventQueue";
// permission java.awt.AWTPermission "accessSystemTray";
permission java.awt.AWTPermission "createRobot";
permission java.awt.AWTPermission "fullScreenExclusive";
permission java.awt.AWTPermission "listenToAllAWTEvents";
permission java.awt.AWTPermission "readDisplayPixels";
permission java.awt.AWTPermission "replaceKeyboardFocusManager";
permission java.awt.AWTPermission "setAppletStub";
permission java.awt.AWTPermission "setWindowAlwaysOnTop";
permission java.awt.AWTPermission "showWindowWithoutWarningBanner";
permission java.awt.AWTPermission "toolkitModality";
permission java.awt.AWTPermission "watchMousePointer";
// Added by try and learn
permission java.io.FilePermission "/-", "read,write,delete";
permission java.util.PropertyPermission "*", "read,write";
permission java.util.logging.LoggingPermission "control";
permission java.lang.RuntimePermission "*";
permission java.net.NetPermission "*";
permission java.security.SecurityPermission "*";
permission javax.net.ssl.SSLPermission "*";
permission java.net.SocketPermission "*", "connect,resolve";
permission java.lang.reflect.ReflectPermission "*";
};
Modifica lo jdownloader
script di avvio per utilizzare la politica personalizzata
sudo nano /usr/bin/jdownloader
Aggiungi: -Djava.security.manager -Djava.security.policy=java.policy
alla chiamata di comando java:
exec java ${JAVA_OPTIONS} -Djava.security.manager -Djava.security.policy=java.policy -jar JDownloader.jar $*
Queste sono le regole minime che mi hanno permesso di avviare jdownloader. Potrebbe essere necessario aggiungere ulteriori autorizzazioni. Poiché non esiste alcuna deny
opzione, è necessario scrivere tutte le grant
regole necessarie .
Riferimenti:
A proposito, prova a commentare una delle regole aggiungendo //
all'inizio della riga; Quindi puoi vedere come appare l'errore delle autorizzazioni negate. Ti dice quale autorizzazione dovresti aggiungere. Nota anche che ne ho usati molti -
e *
sto provando a estendere le regole mentre cerco una soluzione rapida (il default era AllPermission
comunque) e non sto cercando di imprigionare l'applicazione.
Ecco un modello per iniziare, cercando di concedere tutte le autorizzazioni possibili:
grant codeBase "file:/home/user/.jdownloader/-" {
// permission java.security.AllPermission;
// permission java.awt.AWTPermission "*";
permission java.awt.AWTPermission "accessClipboard";
permission java.awt.AWTPermission "accessEventQueue";
// permission java.awt.AWTPermission "accessSystemTray";
permission java.awt.AWTPermission "createRobot";
permission java.awt.AWTPermission "fullScreenExclusive";
permission java.awt.AWTPermission "listenToAllAWTEvents";
permission java.awt.AWTPermission "readDisplayPixels";
permission java.awt.AWTPermission "replaceKeyboardFocusManager";
permission java.awt.AWTPermission "setAppletStub";
permission java.awt.AWTPermission "setWindowAlwaysOnTop";
permission java.awt.AWTPermission "showWindowWithoutWarningBanner";
permission java.awt.AWTPermission "toolkitModality";
permission java.awt.AWTPermission "watchMousePointer";
permission javax.sound.sampled.AudioPermission "*";
permission javax.security.auth.AuthPermission "*";
// permission javax.security.auth.kerberos.DelegationPermission "";
permission javax.xml.bind.JAXBPermission "*";
permission java.nio.file.LinkPermission "hard";
permission java.nio.file.LinkPermission "symbolic";
permission java.util.logging.LoggingPermission "control";
// permission java.lang.management.ManagementPermission "*";
permission javax.management.MBeanServerPermission "*";
permission javax.management.MBeanTrustPermission "*";
permission java.net.NetPermission "*";
permission java.util.PropertyPermission "*", "read,write";
permission java.lang.reflect.ReflectPermission "*";
permission java.lang.RuntimePermission "*";
permission java.security.SecurityPermission "*";
permission java.io.SerializablePermission "*";
permission java.sql.SQLPermission "*";
permission javax.net.ssl.SSLPermission "*";
permission javax.management.remote.SubjectDelegationPermission "*";
permission javax.xml.ws.WebServicePermission "*";
// permission "*";
permission java.io.FilePermission "/-", "read,write,execute,delete,readlink";
permission javax.management.MBeanPermission "*", "*";
// permission javax.security.auth.PrivateCredentialPermission "", "read";
permission javax.security.auth.kerberos.ServicePermission "*", "initiate,accept";
permission java.net.SocketPermission "*", "accept,connect,listen,resolve";
permission java.net.URLPermission "*";
};
Nota :
Java Policy Tools è uno strumento GUI per modificare i file delle politiche. Rende più facile scoprire tutte le opzioni disponibili dalla casella a discesa. Dovrebbe già essere installato con il pacchetto Java.