
Linux: Wiersz poleceń – zarządzanie użytkownikami
Zarządzanie użytkownikami oraz grupami użytkowników z poziomu wiersza poleceń / terminala systemu Linux.
Identyfikacja obecnie zalogowanych użytkowników
who – lista aktualnie zalogowanych użytkowników
whoami – nazwa użytkownika na którego konto aktualnie jesteśmy zalogowani
who -a – informacje szczegółowe
student@student:~$ who student tty7 2018-03-17 20:16 (:0) student@student:~$ whoami student student@student:~$ who -a start systemu 2018-03-17 20:15 run-level 5 2018-03-17 20:15 LOGIN tty1 2018-03-17 20:15 947 id=tty1 student + tty7 2018-03-17 20:16 13:42 1311 (:0) student@student:~$ id uid=1000(student) gid=1000(student) grupy=1000(student),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)
Lokalizacja plików grup i użytkowników
grupy użytkowników: /etc/group
użytkownicy: /etc/passwd
student@student:~$ tail -15 /etc/group whoopsie:x:117: mlocate:x:118: avahi-autoipd:x:119: avahi:x:120: bluetooth:x:121: scanner:x:122:saned colord:x:123: pulse:x:124: pulse-access:x:125: rtkit:x:126: saned:x:127: student:x:1000: sambashare:x:128:student vboxadd:x:1001: vboxsf:x:999: student@student:~$ tail -15 /etc/passwd lightdm:x:108:114:Light Display Manager:/var/lib/lightdm:/bin/false whoopsie:x:109:117::/nonexistent:/bin/false avahi-autoipd:x:110:119:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false avahi:x:111:120:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false dnsmasq:x:112:65534:dnsmasq,,,:/var/lib/misc:/bin/false colord:x:113:123:colord colour management daemon,,,:/var/lib/colord:/bin/false speech-dispatcher:x:114:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false hplip:x:115:7:HPLIP system user,,,:/var/run/hplip:/bin/false kernoops:x:116:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false pulse:x:117:124:PulseAudio daemon,,,:/var/run/pulse:/bin/false rtkit:x:118:126:RealtimeKit,,,:/proc:/bin/false saned:x:119:127::/var/lib/saned:/bin/false usbmux:x:120:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false student:x:1000:1000:student,,,:/home/student:/bin/bash vboxadd:x:999:1::/var/run/vboxadd:/bin/false
root | x | 0 | 0 | root | /root | /etc/bash |
login | hasło* | id użytkownika | id grupy | komentarz | katalog domowy | shell |
* jeśli użyty jest x, znaczy że hasło jest zaszyfrowane i przechowywane w pliku /etc/shadow
Utworzenie konta nowego użytkownika
sudo useradd nauczyciel student@student:~$ tail -15 /etc/passwd (...) nauczyciel:x:1001:1002::/home/nauczyciel: student@student:~$ tail -15 /etc/group (...) nauczyciel:x:1002:
Podczas tworzenia konta użytkownika powstaje grupa o tej samej nazwie.
Aby utworzyć nowego użytkownika możemy również wykorzystać polecenie adduser. Jest to skrypt napisany w perlu, który krok po kroku przeprowadzi nas przez utworzenie nowego konta.
sudo adduser student2 Dodawanie użytkownika "student2"... Dodawanie nowej grupy "student2" (1002)... Dodawanie nowego użytkownika "student2" (1001) w grupie "student2"... Tworzenie katalogu domowego "/home/student2"... 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 student2 Wpisz nową wartość lub wciśnij ENTER by przyjąć wartość domyślną Imię i nazwisko []: Jan Kowalski Numer pokoju []: 128 Telefon do pracy []: Telefon domowy []: Inne []: Czy informacja jest poprawna? [T/n] T
Utworzenie nowej grupy
sudo groupadd szkola
W pliku /etc/group doszedł nam nowy wpis:
szkola:x:1003:
Przydzielenie użytkownika do grupy
student@student:~$ sudo usermod -a -G szkola nauczyciel student@student:~$ sudo usermod -a -G szkola student student@student:~$ groups student student : student adm cdrom sudo dip plugdev lpadmin sambashare szkola student@student:~$ groups nauczyciel nauczyciel : nauczyciel szkola
usermod – modyfikacja konta użytkownika
usermod --help Usage: usermod [options] LOGIN Options: -c, --comment COMMENT new value of the GECOS field -d, --home HOME_DIR new home directory for the user account -e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE -f, --inactive INACTIVE set password inactive after expiration to INACTIVE -g, --gid GROUP force use GROUP as new primary group -G, --groups GROUPS new list of supplementary GROUPS -a, --append append the user to the supplemental GROUPS mentioned by the -G option without removing him/her from other groups -h, --help wyświetla tę wiadomość pomocy -l, --login NEW_LOGIN new value of the login name -L, --lock lock the user account -m, --move-home move contents of the home directory to the new location (use only with -d) -o, --non-unique allow using duplicate (non-unique) UID -p, --password PASSWORD use encrypted password for the new password -R, --root CHROOT_DIR directory to chroot into -s, --shell SHELL new login shell for the user account -u, --uid UID new UID for the user account -U, --unlock unlock the user account -v, --add-subuids FIRST-LAST add range of subordinate uids -V, --del-subuids FIRST-LAST remove range of subordinate uids -w, --add-subgids FIRST-LAST add range of subordinate gids -W, --del-subgids FIRST-LAST remove range of subordinate gids -Z, --selinux-user SEUSER new SELinux user mapping for the user account
groups – wypisuje przynależność do grup UŻYTKOWNIKA
Wypisanie użytkownika z grupy
groups nauczyciel nauczyciel : nauczyciel szkola sudo usermod -G nauczyciel nauczyciel groups nauczyciel nauczyciel : nauczyciel
Użytkownik nauczyciel przypisany był do dwóch grup. Chcąc pozostawić go tylko w jednej, konkretnej grupie wykorzystaliśmy polecenie usermod z opcja -G przypisania grupy i podaliśmy nazwę grupy. Przypisania do wszystkich pozostałych grup, do których przynależał użytkownik zniknęły.
Ustawienie hasła użytkownika
sudo passwd nauczyciel Proszę podać nowe hasło UNIX: Proszę ponownie podać hasło UNIX: passwd: hasło zostało zmienione student@student:~$ su nauczyciel Hasło: nauczyciel@student:/home/student$
passwd nazwa_konta – utworzenie nowego hasła użytkownika
su nazwa_konta – przelogowanie w terminalu na konto dowolnego użytkownika
Hasła użytkownika przechowywane są w pliku /etc/shadow
student:$6$EwunYILA$P1JqFuZlk/aEtUylGbGL.qkdZLSXJzJuCQRurWDUdn5Fgw2hnbGEEuziDSv4/xy6wkMAM.ighT7b22z/Mh4gf/:17602:0:99999:7:::
Wpis dotyczący danego użytkownika zawiera:
nazwa_użytkownika : zakodowane hasło : data ostatniej zmiany hasła (liczona w dniach od 1 stycznia 1970) : minimalny okres pomiędzy zmianami hasła : maksymalny okres pomiędzy zmianami hasła : ile dni przed konieczną zmianą hasła ma się wyświetlić przypomnienie : ile dni po przeterminowaniu hasło jest nadal aktywne : termin ważności konta : miejsce zarezerwowane na przyszłe zmienne.
Aby edytować politykę haseł, edytujemy zawartość pliku tekstowego /etc/login.defs
Fragment pliku:
# # Password aging controls: # # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_WARN_AGE Number of days warning given before a password expires. # PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_WARN_AGE 7
Do modyfikacji polityki haseł możemy wykorzystać polecenie chage
chage -l student Ostatnia zmiana hasła : mar 12, 2018 Hasło traci ważność : nigdy Hasło nieaktywne : nigdy Konto traci ważność : nigdy Minimalna ilość dni pomiędzy zmianami hasła : 0 Maksymalna ilość dni pomiędzy zmianami hasła : 99999 Liczba dni ostrzeżenia, zanim ważność hasła upłynie : 7
chage --help Usage: chage [options] LOGIN Options: -d, --lastday LAST_DAY set date of last password change to LAST_DAY -E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE -h, --help wyświetla tę wiadomość pomocy -I, --inactive INACTIVE set password inactive after expiration to INACTIVE -l, --list show account aging information -m, --mindays MIN_DAYS set minimum number of days before password change to MIN_DAYS -M, --maxdays MAX_DAYS set maximim number of days before password change to MAX_DAYS -R, --root CHROOT_DIR directory to chroot into -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS
Przykładowo:
student@student:sudo chage -W 10 student student@student:~$ chage -l student Ostatnia zmiana hasła : mar 12, 2018 Hasło traci ważność : nigdy Hasło nieaktywne : nigdy Konto traci ważność : nigdy Minimalna ilość dni pomiędzy zmianami hasła : 0 Maksymalna ilość dni pomiędzy zmianami hasła : 99999 Liczba dni ostrzeżenia, zanim ważność hasła upłynie : 10
Usunięcie konta użytkownika
sudo userdel nauczyciel
Usunie konto użytkownika
sudo userdel -r nauczyciel
Usunie użytkownika i jego katalog domowy
Analogicznie do tworzenia nowego konta użytkownika, tutaj również możemy wykorzystać skrypt, który przeprowadzi nas przez usunięcie konta użytkownika: deluser
sudo deluser student2 Usuwanie użytkownika "student2" ... Ostrzeżenie: grupa "student2" nie ma już żadnych członków. Gotowe.
Blokowanie konta użytkownika
passwd -l student
Zablokowanie konta użytkownika
passwd -u student
Odblokowanie konta użytkownika
Zablokowania konta użytkownika możemy również dokonać ręcznie edytując plik /etc/passwd
student:x:1000:1000:student,,,:/home/student:/bin/bash
Dodając przed x znak !. Zablokujemy w ten sposób hasło.
student:!x:1000:1000:student,,,:/home/student:/bin/bash
Ćwiczenia
- Utwórz konto użytkownika Banan wraz z katalogiem domowym
- Utwórz konto użytkownika Kiwi za pomocą skryptu adduser. Ustaw użytkownikowi Kiwi katalog domowy na /Owoce/Kiwi
- Zmodyfikuj odpowiedni plik, aby maksymalny okres pomiędzy zmianami hasła użytkownika Banan wynosiła 365 dni.
- Wykonaj odpowiednie polecenie, aby ustawić minimalny okres pomiędzy zmianami hasła użytkownika Kiwi wynosił 1 dzień.
- Utwórz grupę Owoce.
- Dodaj do grupy Owoce użytkowników Banan oraz Kiwi.
- Przenieś odpowiednim poleceniem katalog domowy użytkownika Banan do /Owoce/Banan.
- Zablokuj hasło użytkownikowi Kiwi.
- Usuń konto użytkownika Banan.