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

48

Eu instalei o Ubuntu em um computador que agora é usado por outra pessoa. Renomeei a conta com o nome dela, mas ela altera apenas 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?

Yann Dìnendal
fonte

Respostas:

52

Experimentar

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

A --move-homeopção move o conteúdo do diretório inicial antigo para o novo fornecido pela --homeopção criada se ela ainda não existir.

Se você deseja que o grupo de usuários primário corresponda ao new-login-name, adicione --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
gvkv
fonte
Obrigado! Eu não sabia sobre esse comando. :) No entanto, essa é a única conta neste computador e o homem diz o seguinte: «Você deve garantir que o usuário nomeado não esteja executando nenhum processo quando este comando estiver sendo executado se o ID numérico do usuário, o nome do usuário ou o O diretório inicial do usuário está sendo alterado. usermod verifica isso no Linux, mas apenas verifique se o usuário está logado de acordo com utmp em outras arquiteturas. »Você sugeriria usar um CD ao vivo para fazer isso ou criar uma conta temporária que eu excluirei quando terminar?
Yann Dìnendal 18/08/10
2
Como você está usando o Ubuntu e não pode fazer login como root, eu criaria outra conta chamada, digamos, admin que você usa para esse tipo de tarefa. Uma conta temporária também funcionará, mas você pode mantê-la, pois poderá fazer coisas semelhantes no futuro.
precisa saber é
3
Esteja ciente de que usermod --homedeve conter o caminho completo, por exemplo /home/user.name- caso contrário, o novo diretório inicial será criado dentro do diretório de trabalho atual.
Fee27
Isso não vai mudar o grupo!
Hannes Schneidermayer
22

Embora seja possível renomear um usuário e usermodfaç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 /etc/passwde os arquivos relacionados (por exemplo /etc/shadow, /etc/master.passwd).
  • Agrupe entradas em /etc/group(e /etc/gshadow).
  • Possivelmente entradas /etc/sudoers.
  • A caixa de correio do sistema, normalmente /var/mail/$USERou /var/spool/mail/$USER.
  • O crontab, normalmente /var/spool/cron/crontabs/$USER
  • Em atpostos de trabalho ( /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 exista nenhum requisito alicepara o diretório inicial do usuário /home/alice, /home/bobser confuso), será necessário cuidar dele. 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.

Gilles 'SO- parar de ser mau'
fonte
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 inicial antigo ( / home / OLD ) para o nome do novo ( / home / NEW ).

Soul Singin
fonte
Para que serve groupadd?
Yann Dìnendal
2
Em vez de groupadd, acho que seria preferível groupmod -n NEW OLDevitar alterar o gid. Pelo menos no Ubuntu, um grupo com o mesmo nome que o usuário é configurado por padrão, portanto, também se deseja alterar esse nome.
Jamadagni
1

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

AdrianP
fonte
3
Parece que isso pode ser melhor colocado como um comentário do que como uma resposta completa, que adiciona quase nada, exceto mencionar uma solução que já foi mencionada no OP. Você deve adicionar algumas informações sobre por que você acha que essa solução é melhor ou até aceitável.
precisa saber é o seguinte