Como posso renomear um usuário unix?

89

Eu tenho um usuário chamado hedgehoge quero que ele seja chamado squirrel, mas não quero alterar seu ID numérico do usuário.
Como posso fazer isso?

Szymon Jeż
fonte
2
Provavelmente porque renomear um usuário não é exatamente uma tarefa que uma SA profissional enfrentaria. (Para a questão votos negativos.) #
HopelessN00b
2
@ Jeznet votei mal porque não é apenas uma tarefa incrivelmente simples que pode ser resolvida digitando seu título no google, você também responde à sua própria pergunta assim que a solicita. Parecia uma perda de tempo.
boburob
10
@boburob "você também respondeu sua própria pergunta assim que a fez. Parecia uma perda de tempo", consulte: blog.stackoverflow.com/2011/07/…
Szymon Jeż 11/12/12
10
@boburob Você viu a caixa de seleção que diz Answer your own question – share your knowledge, Q&A-stylequando você faz uma pergunta? Está lá por uma razão e não estaria lá se não quisessem que fosse usado. (Idealmente em melhores perguntas, mas independentemente disso, downvoting alguém para responder a sua própria pergunta é má forma.)
HopelessN00b
1
Sim, eu também respondi minha própria pergunta antes, mas para mim, fazendo uma pergunta e colando o resultado google no mesmo minuto é um pouco de um desperdício de tempo
boburob

Respostas:

133

No Linux, o usermodcomando altera os nomes de usuário. Ele modifica os arquivos de conta do sistema para refletir as alterações especificadas na linha de comando.

Para alterar apenas o nome de usuário:

usermod --login new_username old_username

Para alterar o nome de usuário e o nome do diretório inicial:

usermod --login new_username --move-home --home path_to_the_new_home_dir old_username

Você também pode alterar o nome do grupo associado ao usuário:

groupmod --new-name new_username old_username
Szymon Jeż
fonte
12
Você pode usar o usermod para fazer a coisa toda USERMOD -l nova-user-name -m -d / new / home / dir old-user-name
user9517
5
Observe também que o grupo também não é alterado. Se você precisar renomear o old-user-namegrupo também, use # groupmod -n new-user-name old-user-name.
Alxs #
1
Para sistemas usando autofs, você também deve atualizar /etc/auto.home. Eu acabei de encontrar isso.
Steven C. Howell
2
Pode ter que executar visudo novamente para colocar o novo nome de usuário na lista sudoers se for o caso
Nagev
2
Você também vai precisar para mudar o nome do arquivo crontab localizado em /var/spool/cron/crontabs/(se você tiver quaisquer trabalhos instalado)
Daniel F
12

NOTA: não tente fazer isso se seu diretório estiver criptografado! Se esse for o seu caso, convém verificar primeiro: https://askubuntu.com/questions/107410/can-you-unencrypt-remove-encryption-from-a-user-home-folder

A maneira direta de fazer isso é:

  1. Crie uma nova conta temporária com direitos sudo:

    sudo adduser temp
    sudo adduser temp sudo
    
  2. Saia da sua conta atual e faça login novamente com a conta temporária.

  3. Renomeie seu nome de usuário e diretório:

    sudo usermod -l new-username -m -d /home/new-username old-username
    
  4. Renomeie o grupo do nome de usuário padrão:

    sudo groupmod -n new-username old-username
    
  5. Saia da conta temporária e faça login novamente na sua conta com o novo nome de usuário.

  6. Remover conta temporária:

    sudo userdel -r temp
    

Caso contrário, você apenas (1) cria um novo usuário e (2) rsynca pasta inicial do usuário antigo para o novo e depois (3) chown.

mimoralea
fonte
No CentOS eu também precisava de `passwd temp 'e' usermod -a wheel temp '.
Brian Z
4

Geralmente, você pode renomear um usuário alterando seu nome de usuário nos arquivos /etc/passwd(e /etc/shadow, se aplicável). Na maioria dos sistemas unix, o vipwcomando é usado para editar esses arquivos (e em muitos sistemas inclui algumas salvaguardas para garantir que você não estrague demais as coisas).
Veja as páginas de manual para passwd(5), shadow(5)e vipw(8)para obter mais informações.

Observe que o método acima não renomeia outras coisas que podem levar o nome de usuário original (os diretórios pessoais são o principal exemplo, os grupos pessoais por usuário (em sistemas que os utilizam) são outro). Você também pode limpá-los para manter a consistência, alterando os campos apropriados no arquivo passwd e renomeando os diretórios.


Vários sistemas operacionais fornecem uma maneira específica de sistema de renomear usuários. Por exemplo, muitos sistemas Linux incluem o usermod(8)comando e, no AIX, é possível alterar os nomes das contas usando o SMIT (ou smittyem um terminal) .
Esses comandos geralmente lidam com os itens de limpeza, como renomear diretórios pessoais, se você solicitar.

voretaq7
fonte