W przypadku aplikacji Java:
Właściwie w przypadku JDownloadera jest to konstrukcja modułowa. Ikona zasobnika jest wtyczką, którą można wyłączyć w:
JDownloader → Dodatki → Menedżer dodatków → Rozszerzenia → Odznacz pole Aktywuj dla JD Light Tray
W przypadku ogólnych aplikacji Java Możliwe jest użycie menedżera bezpieczeństwa Java, pisząc niestandardowe reguły zasad.
Utwórz java.policy
plik ~/.jdownloader
zawiera:
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 "*";
};
Zmodyfikuj jdownloader
skrypt uruchamiania, aby użyć niestandardowych zasad
sudo nano /usr/bin/jdownloader
Dodaj: -Djava.security.manager -Djava.security.policy=java.policy
do komendy Java:
exec java ${JAVA_OPTIONS} -Djava.security.manager -Djava.security.policy=java.policy -jar JDownloader.jar $*
Są to minimalne reguły, które pozwoliły mi uruchomić program jdownloader. Być może trzeba będzie dodać więcej uprawnień. Ponieważ nie ma deny
opcji, musisz napisać wszystkie potrzebne grant
reguły.
Bibliografia:
BTW, spróbuj skomentować jedną z reguł, dodając //
na początku linii; Możesz więc zobaczyć, jak wygląda błąd odmowy uprawnień. Mówi ci, które pozwolenie powinieneś dodać. Zauważ też, że użyłem wielu -
i *
próbuję rozszerzyć reguły, ponieważ szukam szybkiego rozwiązania (domyślnie AllPermission
tak było ) i nie chcę więzić aplikacji.
Oto szablon na początek, próbujący udzielić wszystkich możliwych uprawnień:
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 "*";
};
Uwaga :
Java Policy Tools to narzędzie GUI do edycji plików zasad. Ułatwia to znalezienie wszystkich dostępnych opcji z rozwijanej skrzynki. Powinien być już zainstalowany z pakietem Java.