Jak zmienić dane użytkownika za pomocą chfn i usermod w systemie Linux

Photo of author

By maciekx

Konto użytkownika w systemie Linux to znacznie więcej niż tylko login. Przekonaj się, jak z poziomu wiersza poleceń skonfigurować oraz modyfikować wszystkie metadane powiązane z kontem użytkownika.

Czym jest nazwa użytkownika?

Każdy użytkownik systemów Linux lub Unix posiada swoje konto użytkownika. Nazwa, która jest przypisana do konta, to twoja nazwa użytkownika. Służy ona do logowania, a także jest domyślnie nazwą grupy, do której przynależysz, oraz nazwą twojego katalogu domowego. Wszystkie te elementy dzielą ten sam identyfikator.

Każde konto użytkownika może również przechowywać szereg dodatkowych informacji. Można zdefiniować rzeczy takie jak imię i nazwisko, numer biura czy telefon służbowy, i dołączyć te dane. W praktyce, administratorzy systemów mogą znaleźć to szczególnie użyteczne, zwłaszcza w przypadku zarządzania wieloma kontami. Nawet na komputerze dla jednego użytkownika, warto wiedzieć, co się dzieje „pod maską”.

Pole GECOS

Pierwotni użytkownicy Uniksa borykali się z brakiem własnych drukarek. Musieli przesyłać swoje zadania drukowania na główną jednostkę General Electric, na której działał Kompleksowy system operacyjny General Electric (GECOS). Aby to zrobić, musieli przechowywać i korzystać z poświadczeń konta w systemie GECOS.

Pole GECOS zostało stworzone w tym celu, ale z biegiem czasu jego funkcja ewoluowała. Obecnie przechowuje różne informacje dotyczące właściciela konta użytkownika, mimo że nazwa pozostała ta sama. Pola te znajdują się w pliku /etc/passwd, w którym znajdują się również inne szczegóły dotyczące konta:

  • Nazwa użytkownika.
  • Identyfikator użytkownika.
  • Identyfikator grupy.
  • Ścieżka do katalogu domowego użytkownika.
  • Powłoka, która zostanie uruchomiona po zalogowaniu.

To właśnie z tych informacji korzystają polecenia finger i pinky, aby przedstawić dane.

Użycie polecenia chfn

Chfn (zmiana informacji palca) pozwala na ustawienie i modyfikację informacji w polu GECOS. Informacje są przechowywane jako lista oddzielona przecinkami.

Polecenie chfn było dostępne w Ubuntu 18.04.1 oraz Manjaro 18.1.0. W Fedora 31 wymagało instalacji. Aby je zainstalować, użyj polecenia:

sudo dnf install util-linux-user

Sprawdźmy, jakie informacje palec może uzyskać o użytkowniku „dave”. Aby uzyskać pełne dane, użyjemy opcji -l (długi format):

finger dave -l

Oto, co zostało znalezione:

Informacje obejmują nazwę użytkownika, katalog domowy oraz domyślną powłokę, które są związane z kontem. Nie dotyczą one jednak rzeczywistej osoby korzystającej z konta. Możemy wykorzystać polecenie chfn, aby dodać dane o prawdziwej osobie.

chfn dave

Użycie chfn w ten sposób uruchamia interaktywny proces. Będziesz proszony o podanie danych dla każdej informacji, którą pole GECOS może przechowywać. Bieżące wartości będą wyświetlane w nawiasach []. Jeśli chcesz zachować aktualne dane, wystarczy nacisnąć „Enter”, aby potwierdzić.

Wprowadzone informacje to:

Numer pokoju: 512
Telefon służbowy: 555-4567
Telefon domowy: 555-5432

Sprawdźmy, czy palec wykrywa nowe informacje:

finger dave -l

Tak, nowe dane zostały dodane. Należy jednak zauważyć, że pełna nazwa nie została zmieniona. Aby to zrobić, musisz użyć sudo. Nie musisz ponownie przechodzić przez całą sesję chfn, jeśli zapomnisz użyć sudo, ponieważ każdą wartość można zmienić osobno.

Modyfikacja pojedynczych wartości

Pełne imię i nazwisko użytkownika można zaktualizować, używając opcji -f (pełna nazwa) z sudo.

sudo chfn -f "Dave McKay" dave

A teraz sprawdźmy ponownie:

Teraz widzimy, że pełne imię i nazwisko zostało dodane.

Istnieją inne opcje do zmiany numeru pokoju, telefonu domowego oraz służbowego. Aby zmienić numer pokoju, użyj opcji -r (numer pokoju):

sudo chfn -r 633 dave

W niektórych dystrybucjach możesz użyć opcji -o (numer biura) zamiast -r. Aby zobaczyć opcje dla twojej wersji chfn, użyj:

man chfn

Aby zmienić telefon służbowy, użyj opcji -w (telefon służbowy):

sudo chfn -w 555-1122 dave

