ti-enxame.com

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

Instalei o Ubuntu em um computador que agora é usado por outra pessoa. Renomeei a conta com o nome dela, mas ela apenas altera o nome completo, não o nome de 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 depois copiar tudo da casa "antiga" para a casa da nova conta. Seria o suficiente? Mas acho que os arquivos teriam o proprietário das permissões da conta antiga? Então eu devo fazer chown -R newuser ~?

Existe uma maneira mais simples/recomendada de fazer isso?

48
Yann Dìnendal

Experimentar

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

O --move-home opção move o conteúdo do diretório inicial antigo para o novo fornecido pelo --home opção criada se ainda não existir.

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

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

man usermod
52
gvkv

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

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

O diretório inicial provavelmente aparecerá em mais lugares. Muitos aplicativos gravam caminhos absolutos em vários arquivos de ponto. Se você decidir renomear o diretório inicial também (embora não seja necessário que o diretório inicial do usuário alice seja /home/alice, tendo que ser /home/bob seria confuso), você precisará cuidar disso. Uma substituição global funcionará para a maioria dos aplicativos, mas não prometo. Se possível, mantenha o nome do diretório inicial antigo como um link simbólico para o diretório renomeado.

22

Aqui está um resumo dos comandos que 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 a partir do nome do diretório inicial antigo (/ home/VELHO) para o nome do novo (/ home/NOVO).

4
Soul Singin

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

1
AdrianP