2013-05-26 10 views
6

Non sono sicuro se il fatto che sto usando Ubuntu Server sia importante in questo caso. Quando sto provando a creare una cartella usando il metodo File.mkdirs(), non lancia un'eccezione, semplicemente non funziona mai.Quali cartelle possono scrivere le mie applicazioni Tomcat su Ubuntu Server

Una più ampia spiegazione del mio problema con i riferimenti di codice specifico può essere trovato qui: Cannot Create Directory On Server. Permission Issue?

Il motivo per cui sto scrivendo una nuova domanda è perché mi chiedo se sto avendo problemi di creazione di directory sul server a causa delle autorizzazioni.

String path = /home/username/foldertocreate; 
File file = new File(path); 
file.mkdirs(); 

Quindi sto provando a creare una cartella nella directory/home/nomeutente. Funziona perfettamente quando sono in esecuzione in modalità dev sulla mia casella di sviluppo e su un'istanza di tomcat all'interno di Eclipse, ma non riesce quando il codice viene eseguito sul server. Ciò potrebbe essere dovuto al fatto che nella finestra di sviluppo l'utente ha effettuato l'accesso e quindi il permesso è aperto per scrivere la cartella/home/username? Sul server un utente non ha effettivamente effettuato l'accesso mentre il programma è in esecuzione ...

Esiste una cartella specifica a cui sono in grado di scrivere?

Ho controllato i permessi della cartella attualmente settati a 700. Potrebbe essere questo il problema? È sicuro impostare questa cartella su 666 o 777? Questa cartella è scrivibile anche se l'utente non ha effettuato l'accesso?

Aggiornamento: Provato a modificare i permessi della cartella su 755 senza fortuna.

risposta

6

Se si utilizza la versione packaged di tomuntu di tomcat, questo viene eseguito con un altro account utente, molto probabilmente denominato "tomcat". Doppio controllo con ps aux | grep catalina - questo mostrerà il nome utente che tomcat è in esecuzione come nella prima colonna. Esattamente questo account utente deve essere in grado di creare directory/file.

Per questo motivo, probabilmente non si desidera aprire directory home arbitrarie per essere scrivibili in tutto il mondo, ma piuttosto configurare directory specifiche da qualche parte per essere accessibili dall'utente tomcat. L'impostazione di un'autorizzazione 755 dà al proprietario le autorizzazioni di lettura/scrittura/esecuzione, mentre tutti gli altri ottengono il permesso di lettura/esecuzione. Se "tomcat" non è il proprietario, non sarà in grado di creare nulla in queste directory. Ma non cadere per il trap a chmod 777 - a meno che non sia per un test rapido.

+0

Siamo spiacenti, questa è la mia prima volta che eseguo un server di produzione, ma è stata un'esperienza di apprendimento straordinaria e ammetto che sono un po 'fresco sull'argomento. Quindi se creo una directory chiamata appdata o qualcosa nella cartella home/username e 755, non è una minaccia alla sicurezza? – ryandlf

+0

PS. Avevi assolutamente ragione, il nome utente è tomcat7. Non avevo idea che cambiasse il nome utente. Vorrei che la mia eccezione avesse menzionato che ... – ryandlf

+0

Inoltre, come posso usare il nome utente nel comando create create? C'è una password che ho bisogno di impostare da qualche parte? – ryandlf