Por que você nunca deve editar o arquivo / etc / shadow diretamente?

10

Em outra resposta aqui no UNIX e Linux Stack Exchange, Michael D Parker escreveu , em resposta a alguém dizendo que fazer isso era "seguro", que:

Normalmente, você NUNCA edite o arquivo / etc / shadow diretamente.

Então:

Por que você nunca deve editar o /etc/shadowarquivo diretamente?

Claude Cameron
fonte
porque tem suas senhas criptografadas.
Milind Dumbare
7
Porque você vai quebrar isso. Talvez não hoje, talvez não amanhã, mas logo
ctrl-alt-Delor
1
Atualize sua pergunta (editando-a) com um link para o motivo pelo qual você acha que é esse o caso. Venho editando /etc/shadowhá mais de 20 anos sem problemas, nunca . E seja educado ao ler a ajuda de dois minutos → tour , especialmente as "sem distrações", "sem bate-papo". Esta é a primeira vez que tive que ler mais bate-papos não relevantes em uma pergunta do que ler "detalhes" relevantes da pergunta.
Anthon
"geralmente você nunca deveria" não é o mesmo que "nunca".
precisa saber é
2
@captcha Bobagem. Existem boas razões para não fazer isso. Só porque você não consegue pensar em alguém não o habilita a chamar outras pessoas de ignorantes. Por favor seja legal .
Gilles 'SO- stop be evil'

Respostas:

15

Existem várias razões para não editar /etc/passwd, /etc/shadow, /etc/group, /etc/gshadowou /etc/sudoersdiretamente, mas sim usam vipw, vigrou visudo:

  • Se você cometer um erro de sintaxe, poderá não conseguir mais fazer login ou se tornar root. O uso das ferramentas viXXX reduz esse risco, porque a ferramenta faz verificações de integridade antes de modificar o arquivo.
  • Se o arquivo for editado simultaneamente, quem salvar por último substituirá as alterações feitas pelas edições anteriores. Isso inclui tanto um administrador editando o arquivo e o arquivo a ser modificado porque um usuário chamado passwd, chshou chfnmudar alguma coisa sobre a sua conta. Se você usar a ferramenta apropriada, ela evitará modificações simultâneas. Isso é principalmente uma preocupação em sistemas com vários usuários, menos se você for o único usuário.
  • Em alguns sistemas (principalmente ou apenas * BSD), vipwatualiza vários arquivos (por exemplo, /etc/passwde /etc/master.passwd). Isso não se aplica ao Linux.
  • vipwcria automaticamente uma cópia de segurança ( passwd-, shadow-...), o que é útil se você perceber que você acidentalmente apagado uma linha. Só é útil se você perceber antes da próxima edição, para que não substitua o controle de versão e os backups, mas pode ser muito bom se você perceber seu erro em breve. visudonão faz isso.

Você pode editar o arquivo diretamente. Você estará apenas assumindo um risco adicional sem nenhuma vantagem real.

Gilles 'SO- parar de ser mau'
fonte
O ponto 2 é uma preocupação em qualquer sistema em que os usuários possam alterar suas próprias senhas, conchas e outros enfeites. Vários administradores não são um pré-requisito. ☺
JdeBP
3
E o principal problema com isso nos BSDs é que /etc/shadownão existe e /etc/passwdé o arquivo errado para editar, porque é um arquivo gerado e não o arquivo de origem. ☺
JdeBP
@JdeBP Só que não é um problema de todos e os BSDs armazenar em master.passwd
Rob
6

Existem basicamente duas maneiras de analisar isso:

  1. Nunca edite determinados arquivos sem usar as ferramentas prescritas, porque você provavelmente não sabe o que está fazendo e tudo bem, porque essas ferramentas sabem melhor e estão sempre disponíveis.

  2. Mais realisticamente, você pode quebrá-lo agora enquanto pensa sobre isso, para planejar com uma cópia de backup e comparar as diferenças depois de fazê-lo, porque loginprovavelmente o conhecimento básico sobre os meandros do processo inicial básico do sistema tendo em conta quando você o quebra de outra maneira mais tarde e as ferramentas mencionadas não o ajudarão.

