Restaurar a propriedade do arquivo após executar o chown por acidente

2

Atualização 1:

Eu apliquei chown -R gdm:gdm /var/lib/gdm e agora consigo fazer login com sucesso! No entanto, não sei até que ponto isso causará problemas.

-

Eu recentemente atualizei minha instalação do postgresql e pretendi executar o comando:

sudo chown -R postgres:postgres /var/lib/postgres

Infelizmente, esqueci acidentalmente a parte "postgres" no final por causa de uma conclusão de tabulação mal calculada ... Acabei correndo:

sudo chown -R postgres:postgres /var/lib

Escusado será dizer que isso causou uma série de problemas. Por exemplo, não consigo inicializar no sistema operacional (consulte Atualização 1 ).

Estou executando o Arch Linux com o i3 como gerenciador de janelas e o GDM como gerenciador de exibição. Eu gostaria de receber ajuda para obter a propriedade original dos diretórios necessários em / var / lib. A partir de agora, ele permanece permanentemente nessa parte do processo. Eu estou usando luks e o sistema de arquivos é criptografado.

Noentanto,eusoucapazdegerarumshellviagrubadicionando“init=/bin/bash”àlinhadokernel,éclaro,entãoissodeveserbemfácildecorrigirumavezqueeuconheçaosrequisitosapropriadosdepropriedade.Aquiestãoosdiretóriosatuaisem/var/lib:

Umproblemaéqueapastagdm,queédepropriedadedogdm,contémváriossubdiretóriospertencentesaopostgres

Qualquer ajuda seria muito apreciada.

Como posso corrigir a propriedade do arquivo em /var/lib de volta para como era antes de executar chown -R gdm:gdm /var/lib/gdm ?

    
por Goodies 11.01.2018 / 20:56

3 respostas

2

Você pode voltar com comandos chown em diretórios com informações que você conhece de nomes de usuários de / etc / passwords & seu grupo de / etc / groups  o resto pertencerá ao root: root

mas é um pouco complicado até que você possa deixar um bug ... que aparecerá em muitos e muitos dias .... devido a uma mudança esquecida ...

Eu acho que o postgres gdm está ok, o resto pode pertencer à raiz redis para redis ... acho que também tem seu usuário dedicado.

A maneira mais fácil: reinstalar tudo isso (após o backup do seu banco de dados e, claro, sem formatação / home) ...

    
por 11.01.2018 / 21:03
0

Corrigir isso manualmente não será trivial - você pode adivinhar a possível propriedade de diretórios em /var/lib com base em entradas em /etc/passwd , mas ele vai falhar e errar. O que acontece se alguns arquivos em um diretório de aplicativos pertencerem ao aplicativo e outros por raiz (ou vice-versa)? Você vai resolver isso por muito tempo ...

Sugiro reinstalar todos os pacotes no seu sistema. Existem várias maneiras de fazer isso, por exemplo:

# pacman -S $(pacman -Qeq) --noconfirm

Sugiro que você faça um backup do seu sistema antes de fazer isso.

    
por 11.01.2018 / 22:56
0

A hierarquia do sistema de arquivos / var é para dados criados por aplicativos e, portanto, gerenciadores de pacotes gerenciam muito pouco em / var. Para a maior parte, o pacman -Qo só retornará a propriedade para os diretórios de nível superior em / var / lib, pois sua estrutura é fazer com que cada aplicativo tenha um diretório.

Primeiro, você precisa definir tudo como proprietário da raiz para um padrão mais correto do que o postgres.

chown -R root:root /var/lib/

Reinstale os pacotes que possuam arquivos em /var/lib

pacman -Qo $(find /var/lib) 2>/dev/null

Veja agora quem é o proprietário de cada diretório:

ls -la /var/lib

Tudo nos diretórios de propriedade do root será de propriedade de root. Considerando que os diretórios não possuídos pelo root são realmente diretórios home de usuários do aplicativo. Com poucas exceções, todos os arquivos contidos nesses diretórios são de propriedade do usuário do aplicativo. Então, executando chown -R gdm:gdm /var/lib/gdm funciona. Mas há exceções. Por exemplo, no meu sistema, /var/lib/sddm/state.conf é de propriedade do root.

    
por 12.01.2018 / 01:36