Existe algum lugar onde eu possa gravar arquivos de configuração do meu programa sem acesso root?

Existe algum lugar onde eu possa gravar arquivos de configuração do meu programa sem acesso root?

Estou escrevendo um pequeno utilitário e preciso colocar os arquivos de configuração em algum lugar. Olhando para isso, parece que /etcseria o local canônico no Linux. Mas estou me deparando com o problema de que este diretório parece exigir acesso root para gravação por padrão.

Existe algum lugar onde seja possível escrever sem precisar chamar meu programa sudo? Por exemplo, homebrewno Mac parece ser capaz de escrever /usr/local/binde alguma forma sem acesso root.

Eu sei que poderia inserir coisas, /homemas estou tentando fazer as coisas da "maneira certa" em termos de onde os arquivos devem ser armazenados no Linux.

Responder1

Se você quiser fazer as coisas da maneira certa, o programa e seus arquivos de configuração não devem ser editáveis ​​pelo usuário, caso contrário, quebrarão o modelo de segurança padrão.

Ele é de propriedade do usuário e, portanto, sua configuração é armazenada no diretório inicial do usuário ou é instalado em qualquer local do sistema (por exemplo /usr/bin, /usr/local/bin, , /opt/appname) e então sua configuração é armazenada novamente em alguns locais do sistema (por exemplo /etc, /usr/local/etcou /opt/appname/etc) também.

Responder2

Você deve usar um subdiretório, provavelmente oculto, específico para sua aplicação, como .myApp. Também pode conter logs de versão e instalação. Isso torna muito mais fácil a limpeza, etc.

Se a configuração for compartilhada entre os usuários, você poderá executar um sudo mkdir único em um "espaço compartilhado" e conceder as permissões relevantes nesse diretório. Não importa que os níveis acima não sejam graváveis.

Se sua configuração for por usuário, seu aplicativo será criado .myAppsob o /home/username do usuário na instalação ou no primeiro uso.

Existe um padrão oficial de hierarquia de sistema de arquivos para Linux.

informação relacionada