
Estoy escribiendo una pequeña utilidad y tengo que guardar los archivos de configuración en algún lugar. Al mirarlo, parece que /etc
serí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, homebrew
en Mac parece poder escribir de /usr/local/bin
alguna manera sin acceso de root.
Sé que podría poner cosas, /home
pero 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/etc
o /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 .myApp
bajo 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.