Como posso alterar meu próprio ID de usuário?

49

Existe apenas um usuário no meu sistema. Como posso alterar seu ID do usuário do padrão 1000?

Se houver etapas adicionais necessárias para evitar a interrupção do processo de login em uma instalação típica da área de trabalho, elas deverão ser incluídas como parte da resposta.

ændrük
fonte
5
Por curiosidade, quais são os motivos para alterar um ID do usuário?
Olivier Lalonde
14
Se você normalmente troca dados com outros sistemas via NFS, ou apenas algum método de cópia que preserva o UID, ajudará se você usar o mesmo UID para o mesmo nome de usuário nos sistemas.
João Pinto
João acertou. Em particular, espero combinar UIDs com usuários no Mac OS X, para que um sistema de arquivos compartilhado carregue as permissões pretendidas nos sistemas operacionais.
9/10 /
1
A versão atual do Nethack (3.6.0) salva jogos, incluindo o uid atual no nome do arquivo. Se você deseja sincronizar um jogo salvo entre máquinas, precisa corresponder aos uids. (usando um link simbólico não é prático)
Jonathan Hartley

Respostas:

27

O problema é que, como você mencionou, não é possível alterar o UID do usuário quando ele estiver conectado a uma sessão. Você precisa usar outra conta de usuário para continuar.

Mas você não precisa criar uma nova conta de usuário, promovê-la para administrador, sair, fazer login na nova conta de administrador, alterar o UID da sua conta principal, sair, fazer login na sua conta principal e excluir o novo usuário administrador. apenas mude seu UID. ;)

Você pode inicializar no modo de recuperação (é uma opção que aparece quando você inicia o computador ou mantém a tecla Shift pressionada logo após a conclusão das mensagens do BIOS; use ESCem máquinas Dell que executam o OEM-Ubuntu). Isso registrará você em uma sessão raiz. Sendo logado como root e não na sua conta de usuário habitual , você poderá modificar seu UID.

Como o modo de recuperação funciona apenas na interface da linha de comandos, uma vez logado em uma sessão raiz, você precisará:

  1. Use as instruções do BubbaJ para remontar o sistema de arquivos raiz em modo de leitura e escrita : mount -o remount,rw /.

  2. Use o comando de Luis Alvarado : usermod -u NEW_UID your_username.

  3. Siga as instruções do ddeimeke para atualizar as permissões do arquivo.
  4. Em seguida, reinicie o computador ( reboot), para poder inicializar no modo normal.
Alexandre P.
fonte
1
Não funciona no Ubuntu 14.04. Depois de fazer usermod -u NEW_UID your_usernamee find / -uid 1000 -exec chown -h 5000 '{}' \+, a reinicialização leva a um login da GUI apenas de sessão de adivinhação.
Kay
Talvez os arquivos ocultos em casa não sejam alterados corretamente? Você usa criptografia para sua casa?
math
Você pode verificar seus arquivos /etc/login.defse /etc/adduser.confse tiver alterado seu uid fora das políticas fornecidas nesses arquivos de configuração. Usuários fora dos limites da política não são exibidos no loop de logon, mas você pode alterar a política. Veja esta resposta
K Markey
usermod: user user_name is currently used by process 1118 @Alexandre P.
alper
54

Você pode alterá-la em /etc/passwd, /etc/groupe /etc/shadowou você usar um dos possibilties preferenciais acima. Mas - o mais importante - você precisa alterar a propriedade de todos os arquivos pertencentes ao usuário.

Por exemplo, se o ID do usuário antigo for 1000 e o novo for 5000:

find / -uid 1000 -exec chown -h 5000 {} +

E o mesmo para o ID do grupo (se você também o alterar).

find / -gid 1000 -exec chgrp -h 5000 {} +
ddeimeke
fonte
8
Este é um ponto realmente importante. Muitas coisas vão quebrar se você seguir as técnicas dadas nas outras respostas sem também fazer isso.
Pool9 /
4
Acabei de aprender que se deve usar melhor sudo find / -xdev -uid 1000 -exec chown 5000 '{}' \+; caso contrário, incluiria dados montados (em /mnt, o que é possivelmente indesejável) e arquivos com os quais você não deve mexer no /proce /dev. Veja este post
Sebastian
2
Isso não é uma boa ideia. Considerando que / home está em um sistema de arquivos diferente, você nem mudará a propriedade de seus próprios arquivos.
ddeimeke
Nesta resposta, você deve alterar as permissões de grupo e de uid antes de editar os arquivos em / etc, certo?
MrDaniel
Não importa, o que você faz primeiro.
ddeimeke
25

Solução completa baseada em @AlexandreP. e @ddeimeke + documentação oficial. Não é necessário reiniciar.

