Como altero meu nome de usuário?

325

Algum tempo atrás, quando instalei o Ubuntu, escolhi um nome de usuário bastante estúpido para a minha conta que não quero mais usar.

Como altero isso (incluindo o nome do meu diretório pessoal e o nome no terminal) sem perder as configurações dos aplicativos?
Como mantenho as permissões e minhas chaves para várias autenticação (por exemplo, email, SSH, GPG e mais)?
Quais configurações podem se perder se eu mudar meu nome de usuário?

Takkat
fonte
Por que não podemos navegar para /usr/share/applications/users.desktop >> Clique no usuário para o qual o nome deve ser alterado. >> Clique em Alterar nome de usuário >> Altere o nome >> Clique em Ok. Eu acho que essa seria a maneira mais fácil de alterar o nome de usuário, não?
Anand

Respostas:

325

Os sistemas operacionais do tipo Unix separam o nome do usuário da identidade do usuário, portanto, você pode alterar com segurança o nome sem afetar o ID. Todas as permissões, arquivos etc. estão vinculados à sua identidade (uid), não ao seu nome de usuário.

Para gerenciar todos os aspectos do banco de dados do usuário, use a usermodferramenta

Para alterar o nome de usuário (provavelmente é melhor fazer isso sem estar conectado):

sudo usermod -l newUsername oldUsername

No entanto, isso não renomeia a pasta inicial.

Para alterar a pasta inicial, use

sudo usermod -d /home/newHomeDir -m newUsername

depois de alterar o nome de usuário.

Por exemplo, você pode sair, ir para um console ( Ctrl+ Alt+ F1) e sudo su -se tornar um verdadeiro root (em vez de sudo -sonde $ HOME ainda é / home / seu nome). Talvez você também precise matar alguns processos ainda em execução desse usuário primeiro. Para fazer isso, digite ps -u username, procure o PID correspondente e mate-o kill PID-number.

Atualização: conforme a organização mencionada, alguns arquivos podem fazer referência ao seu diretório inicial antigo. Você pode manter um link simbólico para compatibilidade com versões anteriores, por exemplo, ln -s /home/newname /home/oldnameou alterar o conteúdo do arquivo com sed -i.bak 's/*oldname*/*newname*/g' *list of files*Cria um backup para cada arquivo com uma extensão .bak.

