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

Konto użytkownika to coś więcej niż nazwa użytkownika. Dowiedz się, jak ustawić i zmienić wszystkie metadane skojarzone z kontem użytkownika systemu Linux z poziomu wiersza poleceń.

Co jest w imieniu?

Jeśli używasz komputera z systemem Linux lub Unix, będziesz mieć konto użytkownika. Nazwa nadana kontu to nazwa twojego konta użytkownika. To jest nazwa, której używasz do logowania. Jest to również (domyślnie) nazwa twojej grupy logowania i nazwa twojego katalogu domowego. Wszystkie używają tego samego identyfikatora.

Istnieje inny zestaw informacji, które można przechowywać dla każdego konta użytkownika. Rzeczywiste dane, takie jak na przykład imię i nazwisko osoby, jej numer biura i służbowy numer telefonu, można zdefiniować i dołączyć do nich. Rzeczywiście, do kont użytkowników można przypisać zupełnie dowolne fragmenty informacji.

W praktyce będzie to bardziej przydatne dla administratorów systemu opiekujących się komputerami, na których skonfigurowano wiele kont użytkowników. Ale nawet w przypadku komputera z systemem Linux dla jednego użytkownika zawsze interesujące jest wiedzieć, co dzieje się pod maską.

Pole GECOS

W pewnym momencie pionierzy Uniksa nie mieli własnej drukarki. Musieli przesuwać swoje zadania drukowania do pliku General Electric mainframe, na którym był uruchomiony Kompleksowy system operacyjny General Electric (GECOS). Aby to osiągnąć, użytkownicy systemów Unix musieli przechowywać i używać poświadczeń konta w systemie GECOS.

Utworzono pole GECOS do przechowywania tych poświadczeń. Ten bardzo niszowy wymóg już dawno przeszedł do historii, a pole GECOS zostało ponownie przeznaczone do przechowywania innych danych związanych z właścicielem konta użytkownika. Może mieć nową pracę, ale zachowuje swoją starą nazwę. Nadal nazywa się to polem GECOS.

Pole jest przechowywane w pliku / etc / passwd wraz z innymi informacjami dotyczącymi konta użytkownika:

Nazwa użytkownika konta.
Identyfikator użytkownika.
Identyfikator grupy.
Ścieżka do katalogu domowego konta użytkownika.
Powłoka uruchamiana po zalogowaniu użytkownika.

To jest, gdzie palec polecenie i mały palec polecenie pobrać informacje, które wyświetlają.

Polecenie chfn

Chfn (zmiana informacji palca) umożliwia ustaw i zmień informacje przechowywane w polu GECOS. Informacje są przechowywane jako lista oddzielona przecinkami w polu.

Polecenie chfn było już obecne w Ubuntu 18.04.1 i Manjaro 18.1.0. Musiał być zainstalowany w Fedorze 31. Użyj tego polecenia, aby go zainstalować:

sudo dnf install util-linux-user

sudo dnf install util-linux-user w oknie terminala

Zobaczmy, jaki palec może dowiedzieć się o właścicielu konta użytkownika „dave”. Aby uzyskać maksymalne informacje, użyjemy opcji -l (długi format):

finger dave -l

finger dave -l w oknie terminala

Oto, co mógł znaleźć:

Wyjście finger dave -l w oknie terminala

Pobiera nazwę użytkownika konta, katalog domowy i domyślną powłokę. Wszystkie są powiązane z kontem użytkownika. Nie odnoszą się do prawdziwej osoby, która korzysta z tego konta. Możemy użyć polecenia chfn do przechowywania informacji o rzeczywistej osobie.

chfn dave

chfn dave w oknie terminala

Użycie chfn w ten sposób uruchamia krótki, interaktywny proces. Zostaniesz poproszony o wpisanie wartości danych dla każdej informacji, którą może przechowywać pole GECOS. Bieżąca wartość każdej wartości danych jest wyświetlana w nawiasach []. Jeśli chcesz zachować aktualne dane, możesz nacisnąć klawisz „Enter”, a wartość w nawiasach zostanie zachowana.

Interaktywny proces chfn w oknie terminala

Wprowadzone przez nas informacje to:

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

Ukończono sesję chfn w oknie terminala

Sprawdźmy, czy palec zbiera te nowe informacje:

finger dave -l

finger dave -l w oknie terminala

Tak. Ale być może zauważyłeś, że nie zachęciło to do zmiany pełnej nazwy. Zrobi to tylko wtedy, gdy użyjesz sudo. Ale nie musimy ponownie przechodzić przez całą sesję chfn, tylko dlatego, że zapomnieliśmy użyć sudo. Każdą wartość danych możemy zmienić indywidualnie.

Zmiana poszczególnych wartości danych

Pełne imię i nazwisko właściciela konta użytkownika możemy ustawić za pomocą opcji -f (pełna nazwa) wraz z sudo.

sudo chfn -f "Dave McKay" dave

sudo chfn -f

A jeśli jeszcze raz sprawdzimy palcem:

Wyjście z palca w oknie terminala

Widzimy, że dodano pełne imię i nazwisko.

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

sudo chfn -r 633 dave

sudo chfn -r 633 dave w oknie terminala

Zauważ, że w niektórych dystrybucjach możesz użyć opcji -o (numer pokoju biurowego) zamiast opcji -r. Więcej na ten temat wkrótce. Na razie, aby zobaczyć opcje dla twojej wersji chfn, użyj:

