È possibile rinominare un account utente Unix?


48

Ho installato Ubuntu su un computer che ora è utilizzato da qualcun altro. Ho rinominato l'account con il suo nome, ma cambia solo il nome completo, non il nome utente, che viene comunque visualizzato in alto a destra (in fast-user-switch-applet). Esiste un comando per rinominare un account utente Unix?

Ho pensato di creare un nuovo account utente con il nuovo nome e quindi di copiare tutto nella "vecchia" casa nella home del nuovo account. Sarebbe abbastanza? Ma poi penso che i file avrebbero il proprietario delle autorizzazioni del vecchio account? Quindi dovrei farlo chown -R newuser ~?

Esiste un modo più semplice / raccomandato per farlo?

Risposte:


52

Provare

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

L' --move-homeopzione sposta il contenuto della vecchia home directory in quella nuova data --homedall'opzione che viene creata se non esiste già.

Se si desidera che il gruppo utenti primario corrisponda a new-login-name, aggiungere --gid <new-login-name>al comando sopra, ma il gruppo deve essere preesistente.

Vedi la pagina man per maggiori informazioni:

man usermod

Grazie! Non sapevo di questo comando. :) Tuttavia, questo è l'unico account su questo computer e l'uomo dice questo: «Devi accertarti che l'utente nominato non stia eseguendo alcun processo quando questo comando viene eseguito se l'ID utente numerico dell'utente, il nome dell'utente o il la home directory degli utenti è stata modificata. usermod controlla questo su Linux, ma controlla solo se l'utente ha effettuato l'accesso secondo utmp su altre architetture. »Consiglieresti di utilizzare un cd live per farlo o creare un account temporaneo che eliminerò una volta terminato?
Yann Dìnendal,

2
Dato che stai usando Ubuntu e non riesci ad accedere come root, creerei un altro account chiamato, diciamo, admin che usi solo per questo tipo di attività. Un account temporaneo funzionerà altrettanto bene ma potresti anche conservarlo poiché potresti fare cose simili in futuro.
gvkv,

3
Tenere presente che usermod --homedeve contenere il percorso completo, ad es /home/user.name. Altrimenti la nuova directory home verrà creata all'interno della directory di lavoro corrente.
feeela,

Ciò non cambierà il gruppo!
Hannes Schneidermayer,

22

Mentre è possibile rinominare un utente e usermodfarà parte del lavoro , è molto probabile che ciò causi problemi. Ecco un elenco di luoghi in cui potrebbe apparire il nome utente; Non pretendo che questo elenco sia esaustivo.

  • La voce utente in /etc/passwde file correlati (ad esempio /etc/shadow, /etc/master.passwd).
  • Voci di gruppo in /etc/group(e /etc/gshadow).
  • Possibilmente voci in /etc/sudoers.
  • La cassetta postale di sistema, in genere /var/mail/$USERo /var/spool/mail/$USER.
  • Il crontab, in genere /var/spool/cron/crontabs/$USER
  • In atjobs ( /var/spool/cron/atjobs/*)

È probabile che la home directory appaia in più posti. Molte applicazioni scrivono percorsi assoluti in vari file di punti. Se decidi di rinominare anche la home directory (anche se non è necessario che alicela home directory dell'utente sia /home/alice, /home/bobconfonderla sarebbe confusa), dovrai prenderti cura di quelli. Una sostituzione globale funzionerà per la maggior parte delle applicazioni, ma non faccio promesse. Se possibile, mantenere il vecchio nome della directory principale come collegamento simbolico alla directory rinominata.


4

Ecco un riassunto dei comandi che ho usato su un 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

Gli ultimi due comandi creano un collegamento simbolico dal nome della vecchia directory home ( / home / OLD ) al nome di quella nuova ( / home / NEW ).


A cosa serve groupadd?
Yann Dìnendal,

2
Invece groupadd, suppongo che potrebbe essere preferibile groupmod -n NEW OLDevitare di cambiare gid. Almeno su Ubuntu un gruppo con lo stesso nome dell'utente è configurato di default, quindi si vorrebbe cambiare anche quel nome.
Jamadagni,

1

tutti sopra sono metodi eleganti, ma perché non creare un nuovo utente, copiare tutto il contenuto di casa dal primo, e basta? ovviamente, se si tratta di un account di servizio (applicazione), forse non è la migliore pratica


3
Sembra che questo potrebbe essere collocato meglio come commento piuttosto che come post di risposta completo che non aggiunge quasi nulla se non menzionare una soluzione che è già stata menzionata nel PO. Dovresti considerare di aggiungere alcune informazioni sul motivo per cui ritieni che questa soluzione sia migliore o addirittura accettabile.
HalosGhost
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.