Algumas informações adicionais para usuários não tão experientes como eu:
Como eu só tenho uma conta de usuário (administrador), ele não me deixou mudar o nome de usuário ( "você já está logado" foi a resposta em tty1 ( Ctrl+ Alt+ F1). Para obter em torno disso:

  1. Entre com suas credenciais antigas e adicione um novo usuário, por exemplo, "temporário" em TTY1:

    sudo adduser temporary
    

    defina a senha.

  2. Permita que o usuário temporário execute o sudo adicionando o usuário ao grupo sudo:

    sudo adduser temporary sudo
    
  3. Sair com o comando exit.
  4. Retorne para tty1: Entre com a conta de usuário e a senha 'temporárias'. Mude seu nome de usuário e pasta conforme mencionado acima. exit(até você receber o prompt de login)
  5. Volte para TTY7 ( Ctrl+ Alt+ F7) para fazer login na tela da GUI / área de trabalho normal e veja se isso funciona.
  6. Exclua usuário e pasta temporários:

    sudo deluser temporary
    sudo rm -r /home/temporary
    
Egil
fonte
11
Infelizmente, isso não é verdade para diferentes arquivos de configuração em $ HOME, tente executar algo parecido grep -IRFl /home/username ~e você verá quantas referências ao seu diretório pessoal estão armazenadas lá.
organize
1
Foi uma correção simples - bastava usar o editor de contas de usuário em unidade, seguido pelo reinício.
Steve Koch
6
Para aqueles com uma pasta inicial criptografada, será necessário editar /home/.ecryptfs/oldusername/.ecryptfs/Private.mntpara apontar para sua nova pasta inicial, caso contrário, não será possível fazer login via Unity.
Raphael
2
sudo usermod -d /home/edge -m edgeproduz: usermod: Directory /home/empedokles could not be renamed in /home/edgeou seja, o passo 4 não funciona.
Empedokles
2
O @JTC nunca edita sudoerscom planície nano. Sempre use visudo.
isopor fly
108

Para juntar tudo:

  1. Na tela inicial, pressione Ctrl+ Alt+ F1.
  2. Entre usando seu nome de usuário e senha.
  3. Defina uma senha para a conta "raiz".

    sudo passwd root
    
  4. Sair.

    exit
    
  5. Entre usando a conta "root" e a senha que você definiu anteriormente.

  6. Mude o nome de usuário e a pasta pessoal para o novo nome que você deseja.

    usermod -l <newname> -d /home/<newname> -m <oldname>
    
  7. Mude o nome do grupo para o novo nome que você deseja.

    groupmod -n <newgroup> <oldgroup>
    
  8. Bloqueie a conta "raiz".

    passwd -l root
    
  9. Se você estivesse usando ecryptfs (diretório inicial criptografado). Monte seu diretório criptografado usando ecryptfs-recover-privatee edite <mountpoint>/.ecryptfs/Private.mntpara refletir seu novo diretório inicial.

  10. Sair.

    exit
    
  11. Pressione Ctrl+ Alt+ F7.

E agora você pode fazer login usando seu novo nome de usuário.

Valentin Uveges
fonte
6
Se depois de usermod -l obter a user <oldname> is currently used by process <processno>, você poderá encontrar esse processo (provavelmente um daemon ou tmux / screen) usando ps aux | grep <processno>. Você pode interromper esse processo normalmente, caso contrário, pode kill <processno>.
RedPixel
1
Obrigado por juntar este comentário. Foi muito útil. Duas coisas que podem ser mencionadas embora. Após a etapa 4, reiniciei para não receber mensagens de erro na etapa 6. Além disso, após a conclusão desse processo, o arquivo / etc / passwd terá um comentário de ID e um comentário de ID correspondente ao nome de usuário antigo. Isso fará com que a tela de login exiba o antigo nome de login. Não consegui encontrar uma maneira decente de corrigi-lo na linha de comando, mas consertei-o entrando na conta de usuário, acessando as configurações da conta e alterando o "Nome de login" para o nome de usuário. Isso atualizou o arquivo / etc / passwd e corrigiu o problema.
Jibbers
1
Essa é a maneira mais fácil e infalível de fazer isso. É melhor reiniciar após a etapa 4, como o @Jibbers sugeriu.
Yerke
Eu mencionaria que os "indicadores nas janelas do navegador de arquivos" agora estão apontando para as pastas antigas, então eu tenho que excluir esses indicadores.
precisa saber é o seguinte
Não vai funcionar. Se você pressionar Ctrl + Alt + F1 no início, está tentando fazer login no usuário recém-criado, o que não será permitido.
Empedokles # 13/16
27

Reinicie no modo de recuperação e vá para o shell do prompt raiz ("Solte no prompt do shell raiz")

Primeiro remonte a raiz

mount -o remount,rw /

Para alterar o nome de usuário e o nome da pasta pessoal,

usermod -l <newname> -d /home/<newname> -m <oldname>

Para o nome do grupo,

groupmod -n <newgroup> <oldgroup>
karthick87
fonte
1
quando eu uso usermod -l <newname> -d /home/<newname> -m <oldname>isso me dá erro usermod: user oldusername is currently used by process 3170e se eu matar o processo ainda me dá o mesmo erro. usando ubuntu 13.10
Waqas
4
NÃO FAÇA ISTO SE SEU DIRETÓRIO DE CASA É CRIPTOGADO !!!! Eu segui esse procedimento e ele me enviou para um passeio selvagem de 2 horas ... A única maneira de recuperar é executar esse procedimento novamente e colocar o nome original (não gostei) de volta. O problema que você terá é "Não é possível chdir na montagem point "
Mike
Por que não podemos navegar para /usr/share/applications/users.desktop >> Clique no usuário para o qual o nome deve ser alterado. >> Clique em Alterar nome de usuário >> Altere o nome >> Clique em Ok. Eu acho que essa seria a maneira mais fácil de alterar o nome de usuário, não?
Anand
9

No Ubuntu 13.10, 14.04, 16.04:

  1. Clique no ícone "Configurações do sistema".
  2. Clique em "Contas de usuário".
  3. Sua conta de administrador deve ser exibida.
  4. Clique no botão "Desbloquear".
  5. Digite sua senha de usuário conforme solicitado para permitir alterações em sua conta.
  6. Uma vez desbloqueado, você pode clicar no seu nome de usuário antigo que deseja alterar e digitar um novo nome de usuário para substituí-lo.
  7. Quando você digitar o novo nome, clique no botão "Bloquear" para tornar a alteração permanente.
  8. Reinicie o Ubuntu.
Chicodoodoo
fonte
3
Isso não mudou o nome de usuário para mim, apenas o nome. O nome de usuário antigo ainda aparece no terminal e como diretório e grupo inicial (mesmo após a reinicialização).
DougC 7/0318
3

Ao receber, usermod: can't change /etc/passwordexecute os seguintes comandos:

No console de recuperação raiz, execute:

mount -o remount,rw /

Em seguida, execute novamente:

usermod -l <newname> -d /home/<newname> -m <oldname>
user1511576
fonte
Por que não podemos navegar para /usr/share/applications/users.desktop >> Clique no usuário para o qual o nome deve ser alterado. >> Clique em Alterar nome de usuário >> Altere o nome >> Clique em Ok. Eu acho que essa seria a maneira mais fácil de alterar o nome de usuário, não?
Anand
1

A resposta listada aqui por @ karthick87 funciona perfeitamente bem, mas aqui está o que eu faria apenas para estar seguro e evitar todas as falhas:

  1. Crie uma conta / usuário separado e verifique se os recursos raiz dessa conta / usuário ou efetue login como qualquer usuário habilitado para root.
  2. Faça logout com a conta atual e, em seguida, faça login com a conta mencionada na etapa 1.
  3. Mate todos os processos do usuário anterior.
  4. Agora siga as etapas mencionadas por @ karthick87 e altere o nome de usuário e também o proprietário do diretório inicial.
  5. Siga a resposta de @Sriraj Hebbar para alterar o nome do grupo.
  6. faça logout com o usuário sobressalente e faça login com seu usuário. Se você criou um usuário extra, exclua-o.
sandeep srivastav vaddiparthy
fonte
0

Quando você usermod -l <newname> -d /home/<newname> -m <oldname>receber useradd: can't change /etc/passwduma mensagem de erro para evitar isso, basta adicionar o sudo --comando acima, como

sudo -- usermod -l <newname> -d /home/<newname> -m <oldname>

e

sudo --  groupmod -n <newgroup> <oldgroup>
Sriraj Hebbar
fonte
-3

Como nem todos os PCs possuem o usermodaplicativo, você pode fazê-lo manualmente. A partir da raiz aberta /etc/passwdpara edição:

sudo vim /etc/passwd

e altere o nome do usuário no início de uma linha:

user:x:500:501:username:home/user:/bin/bash

para:

newuser:x:500:501:username:home/user:/bin/bash

então, se você trabalhou no root, faça o login e, se tiver efetuado login user, faça logoff e faça login novamente.

Малъ Скрылевъ
fonte
Eu tentei dessa maneira (antes de descobrir o usermodcomando) e a senha do usuário não é mais aceita.
Ben Voigt
@BenVoigt nem todas as peças têm o usermod
Малъ Скрылевъ
3
É o Ubuntu! Se não houver, usermodsua instalação está quebrada, pois faz parte do passwdpacote, o que é necessário .
Auspex