man chfn

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

sudo chfn -w 555-1122 dave

sudo chfn -w 555-1122 dave w oknie terminala

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

sudo chfn -h 555-6576 dave

sudo chfn -h 555-6576 dave w oknie terminala

Użyjmy ponownie palca, aby sprawdzić, czy wszystkie te zmiany zostały zaakceptowane:

finger dave -l

finger dave -l w oknie terminala

Powodzenie. Wszystkie te polecenia zadziałały, a wartości danych zostały zaktualizowane.

Korzystanie z chfn na kontach innych użytkowników

To tyle jeśli chodzi o zmianę naszych własnych informacji, co ze zmianą informacji GECOS dla innych użytkowników? To równie łatwe. Musisz użyć sudo, kiedy to robisz, ale to jedyna różnica. Sprawdźmy, jakie dane są ustawione dla konta użytkownika mary:

finger mary -l

finger mary -l w oknie terminala

Dla tego konta użytkownika ustawiane są zwykle domyślne informacje. Dodajmy do informacji:

sudo chfn mary

sudo chfn mary w oknie terminala

Przeprowadzimy tę samą sesję, co poprzednio, otrzymując monit o podanie wartości danych dla każdej informacji, która może być przechowywana. A ponieważ użyliśmy sudo, jesteśmy proszeni o podanie pełnej nazwy wartości danych.

Ukończono sesję sudo chfn mary w oknie terminala

Poczekaj chwilę, jaki jest ten ostatni element o nazwie „Inne?”

nie jest obsługiwany przez wszystkie wersje chfn i widzisz go tylko, jeśli używasz sudo, dlatego nie widzieliśmy go wcześniej, gdy (celowo) nie używaliśmy sudo z:

chfn dave

Wartość danych „Inne” może zawierać dowolne dane. Nie ma żadnego przepisanego ani oczekiwanego zastosowania.

Wersje chfn obsługujące pole „Inne” również udostępniają opcję -o (inne) umożliwiającą bezpośrednią zmianę tej wartości. To z powodu konfliktu między -o dla „numeru biura” a -o dla „innego” niektóre systemy używają -r jako „numer pokoju”.

Możemy zobaczyć dane zapisane dla konta użytkownika mary w pliku / etc / paswd, używając less:

less /etc/passwd

lass / etc / passwd w oknie terminala

W systemach, które to obsługują (sprawdź stronę podręcznika dla twojej wersji chfn) możesz ustawić pole „inne” bezpośrednio za pomocą opcji -o (inne):

sudo chfn -o "HTG Freelancer" dave

sudo chfn -o

I możemy sprawdzić dane konta użytkownika dave za pomocą polecenia less:

less /etc/passwd

mniej / etc / p <span data-mce-type =[założonewoknieterminala”szerokość=”646″wysokość=”382″/>[asswdinaterminalwindow”width=”646″height=”382″/>

To rodzi oczywiste pytanie. Jeśli Twoja wersja chfn nie obsługuje pola „Inne”, jak je zmienić? Możemy to zrobić za pomocą polecenia usermod.

Komenda usermod

Polecenie usermod na to pozwala modyfikować aspekty konta użytkownika poprzez takie działania jak dodanie lub usunięcie konta użytkownika z grup oraz zmiana ich domyślnej powłoki. Może być również używany do bezpośredniego manipulowania polem GECOS.

Przyjrzyjmy się bliżej linii w pliku / etc / passwd dotyczącej konta użytkownika mary. Użyjemy grep, aby wyodrębnić dla nas tę linię. To zadziała, ponieważ nazwy użytkowników muszą być unikalne. Może istnieć tylko jedno konto użytkownika o nazwie mary.

grep mary /etc/passwd

grep mary / etc / passwd w oknie terminala

Zostaną wyświetlone pola w pliku etc / passwd. Jako separator pól używany jest dwukropek „:”. od lewej do prawej pola to:

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

Przecinek „,” jest używany jako separator wartości danych w polu GECOS. Wartości w polu GECOS to, od lewej do prawej:

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

Zwróć uwagę, że polecenie usermod ustawia całe pole GECOS na nową podaną wartość. Jeśli podasz tylko pełne imię i nazwisko osoby, jedyną pozycją w polu GECOS będzie pełne imię i nazwisko. Oznacza to, że musisz podać wszystkie istniejące wartości danych, które chcesz zachować.

Oto przykład. Użytkownik Mary został awansowany i zamierza przenieść się na czwarte piętro. Dostaje nowy numer do biura, nowy numer telefonu służbowego i dodamy jej drugie imię. Zmieni się również jej wartość pola „Inne”. Chociaż jej numer telefonu domowego nie ulegnie zmianie, musimy podać go w ciągu do usermod.

Musimy użyć opcji -c (komentarz) i musimy uruchomić polecenie z sudo.

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

sudo usermod -c

Użycie grep do raportowania zawartości pliku / etc / passwd dla mary pokazuje nam, że nowe wartości zostały dodane.

grep mary /etc/passwd

grep mary / etc / passwd w oknie terminala

Wszystko jest płynne, nic nie trwa

Niedokładne dane są bezwartościowe. Gdy zmieniają się informacje o osobach – przenosi się biuro, zmienia się nazwa, stanowisko – można łatwo zaktualizować ich metadane, aby odzwierciedlić bieżące stanowisko.