Para aplicativos Java:
-
Na verdade, para o caso JDownloader, é um design modular. O ícone da bandeja é fornecido como um plug-in que pode ser desativado em:
JDownloader → Suplementos → Gerenciador de complementos → Extensões → Desmarque a caixa Ativar para JD Light Tray
-
Para casos gerais de aplicativos Java, é possível usar o gerenciador de segurança Java escrevendo regras de política customizadas.
-
Crie o arquivo java.policy
em ~/.jdownloader
contém:
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 "*";
};
-
Modifique o script de ativação jdownloader
para usar a política personalizada
sudo nano /usr/bin/jdownloader
Adicione: -Djava.security.manager -Djava.security.policy=java.policy
à chamada de comando java:
exec java ${JAVA_OPTIONS} -Djava.security.manager -Djava.security.policy=java.policy -jar JDownloader.jar $*
Estas são as regras mínimas que me permitiram iniciar o jdownloader. Você pode precisar adicionar mais permissões. Como não há deny
, você precisa escrever todas as regras grant
necessárias.
Referências:
-
java.awt
: Class SystemTray
-
java.awt
: AWTPermission de classe
-
java.security
: BasicPermission de classe
Veja Subclasses Conhecidas Diretas se você deseja escrever um modelo geral que conceda AllPermission
exceto accessSystemTray
. Então você pode usá-lo para todos os aplicativos java restantes.
BTW, tente comentar uma das regras adicionando //
ao início da linha; Assim, você pode ver como é o erro de permissões negadas. Ele informa qual permissão você deve adicionar. Observe também que usei muitos -
& amp; *
tentando estender as regras, já que estou procurando uma solução rápida (o padrão era AllPermission
de qualquer maneira) e não estou tentando prender o aplicativo.
Aqui está um modelo para começar, tentando conceder todas as permissões possíveis:
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 :
O Java Policy Tools é uma ferramenta da GUI para editar arquivos de políticas. Isso torna mais fácil descobrir todas as opções disponíveis na caixa de depósito. Já deve estar instalado com o pacote Java.