Eu acho que você provavelmente pode dizer o que eu recomendo. Digo que, se um tópico lhe interessar, mesmo que por um momento, você também pode aproveitar essa curiosidade e adquirir uma nova habilidade enquanto está nisso. Especialmente um como este - o shadowarquivo está em um formato bastante básico, e o pouco que eu sei sobre ele aprendi depois de quebrá-lo acidentalmente - e não foi o resultado de uma edição que fiz nesse arquivo.

Em vez disso, meu problema ocorreu após algum outro erro com um banco de dados de gerenciamento de pacotes que levou o gerenciador de pacotes a substituí-lo sem salvar um backup e todos os usuários do sistema foram eliminados . Outras tentativas ignorantes de consertar os arquivos apenas espalham o dano a outros arquivos relacionados e não demorou muito para que eu tivesse que restaurar a maioria dos /etcarquivos de texto de um backup (menos recente do que o esperado) .

Depois de ter feito isso e verificado que o tinha em estado viável, decidi fazê-lo deliberadamente e meticulosamente de novo. E mais uma vez. Isso foi há alguns meses atrás, mas hoje continuo confiante de que posso diagnosticar a origem de um loginproblema com uma única vez de um único arquivo de log no meu sistema e abordá-lo com qualquer editor básico (e, talvez, com uma rápida olhada) ou dois em man 5 problem_file) forneceu apenas acesso básico aos fs raiz afetados. Não foi obtido a preço baixo - levei quase um dia - e os arquivos de configuração relacionados estão espalhados por todo o diretório (e até alguns - como PAMs do Linux /var/run/no_login- em outras montagens) - mas valeu a pena. E poderia ter sido mais barato com um pouco de premeditação.

A moral desta história é que provavelmente é não uma coisa boa que o formato de configurações de missão crítica, como shadow, passwd, groups, shellsdeve ser tão opaca para nós que devemos empregar ferramentas especiais de edição que pode ou não pode corrigir o nosso trabalho de forma e por razões que não entendemos apenas para efetuar uma simples mudança. Acho que pelo menos vale a pena entender exatamente o que eles fariam de maneira diferente do que poderíamos.

Provavelmente, é bom, no entanto, que, uma vez familiarizados o suficiente com a edição dos arquivos, corremos o risco de criar neles e depois salvá-los com erros tipográficos ou simples de sintaxe, que existem ferramentas à nossa disposição que podem checar novamente nosso trabalho de maneiras e por razões que já entendemos antes de aplicar nossas edições blase.

mikeserv
fonte
3

Contraponto - se você precisar copiar um conjunto de logins de usuários de um servidor para outro, sem conhecer suas senhas atuais ou atribuir novas, precisará editar / etc / shadow diretamente para inserir o campo de senha com hash. O vipw não permite que você toque nesse campo, é apenas "*"

Atualização: ou, neste caso, use chpasswd -e "hashed password", mas isso só pode ser feito diretamente no computador. Se você estava trabalhando com um conjunto de arquivos que ainda não foram implantados em uma máquina (por exemplo, máquina virtual), a edição direta pode ser sua única solução.

normalmente existe uma ferramenta para fazer o que você quer fazer sem editar o / etc / shadow diretamente, você só precisa saber o que é ...

Tomuo
fonte
Ou você pode configurar um servidor LDAP.
Kusalananda
0

Outro motivo pelo qual você precisa editar esses arquivos é se estiver editando os arquivos em uma imagem do sistema de arquivos que você inicializará em outro sistema e precisará depurar esse sistema após a inicialização. Por exemplo, o sistema de arquivos epheremal do MAAS usado em um comissionamento com falha ou no modo de recuperação.

Nunca diga nunca ... a menos que você esteja falando sério.

Bigtexun
fonte