Quais são os melhores locais padrão para tipos de arquivos específicos?

1

Para um aplicativo que criei, estou tentando encontrar os melhores locais de pasta. Instalei o aplicativo, conforme sugerido pela documentação, em /usr/share/company_name/product_name , salve um arquivo config.ini em uma pasta oculta no diretório inicial dos usuários e criei documentos criados pelo usuário no diretório inicial dos usuários.

O aplicativo requer outros recursos:

Um banco de dados de recursos (com conteúdo que pode ser modificado por meio de     código, embora seja recomendado que o usuário não tenha acesso externo)

O banco de dados de recursos deve ser comum e acessível a TODOS os usuários, portanto, não pode estar no diretório inicial dos usuários. Ele não pode estar em um diretório oculto, pois o programa pode usar uma janela do navegador para localizá-lo e alterar sua localização.

Gostaria de colocá-lo em uma pasta "bem conhecida" como /var ou /opt - mas recebo erros ao tentar abri-lo por meio de código, com um comando como

FILE *resource = fopen(path, "r+");

O que é um bom local para um recurso, pré-instalado, não-somente-leitura, acessível a todos os usuários e modificável por meio de código, não oculto (deve ser possível navegar até ele)?

Atualização: pude colocar meus recursos em /srv/MyCompany/MyProduct graças ao link fornecido na resposta abaixo.

Espero que seja uma boa localização?

    
por Thalia 02.10.2014 / 00:30

1 resposta

0

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.

    
por Volker Siegel 02.10.2014 / 01:20