Podczas próby zmiany nazwy użytkownika terminal informuje, że użytkownik jest aktualnie używany przez proces

16

Próbuję zmienić swoją nazwę użytkownika, zgodnie z zaleceniami tutaj po uruchomieniu następującego polecenia:

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

Terminal odpowiada:

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

A nazwa użytkownika pozostaje taka sama. Czy ktoś wie, jak to naprawić i zmienić moją nazwę użytkownika?

Paradoks
źródło

Odpowiedzi:

8

Cytując 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.

Musisz więc upewnić się, że użytkownik, którego nazwę zmieniasz, nie jest zalogowany.

Ponadto zauważam, że nie uruchamiasz tego jako root. Uruchom go jako root lub uruchom z „sudo usermod”.

seumasmac
źródło
3
jeśli nie możesz zabić procesu bez jego ponownego uruchomienia, połącz polecenie np.kill -9 23162 && sudo usermod -l TheNameIWantToChange -d /home/TheNameIWantToChange -m CurrentName
Richard Frank
2
Program usermodwydaje się być zepsuty z założenia. Jeśli zarządzanie użytkownikami odbywa się na serwerze LDAP, zmiana atrybutu użytkownika jest zawsze możliwa i nie zależy od uruchomionego systemu. Korzystam z Ansible, który używa, usermoda system dziur jest zawodny, ponieważ zmiany są blokowane przez zalogowanych użytkowników.
ceving
1

Myślę, że powinieneś uruchomić polecenie z innym użytkownikiem. Zaloguj się przy użyciu konta root lub innego użytkownika i spróbuj ponownie. Jeśli jesteś w oknie X z użytkownikiem, którego chcesz zmienić, brzmi logicznie, że polecenia nie działają.

krivos
źródło
1

Jest to głównie problem z Ubutu, gdzie nie masz konta root, aby zalogować się od samego początku. To tworzy sprzeczność: jestem użytkownikiem w grupie sudoer. Nie mogę zmienić własnego identyfikatora użytkownika.

Nie jestem pewien, czy to najlepsze rozwiązanie. Najpierw tworzę fałszywe konto foo, dodaję to do listy sudo. Następnie loguję się na konto foo i uruchamiam usermod -g MYOWNGID mylogin

Kemin Zhou
źródło
0

Mam ten sam problem przy użyciu usermod, naprawiono go przy użyciu parametru -m, który przenosi zawartość katalogu domowego do nowej lokalizacji. Użyj tej opcji w połączeniu z -d (zmodyfikuj główny katalog użytkownika, w którym znajduje się użytkownik).

Proponuję zobaczyć komendę man usermod

Guillermo Porras Arias
źródło
0

Wypróbuj następujące kroki:

  1. Ustaw hasło dla użytkownika root:

sudo passwd root

  1. uruchom ponownie Ubuntu
  2. Zaloguj się jako „root” po uruchomieniu -> Pozwoli to ubuntu nie generować żadnego procesu dla bieżącego użytkownika.
  3. Zmień nazwę użytkownika

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

  4. Sprawdź, czy nazwa użytkownika uległa zmianie, sprawdzając nazwę folderu z nową nazwą użytkownika w katalogu / home
Rajib Hasan
źródło
-1

Nie powinieneś zmieniać nazwy zalogowanego użytkownika. Zamiast tego należy zakończyć wszystkie procesy użytkownika, rozłączyć się, zalogować jako inny użytkownik, a następnie zmienić nazwę.

Jeśli wydaje się, że to za dużo pracy, możesz dokonać zmiany przewodnika: https://medium.com/@deltazero/linux-howto-rename-currently-operating-user-f8fae62db110

Działa to tak:

# 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
dayvee.cz
źródło