2013-07-20 9 views

risposta

5

1) Modificando i permessi per consentire la scrittura alla directory nel messaggio di errore.

2) Impostando python.cachedir.skip = true

Si può leggere questo:

http://www.jython.org/jythonbook/en/1.0/ModulesPackages.html#module-search-path-compilation-and-loading

per ulteriori approfondimenti.

+0

vorrei mettere in guardia chiunque utilizzi questa risposta in un ambiente di produzione. Non impostare il mondo delle autorizzazioni scrivibile in quanto invita chiunque abbia accesso locale a monkey con la cache. Sembra un potenziale exploit! – Carl

2

Rendere le directory scrivibili in tutto il mondo fa sì che il problema "vada via", tuttavia, introduce un enorme buco di sicurezza. Chiunque potrebbe introdurre il codice nella directory scrivibile ora mondiale che verrebbe eseguita nell'ambiente jpython degli utenti.

L'impostazione del cache in skip determinerebbe presumibilmente un calo delle prestazioni (perché implementare uno schema di cache diverso da quello per migliorare il rendimento).

Invece ho fatto la seguente:

ho creato un nuovo gruppo (nel mio caso eclisse, ma avrebbe potuto essere JPython). Ho aggiunto gli utenti di jpython a quel gruppo.

$ sudo groupadd eclipse 

Ho poi cambiato il gruppo della mia cartella dei plugin di Eclipse e dei suoi figli 'Eclipse'.

/opt/eclipse/plugins $ sudo chgrp -R eclipse * 

poi ho cambiato i permessi del gruppo come segue

/opt/eclipse/plugins $ sudo chmod -R g+w * 
/opt/eclipse/plugins $ find * -type d -print | sudo xargs chmod g+s 

Questo scrivibile gruppo aggiunto, e impostare il bit S_GID su tutte le directory ricorsivamente. Questo ultimo bit fa sì che le nuove directory create abbiano lo stesso ID di gruppo del loro genitore.

Il tocco finale è stato cambiare l'umask per gli utenti eclissi impostati 007.

$ sudo vi /etc/login.def 

cambiamento UMASK a 007 (da 022). UMASK = 007

5

È possibile modificare la posizione della cartella della cache in un luogo che avete letto & accesso in scrittura impostando l'opzione "python.cachedir" quando si inizia Jython, ad esempio:

jython -Dpython.cachedir=*your cachedir directory here* 

oppure:

java -jar my_standalone_jython.jar -Dpython.cachedir=*your cachedir directory here* 

È possibile leggere informazioni sul pitone.Opzione cachedir qui: http://www.jython.org/archive/21/docs/registry.html

0

La soluzione più semplice che ho trovato finora è stato quello di fare:

$ sudo chmod -R 777 /opt/jython/cachedir