Alguma recuperação disso? sudo chmod 600. *

8

AVISO - NÃO EXECUTE O COMANDO MENCIONADO

Parece que fiz algo bem idiota aqui para dizer o mínimo. Eu estava tentando alterar as permissões de alguns arquivos em um diretório que começou com .a leitura / gravação apenas no sudo / root.

Minha tentativa de alterar vários arquivos ao mesmo tempo parece ter feito algo terrivelmente global. Enquanto estava dentro de um diretório (não estava no diretório raiz), corri sudo chmod 600 .*e estou postando isso no meu telefone agora ... Ainda tenho a janela do terminal aberta no momento, mas tenho certeza de que o laptop funcionará Para dormir, eu terminei completamente. Hilariamente, isso significa que há uma ligeira urgência nessa questão.

Ah, e isso parece ter mudado de permissões em quase todos os lugares que eu acho. Não consigo nem executar os comandos lsou cd ... Uma tentativa cd /home/brianou cd ~erro, bash: cd: /home/brian: Permission Deniede qualquer tentativa de sudocomando apenas dizbash: /usr/bin/sudo: Permission Denied

Eu tenho medo de reiniciar, não tenho idéia se existe alguma recuperação embutida em algo tão burro, mas achei que tentaria perguntar aqui antes de piorar as coisas. Eu sou um Linux bem novo, pois meu sistema operacional principal converte e venho defendendo isso um pouco ultimamente, mas ai, esse aqui dói um pouco. Qualquer pensamento sobre o que tentar seria imensamente apreciado.

Edição: Eu queria fornecer esclarecimentos sobre como / onde este comando foi executado. Isso foi executado a partir de /.atx $apenas um diretório arbitrário, mas mais detalhes abaixo.

Enquanto estava logado como meu nome de usuário comum brian, eu tinha um terminal aberto /.atxcontendo três arquivos somente de texto do tipo de configuração. Cada nome de arquivo iniciado com um .. Esse diretório / nome / os arquivos não fazem parte de um pacote comum, apenas um conjunto arbitrário de configurações que eu estava movendo programaticamente. Os arquivos continham algumas informações de cadeia de conexão do servidor SQL e só queriam que fossem semi-obscurecidos.

