Jak mogę zmienić nazwę użytkownika uniksowego?

89

Mam nazwę użytkownika hedgehogi chcę, aby się nazywał squirrel, ale nie chcę zmieniać jego numerycznego ID użytkownika.
Jak mogę to osiągnąć?

Szymon Jeż
źródło
2
Prawdopodobnie dlatego, że zmiana nazwy użytkownika nie jest zadaniem, z którym zmagałby się profesjonalny SA. (W przypadku pytania negatywnego.)
HopelessN00b
2
@Jeznet Poparłem głosowanie, ponieważ nie tylko jest to niezwykle proste zadanie, które można rozwiązać, wpisując swój tytuł w google, ale także odpowiedziałeś na własne pytanie, jak tylko go zadałeś. Wydawało się to stratą czasu.
boburob
10
@ boburob "odpowiedziałeś również na swoje pytanie, gdy tylko je zadałeś. Wydawało się, że to strata czasu" zobacz: blog.stackoverflow.com/2011/07/07
Szymon Jeż
10
@ Boburob Czy widziałeś to pole wyboru, które mówi, Answer your own question – share your knowledge, Q&A-stylekiedy zadajesz pytanie? Jest tam z jakiegoś powodu i nie byłoby go, gdyby nie chcieli, żeby to wykorzystano. (Idealnie przy lepszych pytaniach, ale bez względu na to, oddawanie głosu komuś za udzielenie odpowiedzi na własne pytanie jest złą formą).
HopelessN00b
1
Tak, już wcześniej odpowiedziałem na własne pytanie, ale dla mnie zadawanie pytań i wklejanie wyniku Google w tej samej minucie jest stratą czasu
Boburob

Odpowiedzi:

133

W systemie Linux usermodpolecenie zmienia nazwy użytkowników. Modyfikuje pliki kont systemowych, aby odzwierciedlić zmiany określone w wierszu polecenia.

Aby zmienić tylko nazwę użytkownika:

usermod --login new_username old_username

Aby zmienić nazwę użytkownika i nazwę katalogu domowego:

usermod --login new_username --move-home --home path_to_the_new_home_dir old_username

Możesz także zmienić nazwę grupy powiązanej z użytkownikiem:

groupmod --new-name new_username old_username
Szymon Jeż
źródło
12
Można użyć usermod zrobić całość usermod -l new-user-name -m -d / nowy / stary domowy dir-nazwa-użytkownika /
user9517
5
Pamiętaj również, że grupa też się nie zmienia. Jeśli musisz zmienić nazwę old-user-namegrupy, użyj # groupmod -n new-user-name old-user-name.
alxs
1
W przypadku systemów używających autofsnależy również zaktualizować /etc/auto.home. Właśnie na to wpadłem.
Steven C. Howell,
2
Może trzeba ponownie uruchomić visudo, aby umieścić nową nazwę użytkownika na liście sudoers, jeśli dotyczy
Nagev
2
Musisz także zmienić nazwę pliku crontab znajdującego się w /var/spool/cron/crontabs/(jeśli masz zainstalowane jakieś zadania)
Daniel F
12

UWAGA: nie próbuj tego, jeśli katalog jest zaszyfrowany! W takim przypadku możesz najpierw sprawdzić: https://askubuntu.com/questions/107410/can-you-unencrypt-remove-encryption-from-a-user-home-folder

Najprostszym sposobem na to jest:

  1. Utwórz nowe konto tymczasowe z uprawnieniami sudo:

    sudo adduser temp
    sudo adduser temp sudo
    
  2. Wyloguj się z bieżącego konta i zaloguj ponownie za pomocą konta tymczasowego.

  3. Zmień nazwę swojej nazwy użytkownika i katalogu:

    sudo usermod -l new-username -m -d /home/new-username old-username
    
  4. Zmień nazwę grupy domyślnej nazwy użytkownika:

    sudo groupmod -n new-username old-username
    
  5. Wyloguj się z konta tymczasowego i zaloguj się ponownie na swoje konto przy użyciu nowej nazwy użytkownika.

  6. Usuń konto tymczasowe:

    sudo userdel -r temp
    

W przeciwnym razie po prostu (1) utworzysz nowego użytkownika i (2) rsyncstary folder domowy użytkownika do nowego, a następnie (3) chown.

mimoralea
źródło
W CentOS potrzebowałem także „passwd temp” i „usermod -aG wheel temp”.
Brian Z
4

Zasadniczo możesz zmienić nazwę użytkownika, zmieniając jego nazwę użytkownika w /etc/passwd(i /etc/shadow, jeśli dotyczy) plikach. W większości systemów uniksowych vipwpolecenie służy do edycji tych plików (a w wielu systemach zawiera pewne zabezpieczenia zapewniające, że nie zepsujesz się zbytnio).
Zobacz strony man dla passwd(5), shadow(5)i vipw(8)aby uzyskać więcej informacji.

Zauważ, że powyższa metoda nie zmienia nazw innych rzeczy, które mogą nosić oryginalną nazwę użytkownika (katalogi domowe są tego najlepszym przykładem, osobne grupy dla użytkowników (w systemach, które ich używają) są inne). Możesz także wyczyścić je dla zachowania spójności, zmieniając odpowiednie pola w pliku passwd i zmieniając nazwy katalogów.


Kilka systemów operacyjnych zapewnia specyficzny dla systemu sposób zmiany nazwy użytkowników. Na przykład wiele systemów Linux zawiera usermod(8)polecenie, aw systemie AIX można zmieniać nazwy kont za pomocą SMIT (lub smittyw terminalu) .
Te polecenia często obsługują elementy czyszczenia, takie jak zmiana nazw katalogów domowych, jeśli o to poprosisz.

voretaq7
źródło