
Estou escrevendo um pequeno utilitário e preciso colocar os arquivos de configuração em algum lugar. Olhando para isso, parece que /etc
seria 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, homebrew
no Mac parece ser capaz de escrever /usr/local/bin
de alguma forma sem acesso root.
Eu sei que poderia inserir coisas, /home
mas 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/etc
ou /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 .myApp
sob 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.