Ao tentar alterar o nome de usuário, o terminal informa que o usuário está sendo usado atualmente pelo processo

16

Estou tentando alterar meu nome de usuário, conforme conselhos aqui, no entanto, depois de executar o seguinte comando:

CurrentName@HostName ~ $ sudo usermod -l TheNameIWantToChange -d /home/TheNameIWantToChange -m CurrentName

O terminal responde com:

CurrentName@HostName ~ $ usermod: user CurrentName is currently used by process 2491

E o nome de usuário permanece o mesmo. Alguém sabe como eu poderia corrigir isso e mudar meu nome de usuário, afinal?

Paradoxo
fonte

Respostas:

8

Para citar man usermod:

CAVEATS
   You must make certain that the named user is not executing any 
   processes when this command is being executed
   if the user's numerical user ID, the user's name, or the user's home 
   directory is being changed.  usermod
   checks this on Linux, but only check if the user is logged in 
   according to utmp on other architectures.

Portanto, você precisa garantir que o usuário que você está renomeando não esteja conectado.

Além disso, notei que você não está executando isso como root. Execute-o como root ou execute "sudo usermod".

seumasmac
fonte
3
se você não pode matar o processo sem ele reiniciar, combinar o comando por exemplokill -9 23162 && sudo usermod -l TheNameIWantToChange -d /home/TheNameIWantToChange -m CurrentName
Richard Frank
2
O programa usermodparece estar quebrado por design. Se o gerenciamento de usuários for feito em um servidor LDAP, a alteração de um atributo do usuário é sempre possível e não depende do sistema em execução. Eu estou usando Ansible que os usos usermodeo sistema de hole não é confiável, porque as mudanças são bloqueados pelos usuários registrados.
ceving
1

Eu acho que você deve executar o comando com outro usuário. Faça login com root ou outro usuário e tente novamente. Se você estiver na janela x com o usuário que deseja alterar, parece lógico que os comandos falhem.

krivos
fonte
1

Isso é principalmente um problema no Ubutu, no qual você não tem uma conta root para fazer login desde o primeiro lugar. Portanto, isso cria uma contradição: eu sou um usuário no grupo sudoer. Eu não posso mudar meu próprio uid.

Não tenho certeza se esta é a melhor solução. Primeiro criei uma conta falsa, adicionei-a à lista sudo. Então eu logon na conta foo e executo usermod -g MYOWNGID mylogin

Kemin Zhou
fonte
0

Eu tenho o mesmo problema usando o usermod, que foi corrigido usando o parâmetro -m, que move o conteúdo do diretório inicial para uma nova localização. Use esta opção em combinação com -d (modifique o diretório principal do usuário, onde houver usuário).

Sugiro ver o comando man usermod

Guillermo Porras Arias
fonte
0

Tente estas etapas:

  1. Defina a senha para o usuário root:

raiz do sudo passwd

  1. reiniciar o ubuntu
  2. Entre como "root" após a inicialização -> Isso permitirá que o ubuntu não gere nenhum processo para o usuário atual.
  3. Alterar o nome de usuário

    usermod -l newuser -d / home / newuser -m olduser

  4. Verifique se o nome de usuário foi alterado, verificando o nome da pasta com o novo nome de usuário no diretório / home
Rajib Hasan
fonte
-1

Você não deve alterar o nome de usuário de um usuário conectado. Em vez disso, você deve encerrar todos os processos do usuário, desconectar, fazer login como um usuário diferente e renomear.

Se parecer muito trabalho, você pode ligar a mudança: https://medium.com/@deltazero/linux-howto-rename-currently-operating-user-f8fae62db110

Funciona assim:

# your new username
newuser=dave

# root-run these all at once
sudo su -c "\
  sed -i s/$USER/$newuser/g /etc/group \
  && sed -i s/$USER/$newuser/g /etc/shadow \
  && sed -i s/$USER/$newuser/g /etc/passwd \
  && mv /home/$USER/ /home/$newuser"

# exit & reconnect under new username
dayvee.cz
fonte