Brian Jorden
fonte
Sem descrição em qual diretório você estava, acho que você /rootnão estava lá / quando fez isso (pelo que vejo na sua pergunta), o que significa que a própria pasta .*capturada glob /root(as .referências ao diretório de trabalho atual) junto com todos os arquivos / diretórios que começam com o ponto inicial. Não tenho certeza se existe uma maneira de alterá-lo do seu sistema, mas você provavelmente pode inicializar a partir de um USB ativo e desfazer as coisas a partir daí. Não tome como resposta 100%, apenas um pensamento.
Sergiy Kolodyazhnyy 28/10
Aprecie os pensamentos e o feedback de qualquer maneira e o considerará, dependendo de como as coisas vão. Isso é realmente bobo. Vou atualizar o texto principal com detalhes de onde executei o comando (parte do motivo de eu estar tão confuso aqui que não parecia perigoso na época)
Brian Jorden
4
Vou assumir que o .*comando expandido para incluir ..o diretório pai do diretório em que você estava. Se você estivesse, por exemplo /home/brian, as permissões de /homeseriam definidas como 600 e você não teria permissões para procurar no /homediretório -Lo em seu terminal aberta pode executarls -ld /*
Charles Green
2
Você pode tentar restaurar a permissão, consulte askubuntu.com/questions/43621/… . Existem vários scripts lá, mas eu publiquei um método usando o apt-get do modo de recuperação (que eu prefiro os scripts) também, faça a sua escolha. Como você não pode usar o sudo, será necessário inicializar no modo de recuperação. wiki.ubuntu.com/RecoveryMode certifique-se de remontar / rx (consulte o wiki)
Panther

Respostas:

3

Uau, a recuperação aqui foi realmente mais suave do que eu esperava e tudo parece em boa forma novamente.

Muito obrigado a @CharlesGreen por uma explicação de como esse comando estendeu um diretório. Agradeço também ao @Panther por informações sobre como entrar no modo de recuperação para um problema relacionado. (se vocês dois quiserem compartilhar seus comentários novamente como respostas, eu os atualizaria)

Felizmente, ao contrário do post vinculado, isso parece ter tido uma correção muito direta. Parece que quando eu corri o sudo chmod 600 .*comando de apenas um diretório sob /expandiu a .*parte UP para as verdadeiras permissões diretório raiz alteração de .partir /causando qualquer outra permissão para cair.

A "correção" para isso era inicializar no modo de recuperação, remontar a unidade como leitura / gravação, acessar a raiz principal ( cd /) e depois chmod +rx .. Após uma reinicialização, tudo parece voltar ao normal.

Moral da história, a execução de um comando no .*pode às vezes afetar o diretório ACIMA do atual. Eu pretendia impactar apenas arquivos que começaram com .... oops.

Muito obrigado a todos que comentaram e ajudaram.

Brian Jorden
fonte
1
Isso provavelmente afetou o diretório pai porque ..corresponde ao .*glob.
Cthulhu #
1
Mais um motivo para usar uma concha mais saudável. O zsh, por exemplo, não inclui .ou ..na expansão de .*por padrão.
Muru
1

A "correção" para isso era inicializar no modo de recuperação, remontar a unidade como leitura / gravação, acessar a raiz principal (cd /) e depois chmod + rx. Após uma reinicialização, tudo parece voltar ao normal.

Só para esclarecer aos futuros leitores que podem se deparar com isso como a resposta aceita, há preocupações com a chmod +xsolução como uma solução geral. Essa pergunta específica parece ter sido o diretório inicial do usuário, portanto algumas das preocupações abaixo podem ser baixas, mas se isso foi aplicado a um servidor de negócios e afetou vários usuários ou outros diretórios de dados, a solução não é sugerida.

No lado positivo , essa etapa permitiria ao usuário recuperar o acesso aos arquivos para que eles pudessem ser copiados para uma mídia de backup para evitar mais perdas. E no final do dia, esse é o objetivo principal durante qualquer esforço de recuperação de dados.

A maior preocupação é que os arquivos originais possam ter permissões específicas aplicadas que estão faltando agora. Alguns programas - especificamente ssh - aplicam permissões de arquivo para garantir ainda mais sua segurança e não funcionarão se a +rwpermissão estiver definida em sua pasta e arquivos.

Outra preocupação é que, se isso for aplicado na /pasta raiz ( ) recursivamente, haverá outros arquivos que poderão ser abertos para qualquer pessoa no sistema exibir e modificar. Em um ambiente comercial em que o servidor pode conter dados confidenciais (informações sobre PCI / financeiro ou assistência médica / HIPAA), esse acesso pode levar a resultados e repercussões da auditoria.

Em um ambiente pessoal / doméstico, essa recuperação é provavelmente perfeitamente aceitável. Apenas observe que algumas coisas podem ser quebradas silenciosamente ou agir de maneira estranha.

Em um ambiente de negócios, o uso dessa recuperação para recuperar o acesso aos dados pode ser usado, mas, finalmente, qualquer mudança drástica como essa deve ser resolvida reinstalando o servidor e recuperando-se de um backup.

( Você tem um backup atual, não é? ;-) )

dan_linder
fonte
1
Fui adiante e votou porque há alguns conselhos / informações geralmente úteis aqui. Na minha situação em particular, tive a sorte de permitir que as únicas permissões que foram alteradas estivessem diretamente dentro /e não entrassem em cascata recursivamente em nenhum outro diretório. Também digno de nota, este foi apenas no meu laptop pessoal e, embora eu possa ter perdido parte do trabalho de um dia (ainda não havia feito um empurrãozinho no git), seria apenas um grande aborrecimento e aborrecimento reinstalar o meu "usuário" relacionado formulários. Se fosse um servidor de qualquer tipo, eu geralmente concordaria, menos tempo e esforço para apenas limpar / reconstruir.
Brian Jorden