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?
permissions
keyrings
gnupg
ssh
user-profile
Takkat
źródło
źródło
Odpowiedzi:
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
usermod
narzędzia.Aby zmienić nazwę użytkownika (prawdopodobnie najlepiej to zrobić bez zalogowania):
Nie zmienia to jednak nazwy folderu domowego.
Aby zmienić folder domowy, użyj
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 tegosudo -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 ichkill 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/oldname
lub 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:
Zaloguj się przy użyciu swoich starych danych logowania i dodaj nowego użytkownika, np. „Tymczasowy” w TTY1:
ustaw hasło.
Zezwól tymczasowemu użytkownikowi na uruchomienie sudo, dodając go do grupy sudo:
exit
.exit
(dopóki nie pojawi się monit o zalogowanie się)Usuń tymczasowego użytkownika i folder:
źródło
grep -IRFl /home/username ~
a zobaczysz, ile referencji do twojego katalogu domowego jest tam zapisanych./home/.ecryptfs/oldusername/.ecryptfs/Private.mnt
aby wskazać nowy folder domowy, w przeciwnym razie nie będziesz mógł zalogować się przez Unity.sudo usermod -d /home/edge -m edge
daje:usermod: Directory /home/empedokles could not be renamed in /home/edge
tzn. krok 4 nie zadziała.sudoers
zwykłymnano
. Zawsze używajvisudo
.Podsumowując:
Ustaw hasło do konta „root”.
Wyloguj.
Zaloguj się przy użyciu konta „root” i hasła, które wcześniej ustawiłeś.
Zmień nazwę użytkownika i folder domowy na nową, którą chcesz.
Zmień nazwę grupy na nową, którą chcesz.
Zablokuj konto „root”.
Jeśli korzystasz z ecryptfs (zaszyfrowany katalog domowy). Zamontuj zaszyfrowany katalog za pomocą
ecryptfs-recover-private
i edytuj,<mountpoint>/.ecryptfs/Private.mnt
aby odzwierciedlić nowy katalog domowy.Wyloguj.
Naciśnij Ctrl+ Alt+ F7.
A teraz możesz zalogować się przy użyciu swojej nowej nazwy użytkownika.
źródło
usermod -l
otrzymaniu auser <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żeszkill <processno>
.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
Aby zmienić nazwę użytkownika i nazwę folderu domowego,
W przypadku nazwy grupy
źródło
usermod -l <newname> -d /home/<newname> -m <oldname>
błąd,usermod: user oldusername is currently used by process 3170
a jeśli zabiję cały proces, to ten sam błąd. using ubuntu 13.10W systemie Ubuntu 13.10, 14.04, 16.04:
źródło
Po otrzymaniu
usermod: can't change /etc/password
uruchom następujące polecenia:W głównej konsoli odzyskiwania uruchom:
Następnie uruchom ponownie:
źródło
Odpowiedź wymieniona tutaj przez @ karthick87 działa doskonale, ale oto, co zrobiłbym, aby być bezpiecznym i uniknąć wszystkich błędów:
źródło
kiedy to zrobisz
usermod -l <newname> -d /home/<newname> -m <oldname>
, pojawi sięuseradd: can't change /etc/passwd
komunikat o błędzie, aby tego uniknąć, po prostu dodajsudo --
powyższe polecenie jaki
źródło
Ponieważ nie wszystkie komputery mają
usermod
aplikację, możesz to zrobić ręcznie. W katalogu głównym otwarty/etc/passwd
do edycji:i zmień nazwę użytkownika na początku wiersza:
do:
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
usermod
polecenie) i hasło użytkownika nie jest już akceptowane.usermod
instalacja jest zepsuta, ponieważ jest częściąpasswd
pakietu, który jest wymagany .