Na verdade, o / etc / shadow foi criado para permitir a remoção de uma lista publicamente legível de nomes de usuários e senhas.
Aguarde, isso será um pouco de uma lição de história, antes de chegarmos à resposta real. Se você não se importa com a história, basta rolar um pouco para baixo.
Antigamente, sistemas operacionais baseados em Unix, incluindo o Linux, geralmente mantinham as senhas em / etc / passwd. Esse arquivo era legível por todo o mundo, e ainda é, porque contém informações que permitem o mapeamento, por exemplo, entre IDs de usuário numérico e nomes de usuário. Essa informação é altamente útil até mesmo para usuários comuns para propósitos perfeitamente legítimos, então ter o mundo legível em arquivos foi de grande benefício para a usabilidade.
Mesmo naquela época, as pessoas perceberam que ter as senhas em texto simples em um arquivo em um local bem conhecido que qualquer pessoa que pudesse fazer login podia ler livremente era uma má ideia. Então, as senhas foram divididas, de certo modo. Esse é o antigo mecanismo de hashing de senha "crypt", que quase nunca é usado em sistemas modernos, mas geralmente é suportado para fins de legado.
Dê uma olhada em / etc / passwd no seu sistema. Veja o segundo campo, que diz x
em todos os lugares? Usava a senha com hash da conta em questão.
O problema era que as pessoas podiam baixar o / etc / passwd, ou até mesmo não baixá-lo, e trabalhar no cracking das senhas. Este não foi um grande problema, enquanto os computadores não eram particularmente poderosos (Clifford Stoll, em O ovo do cuco , dá, como lembro, o tempo para colocar uma senha em um sistema de classe IBM PC no meados da década de 1980, cerca de um segundo), mas se tornou um problema com o aumento do poder de processamento. Em algum momento, com uma lista de palavras decente, quebrar essas senhas se tornou muito fácil. Por motivos técnicos, esse esquema também não suportava senhas com mais de oito bytes.
Duas coisas foram feitas para resolver isso:
- Movendo para funções hash mais strongs. A velha cripta () havia sobrevivido à sua vida útil, e foram criados esquemas mais modernos que eram tanto à prova do futuro quanto computacionalmente mais strongs.
- Mova as senhas com hash para um arquivo que não seja legível por qualquer pessoa. Dessa forma, mesmo se uma função hash de senha fosse mais fraca do que o esperado, ou se alguém tivesse uma senha fraca para começar, havia outro obstáculo para um invasor obter acesso aos valores de hash para começar. Não era mais livre para todos.
Esse arquivo é / etc / shadow.
O software que trabalha com o / etc / shadow é geralmente muito pequeno, altamente focado e tende a receber algum escrutínio extra nas revisões devido ao potencial de problemas. Ele também roda com permissões especiais, o que permite que ele leia e modifique o arquivo / etc / shadow, enquanto mantém usuários comuns incapazes de ver o arquivo.
Então você tem: As permissões em / etc / shadow são restritivas (embora, como já foi apontado, não sejam tão restritivas quanto você declara) porque todo o propósito desse arquivo é restringir o acesso a arquivos sensíveis. dados.
Um hash de senha deve ser strong, mas se sua senha estiver nas listas Top 500 Senhas na Internet , qualquer pessoa com acesso ao hash ainda poderá encontrar a senha rapidamente. Proteger o hash impede esse simples ataque e eleva o padrão de um ataque bem-sucedido, desde a simples observação até a requisição de um administrador do sistema no host ou de um ataque de escalonamento de privilégios primeiro. Especialmente em um sistema multiusuário corretamente administrado, ambos são significativamente mais difíceis do que apenas olhar para um arquivo legível pelo mundo.