¿Existe algún lugar donde pueda escribir archivos de configuración desde mi programa sin acceso de root?

¿Existe algún lugar donde pueda escribir archivos de configuración desde mi programa sin acceso de root?

Estoy escribiendo una pequeña utilidad y tengo que guardar los archivos de configuración en algún lugar. Al mirarlo, parece que /etcsería la ubicación canónica en Linux. Pero me encuentro con el problema de que este directorio parece requerir acceso raíz para escribir de forma predeterminada.

¿Hay algún lugar donde sea posible escribir sin necesidad de llamar a mi programa sudo? Por ejemplo, homebrewen Mac parece poder escribir de /usr/local/binalguna manera sin acceso de root.

Sé que podría poner cosas, /homepero estoy tratando de hacer las cosas "de la manera correcta" en términos de dónde deben almacenarse los archivos en Linux.

Respuesta1

Si desea hacer las cosas de la manera correcta, el programa y sus archivos de configuración no deben ser editables por el usuario porque, de lo contrario, viola el modelo de seguridad estándar.

O es propiedad del usuario y, por lo tanto, su configuración se almacena en el directorio de inicio del usuario o se instala en cualquier ubicación del sistema (p. ej. /usr/bin, /usr/local/bin, /opt/appname) y luego su configuración también se almacena nuevamente en algunas de las ubicaciones del sistema (p. ej. /etc, /usr/local/etco /opt/appname/etc).

Respuesta2

Deberías usar un subdirectorio, probablemente oculto, específico para tu aplicación, como .myApp. También puede contener registros de versión e instalación. Esto hace que sea mucho más fácil de limpiar, etc.

Si la configuración se comparte entre usuarios, puede realizar un sudo mkdir único en un "espacio compartido" y otorgar los permisos pertinentes dentro de ese directorio. No importará que los niveles superiores no se puedan escribir.

Si su configuración es por usuario, su aplicación se crea .myAppbajo el nombre de usuario/home/usuario del usuario en la instalación o el primer uso.

Existe un estándar de jerarquía de sistema de archivos oficial para Linux.

información relacionada