Come posso cambiare il mio ID utente?


49

C'è solo un utente sul mio sistema. Come posso cambiare il suo ID utente dal valore predefinito di 1000?

Se sono necessari ulteriori passaggi per evitare di interrompere il processo di accesso su un'installazione desktop tipica, questi dovrebbero essere inclusi come parte della risposta.


5
Per curiosità, quali sono i motivi per cambiare un ID utente?
Olivier Lalonde,

14
Se si scambiano comunemente dati con altri sistemi tramite NFS o solo un metodo di copia che preserva l'UID, sarà utile se si utilizza lo stesso UID per lo stesso nome utente tra i sistemi.
João Pinto,

João ha capito bene. In particolare, spero di abbinare gli UID agli utenti di Mac OS X in modo che un filesystem condiviso porti le autorizzazioni previste tra i sistemi operativi.
ændrük,

1
La versione corrente di Nethack (3.6.0) salva i giochi incluso l'UID corrente nel nome del file. Se vuoi sincronizzare un gioco di salvataggio tra macchine, devi abbinare gli uid. (usare un collegamento simbolico non è pratico)
Jonathan Hartley,

Risposte:


27

Il problema è che, come hai accennato, non è possibile modificare l'UID dell'utente quando si accede a una sessione. È necessario utilizzare un altro account utente per procedere.

Ma non è necessario creare un nuovo account utente, promuoverlo come amministratore, disconnettersi, accedere al nuovo account amministratore, modificare l'UID del proprio account principale, disconnettersi, accedere al proprio account principale quindi eliminare il nuovo utente amministratore basta cambiare il tuo UID. ;)

È possibile avviare in modalità di ripristino (è un'opzione che appare all'avvio del computer o tenere premuto il tasto Maiusc dopo aver completato i messaggi del BIOS; utilizzare ESCsu macchine Dell che eseguono OEM-Ubuntu). Questo ti accederà in una sessione di root. Essendo loggato come root e non con il tuo normale account utente , sarai in grado di modificare il tuo UID.

Poiché la modalità di ripristino funziona solo nell'interfaccia della riga di comando, una volta effettuato l'accesso a una sessione radice, sarà necessario:

  1. Utilizzare le istruzioni di BubbaJ per rimontare il file system di root in modalità di lettura-scrittura : mount -o remount,rw /.

  2. Utilizzare il comando di Luis Alvarado : usermod -u NEW_UID your_username.

  3. Segui le istruzioni di ddeimeke per aggiornare le autorizzazioni dei file.
  4. Quindi, riavvia il computer ( reboot), in modo da poter eseguire l'avvio in modalità normale.

1
Non funziona per Ubuntu 14.04. Dopo aver fatto usermod -u NEW_UID your_usernamee find / -uid 1000 -exec chown -h 5000 '{}' \+, il riavvio porta ad un login GUI solo per la sessione di indovinare.
Kay,

Forse, i file nascosti in casa non vengono modificati correttamente? Usi la crittografia per la tua casa?
matematica,

Potresti voler controllare i tuoi file /etc/login.defse /etc/adduser.confse hai modificato il tuo uid al di fuori delle politiche fornite in quei file di configurazione. Gli utenti al di fuori dei limiti della politica non vengono visualizzati nel ciclo di accesso, ma è possibile modificare la politica. Vedi questa risposta
K Markey,

usermod: user user_name is currently used by process 1118 @Alexandre P.
alper

54

Si può cambiare in /etc/passwd, /etc/groupe /etc/shadowoppure utilizzare una delle possibilties preferite di cui sopra. Ma, cosa più importante, devi cambiare la proprietà di tutti i file appartenenti all'utente.

Ad esempio, se il vecchio ID utente è 1000 e il nuovo è 5000:

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

E lo stesso per l'id del gruppo (se lo cambi anche tu).

find / -gid 1000 -exec chgrp -h 5000 {} +

8
Questo è un punto davvero importante. Molte cose si rompono se segui le tecniche fornite nelle altre risposte senza farlo.
Poolie,

4
Ho appena imparato che si dovrebbe usare meglio sudo find / -xdev -uid 1000 -exec chown 5000 '{}' \+, altrimenti si includerebbero i dati montati (in /mnt, che è probabilmente indesiderato) e file che è meglio non confondere in /proce /dev. Vedi questo messaggio
Sebastian

2
Questa non è una buona idea. Dato che / home si trova su un file system diverso, non cambierai nemmeno la proprietà dei tuoi file.
Ddeimeke,

Su questa risposta dovresti cambiare le autorizzazioni di gruppo e uid, prima di modificare i file in / etc, giusto?
MrDaniel,

Non importa, cosa fai prima.
Ddeimeke,

25

