====== Administrowanie kontami użytkowników i systemami plików ====== Prezes do asystenta: Panie Grzesiu, proszę przegrać naszym partnerom wyniki za kwiecień, oni zaraz podejdą. - Dzień dobry, czy to Panom mam przegrać wyniki miesięczne? - Dzień dobry, tak, gdyby był Pan uprzejmy, tu mamy czystą dyskietkę. - Ależ oczywiście… Wkłada dyskietkę do napędu i… # mkfs -t vfat -c /dev/fd0h1440 # mount -t vfat -o iocharset=iso8859-2,codepage=852 /dev/fd0 /mnt/floppy # find / -noleaf -type f -name Wyniki_Kwiecień.[a-zA-Z] -exec cp ‘{ }’ /mnt/floppy \; # ls -la /mnt/floppy/Wyniki_Kwiecień.[a-z][A-Z] && sync && sleep 3 wyciąga dyskietkę i podaje. Partnerzy zadziwieni patrzą na monitor, na siebie: - Ojej! Asystent: - O przepraszam, znowu zapomniałem odmontować. ===== DO_PRZYGOTOWANIA ===== Samodzielnie należy przed tym laboratorium przygotować: * przeczytać strony **''man''** odpowiednich plików i poleceń z części WPROWADZENIE oraz slajdy wykładu dot. administracji (Podstawy zarządzania systemem). * powtórzyć pracę z vi! ===== WPROWADZENIE ===== ==== 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 konta: Bez narzędzi można administrować kontami poprzez modyfikowanie w.w. plików przez dowolny edytor tekstu, a najlepiej **vipw** i **vigr**. ==== 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] urzadzenie * ''-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 polecnie **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. Korzystanie z dyskietek * obsługa dyskietek powinna być wkompilowana w jądro, * narzędzia //fdutils// umożliwiają korzystanie ze stacji dysków (wymaga montowania dyskietki), * pakiet //MTools// zapewnia dostęp do dyskietek msdos/vfat (nie wymaga montowania dyskietki), (polecenia typu ''mdir a:'') * narzędzie //superformat// poszerza możliwości formatowania dyskietek. ==== UserModeLinux ==== [[http://user-mode-linux.sourceforge.net/|UML]] jest to proste lecz bardzo skuteczne rozwiązanie wirtualizatora, gdzie jądro linux pracuje jako proces w środowisku GNU/Linux. //Przed// rozpoczęciem ćwieczeń, należy zapoznać się z [[opis_uml|opisem uzycia uml]]!!! ===== ĆWICZENIA ===== ==== - 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ć poleceniam 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 polecnie adduser. Można to zrobić wywołując manual, lub sprawdzając jakie polecnie jest wywoływane jako adduser. W systemie Redhat adduser jest najczęściej tylko linkiem symbolicznym do useradd. - Jeżeli w systemie jest obecne polecenie adduser proszę wykonać podobne operacje jak w ćwiczeniu 1. - Jeżeli w systemie jest obecne polecenie adduser 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ć do założonych uprzednio grup użytkowników: - 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 vi). - ^_^ Należy założyć konto systemowe. Jakie powinny być hasło i powłoka? ==== - Modyfikacje i blokowanie kont ==== - Przy pomocy poleceń id groups proszę spradzić 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 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 vi. - ^_^ Proszę zablokować wybrane konto przez zmianę powłoki: - polecenia chsh, - przy pomocy vi. ==== - Zakładanie partycji ==== Uwaga: w UML nie zawsze jest możliwe pełne zrealizowanie ćwiczenia, w związku z tym: * w trakcie startu UML są tworzone dwa urządzenia ///dev/loop0//, ///dev/loop1// * na nich należy zakładać systemy plików, podmontowywać, etc. - Sprawdzić przy pomocy mount na jakim dysku (urządzeniu) znajduje się główny system plików (np. /dev/hda). - Stworzyć przy pomocy dd średniej wielkości plik (np. 16MB) login.swap, gdzie login jest nazwą konta na którym sie pracuje, wypełniony zerami (plik będzie wykorzystywany do zakładania systemów plików): dd if=/dev/zero of=/host/gjn.swap bs=1M count=16 Udostępnić go przez jedno z urządzeń /dev/loop (o wyższym numerze). losetup /dev/loop3 /host/gjn.swap Uwaga: Poniżej wersja ćwiczenia dla stanowiska lokalnego (bez UML). Jeżeli mamy UML to pomijamy kolejne trzy punkty. W zależności od możliwości sprzętowych stanowiska proszę przećwiczyć 3 metody tworzenia wolnej partycji: - Sprawdzić przy pomocy mount na jakim dysku (urządzeniu) znajduje się główny system plików (np. ///dev/hda//). Uruchomić na tym urządzeniu program fdisk i jeżeli na dysku jest wolne miejsce, założyć nową partycję. W niektórych przypadkach zalecane jest zrestartowanie maszyny w celu uaktualnienia tablicy partycji. - 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. Partycja swap będzie wykorzystywana do tworzenia systemów plików. - Stworzyć przy pomocy dd średniej wielkości plik (np. 16MB) wypełniony zerami. Udostępnić go przez jedno z urządzeń ///dev/loop//. Plik będzie wykorzystywany do zakładania systemów plików. ==== - Zakładanie systemów plików ==== - Na utworzonym w części wcześniejszej urządzeniu (np. odpowiednim loop) (lub partycji) 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 oglądnąć 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'') ==== - Partycje swap ==== - 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. - ^_^ Stworzyć partycję swap na urządzeniu na którym normalnie się ona znajduje lub na innej partycji utworzonej w części 3. - Sprawdzić ilość dostępnej pamięci (free). Podłączyć partycję swap. Sprawdzić ilość dostępnej pamięci (free).