Na koniec, aby zmienić numer telefonu domowego, użyj opcji -h (numer telefonu domowego):

sudo chfn -h 555-6576 dave

Sprawdźmy ponownie, czy wszystkie zmiany zostały wprowadzone:

finger dave -l

Wszystko działa poprawnie. Wszystkie polecenia zostały wykonane, a wartości zostały zaktualizowane.

Korzystanie z chfn na kontach innych użytkowników

Jak zmienić informacje GECOS dla innych użytkowników? To również jest proste. Musisz użyć sudo, co jest jedyną różnicą. Sprawdźmy, jakie dane są przypisane do konta użytkownika mary:

finger mary -l

Dla tego konta użytkownika często ustawiane są domyślne informacje. Dodajmy nowe dane:

sudo chfn mary

Przebiegamy przez ten sam interaktywny proces, w którym zostaniesz poproszony o podanie wartości dla każdej informacji. Ponieważ użyliśmy sudo, musimy również podać pełne imię i nazwisko.

Wartość „Inne” nie jest obsługiwana we wszystkich wersjach chfn, a jeśli używasz sudo, tylko wtedy się pojawi. Dlatego wcześniej, gdy używaliśmy chfn bez sudo, nie widzieliśmy tej opcji:

chfn dave

Wartość „Inne” może zawierać dowolne informacje. Nie istnieją żadne ustalone zasady dotyczące tego pola.

Wersje chfn obsługujące pole „Inne” umożliwiają również jego bezpośrednią edycję przy użyciu opcji -o (inne). Z powodu konfliktu między -o dla „numeru biura” a -o dla „innego”, niektóre systemy mogą używać -r jako „numer pokoju”.

Aby zobaczyć dane zapisane dla konta użytkownika mary w pliku /etc/passwd, użyj polecenia less:

less /etc/passwd

W systemach obsługujących tę funkcjonalność (sprawdź stronę podręcznika dla twojej wersji chfn), można ustawić pole „inne” bezpośrednio poprzez opcję -o (inne):

sudo chfn -o "HTG Freelancer" dave

Możemy również sprawdzić informacje o koncie użytkownika dave za pomocą polecenia less:

less /etc/passwd

Oczywiście pojawia się pytanie: co zrobić, jeśli twoja wersja chfn nie obsługuje pola „Inne”? Można to zrealizować przy użyciu polecenia usermod.

Użycie polecenia usermod

Polecenie usermod pozwala na modyfikację konta użytkownika, w tym dodawanie lub usuwanie kont z grup oraz zmianę domyślnej powłoki. Może być również wykorzystywane do bezpośredniej edycji pola GECOS.

Przyjrzyjmy się bliżej linii w pliku /etc/passwd dotyczącej konta użytkownika mary. Użyjemy grep, aby wyodrębnić tę linię. Działa to, ponieważ nazwy użytkowników muszą być unikalne – jedno konto nie może mieć tej samej nazwy.

grep mary /etc/passwd

Wyświetlone zostaną pola z pliku /etc/passwd. Separatorami pól są dwukropek „:”. Od lewej do prawej są to:

  • Nazwa użytkownika.
  • „x” wskazujący, że hasło jest zaszyfrowane w pliku /etc/shadow.
  • Identyfikator użytkownika dla konta mary.
  • Identyfikator grupy dla konta mary.
  • Pole GECOS.
  • Ścieżka do katalogu domowego mary.
  • Powłoka uruchamiana po zalogowaniu się mary.

Przecinek „,” jest używany jako separator wartości w polu GECOS. Wartości w tym polu, w kolejności, to:

  • Pełne imię i nazwisko.
  • Numer pokoju (lub biura).
  • Numer telefonu służbowego.
  • Numer telefonu domowego.
  • Inne informacje.

Pamiętaj, że polecenie usermod ustawia całe pole GECOS na nową wartość. Jeśli podasz tylko pełne imię i nazwisko, to będzie jedynym elementem w polu GECOS. Oznacza to, że musisz podać wszystkie istniejące dane, które chcesz zachować.

Przykład: Użytkownik Mary awansował i przenosi się na czwarte piętro. Otrzymuje nowy numer biura, nowy telefon służbowy i dodajemy jej drugie imię. Jej numer telefonu domowego pozostaje bez zmian, ale musi być podany w poleceniu usermod.

Musimy użyć opcji -c (komentarz) oraz uruchomić polecenie z sudo:

sudo usermod -c "Mary Carol Quinn,405,5559654,555-7704,Linux Advocate" mary

Wykorzystując grep do przeszukania pliku /etc/passwd dla mary, zobaczymy, że nowe wartości zostały dodane:

grep mary /etc/passwd

Zmiany są nieodzowne

Nieaktualne dane są bezwartościowe. W miarę jak zmieniają się informacje o pracownikach – przemieszczeniu biura, zmianie nazwiska, nowym stanowisku – można łatwo zaktualizować metadane, aby odzwierciedlały bieżący stan.


newsblog.pl