Come posso rinominare un utente unix?


89

Ho un nome utente hedgehoge voglio che venga nominato squirrel, ma non voglio cambiare il suo ID utente numerico.
Come posso ottenere questo?


2
Probabilmente perché rinominare un utente non è esattamente un compito che una SA professionale farebbe fatica. (Per la domanda downvotes.)
HopelessN00b

2
@Jeznet Ho annullato il voto perché non solo è un'attività incredibilmente semplice che può essere risolta digitando il tuo titolo su Google, ma hai anche risposto alla tua domanda non appena l'hai fatta. Sembrava una perdita di tempo.
Boburob,

10
@boburob "hai anche risposto alla tua domanda non appena l'hai fatta. Sembrava una perdita di tempo", vedi: blog.stackoverflow.com/2011/07/…
Szymon Jeż

10
@boburob Hai visto quella casella che dice Answer your own question – share your knowledge, Q&A-stylequando fai una domanda? È lì per un motivo, e non ci sarebbe se non lo volessero usare. (Idealmente su domande migliori, ma a prescindere, sottovalutare qualcuno per aver risposto alla propria domanda è una cattiva forma.)
HopelessN00b

1
Sì, ho anche risposto alla mia domanda prima, ma per me, fare una domanda e incollare il risultato di Google nello stesso minuto è un po 'una perdita di tempo
boburob,

Risposte:


133

In Linux, il usermodcomando modifica i nomi utente. Modifica i file dell'account di sistema per riflettere le modifiche specificate nella riga di comando.

Per modificare solo il nome utente:

usermod --login new_username old_username

Per modificare il nome utente e il nome della directory principale:

usermod --login new_username --move-home --home path_to_the_new_home_dir old_username

Potresti anche voler cambiare il nome del gruppo associato all'utente:

groupmod --new-name new_username old_username

12
Puoi usare usermod per fare tutto usermod -l new-user-name -m -d / new / home / dir old-user-name
user9517

5
Si noti inoltre che neanche il gruppo è cambiato. Se è necessario rinominare anche il old-user-namegruppo, utilizzare # groupmod -n new-user-name old-user-name.
alxs

1
Per i sistemi che utilizzano autofs, è necessario aggiornare anche /etc/auto.home. Mi sono appena imbattuto in questo.
Steven C. Howell,

2
Potrebbe essere necessario eseguire nuovamente visudo per inserire il nuovo nome utente nell'elenco dei sudoers, se applicabile
Nagev,

2
Dovrai anche rinominare il file crontab che si trova in /var/spool/cron/crontabs/(se hai dei lavori installati)
Daniel F

12

NOTA: non provarlo se la tua directory è crittografata! Se questo è il tuo caso, potresti voler prima controllare: https://askubuntu.com/questions/107410/can-you-unencrypt-remove-encryption-from-a-user-home-folder

Il modo diretto per farlo è:

  1. Crea un nuovo account temporaneo con diritti sudo:

    sudo adduser temp
    sudo adduser temp sudo
    
  2. Esci dal tuo account corrente e accedi nuovamente con l'account temporaneo.

  3. Rinomina il nome utente e la directory:

    sudo usermod -l new-username -m -d /home/new-username old-username
    
  4. Rinomina il gruppo predefinito del nome utente:

    sudo groupmod -n new-username old-username
    
  5. Esci dall'account temporaneo e accedi nuovamente al tuo account con new-username.

  6. Rimuovi account temporaneo:

    sudo userdel -r temp
    

Altrimenti, è sufficiente (1) creare un nuovo utente e (2) rsyncla cartella home del vecchio utente nella nuova e quindi (3) chown.


In CentOS avevo anche bisogno di `passwd temp 'e' usermod -aG wheel temp '.
Brian Z,

4

Generalmente puoi rinominare un utente cambiando il suo nome utente nei file /etc/passwd(e /etc/shadow, se applicabile). Sulla maggior parte dei sistemi unix il vipwcomando viene utilizzato per modificare questi file (e su molti sistemi include alcune garanzie per garantire che non si rovinino troppo le cose).
Vedere le pagine man per passwd(5), shadow(5)e vipw(8)per ulteriori informazioni.

Si noti che il metodo sopra riportato non rinomina altre cose che possono avere il nome utente originale (le home directory sono l'esempio principale, i gruppi personali per utente (sui sistemi che li usano) sono un altro). Si consiglia di ripulire anche questi per coerenza, modificando i campi appropriati nel file passwd e rinominando le directory.


Diversi sistemi operativi forniscono un modo specifico di sistema per rinominare gli utenti. Ad esempio molti sistemi Linux includono il usermod(8)comando e su AIX è possibile modificare i nomi degli account usando SMIT (o smittyin un terminale) .
Questi comandi gestiranno spesso gli elementi di pulizia come la ridenominazione delle directory home, se glielo chiedi.

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.