Czy można zmienić nazwę konta użytkownika w systemie Unix?


48

Zainstalowałem Ubuntu na komputerze, z którego korzysta teraz ktoś inny. Zmieniłem nazwę konta na jej imię, ale zmienia tylko pełną nazwę, a nie nazwę użytkownika, która jest nadal wyświetlana w prawym górnym rogu (w fast-user-switch-applet). Czy istnieje polecenie zmiany nazwy konta użytkownika w systemie Unix?

Myślałem o utworzeniu nowego konta użytkownika o nowej nazwie, a następnie skopiowaniu wszystkiego ze „starego” domu do domu nowego konta. Czy to wystarczy? Ale potem myślę, że pliki miałyby właściciela uprawnień starego konta? Więc należy zrobić chown -R newuser ~?

Czy istnieje prostszy / zalecany sposób to zrobić?

Odpowiedzi:


52

Próbować

usermod --move-home --login <new-login-name> --home <new-home-dir> <old-login-name>

--move-homeOpcja przenosi zawartość starego główna katalogu do nowego jednej określonej przez --homeopcję który jest tworzony, jeśli nie istnieje.

Jeśli chcesz, aby podstawowa grupa użytkowników była zgodna z new-login-name, dodaj --gid <new-login-name>do powyższego polecenia, ale grupa musi być wcześniej istniejąca.

Zobacz stronę podręcznika, aby uzyskać więcej informacji:

man usermod

Dzięki! Nie wiedziałem o tym poleceniu. :) Jest to jednak jedyne konto na tym komputerze, a mężczyzna mówi: «Musisz upewnić się, że podany użytkownik nie wykonuje żadnych procesów podczas wykonywania tego polecenia, jeśli numeryczny identyfikator użytkownika, nazwa użytkownika lub nazwa użytkownika katalog domowy użytkowników jest zmieniany. usermod sprawdza to w systemie Linux, ale sprawdza tylko, czy użytkownik jest zalogowany zgodnie z utmp na innych architekturach. »Czy sugerowałbyś użycie do tego celu płyty CD na żywo lub utworzenie konta tymczasowego, które usunę po zakończeniu?
Yann Dìnendal

2
Ponieważ używasz Ubuntu i nie możesz zalogować się jako root, utworzę inne konto o nazwie, powiedzmy, admin, którego używasz tylko do tego typu zadań. Konto tymczasowe będzie działać równie dobrze, ale równie dobrze możesz je zachować, ponieważ możesz robić podobne rzeczy w przyszłości.
gvkv

3
Pamiętaj, że usermod --homemusi zawierać pełną ścieżkę, np. /home/user.name- w przeciwnym razie nowy katalog domowy zostanie utworzony w bieżącym katalogu roboczym.
feeela

To nie zmieni grupy!
Heanz

22

Chociaż można zmienić nazwę użytkownika i usermodwykonać część pracy , może to powodować problemy. Oto lista miejsc, w których może pojawić się nazwa użytkownika; Nie twierdzę, że ta lista jest wyczerpująca.

  • Wpis w łatwy /etc/passwdi pliki pokrewne (np /etc/shadow, /etc/master.passwd).
  • Wpisy grupowe w /etc/group(i /etc/gshadow).
  • Ewentualnie wpisy w /etc/sudoers.
  • Systemowa skrzynka pocztowa, zazwyczaj /var/mail/$USERlub /var/spool/mail/$USER.
  • Crontab, zazwyczaj /var/spool/cron/crontabs/$USER
  • W atzadaniach ( /var/spool/cron/atjobs/*)

Katalog domowy prawdopodobnie pojawi się w jeszcze większej liczbie miejsc. Wiele aplikacji zapisuje ścieżki bezwzględne w różnych plikach kropek. Jeśli zdecydujesz się również zmienić nazwę katalogu domowego (chociaż nie ma wymogu, aby alicekatalog domowy użytkownika był /home/alice, /home/bobmylenie go byłoby mylące), musisz się tym zająć. Globalny zamiennik będzie działał w przypadku większości aplikacji, ale nie obiecuję. Jeśli to możliwe, zachowaj starą nazwę katalogu domowego jako symboliczne łącze do katalogu o zmienionej nazwie.


4

Oto podsumowanie poleceń, których użyłem w systemie Debian:

groupadd NEW
usermod -l NEW -m -d /home/NEW -g NEW OLD
chfn -f "New Fullname" NEW
cd /home
ln -s NEW OLD

Ostatnie dwa polecenia tworzą symboliczne łącze z nazwy starego katalogu domowego ( / home / OLD ) do nazwy nowego ( / home / NEW ).


Do czego służy groupadd?
Yann Dìnendal

2
Zamiast tego groupaddwydaje mi się, że lepiej groupmod -n NEW OLDunikać zmiany gid. Przynajmniej na Ubuntu jest domyślnie skonfigurowana grupa o tej samej nazwie co użytkownik, więc chcielibyśmy również zmienić tę nazwę.
jamadagni

1

wszystkie powyższe są eleganckimi metodami, ale dlaczego nie po prostu utworzyć nowego użytkownika, skopiować wszystkie jego treści domowe od pierwszego i to wszystko? oczywiście, jeśli chodzi o konto usługi (aplikacji), być może nie jest to najlepsza praktyka


3
Wydaje się, że lepiej byłoby umieścić to w komentarzu niż w odpowiedzi na pełny post, który prawie nic nie dodaje oprócz wzmianki o rozwiązaniu, które zostało już wspomniane w PO. Powinieneś rozważyć dodanie pewnych informacji, dlaczego uważasz, że to rozwiązanie jest lepsze, a nawet dopuszczalne.
HalosGhost
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.