Soluzione completa basata su @AlexandreP. e @ddeimeke + documentazione ufficiale. Nessun riavvio necessario.

La politica Debian / Ubuntu è che se esiste un utente jimcon ID utente 1001, esiste anche un gruppo jimcon ID gruppo 1001. Questa soluzione aggiorna anche quegli ID di gruppo.

  1. Abilita l'account root :

    sudo passwd root
    
  2. Se l'utente ha effettuato l'accesso, quindi disconnettersi (anche su terminali virtuali)
  3. Vai a VT1: Ctrl-Alt-F1
  4. Accedi come root ed eseguilo con il nome utente e il vecchio / nuovo UID fornito:

    # 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. Disconnettersi
  6. Accedi come $username
  7. Disabilita l'account root :

    sudo passwd -dl root
    

L'abilitazione dell'account root non dovrebbe essere necessaria; basta usare la modalità di recupero .
ændrük,

2
Questo dovrebbe essere più veloce del riavvio, motivo per cui l'ho pubblicato.
l0b0

3
In Ubuntu 14.04 e 14.10 è inoltre necessario correggere le autorizzazioni ACL estese in / media, altrimenti le interruzioni dell'automontaggio (in Nautilus / Nemo) man mano che il vecchio UID rimane. sudo setfacl -m "u:<NEWUID>:r-x" /media/<USERNAME> sudo setfacl -x "u:<OLDUID>" /media/<USERNAME>
richud.com

Questo ha funzionato come un incanto per me. Tuttavia, ho dovuto cambiare solo l'Uid.
Chmike,

abilitando l'account root mi sembra più facile (e meno spaventoso) rispetto all'utilizzo della modalità di recupero.
Jonathan Hartley,

7

Se vai alla console e digita: usermod --helpotterrai uno dei parametri che dice:

-u, --uid UID nuovo UID per l'account utente

quindi se vuoi cambiare l'UID per l'utente cyrex, allora fai:

usermod -u 1000 cyrex

ciò cambierebbe l'UID per Cyrex da qualunque valore avesse prima a 1000

Se vuoi farlo visivamente, allora fallo:

Vai a

SISTEMA -> AMMINISTRAZIONE -> UTENTI E GRUPPI

Seleziona te stesso dall'elenco e fai clic su IMPOSTAZIONI AVANZATE

L'UID è alla fine di quella finestra.


1
Ho provato il metodo grafico che hai suggerito, ma c'è un messaggio che dice "Non è possibile modificare l'ID utente mentre l'utente ha effettuato l'accesso". Hai provato questo metodo?
ændrük,

2
Hehe bene, è vero. Ho provato con un altro account. Devi accedere tramite root o qualsiasi altro account amministratore. Quindi fai il modo grafico. Scusa per quello.
Luis Alvarado,

2
  • Vai a Sistema >> Amministrazione >> Utenti e gruppi

testo alternativo

  • Fai clic su Impostazioni avanzate e vai alla scheda Avanzate lì in basso vedrai il tuo ID utente.
  • Modificalo e fai clic su OK.
    testo alternativo

1
Devo semplicemente ignorare l'avvertimento nel tuo screenshot, "Non puoi cambiare l'ID utente mentre l'utente ha effettuato l'accesso."?
ændrük,

Devi cambiarlo da un altro account utente per sbarazzarti di questo avviso.
karthick87,

7
La mia domanda è "Come posso modificare il mio ID utente?". Se intendi che la tua risposta sia che dovrei creare un nuovo utente solo per modificare questo valore, dovresti modificare la tua risposta per indicarlo.
ændrük,

0

Con KDE: nel menu Modifica impostazioni utente avanzate:

La modifica da un altro utente non funziona per 1000, che è l'utente predefinito.

devi farlo manualmente - la mia esperienza


0

Per prima cosa devi accedere come root, almeno per un po ', quindi rendiamolo possibile:

sudo passwd root

Riavvia, ctrl + alt + f1 per passare alla console, accedi come root, procedi come segue (la proprietà nella home directory verrà gestita automaticamente):

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

Per i tuoi file in luoghi diversi dalla tua home directory, a questo:

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

Elimina e blocca il passwd di root, se lo desideri. (Tendo a tenerlo):

passwd -dl root

0

Ho seguito le istruzioni di ddeimeke con le seguenti modifiche:

  1. Non mi sono disconnesso e invece l'ho fatto sudo su
  2. Non ho toccato /etc/shadow

Ho visto menzionato nelle altre risposte che è necessario avviare il ripristino o accedere come root. La mia era una nuova installazione di Ubuntu 14, quindi ero disposto a testare se avrebbe funzionato senza accedere come root. Lo stavo facendo anche su un'istanza EC2 su SSH.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.