===== Podstawy administrowania 1: użytkownicy i system plików =====
==== Przygotuj się do laboratorium ====
  * Przeczytać strony **''man''** dla plików i poleceń z części [[#Wiedza|Wiedza]].
  * Uzyskaj dostęp do maszyny wirtualnej na której będziesz realizować zadania. [[instr_virtualbox|Szczegóły/wymagania znajdują się tutaj]].
==== Wiedza ====
=== 1. Konta użytkowników ===
Większość istotnych informacji o użytkownikach jest przechowywana w poniższych plikach:
    * ''/etc/passwd'' - podstawowe informacje o kontach użytkowników (ew. zaszyfrowane hasło),
    * ''/etc/group'' - podstawowe informacje o grupach użytkowników,
    * ''/etc/shadow'' - rozszerzone informacje o kontach użytkowników (np. daty ważności) i zaszyfrowane hasło (w systemie shadow),
    * ''/etc/gshadow'' - rozszerzone informacje o grupach użytkowników (w systemie //shadow//).
Narzędzia do modyfikowania kont. Podstawowe metody zakładania kont użytkowników:
  * z wykorzystaniem **adduser**,
  * z wykorzystaniem **useradd**,
  * przy pomocy edytora.
Informacje o koncie można uzyskać przy pomocy poleceń takich jak **id**, **groups**.
Raz założone konto można modyfikować na wiele sposobów:
  * polecenie **chfn** zmienia informacje GECOS (imię, nazwisko, itp.) o użytkowniku,
  * polecenie **chsh** zmienia powłokę,
  * narzędzie **usermod** modyfikuje dowolne parametry konta,
  * narzędzie **groupmod** j.w. dla grupy,
  * instrukcja **passwd** zakłada nowe hasło, a w systemie //shadow passwords// zmienia daty ważności konta.
Usuwanie kont i grup:
  * konto użytkownika można usunąć przy pomocy polecenia **userdel**,
  * powyższe polecenie z opcją -r usuwa katalog domowy użytkownika,
  * polecenie **groupdel** usuwa grupy użytkowników,
  * przy pomocy polecenia instrukcji **find** można odnaleźć i usunąć pliki których właścicielem jest podany użytkownik lub grupa.
Istnieje kilka metod blokowania dostępu do konta:
  * poleceniem **passwd** z opcją -l,
  * przez ręczną modyfikację hasła w pliku //passwd/shadow//,
  * poprzez zmianę powłoki użytkownika na program nie dopuszczający logowania.
Trzeba pamiętać, iż powyższe metody nie są skuteczne w przypadku sieciowych metod autoryzacji nie korzystających z haseł, np. rhosts.
Ręczne modyfikowanie użytkowników i grup: można to robić poprzez bezpośrednie zmiany w.w. plików w dowolnym edytorze, ale najlepiej skorzystać z **vipw** i **vigr**.
=== 2. Zarządzanie systemami plików ===
Zarządzanie systemami plików to między innym:
  * zakładanie partycji na dyskach fizycznych,
  * tworzenie systemów plików,
  * montowanie (podłączanie),
  * odmontowywanie (odłączanie),
  * sprawdzanie,
  * utrzymywanie wolnego miejsca.
Na istniejącym urządzeniu specjalnym (np. dysku) można założyć nowy system plików przy pomocy polecenia **mkfs**.
Użycie:mkfs -t typ [-c] urzadzeniegdzie:
  * ''-t typ''  - typ systemu plików, np. ext2, 
  * ''-c'' - sprawdzenie, czy na urządzeniu nie ma uszkodzonych bloków (ang. bad blocks) - parametr opcjonalny, 
  * ''urzadzenie'' - urządzenie (np. partycja dysku) na której zakładany jest system plików. 
Montowanie:
  * aby skorzystać z systemu plików, trzeba go zamontować,
  * nowy system jest dostępny w podanym katalogu,
  * dostęp do systemu plików może być regulowany przy pomocy opcji polecenia mount,
  * w ogólnym przypadku, tylko administrator może montować systemy plików,
  * polecenie wywołane bez opcji wyświetla podmontowane systemy plików.
Składnia **mount**:  mount -t typ urządzenie punkt_montowania -o opcje
  * ''typ''    - typ systemu plików, 
  * ''urzadzenie''    - urządzenie na którym znajduje się system plików, 
  * ''punkt_montowania''    - katalog w którym udostępniany jest nowy system plików, 
  * ''-o opcje''    - różne opcje dodatkowe, np. ''ro,rw,remount''; zależą również od typu systemu plików. 
Odmontowywanie:
  * do odmontowywania służy polecenie **umount**,
  * odmontowanie jest możliwe tylko wtedy, gdy żaden proces nie korzysta z plików na odmontowywanym systemie plików,
  * przy odmontowaniu wystarczy podać punkt montowania lub urządzenie.
Sprawdzanie:
  * do sprawdzania systemów plików służy polecenie **fsck**,
  * **fsck** wywołuje specjalne wersje narzędzi dla konkretnego systemu plików (np. **e2fsck**),
  * **e2fsck** można również wywoływać bezpośrednio,
  * systemy plików są systematycznie sprawdzane w trakcie startu systemu.
Partycje swap:
  * te partycje są używane jako pamięć wirtualna systemu,
  * umożliwiają maksymalne zwiększenie ilości dostępnej pamięci,
  * zakłada się je poleceniem: **mkswap**,
  * włącza (montuje) przez: **swapon**,
  * wyłącza (odmontowuje) przez: **swapoff**,
  * możliwe jest również korzystanie z plików swap.
==== Ćwiczenia ====
=== I. Zakładanie i usuwanie kont ===
  - Założyć konto przy pomocy polecenia ''useradd'':
    - wywołując je tylko z nazwą użytkownika,
    - oprócz nazwy użytkownika ustawić z linii poleceń powłokę,
    - oprócz nazwy użytkownika ustawić z linii poleceń katalog domowy,
    - oprócz nazwy użytkownika ustawić z linii poleceń numer uid,
    - oprócz nazwy użytkownika ustawić z linii poleceń grupę użytkownika. \\ Czy padło pytanie o hasło? Jeżeli nie, należy je ustawić poleceniem ''passwd''.
  - Sprawdzić przy pomocy ''useradd -D'' domyślne parametry konta, a następnie zmienić:
    - domyślną powłokę,
    - domyślny katalog domowy,
    - domyślną grupę.
  - Sprawdzić, czy w systemie jest polecenie ''adduser''. Można to zrobić wywołując manual, lub sprawdzając jakie polecenie jest wywoływane jako ''adduser''. Jeżeli jest obecne:
    - proszę wykonać podobne operacje jak w ćwiczeniu 1.
    - proszę wykonać podobne operacje jak w ćwiczeniu 2, edytując plik ''/etc/adduser.conf''.
  - Proszę założyć grupy użytkowników, np. grupy ''biuro'' ''praca''.
  - Dopisać użytkowników do założonych uprzednio grup:
    - jeżeli to możliwe, przy pomocy ''addgroup'',
    - ręcznie, edytując plik ''/etc/group''.
  - Przy pomocy ''deluser'' i ''delgroup'' proszę usunąć założone konta i grupy. Czy usunięcie konta pociąga za sobą automatyczną likwidację grupy?
  - Proszę założyć ręcznie podobne konta i grupy, według omówionych wcześniej zasad. Sprawdzić czy konta funkcjonują poprawnie. (Wskazówka: jedyne potrzebne narzędzie to edytor tekstowy: nano/vi/...).
  - Należy założyć konto systemowe. Jakie powinny być hasło i powłoka?
=== II. Modyfikacje i blokowanie kont ===
  - Przy pomocy poleceń ''id'', ''groups'' proszę sprawdzić informacje o kilku kontach użytkowników i systemowych.
  - Korzystając z polecenia ''chfn'' lub ''usermod'' zmodyfikować parametry wcześniej założonego konta:
    - dane personalne użytkownika,
    - nazwę konta.
  - Korzystając z ''chsh'' proszę zmienić powłokę wybranego konta.
  - Wykonać podobne modyfikacje jak w ćwiczeniu 2, ale korzystając tylko z edytora (nano/vi/...).
  - Wykorzystując polecenie ''ls -ln'' można zobaczyć numeryczne wartości właścicieli plików. Przed zmianą nazwy konta proszę oglądnąć te wartości. Operację należy powtórzyć po zmianie nazwy grupy lub konta i porównać te wartości. Czy zmiana nazwy konto lub grupy pociąga za sobą zmianę uid i gid?
  - Proszę zablokować wybrane konto przy pomocy przez zmianę hasła:
    - polecenia ''passwd'',
    - przy pomocy edytora (nano/vi/...).
  - Proszę zablokować wybrane konto przez zmianę powłoki:
    - polecenia ''chsh'',
    - przy pomocy edytora (nano/vi/...).
=== III. Zakładanie partycji ===
Nowe partycje można utworzyć na trzy sposoby - w zależności od możliwości sprzętowych stanowiska proszę przetestować każdą z nich:
  - Sprawdzić przy pomocy ''mount'' na jakim dysku (urządzeniu) znajduje się główny system plików (np. ''/dev/sda''). Uruchomić na tym urządzeniu program ''fdisk'' i jeżeli na dysku jest wolne miejsce (polecenie ''F'' w ''fdisk''), założyć nową partycję. W niektórych przypadkach zalecane jest zrestartowanie maszyny w celu uaktualnienia tablicy partycji.
    * Uwaga: w przypadku pracy w VirtualBox, na obrazie Ubuntu pobranym z OSBoxes, dysk ma już zajętą całą przestrzeń - nie da się utworzyć nowych partycji (bez kasowania / zmniejszania starych), ale możesz to wykorzystać do obejrzenia jakie partycje są dostępne w systemie i gdzie są podmontowane :-)
  - Sprawdzić przy pomocy ''free'' stopień zajętości pamięci. Sprawdzić w pliku ''/etc/fstab'' na jakim urządzeniu znajduje się partycja swap. Jeżeli większość pamięci swap jest wolna, odłączyć partycję swap. Dalsze ćwiczenia (z tworzeniem systemów plików) będzie można wykonywać na tak odłączonej partycji swap.
  - Stworzyć przy pomocy ''dd'' średniej wielkości plik (np. 16MB) wypełniony zerami:dd if=/dev/zero of=/root/my.swap bs=1M count=16 Udostępnić go przez jedno z urządzeń ''/dev/loop'': losetup /dev/loop4 /root/my.swap Plik będzie wykorzystywany do zakładania systemów plików w kolejnych zadaniach.
=== IV. Zakładanie systemów plików ===
  - Na przygotowanym w części wcześniejszej urządzeniu (osobnej partycji / odłączonej partycji swap / urządzeniu loop) założyć przy pomocy ''mkfs'':
    * system plików ext2,
    * system plików minix (o ile to możliwe),           
    * system plików msdos (o ile to możliwe).
  - Jeżeli w punkcie 1. założono system ext2 proszę uruchomić na nim ''dumpe2fs'' i obejrzeć wyświetlane informacje. Gdzie są licznik i limit montowań?
  - Stworzyć katalog ''/mnt/tmp'' i podmontować do niego stworzony w ćwiczeniu 1. system plików. Uruchomić ''df''. Sprawdzić, czy można korzystać z nowego systemu plików, zakładając w nim plik.
  - Po odmontowaniu stworzonego systemu plików uruchomić polecenie ''fsck''. Dla systemu ext2 uruchomić ''e2fsck'' z opcją ''-f''.
  - Podmontować założony system plików do ''/mnt/tmp''. Wykonać polecenie ''cd /mnt/tmp''. Spróbować odmontować system plików. Sprawdzić przy pomocy ''fuser'' jakie procesy z niego korzystają. Co jest warunkiem odmontowania systemu plików?
  - Dla systemu ext2 proszę kilkakrotnie podmontować i odmontować system plików, obserwując licznik montowań.
  - Utworzyć w pliku ''/etc/fstab'' wpis odpowiadający nowemu systemowi plików. Czy utworzenie tego wpisu uprości montowanie?
  - W jaki sposób umożliwić każdemu użytkownikowi montowanie systemu plików? (Wskazówka: ''man fstab'')
  - Jakiej opcji należy użyć, by zapobiec automatycznemu montowaniu systemu plików w trakcie startu systemu? (Wskazówka: ''man fstab'')
  - Jak wymusić montowanie systemu plików w trybie tylko do odczytu? (Wskazówka: ''man fstab'')
=== V. Partycje swap ===
  - Sprawdzić na jakim urządzeniu znajduje się partycja swap (w pliku ''/etc/fstab'' lub za pomocą ''fdisk -l''). Jeżeli większość pamięci swap jest wolna, odłączyć partycję swap (o ile nie zostało to zrobione wcześniej w części III.)
  - Stworzyć partycję swap na urządzeniu przygotowanym w części III.
  - Sprawdzić ilość dostępnej pamięci (''free''). Podłączyć partycję swap. Sprawdzić ilość dostępnej pamięci (''free'').
  - Czy można mieć dwie partycje swap podłączone równocześnie? Sprawdź.