Dai uno sguardo al pezzo specifico del codice sorgente ( GoogleDrive.java ) che gestisce la creazione / inizializzazione di file credenziali, ho trovato questo:
Riga 449:
/** Directory to store user credentials. */
private final java.io.File DATA_STORE_DIR;
Riga 473:
public GoogleDrive(Properties configuration) {
DATA_STORE_DIR = new java.io.File("data/google/" + configuration.getProperty("account", "default"));
try {
// initialize the data store factory
dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
// initialize the transport
httpTransport = GoogleNetHttpTransport.newTrustedTransport();
} catch (Exception e) {
throw new RuntimeException("No se pudo inicializar la API de Google");
}
init();
}
Puoi vedere che il file delle credenziali è memorizzato in "data/google"
usando un percorso relativo su Unix -piace? Ciò significa che non vorrai eseguire questo software nella tua directory /tmp
, poiché le credenziali potrebbero essere accessibili da più persone che desideri. Se il set di parametri è account=default
il percorso deve essere $CURRENT_DIR/data/google/default
. Questo è il comportamento predefinito di java.io.File
e una risposta più lunga si trova su stackexchange:
Suggerimenti per rendere questa cosa un po 'più sicura (nella prospettiva StoredCredential):
- Non eseguire java come root / admin. MAI! Non è necessario se dal filesystem alla rete. FTP si collega su una porta superiore a
1024
, quindi non è necessario eseguire come root
- Mantieni
data/
sotto il severo permesso di directory, come rwx
solo per te, il proprietario.
Esistono altre misure di sicurezza che è possibile prendere in relazione al binding della porta locale e all'utente locale che potrebbe accedervi (iptables), ma uscirà dall'ambito della domanda.