Ajuda-me a adicionar linha a senha de arquivo / etc / shadow

0

quando tento adicionar linha dentro de /etc/shadow :

echo -e "admin234:!!:0:0:99999:7:::" >> /etc/shadow

         1    2 3

O console mostra esta mensagem:

-bash: 0: unrecognized history modifier

ou

-bash: :14790: bad word specifier (when change 3  to :14790: )

Ajuda?

    
por Beginners 02.11.2011 / 13:12

3 respostas

4

Sim, o ! s está sendo interpretado pelo bash. Mude seu " s para ' e deve ser bem.

    
por Oli 02.11.2011 / 13:24
2

@Beginners, pode querer perguntar o propósito de tentar editar o / etc / shadow manualmente dessa maneira, em outras palavras, qual é o resultado desejado que você deseja alcançar?

Quanto à compreensão de toda a história dos erros que você está recebendo, dependendo do seu conhecimento e compreensão de C, existe uma grande quantidade de documentação informativa no arquivo de origem. Se você procurar especificamente os erros que recebe, os encontrará e verá que estão relacionados a erros que você está vendo:

static char *
hist_error(s, start, current, errtype)
      char *s;
      int start, current, errtype;
{
   char *temp;
   const char *emsg;
   int ll, elen;

  ll = current - start;

  switch (errtype)
{
case EVENT_NOT_FOUND:
  emsg = "event not found";
  elen = 15;
  break;
case BAD_WORD_SPEC:
  emsg = "bad word specifier";
  elen = 18;
  break;
case SUBST_FAILED:
  emsg = "substitution failed";
  elen = 19;
  break;
case BAD_MODIFIER:
  emsg = "unrecognized history modifier";
  elen = 29;
  break;
case NO_PREV_SUBST:
  emsg = "no previous substitution";
  elen = 24;
  break;
default:
  emsg = "unknown expansion error";
  elen = 23;
  break;
}

Pode haver uma maneira mais fácil de alcançar os fins que você deseja, e é por isso que eu pergunto o que isso pode ser. Se as extremidades são conhecidas, então o caminho provavelmente já foi percorrido por muitos antes, e uma resposta mais fácil de ser entregue para ajudá-lo. ;)

Além disso, ao revisar o comando, não percebeu o uso da convenção de sudo, que seria necessária para concluir qualquer função administrativa com êxito. Lembre-se de que certas funções não funcionarão sem os privilégios corretos consumidos no momento da execução.

HTH. Tenha um bom dia. :)

    
por freecode 02.11.2011 / 13:46
0

A expansão do histórico afeta apenas os shells interativos quando a expansão do histórico é ativada (o que é por padrão). Você pode desativar a expansão do histórico executando set +H . Eu nunca uso a expansão de histórico, por isso coloco set +H em ~/.bashrc .

Como para editar manualmente o / etc / shadow, eu aconselharia contra isso. Se você quiser adicionar usuários da linha de comando, use adduser ou newusers .

man 8 adduser
man 8 newusers
    
por geirha 06.11.2011 / 19:10