É possível renomear uma conta de usuário Unix?

48

Eu instalei o Ubuntu em um computador que agora é usado por outra pessoa. Renomeiei a conta com o nome dela, mas ela só altera o nome completo, não o nome do usuário, que ainda é exibido no canto superior direito (no fast-user-switch-applet ). Existe um comando para renomear uma conta de usuário Unix?

Pensei em criar uma nova conta de usuário com o novo nome e, em seguida, copie tudo na home "antiga" para a página inicial da nova conta. Isso seria o suficiente? Mas então eu acho que os arquivos teriam o proprietário das permissões da conta antiga? Então, devo fazer chown -R newuser ~ ?

Existe uma maneira mais simples / recomendada de fazer isso?

    
por Yann Dìnendal 18.08.2010 / 02:32

4 respostas

52

Tente

usermod --move-home --login <new-login-name> --home <new-home-dir> <old-login-name>

A opção --move-home move o conteúdo do diretório home antigo para o novo dado pela opção --home , que é criada se ainda não existir.

Se você quiser que o grupo de usuários principal corresponda ao new-login-name , adicione --gid <new-login-name> ao comando acima, mas o grupo deve ser pré-existente.

Veja a página man para mais informações:

man usermod
    
por 18.08.2010 / 03:05
22

Embora seja possível renomear um usuário e usermod fará um pouco do trabalho , é bem provável que cause problemas. Aqui está uma lista de lugares onde o nome de usuário pode aparecer; Não afirmo que esta lista é exaustiva.

  • A entrada do usuário em /etc/passwd e arquivos relacionados (por exemplo, /etc/shadow , /etc/master.passwd ).
  • Agrupe entradas em /etc/group (e /etc/gshadow ).
  • Possivelmente entradas em /etc/sudoers .
  • A caixa de correio do sistema, normalmente /var/mail/$USER ou /var/spool/mail/$USER .
  • O crontab, normalmente /var/spool/cron/crontabs/$USER
  • Em at jobs ( /var/spool/cron/atjobs/* )

O diretório inicial provavelmente aparecerá em ainda mais lugares. Muitos aplicativos gravam caminhos absolutos em vários arquivos de pontos. Se você decidir renomear o diretório inicial também (embora não exista um requisito de que o diretório inicial do usuário alice seja /home/alice , se ele for /home/bob seria confuso), você precisará cuidar disso. Um substituto global funcionará para a maioria dos aplicativos, mas não faço promessas. Se possível, mantenha o nome do diretório inicial antigo como um link simbólico para o diretório renomeado.

    
por 17.05.2011 / 23:19
4

Aqui está um resumo dos comandos que eu usei em um sistema Debian:

groupadd NEW
usermod -l NEW -m -d /home/NEW -g NEW OLD
chfn -f "New Fullname" NEW
cd /home
ln -s NEW OLD

Os dois últimos comandos criam um link simbólico do nome do diretório home antigo ( / home / OLD ) para o nome do novo ( / home / NEW >).

    
por 04.07.2014 / 18:23
1

todos os métodos acima são elegantes, mas por que não basta criar um novo usuário? Copie todo o conteúdo doméstico do primeiro, e é isso? claro, se for sobre uma conta de serviço (aplicativo), talvez não seja a melhor prática

    
por 09.07.2014 / 09:38