MC, 2018
Ilustracja do artykułu: Zarządzanie użytkownikami: listowanie, dodawnie, usuwanie, zmiana hasła - Ubuntu

Zarządzanie użytkownikami: listowanie, dodawnie, usuwanie, zmiana hasła - Ubuntu

Ostatnim razem pisałem jak pozwolić użytkownikowi korzystać z polecenia sudo, poprzez przypisanie go do odpowiedniej grupy. Tym razem omówię szersze zagadnienie jakim jest zarządzanie użytkownikami systemu.

Co rozumiemy przez zarządzanie użytkownikami?

W artykule tym przedstawię podstawowe operacje z obszaru zarządzania użytkownikami. Mianowicie, pokażę jak wyświetlić listę użytkowników dostępnych w systemie, jak dodać nowego, usunąć istniejącego, zmienić mu nazwę i hasło.

Taki zakres umiejętności pokrywa zdecydowaną większość przypadków potrzeby manipulacji kontami w systemie. Przejdę więc do rzeczy.

Jak wyświetlić listę użytkowników?

Pierwsza informacja od jakiej należy zacząć to z pewnością ta, że sercem podstawowych informacji o użytkownikach w systemie Linux jest plik /etc/passwd. Jego nazwa nie jest już adekwatna do treści jaką zawiera, ponieważ haseł akurat tam się nie znajdzie, natomiast dawniej były i one. Są tam natomiast nazwy użytkowników i dodatkowe informacje takie jak ich numer UID, domyślna grupa, czy domyślny shell.

Podejrzę trzy pierwsze linijki tego pliku.

$ head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

Widać, że nazwa użytkownika jest wartością z pierwszej kolumny danych, które separowane są znakiem dwukropka. Resztę danych w tym artykule zupełnie pomijam. W ten sposób można przejrzeć użytkowników i w większości przypadków taka forma danych będzie wystarczająca. Jeżeli jednak chcieć wyłowić z pliku /etc/passwd wyłącznie nazwy użytkowników, tak żeby lista była bardziej przejrzysta, to można to zrobić na wiele sposobów. Mi osobiście do gustu przypadają dwa popularne snippety oparte o polecenia awk i sed.

Zacznę od awk. Jak już zaznaczyłem, separatorem informacji jest dwukropek. Przekazując tę informację flagą -F i prosząc o wyświetlenie tylko pierwszej tak powstałej kolumny, odsiane zostaną tylko nazwy użytkowników. Polecenie takie wygląda następująco.

awk -F : '{ print $1}' /etc/passwd

Co w praktyce wygląda tak.

$ awk -F : '{ print $1}' /etc/passwd | head -n 3
root
daemon
bin

Jeśli składnia polecenia awk jest zbyt skomplikowana, być może komenda sed będzie łatwiejsza do zapamiętania. Poproszę w niej wyłącznie o to, by usunąć wszystko co następuje w wierszu od dwukropka włącznie (ściślej mówiąc, nie tyle jest ten fragment wiersza usunięty, co zastąpiony pustym stringiem).

sed 's/:.*//' /etc/passwd

Efekt będzie dokładnie ten sam co w przypadku polecenia awk.

$ sed 's/:.*//' /etc/passwd | head -n 3
root
daemon
bin

Jak dodać użytkownika?

Aby stworzyć nowego użytkownika w systemie możemy się posłużyć dwoma poleceniami: useradd i adduser. Pierwsze z nich jest bardziej niskopoziomowe i generalnie korzystanie z niego nie jest zalecane. Natomiast komenda adduser jest przyjaznym użytkownikowi skryptem wykorzystującym w tle useradd. Skrypt ten zbierze podstawowe informacje o nowym userze i stworzy jego wpisy w systemie a także utworzy mu katalog domowy.

sudo useradd [nazwa użytkownika] # metoda niezalecana
sudo adduser [nazwa użytkownika]

Poniżej przedstawiam outputy z pracy z tymi poleceniami.

$ sudo useradd tmpuser
$ sed 's/:.*//' /etc/passwd | tail -n 1
tmpuser
$ sudo adduser tmpuser
Dodawanie użytkownika "tmpuser"...
Dodawanie nowej grupy "tmpuser" (1002)...
Dodawanie nowego użytkownika "tmpuser" (1002) w grupie "tmpuser"...
Tworzenie katalogu domowego "/home/tmpuser"...
Kopiowanie plików z "/etc/skel" ...
Proszę podać nowe hasło UNIX: 
Proszę ponownie podać hasło UNIX: 
passwd: hasło zostało zmienione
Zmieniam informację o użytkowniku tmpuser
Wpisz nową wartość lub wciśnij ENTER by przyjąć wartość domyślną
	Imię i nazwisko []: 
	Numer pokoju []: 
	Telefon do pracy []: 
	Telefon domowy []: 
	Inne []: 
Czy informacja jest poprawna? [T/n] t

Jak usunąć użytkownika?

Jeśli zaś chodzi o usuwanie istniejących użytkowników, sprawa ma się podobnie jak w przypadku ich dodawania. To znaczy, że jest komenda userdel i bardziej wysokopoziomowy i zalecany skrypt deluser. Ich składnia jest bardzo podobna.

sudo userdel [nazwa użytkownika] # metoda niezalecana
sudo deluser [nazwa użytkownika]

W użyciu wyglądają one jak poniżej.

$ sudo userdel tmpuser
$ sudo deluser tmpuser
Usuwanie użytkownika "tmpuser" ...
Ostrzeżenie: grupa "tmpuser" nie ma już żadnych członków.
Gotowe.

Jak zmienić nazwę użytkownika?

Do zmiany nazwy użytkownika zalecam posłużyć się poleceniem usermod. Jest to dość potężne narzędzie i bynajmniej nie służy wyłącznie do zmiany nazwy, ale do modyfikowania informacji o użytkowniku w ogólności (np. przeniesienie jego katalogu domowego itp.). Zachęcam do zapoznania się z manualem do tego polecenia.

Znajdując się w kontekście potrzeby zmiany nazwy użytkownika interesować mnie będzie flaga -l (skrót od --login).

usermod -l [nowa nazwa użytkownika] [obecna nazwa użytkownika]
$ sudo useradd tmpuser
$ sudo usermod -l jacek tmpuser
$ tail -n 1 /etc/passwd
jacek:x:1002:1002::/home/tmpuser:

Jak zmienić hasło użytkownika?

Na koniec zostaje zagadnienie zmiany hasła użytkownika. Do tego celu posłużę się komendą passwd. Wystarczy przekazać o jakiego użytkownika chodzi a następnie podać nowe hasła i je potwierdzić.

sudo passwd [nazwa użytkownika]
$ sudo passwd tmpuser
Proszę podać nowe hasło UNIX: 
Proszę ponownie podać hasło UNIX: 
passwd: hasło zostało zmienione

Warto również zaznaczyć, że tym sposobem możemy nadać hasło użytkownikowi stworzonemu przy pomocy polecenia useradd.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: