Jak mogę zmienić swoją nazwę użytkownika?

324

Jakiś czas temu, kiedy instalowałem Ubuntu, wybrałem dość głupią nazwę użytkownika dla mojego konta, z której nie chcę już korzystać.

Jak to zmienić (w tym nazwę mojego katalogu domowego i nazwę w terminalu) bez utraty ustawień aplikacji?
Jak zachować uprawnienia i klucze do różnych uwierzytelnień (np. E-mail, SSH, GPG i inne)?
Jakie ustawienia mogą zostać utracone, jeśli zmienię nazwę użytkownika?

Takkat
źródło
Dlaczego nie możemy nawigować do /usr/share/applications/users.desktop >> Kliknij użytkownika, dla którego należy zmienić nazwę. >> Kliknij Zmień nazwę użytkownika >> Zmień nazwę >> Kliknij OK. Myślę, że byłby to najłatwiejszy sposób na zmianę nazwy użytkownika, prawda?
Anand

Odpowiedzi:

323

Uniksowe systemy operacyjne oddzielają nazwę użytkownika od tożsamości użytkownika, więc można bezpiecznie zmienić nazwę bez wpływu na identyfikator. Wszystkie uprawnienia, pliki itp. Są powiązane z twoją tożsamością (UID), a nie z twoją nazwą użytkownika.

Aby zarządzać każdym aspektem bazy danych użytkowników, korzystasz z tego usermodnarzędzia.

Aby zmienić nazwę użytkownika (prawdopodobnie najlepiej to zrobić bez zalogowania):

sudo usermod -l newUsername oldUsername

Nie zmienia to jednak nazwy folderu domowego.

Aby zmienić folder domowy, użyj

sudo usermod -d /home/newHomeDir -m newUsername

po zmianie nazwy użytkownika.

Na przykład, możesz się wylogować, upuścić na konsolę ( Ctrl+ Alt+ F1) i sudo su -stać się prawdziwym rootem (w przeciwieństwie do tego sudo -s, gdzie $ HOME to wciąż / home / twoja nazwa). Być może musisz także zabić niektóre wciąż działające procesy tego użytkownika pierwszy. Aby to zrobić, wejdź ps -u username, wyszukaj pasujący PID i zabij ich kill PID-number.

Aktualizacja: jak wspomniano wcześniej, niektóre pliki mogą odnosić się do twojego starego katalogu domowego. Możesz albo zachować dowiązanie symboliczne, aby zachować zgodność z poprzednimi wersjami, ln -s /home/newname /home/oldnamelub np. Zmienić zawartość pliku. sed -i.bak 's/*oldname*/*newname*/g' *list of files*Tworzy kopię zapasową każdego pliku z rozszerzeniem .bak.

