O tratamento dos arquivos de configuração é descrito na Especificação do Diretório Base do XDG .
Define um conjunto de variáveis de ambiente de caminho relacionadas como XDG_CONFIG_HOME
e XDG_CONFIG_DIRS
, que definem, por exemplo, onde o diretório .config
é por padrão e como lidar com isso de várias outras maneiras controladas.
Muito comum é obviamente o formulário ~/.config/product_name
, e quando se trata de apenas um produto da empresa, ~/.config/company_name
não seria realmente diferente.
Mas supondo que existam vários produtos - acho que a estrutura de ~/.config/company_name/product1
, ~/.config/company_name/product2
...
faz muito sentido;
Não sei se está descrito nestes padrões ou relacionados. Mas pode ser que o padrão XDG veria isso como um diretório normal de produtos, apenas que ele vê todo o conjunto de softwares da empresa como um único produto para essa finalidade.
O uso padrão geral da hierarquia do sistema de destino é descrito na Hierarquia do Sistema de Arquivos do Linux .
Como um local para o próprio aplicativo, dê uma olhada no diretório /opt
; Você instalaria o aplicativo em /opt/company_name/product1
etc ou /opt/product1
etc, ambos estão corretos de acordo com o padrão.
Você descobriu que o diretório /srv
pode ser uma boa opção.
Eu concordo que é a solução certa - então eu descrevo aqui para tê-lo em uma resposta:
O diretório /srv
é semelhante a /opt
- o padrão não diz muito sobre a estrutura do subdiretório, você pode usar a mesma separação como acima.
Embora /opt
seja explicitamente destinado a código de aplicativo somente leitura, como executáveis, arquivos de dados estáticos e documentação, /srv
não restringe muito a variabilidade dos dados; Permite até mesclar arquivos com diferentes permissões de acesso e variabilidade.
Por exemplo, seria aceitável implantar arquivos que possam ser alterados pelos usuários do sistema.
De Hierarquia do sistema de arquivos Linux: 1.19 :
This main purpose of specifying this is so that users may find
the location of the data files for particular service, and so that
services which require a single tree for readonly data, writable data
and scripts (such as cgi scripts) can be reasonably placed. Data that
is only of interest to a specific user should go in that users'
home directory.
The methodology used to name subdirectories of /srv is unspecified as there
is currently no consensus on how this should be done.
Para gerenciar as permissões de acesso aos dados que precisam ser graváveis para todos os usuários do software, você deve usar as permissões atribuídas a um grupo, que contém todos os usuários.
Isso é verdade mesmo quando "todos os usuários desse computador" estariam nesse grupo - há muitos usuários do sistema que não devem poder gravar os dados; Um invasor pode obter acesso a uma das contas de usuário do sistema.