Quando si tenta di cambiare il nome utente, il terminale mi dice che l'utente è attualmente utilizzato dal processo


16

Sto cercando di cambiare il mio nome utente, come da consigli qui dopo aver eseguito il seguente comando:

CurrentName@HostName ~ $ sudo usermod -l TheNameIWantToChange -d /home/TheNameIWantToChange -m CurrentName

Il terminale risponde con:

CurrentName@HostName ~ $ usermod: user CurrentName is currently used by process 2491

E il nome utente rimane lo stesso. Qualcuno sa come potrei risolvere questo problema e cambiare il mio nome utente dopo tutto?

Risposte:


8

Per citare man usermod:

CAVEATS
   You must make certain that the named user is not executing any 
   processes when this command is being executed
   if the user's numerical user ID, the user's name, or the user's home 
   directory is being changed.  usermod
   checks this on Linux, but only check if the user is logged in 
   according to utmp on other architectures.

Quindi, devi assicurarti che l'utente a cui stai rinominando non abbia effettuato l'accesso.

Inoltre, noto che non stai eseguendo questo come root. O eseguirlo come root o eseguirlo con "sudo usermod".


3
se non è possibile interrompere il processo senza riavviarlo, combinare il comando, ad eskill -9 23162 && sudo usermod -l TheNameIWantToChange -d /home/TheNameIWantToChange -m CurrentName
Richard Frank,

2
Il programma usermodsembra essere rotto dal design. Se la gestione degli utenti viene eseguita in un server LDAP, la modifica di un attributo utente è sempre possibile e non dipende dal sistema in esecuzione. Sto usando Ansible quali usi usermode il sistema buco è inaffidabile, perché i cambiamenti sono bloccati dagli utenti registrati.
ceving

1

Penso che dovresti eseguire il comando con un altro utente. Accedi con root o con un altro utente e riprova. Se ci si trova nella finestra x con l'utente che si desidera modificare, sembra logico che i comandi falliscano.


1

Questo è principalmente un problema con Ubutu in cui non hai un account root per accedere dal primo posto. Quindi questo crea una contraddizione: sono un utente nel gruppo sudoer. Non posso cambiare il mio uid.

Non sono sicuro che questa sia la soluzione migliore. Per prima cosa creo un account falso foo, aggiungo questo all'elenco sudo. Quindi accedo all'account foo ed eseguo usermod -g MYOWNGID mylogin


0

Ho lo stesso problema usando usermod, risolto usando il parametro -m, che sposta il contenuto della home directory in una nuova localizzazione. Utilizzare questa opzione in combinazione con -d (modifica la directory principale dell'utente, dove è presente l'utente).

Suggerisco di vedere il comando man usermod


0

Prova questi passaggi:

  1. Imposta la password per l'utente root:

sudo passwd root

  1. riavvia Ubuntu
  2. Accedi come "root" dopo l'avvio -> Ciò consentirà a Ubuntu di non generare alcun processo per l'utente corrente.
  3. Cambia il nome utente

    usermod -l newuser -d / home / newuser -m vecchioutente

  4. Verifica che il nome utente sia cambiato controllando il nome della cartella con il nuovo nome utente nella directory / home

-1

Non dovresti cambiare il nome utente di un utente che ha effettuato l'accesso. Invece, è necessario terminare tutti i processi dell'utente, disconnettersi, accedere come utente diverso e quindi rinominare.

Se sembra troppo lavoro, è possibile effettuare il hotwire della modifica: https://medium.com/@deltazero/linux-howto-rename-currently-operating-user-f8fae62db110

Funziona così:

# your new username
newuser=dave

# root-run these all at once
sudo su -c "\
  sed -i s/$USER/$newuser/g /etc/group \
  && sed -i s/$USER/$newuser/g /etc/shadow \
  && sed -i s/$USER/$newuser/g /etc/passwd \
  && mv /home/$USER/ /home/$newuser"

# exit & reconnect under new username
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.