Kilka dodatkowych informacji dla niezbyt doświadczonych użytkowników takich jak ja:
Ponieważ mam tylko JEDNE konto użytkownika (administratora), nie pozwoli mi to zmienić nazwy użytkownika (odpowiedź „jesteś już zalogowany” była odpowiedzią w TTY1 ( Ctrl+ Alt+ F1). wokół tego:

  1. Zaloguj się przy użyciu swoich starych danych logowania i dodaj nowego użytkownika, np. „Tymczasowy” w TTY1:

    sudo adduser temporary
    

    ustaw hasło.

  2. Zezwól tymczasowemu użytkownikowi na uruchomienie sudo, dodając go do grupy sudo:

    sudo adduser temporary sudo
    
  3. Wyloguj się za pomocą polecenia exit.
  4. Wróć do tty1: Zaloguj się przy użyciu „tymczasowego” konta użytkownika i hasła. Zmień nazwę użytkownika i folder, jak wspomniano powyżej. exit(dopóki nie pojawi się monit o zalogowanie się)
  5. Wróć do TTY7 ( Ctrl+ Alt+ F7), aby zalogować się do GUI / normalnego ekranu pulpitu i sprawdzić, czy to działa.
  6. Usuń tymczasowego użytkownika i folder:

    sudo deluser temporary
    sudo rm -r /home/temporary
    
Egil
źródło
10
To niestety nie jest prawdą w przypadku różnych plików konfiguracyjnych w $ HOME, spróbuj uruchomić coś takiego, grep -IRFl /home/username ~a zobaczysz, ile referencji do twojego katalogu domowego jest tam zapisanych.
umówić
1
To była prosta poprawka - po prostu musiałem użyć edytora kont użytkowników w jedności, a następnie uruchomić ponownie.
Steve Koch
6
W przypadku osób z zaszyfrowanym folderem domowym musisz edytować, /home/.ecryptfs/oldusername/.ecryptfs/Private.mntaby wskazać nowy folder domowy, w przeciwnym razie nie będziesz mógł zalogować się przez Unity.
raphael
2
sudo usermod -d /home/edge -m edgedaje: usermod: Directory /home/empedokles could not be renamed in /home/edgetzn. krok 4 nie zadziała.
empedokles
2
@JTC nigdy nie edytuj sudoerszwykłym nano. Zawsze używaj visudo.
mucha styropianowa
107

Podsumowując:

  1. Na ekranie startowym naciśnij Ctrl+ Alt+ F1.
  2. Zaloguj się, używając swojej nazwy użytkownika i hasła.
  3. Ustaw hasło do konta „root”.

    sudo passwd root
    
  4. Wyloguj.

    exit
    
  5. Zaloguj się przy użyciu konta „root” i hasła, które wcześniej ustawiłeś.

  6. Zmień nazwę użytkownika i folder domowy na nową, którą chcesz.

    usermod -l <newname> -d /home/<newname> -m <oldname>
    
  7. Zmień nazwę grupy na nową, którą chcesz.

    groupmod -n <newgroup> <oldgroup>
    
  8. Zablokuj konto „root”.

    passwd -l root
    
  9. Jeśli korzystasz z ecryptfs (zaszyfrowany katalog domowy). Zamontuj zaszyfrowany katalog za pomocą ecryptfs-recover-privatei edytuj, <mountpoint>/.ecryptfs/Private.mntaby odzwierciedlić nowy katalog domowy.

  10. Wyloguj.

    exit
    
  11. Naciśnij Ctrl+ Alt+ F7.

A teraz możesz zalogować się przy użyciu swojej nowej nazwy użytkownika.

Valentin Uveges
źródło
6
Jeśli po usermod -l otrzymaniu a user <oldname> is currently used by process <processno>, możesz znaleźć ten proces (prawdopodobnie demon lub tmux / screen) za pomocą ps aux | grep <processno>. Możesz z wdziękiem zatrzymać ten proces, w przeciwnym razie możesz kill <processno>.
RedPixel
1
Dziękujemy za złożenie tego komentarza. To było bardzo przydatne. Dwie rzeczy, o których można by wspomnieć. Po kroku 4 zrestartowałem komputer, aby nie wyświetlać komunikatów o błędach w kroku 6. Ponadto, po zakończeniu tego procesu plik / etc / passwd będzie miał komentarz ID odpowiadający starej nazwie użytkownika. Spowoduje to wyświetlenie na ekranie logowania starej nazwy logowania. Nie mogłem znaleźć porządnego sposobu, aby to naprawić z wiersza poleceń, ale naprawiłem to, logując się na konto użytkownika, przechodząc do ustawień konta i zmieniając „Nazwę logowania” na nazwę użytkownika. To zaktualizowało plik / etc / passwd i naprawiło problem.
Jibbers
1
Jest to najłatwiejszy i głupszy sposób na zrobienie tego. Lepiej uruchom ponownie po kroku 4, jak sugerował @Jibbers.
Yerke,
Wspomnę, że „zakładki w oknach przeglądarki plików” wskazują teraz na stare foldery, więc muszę usunąć te zakładki.
ollydbg23
Nie zadziała Jeśli naciśniesz Ctrl + Alt + F1 na początku, spróbujesz zalogować się do nowo utworzonego użytkownika, na co nie pozwoli.
empedokles
27

Uruchom ponownie w trybie odzyskiwania i przejdź do powłoki zachęty do rootowania („Monituj do powłoki powłoki root”)

Najpierw podłącz ponownie root

mount -o remount,rw /

Aby zmienić nazwę użytkownika i nazwę folderu domowego,

usermod -l <newname> -d /home/<newname> -m <oldname>

W przypadku nazwy grupy

groupmod -n <newgroup> <oldgroup>
karthick87
źródło
1
kiedy go używam, pojawia się usermod -l <newname> -d /home/<newname> -m <oldname>błąd, usermod: user oldusername is currently used by process 3170a jeśli zabiję cały proces, to ten sam błąd. using ubuntu 13.10
Waqas
4
NIE RÓB TO, JEŚLI TWÓJ KATALOG DOMOWY JEST ZASZYFROWANY !!!! Postępowałem zgodnie z tą procedurą i wysłałem mnie na dziką 2-godzinną przejażdżkę ... Jedynym sposobem na odzyskanie jest ponowne wykonanie tej procedury i ponowne wprowadzenie oryginalnej (nielubianej) nazwy. Problem, który będziesz mieć, to: „Nie można chdir zamontować point ”
Mike
Dlaczego nie możemy nawigować do /usr/share/applications/users.desktop >> Kliknij użytkownika, dla którego należy zmienić nazwę. >> Kliknij Zmień nazwę użytkownika >> Zmień nazwę >> Kliknij OK. Myślę, że byłby to najłatwiejszy sposób na zmianę nazwy użytkownika, prawda?
Anand
9

W systemie Ubuntu 13.10, 14.04, 16.04:

  1. Kliknij ikonę „Ustawienia systemu”.
  2. Kliknij „Konta użytkowników”.
  3. Twoje konto administratora powinno zostać wyświetlone.
  4. Kliknij przycisk „Odblokuj”.
  5. Wprowadź hasło użytkownika zgodnie z żądaniem, aby umożliwić zmiany na koncie.
  6. Po odblokowaniu możesz kliknąć starą nazwę użytkownika, którą chcesz zmienić, i wpisać nową nazwę użytkownika, aby ją zastąpić.
  7. Po wpisaniu nowej nazwy kliknij przycisk „Zablokuj”, aby wprowadzić zmianę na stałe.
  8. Uruchom ponownie Ubuntu.
Chicodoodoo
źródło
2
To nie zmieniło dla mnie nazwy użytkownika, tylko nazwę. Stara nazwa użytkownika nadal pojawia się w terminalu oraz jako katalog domowy i grupa (nawet po ponownym uruchomieniu).
DougC
3

Po otrzymaniu usermod: can't change /etc/passworduruchom następujące polecenia:

W głównej konsoli odzyskiwania uruchom:

mount -o remount,rw /

Następnie uruchom ponownie:

usermod -l <newname> -d /home/<newname> -m <oldname>
użytkownik1511576
źródło
Dlaczego nie możemy nawigować do /usr/share/applications/users.desktop >> Kliknij użytkownika, dla którego należy zmienić nazwę. >> Kliknij Zmień nazwę użytkownika >> Zmień nazwę >> Kliknij OK. Myślę, że byłby to najłatwiejszy sposób na zmianę nazwy użytkownika, prawda?
Anand
1

Odpowiedź wymieniona tutaj przez @ karthick87 działa doskonale, ale oto, co zrobiłbym, aby być bezpiecznym i uniknąć wszystkich błędów:

  1. Utwórz osobne konto / użytkownika i upewnij się, że to konto / użytkownik może rootować lub zaloguj się jako użytkownik root.
  2. Wyloguj się przy użyciu bieżącego konta, a następnie zaloguj się przy użyciu konta wymienionego w kroku 1.
  3. Zabij wszystkie procesy poprzedniego użytkownika.
  4. Teraz wykonaj kroki wymienione przez @ karthick87 i zmień nazwę użytkownika, a także właściciela katalogu domowego.
  5. Następnie postępuj zgodnie z odpowiedzią @ Sriraj Hebbar, aby zmienić nazwę grupy.
  6. wyloguj się z zapasowym użytkownikiem i zaloguj się ze swoim użytkownikiem. Jeśli utworzyłeś dodatkowego użytkownika, usuń go.
sandeep srivastav vaddiparthy
źródło
0

kiedy to zrobisz usermod -l <newname> -d /home/<newname> -m <oldname>, pojawi się useradd: can't change /etc/passwdkomunikat o błędzie, aby tego uniknąć, po prostu dodaj sudo --powyższe polecenie jak

sudo -- usermod -l <newname> -d /home/<newname> -m <oldname>

i

sudo --  groupmod -n <newgroup> <oldgroup>
Sriraj Hebbar
źródło
-3

Ponieważ nie wszystkie komputery mają usermodaplikację, możesz to zrobić ręcznie. W katalogu głównym otwarty /etc/passwddo edycji:

sudo vim /etc/passwd

i zmień nazwę użytkownika na początku wiersza:

user:x:500:501:username:home/user:/bin/bash

do:

newuser:x:500:501:username:home/user:/bin/bash

to jeśli pracowałeś z rootem, po prostu zaloguj się, a jeśli jesteś zalogowany user, wyloguj się i zaloguj ponownie.

Малъ Скрылевъ
źródło
Próbowałem w ten sposób (zanim odkryłem usermodpolecenie) i hasło użytkownika nie jest już akceptowane.
Ben Voigt,
@BenVoigt nie wszystkie komputery mają usermod
Малъ Скрылевъ
3
To Ubuntu! Jeśli nie ma, usermodinstalacja jest zepsuta, ponieważ jest częścią passwdpakietu, który jest wymagany .
Auspex