A política Debian / Ubuntu é que, se houver um usuário jimcom ID de usuário 1001, também haverá um grupo jimcom ID de grupo 1001. Essa solução também atualiza os IDs de grupo.

  1. Habilite a conta raiz :

    sudo passwd root
    
  2. Se o usuário estiver logado, efetue logout (também nos terminais virtuais)
  3. Vá para VT1: Ctrl-Alt-F1
  4. Efetue login como root e execute-o com o nome de usuário e o UID antigo / novo fornecido:

    # put the information we need in variables
    username=...
    old_uid=`id -u $username`  # looks up current (old) uid
    new_uid=...
    
    # update the user ID and group ID for $username
    usermod -u $new_uid $username
    groupmod -g $new_uid $username
    
    # update the file ownerships
    # NB: you cannot combine the next two chowns, or files where 
    # only the uid xor the gid matches won't be updated  
    chown -Rhc --from=$old_uid $new_uid /    # change the user IDs
    chown -Rhc --from=:$old_uid :$new_uid /  # change the group IDs
    
  5. Sair
  6. Faça login como $username
  7. Desative a conta raiz :

    sudo passwd -dl root
    
l0b0
fonte
Ativar a conta raiz não deve ser necessário; basta usar o modo de recuperação .
24712
2
Isso deve ser mais rápido do que reiniciar, e é por isso que eu postei.
L0b0
3
No Ubuntu 14.04 e 14.10, você também precisa corrigir as permissões estendidas da ACL em / media, caso contrário a montagem automática (no Nautilus / Nemo) é interrompida à medida que o UID antigo permanece. sudo setfacl -m "u:<NEWUID>:r-x" /media/<USERNAME> sudo setfacl -x "u:<OLDUID>" /media/<USERNAME>
richud.com
Isso funcionou como um encanto para mim. Só tinha que mudar o uid, no entanto.
Chmike # 6/15
ativar a conta raiz parece mais fácil (e menos assustador) para mim do que usar o Modo de recuperação.
Jonathan Hartley
7

Se você for para o console e digitar: usermod --helpvocê receberá um dos parâmetros dizendo:

-u, --uid UID novo UID para a conta de usuário

portanto, se você deseja alterar o UID do usuário cyrex, faça:

usermod -u 1000 cyrex

isso mudaria o uid do cyrex de qualquer valor que tivesse antes para 1000

Se você quiser fazer isso visualmente, faça o seguinte:

Vamos para

SISTEMA -> ADMINISTRAÇÃO -> USUÁRIOS E GRUPOS

Selecione você mesmo na lista e clique em CONFIGURAÇÕES AVANÇADAS

O UID está no final dessa janela.

Luis Alvarado
fonte
1
Tentei o método gráfico que você sugeriu, mas há uma mensagem dizendo "Você não pode alterar o ID do usuário enquanto o usuário estiver logado". Você já testou esse método?
ændrük
2
Hehe bem, isso é verdade. Eu tentei com outra conta. Você precisa fazer login via root ou qualquer outra conta de administrador. Então faça o caminho gráfico. Desculpe por isso.
Luis Alvarado
2
  • Saltar Sistema >> Administração >> Usuários e Grupos

texto alternativo

  • Clique em Configurações avançadas e vá para a guia Avançado. Na parte inferior, você verá seu ID de usuário.
  • Altere-o e clique em ok.
    texto alternativo
karthick87
fonte
1
Devo simplesmente ignorar o aviso na sua captura de tela, "Você não pode alterar o ID do usuário enquanto o usuário estiver logado".
9/10 /
Você precisa alterá-lo de outra conta de usuário para se livrar desse aviso.
precisa saber é o seguinte
7
Minha pergunta é "Como posso alterar meu próprio ID de usuário?". Se você pretende que sua resposta seja que eu deveria criar um novo usuário apenas para editar esse valor, edite sua resposta para indicar isso.
ændrük
0

Com o KDE: No menu Alterar configurações avançadas do usuário:

Mudar de outro usuário não funciona para 1000, que é o usuário padrão.

você tem que fazer isso manualmente - minha experiência

skidzo
fonte
0

Primeiro, você precisa fazer login como root, pelo menos por um tempo, portanto, tornemos isso possível:

sudo passwd root

Reinicialize, ctrl + alt + f1 para alternar para o console, faça o login como root e faça o seguinte (a propriedade do diretório home será resolvida automaticamente):

groupmod --gid NEWGID username
usermod  --uid NEWUID username 

Para seus arquivos em locais diferentes do seu diretório pessoal, faça o seguinte:

sudo chown -R username:username /path/to/files

Exclua e bloqueie a senha da raiz, se desejar. (Eu tendem a mantê-lo):

passwd -dl root
qed
fonte
0

Eu segui as instruções do ddeimeke com as seguintes alterações:

  1. Eu não saí e, em vez disso, sudo su
  2. Eu não toquei /etc/shadow

Eu já vi isso mencionado nas outras respostas que você deve inicializar para recuperação ou fazer login como root. O meu era uma instalação nova do Ubuntu 14, então eu estava disposto a testar se funcionaria sem fazer login como root. Também estava fazendo isso em uma instância do EC2 sobre SSH.

KalenGi
fonte