Echando un vistazo a la pieza del código fuente específico ( GoogleDrive.java ) que maneja la creación / inicialización de archivos de credenciales, encontré esto:
Línea 449:
/** Directory to store user credentials. */
private final java.io.File DATA_STORE_DIR;
Línea 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();
}
¿Puede ver que el archivo de credenciales se almacena en "data/google"
usando una ruta relativa en Unix? -¿me gusta? Esto significa que no querrá ejecutar este software en su directorio /tmp
, ya que las personas que desee pueden acceder a las credenciales. Si el conjunto de parámetros es account=default
, la ruta será $CURRENT_DIR/data/google/default
. Este es el comportamiento predeterminado de java.io.File
y se encuentra una respuesta más larga en stackexchange:
Consejos para hacer esto un poco más seguro (en la perspectiva de StoredCredential):
- No ejecute java como root / admin. ¡NUNCA! No hay necesidad de si del sistema de archivos a la red. FTP se enlaza en un puerto que es superior a
1024
, por lo que no hay necesidad de ejecutar como root
- Mantenga
data/
bajo un permiso de directorio estricto, como rwx
solo para usted, el propietario.
Hay otras medidas de seguridad que podría tomar en relación con el enlace de puerto local y el usuario local que podría acceder a él (iptables), pero saldrá del alcance de la pregunta.