Treści do przedmiotu SOiSK kl. 3

 


Historia Linuksa

Lata 60-te – początek prac nad systemem Multics w Bell Labs (część AT&T), porzucone

 1969 – Ken Thompson i Dennis Ritchie napisali pierwszą wersję UNIX’a

 1972 – druga wersja, wprowadzała potoki

 1973 – powstanie języka C

 1977-79 – Rozwój systemu na uniwersytecie Berkeley w Kalifornii – systemy 1BSD, 2BSD, 3BSD

 1979 – wersja 7 UNIXa

 1980 – powstaje Xenix – UNIX na komputery PC na zamówienie Microsoftu

 1983 – podział AT&T, komercjalizacja systemu - UNIX System III oraz V; powstaje Free Software Foundation

 1984 – 4.2BSD wprowadza TCP/IP

 1985 – UNIX System V Release 2, 3, powstanie manifestu GNU

 1986 – 4.3BSD – pierwszy demon DNS

 1988 – standard POSIX (IEEE 1003):

 1989 – UNIX System V Release 4 (SVR4),

 14 maja 1991 – powstanie jądra Linuxa, wersja 0.0.1 dostępna publicznie

 1993 – 4.4BSD

Wersje systemów UNIX:

•SUN Solaris

•IBM AIX

•DEC DigitalUnix

•HP HP/UX

•SGI IRIX

•SCO UNIX

•FreeBSD

•NetBSD

•OpenBSD

•GNU/Hurd (projekt Mach)

•GNU/Linux

 


Jądro systemu Linux

Twórcą jest fiński student Linus Torvalds. Kod źródłowy jądra udostępniony jest na zasadach licencji GNU.
Numeracja wersji jądra – np. 2.4.18:

•pierwsza cyfra – numer wydania

•druga cyfra – numer serii, liczba parzysta oznacza wersję stabilną, liczba nieparzysta to wersja niestabilna – testowa

•trzecia cyfra – numer wersji w danej serii

 

 Aktualnie wykorzystywane stabilne wersję jądra to 2.2.25 i 2.4.22. Wersja 2.6.0 jest bliska ukończeniu. Ostatnia wersja testowa: 2.5.75

 

Jądro a dystrybucje

 Jądro systemu oraz wszystkie aplikacje towarzyszące jądru nazywa się dystrybucją

Popularne dystrybucje Linuxa:

•RedHat Linux

•Mandrake Linux

•Debian GNU/Linux

•Slackware

•SuSE

•Knoppix (dystrybucja na płycie CD)

•Fedora

 


Ogólnie o Linuksie

Zalety systemu Linux:

•Wielozadaniowość

•Wielodostępność

•Wysokie bezpieczeństwo

•Wysoka stabilność

•Otwartość, skalowalność

•Dostępny na wiele platform sprzętowych, w tym także wieloprocesorowych

•Dużo darmowego oprogramowania, w stosunku do programów płatnych

•Dostęp do kodu źródłowego systemu – szybka reakcja na wykryte błędy

Wady systemu Linux:

•Brak zaawansowanego oprogramowania takiego jak popularne edytory tekstu lub aplikacje CAD znane z „dużych” UNIX-ów

•Brak gier i innego oprogramowania użytkowego przydatnego dla typowego użytkownika domowego

•Trudna obsługa dla dotychczasowych użytkowników systemów graficznych, głównie w konsoli – konieczność znajomości pewnego zakresu wiedzy dot. budowy systemu i działania urządzeń oraz sieci

 


Możliwości systemu Linux:

•Obsługa wielu systemów plików (FAT, NTFS, ext2/ext3, ReiserFS, BSD disklabel, HFS, HPFS, Minix itd.)

•Doskonała obsługa mechanizmów sieciowych, system plików sieciowych NFS

•Obsługa nowoczesnych urządzeń, w tym również multimedialnych – akceleratorów graficznych, tunerów TV, interfejsu FireWire, USB 2.0, ACPI itd.

•Obsługa maszyn wieloprocesorowych oraz klastrów sieciowych

•Współpraca z innymi systemami operacyjnymi – obsługa wielu systemów plików, wiele protokołów sieciowych (w tym SMB), emulatory i kompilatory

•Narzędzia programistyczne – kompilatory, biblioteki, linkery, debugery dla wszystkich ważniejszych języków programowania

 


Środowisko pracy

Konsola tekstowa - użytkownik komunikuje się z systemem poprzez powłokę (ang. shell)

Środowisko graficzne - X Window System, wersja 11 Release 6 (X11R6). Darmowa implementacja w Linuxie - XFree86

Architektura klient-serwer -  X serwer obsługuje sprzęt, zajmuje się wyświetlaniem okien i obsługą terminala X klient, czyli menedżer okien, „zleca” serwerowi wyświetlenie określonych danych

 


Konta użytkowników

Aby skorzystać z systemu należy się zalogować – brak dostępu anonimowego.

Superużytkownik (ang. root) – administrator systemu. Ma pełen dostęp do systemu, może instalować i usuwać programy, dodawać i usuwać użytkowników oraz wykonywać inne prace serwisowe i konfiguracyjne.

Konto root należy chronić dobrym hasłem przed niepowołanym dostępem, nie należy też nadużywać praw administratora.

Domyślnie w systemie Linux konto administratora ma login: root - hasło: root

 


Organizacja plików

 

Ścieżka do pliku jest:

względna – jako położenie pliku względem obecnego katalogu, podajemy ją jako nazwę nie poprzedzoną znakiem „/”, np. plik abc z katalogu dwa będącego podkatalogiem jeden, który znajduje się w katalogu bieżącym – jeden/dwa/abc

bezwzględna – jako położenie pliku względem katalogu głównego, ang. „root directory”, oznaczanego przez sam pojedynczy znak „/”. Zakładając iż nasz bieżący katalog to /home/user, wyżej wymieniony plik można by odczytać stosując ścieżkę /home/user/jeden/dwa/abc

UWAGA! System Linux rozróżnia wielkość liter w nazwach plików i katalogów. Pliki „Referat” i „referat” to dwa różne wpisy, które mogą istnieć koło siebie.

 

Podstawowe katalogi (główne katalogi większości dystrybucji Linux'a:):

Podstawowy domowy katalog użytkownika systemu /home lub ~ lub ~użytkownik

 

Dokumentacja Linux:

•Podręcznik użytkownika – manual, polecenie: man

•GNU Info Tool – polecenie: info

•Krótki opis polecenia – polecenie: whatis

•Przeszukiwanie manuala – polecenie: apropos

•Dodatkową dokumentację możemy znaleźć w katalogach /usr/doc i /usr/share/doc

 


System plików Linuxa

System plików – metoda przechowywania plików, zarządzania plikami, informacjami o tych plikach, tak by dostęp do plików i danych w nich zgromadzonych był łatwy dla użytkownika systemu. Systemy plików stosuje się dla różnych nośników danych, takich jak dyski, dyskietki, a także w strumieniach danych, sieciach komputerowych, pamięciach. We współczesnych systemach operacyjnych bezpośrednie operowanie na danych w plikach zarezerwowane jest tylko dla systemu operacyjnego, aplikacje mają zabroniony bezpośredni dostęp do nośnika danych.

Popularne systemy plików linuxa: Minix, xia, Ext, Ext2, Ext3, Ext4, umsdos, msdos, ReiserFS, vfat, XFS, proc, JFS, smb, NFS, ncp, Swap, iso9660, Sysv, hpfs, Affs, ufs

 

Minix – pierwszy system plików wykorzystywany w linuxie, który został stworzony jeszcze przed powstaniem linuxa dla systemu operacyjnego o nazwie MINIX.

Posiadał kilka ograniczeń:

•długość nazwy pliku maksymalnie 14 znaków, (po pewnym czasie zwiększono do 30 znaków)

•wielkośc partycji nie większa niż 64 MB,

Ext (EXTENDED FILE SYSTEM) – następca Minix File System, dopuszczał pliki i partycje do rozmiaru 2 GB oraz długości nazw plików do 255 znaków. Miał jedną dużą wadę, która spowodowała, że nie stał się popularny: sposób zapamiętywania wolnych bloków i węzłów doprowadzał do znacznej fragmentacji dysku co wpływało negatywnie na wydajność systemu.

Ext2 - zastąpił ext i w krótkim czasie stał się podstawowym systemem plików dla linuxa.
W porównaniu do poprzednika ma wiele zalet:

•obsługuje partycje o wielkości do 4 TB, pliki o wielkości do 2 GB,

•rozpoznaje uszkodzenie systemu plików,

•automatycznie naprawia uszkodzone sektory za pomocą programu e2fsck,

•automatycznie sprawdza system po awarii i co określony czas, posiada wysoką wydajność dzięki przeciwdziałanie fragmentacji

Wady:

•długotrwałe sprawdzanie systemu plików po niepoprawnym zamknięciu,

•niska wydajność dla bardzo małych plików,

•mało efektywna obsługa katalogów.

Ext3 - nowoczesny system plików oparty na ext2. Domyślny w większości dystrybucji systemu GNU/Linux opartych na jądrze2.4 oraz nowszych.

Własciwości:

•Journaling - mechanizm księgowania zwiększający bezpieczeństwo systemu,

•Indeksowane katalogi - znacznie zwiększają wydajność systemu przy dużej ilości plików,

•Zapis synchroniczny - w najnowszych wersjach systemu Ext3 (jądro 2.4.19) działa ponad 10 razy szybciej od wersji z Ext2,

•Kompatybilność z Ext2.

Ext4 - Rozwój systemu ext4 rozpoczął się w 2006 roku wraz z opracowaniem dwóch zmian dla ext3. Pierwsza z nich rozszerzyła wielkość numeru bloku do 48 bitów, druga zaś zastąpiła mechanizm pośredniego adresowania bloków przez tzw. extenty, a więc obszary bloków danych. Ponieważ po zastosowaniu wspomnianych nowości zmianie ulega struktura danych na dysku, programiści zadecydowali, że aktualizacje te nie zostaną wprowadzone do starego systemu ext3, lecz na bazie jego kodu zostanie opracowana nowa wersja systemu plików o nazwie ext4. System plików ext4 pracuje z 48-bitowymi numerami bloków przy standardowej wielkości bloku nadal wynoszącej 4 kilobajty. Dzięki temu wielkość systemu plików może wynosić do 248 bloków po 4 kB, a więc jeden eksabajt (1024 petabajty), zamiast jak w przypadku ext3 – 16 terabajtów.

 

ReiserFS - zwany także Reiser3 to system plików zaprojektowany i zaimplementowany przez grupę kierowaną przez Hansa Reisera. ReiserFS jest obecnie obsługiwany przez GNU/Linuksa i może być w przyszłości włączony do innych systemów operacyjnych. ReiserFS to jeden z pierwszych systemów plików z księgowaniem dla GNU/Linuksa.

Właściwości:

•bardzo efektywny sposób przechowywania wszystkich informacji o plikach i katalogach,

•zaawansowany system transakcji zapewniający spójność wszystkich danych zapisanych w systemie,

•kompresja wielu małych plików oraz tzw. ogonów (końcówek plików o rozmiarze mniejszym od wielkości bloku) w jednym bloku dyskowym pozwalająca w znacznym stopniu zminimalizować fragmentację wewnętrzną,

•efektywna obsługa nawet dużych katalogów (stosowana jest w tym przypadku tablica haszująca, dla której klucze są generowane na podstawie nazwy pliku - bardzo szybkie wyszukiwanie pliku),

•zaawansowany system wtyczek (plugins) pozwalający niemal dowolnie modyfikować zachowanie warstwy semantycznej systemu (w przeszłości także w pewnym stopniu fizycznej),

Reiser4 - wersja tworzona od podstaw, w porównaniu do reiserFS zawiera:

•zmiane architektury systemu na bardziej obiektowy,

•używanie repackera - specjalnego programu, który upakowuje ogony, jeszcze bardziej oszczędzając miejsce,

•zwiększoną wydajność,

•lepsze zapewnienie bezpieczeństwa,

•możliwość dołączania własnych pluginów.

 Reiser4 wprowadza innowację w zakresie bezpieczeństwa – dzieli plik na mniejsze części, z których każda może mieć indywidualne uprawnienia i korzystac z różnych dodatków. Wadą Reiser4 jest wolne usuwanie danych, jednak deklasuje on rywali jeśli chodzi o zapisywanie wielu strumieni danych w jednym czasie. Nadaję się także idealnie do przechowywania dużej ilości małych plików, oszczędzając przy tym dużo miejsca.

SWAP - jest to partycja wymiany, tworzy ona pamięć wirtualną, która jest rozszerzeniem pamięci RAM. Dzięki użyciu "partycji wymiany" RAM zwiększa swoją wydajność a co za tym idzie wydajność systemu również wzrasta. Zamiast partycji SWAP, system może utworzyć plik wymiany, jednak wymiana danych jest o wiele wolniejsza i wydajność systemu drastycznie spada.

NFS - jest to usługa pozwalająca udostępniać zasoby dyskowe komputerom w sieci. Serwer udostępnia katalogi klientom, którzy mogą je podmontować i działać jak na lokalnym systemie plików. Montowanie: mount serwer.net:/usr/local /usr/local -t nfs.

JFS (Journaled Filesystem)

 Właściwości:

•obsługa bardzo dużych plików i partycji (rzędu kilku tysięcy TB),

•dynamiczna alokacja i-węzłów,

•efektywne wyszukiwanie i-węzłów, wolnego miejsca na dysku oraz plików w katalogach,

•zaawansowany system kronikowania operacji dyskowych,

•wbudowany bezpośrednio w system plików, a nie dodany do niego później jak w przypadku innych systemów plików,

•zastosowanie przedziałów bloków dyskowych (Extent) w celu zmniejszenia fragmentacji danych i zwiększenia efektywności odwołań do nich,

•przechowywanie małych plików (linków symbolicznych) oraz katalogów bezpośrednio w i-węzłach co znacznie zwiększa efektywność odwołań do nich,

•efektywna obsługa rozrzedzonych plików.

 

I-węzeł (inode) - jest to struktura danych opisująca pliki zapisane na dysku. I-węzeł zawiera informacje o: typie pliku, właścicielu, grupie, długości pliku, adresie, liczbie dowiązań i kilka innych informacji. Długość pliku to jego wielkość, ilość zajmowanego miejsca na dysku. Adres to numer sektora w którym znajduje się plik. Adresem są sektory dysku, w których należy szukać segmentów pliku (zwykle te sektory mają wielkość 512 bajtów). Liczba dowiązań jest to ilość skojarzonych "kopii" pliku ze zbiorem danych.

XFS - 64-bitowy system plików zaprojektowany przez firmę Silicon Graphics Inc. z przeznaczeniem do użycia go w systemie operacyjnym IRIX (wersja UNIX-a firmy SGI). Aktualnie jest dostępna również jego implementacja dla systemu Linux rozwijana przez SGI jako projekt na licencji wolnego oprogramowania.

Właściwości:

•pozwala na obsługę dużych dysków twardych,(Maksymalny rozmiar woluminu jest ograniczony do 18 milionów TB.),

•rozmiar pojedynczego pliku może wynosić maksymalnie 2^63 bajtów czyli ponad 8 milionów TB (dokładnie 8 388 608 TB).

•rozmiar jednostki alokacji może wynosić od 512 bajtów (wielkość fizycznej jednostki alokacji) do 1 MB.

 


Start systemu Linux

Po włączeniu komputera BIOS przeprowadza różne testy, po czym przechodzi do uruchamiania systemu. Wybiera odpowiedni dysk i odczytuje jego pierwszy sektor (MBR). Sektor ładujący zawiera niewielki program (program rozruchowy), którego zadaniem jest załadowanie systemu operacyjnego z dysku. Może to być LILO lub GRUB (plik grldr). Po wczytaniu jądra Linuxa do pamięci i uruchomieniu go dzieją się następujące rzeczy: Jądro dekompresuje się - najczęściej instalowane jest w postaci skompresowanej. Początek jądra zawiera mały dekompresor, który tego dokonuje. Jądro sprawdza zainstalowany sprzęt (dyski, napędy dyskietek, karty sieciowe, itd.) i odpowiednio go konfiguruje. Jądro próbuje zamontować główny system plików. Następnie jądro uruchamia proces init. Init odpowiedzialny jest za uruchamianie programów na poszczególnych poziomach pracy.

 

Init – poziom uruchomienia systemu

Init posiada 7 poziomów:

•0 - zamknięcie systemu

•1 - tryb jednego użytkownika

•2 - tryb wieloużytkownikowy okrojony

•3 - tryb wieloużytkownikowy pełny

•4 - nieużywany

•5 - tryb graficzny

•6 - restart systemu

 

Powłoki systemu

Powłoka systemu operacyjnego to program, który udostępnia interfejs pomiędzy użytkownikiem a jądrem systemu. Ma on postać wiersza poleceń. Jądro systemu zawiera wszelkie podprogramy potrzebne do przeprowadzania operacji wejścia i wyjścia, zarządzania plikami itp. Powłoka pozwala korzystać z tych podprogramów za pomocą wiersza poleceń. Poza tym, powłoki obsługują również język programowania. Programy napisane w języku powłoki nazywane są zwykle skryptami lub skryptami powłoki.

Ogólnie powłoki używane są na trzy sposoby:

•interaktywnie, kiedy użytkownik wydaje polecenia

•do dostosowania sesji linuksowej do potrzeb użytkownika

•do programowania w języku powłoki

 

Najczęściej używane powłoki to:

 /bin/sh - jest to przodek wszystkich innych powłok systemów UNIX-owych, ale brakuje jej wielu przydatnych możliwości

 /bin/bash - domyślna powłoka systemów linuxowych

 /bin/csh - składnia i konstrukcje używane w tej powłoce są bardzo podobne do znanych z języka C

 /bin/tcsh - Jest to bardziej rozbudowana wersja powłoki C Shell

 /bin/ksh - Jest to jedna z najpopularniejszych powłok UNIX-owych, ale nie jest ona zwykle używana w systemach linuxowych

 

Aby sprawdzić, jakiej powłoki używasz, w wierszu poleceń wpisz: echo $SHELL

 

UWAGA! Głównym problemem prawidłowego uruchomienia się systemu Linux jest nieprawidłowa konfiguracja programu rozruchowego GRUB

 


Polecenia Linux

Klawisz Tab - podpowiedz lub dokończenie nazwy. Polecenia naogół piszemy małymi literami.

 

Uzyskiwanie informacji o poleceniach systemu Linux:

 man - podstawowa dokumentacja poleceń systemowych

 apropos - uzyskanie pomocy w oparciu o słowa kluczowe

 info - szczegółowa pomoc na temat poleceń systemowych

 --h - polecenia pomocy --help (może być -help)

 

Podstawowe polecenia systemu Linux:

 pwd - uzyskuję ścieżki dostępu do bieżącego katalogu

 ls - zapoznanie się z zawartością katalogu (list)

 cd - zmiana katalogu bieżącego

 more - przeglądanie pliku na ekranie terminala

 >,>>,<<,< - przekierowywanie strumieni We/Wy

 | - tworzenie potoków

 

Podstawowe polecenia dotyczące katalogów i plików:

 mkdir - tworzenie katalogów

 touch - tworzenie pliku lub zmiana czasu utworzenia pliku

 echo - sprawdzenie dopisania nazwy szablonowej do rzeczywistej zawartości katalogu

 cp - kopiowanie plików i katalogów (copy)

 mv - przenoszenie lub zmiana nazwy katalogów (move)

 ln - tworzenie dowiązania do pliku (line)

 rmdir - usuwanie katalogów

 rm - usuwanie plików i katalogów (remove)

 

Kompresja i archiwizacja plików

 compress - kompresuje zawartość pliku

 uncompress - dekompresuje plik

 gzip - kompresja/dekompresja pliku

 

Uprawnienia w stosunku do plików i katalogów:

 chmod - zmiana uprawnienia w stosunku do pliku (atrybuty plików)

 chgrp - zmiana grupy pliku/katalogu

 chown - zmiana właściciela pliku/katalogu

 umask - zmiana domyślnych uprawnień w stosunku do tworzonych plików i katalogów

 

Przeglądanie i filtrowanie zawartości plików:

 cat - wyświetla zawartość pliku

 zcat - wyświetla zawartość skompresowanego pliku

 pg - wyświetla zawartość pliku ze stronicowaniem

 head - wyświetla (wybrane) początkowe wiersze z pliku

 line - wyświetla zawartość pierwszego wiersza pliku

 sort - sortowanie zawartości plików

 uniq - wyświetla (wybrane) unikatowe wiersze z pliku

 grep - wyszukanie podanego wzoru tekstu w pliku

 egrep - rozszerzone funkcjonalnie polecenie grep

 cut - wybranie kolumn z pliku

 wc - obliczenie liczby wierszy, słów i znaków w pliku

 

Uzyskiwanie podstawowych informacji o użytkownikach, procesach i systemie:

 who - lista aktualnie pracujących użytkowników

 ps - informacje o procesach

 top - monitorowanie procesów

 date - data systemu

 uname - nazwa systemu do którego użytkownik się zalogował

 finger - program do sprawdzania informacji o użytkowniku

 

Komunikacja on-line między użytkownikami:

 tty - nazwa terminala

 write - wyświetlenie informacji na terminalu

 talk - rozmowa pomiędzy terminalami

 

Zakładanie kont:

 useradd - dodawanie nowego użytkownika, konta

 userdel - usunięcie konta użytkownika

 groupadd - dodawanie nowej grupy

 groupdel - usuwanie grupy

 passwd - zmiana hasła

 

Pozostałe:

 vi - edytor tekstowy (wyjście Esc:wq!)

 nano - edytor tekstowy

 mc - (Midnight Commander) wizualny interpretator poleceń dla systemów Unixopodobnych

 

Archiwizacja:

tar - polecenie do utworzenia archiwum danych w Linux

 


Atrybuty i Uprawnienia

Linux umożliwia nadanie rożnych uprawnień użytkownikom. Uprawnienia nadajemy poprzez nadanie odpowiednich atrybutów katalogowi, plikowi.
W Linuksie uprawnienia są przyznawane dla:

•u - user (użytkownik)

•g - group (grupa)

•o - other (inni)

•a - all (wszyscy) - ta wlasciwość wykorzystuje się do szybkiego nadawania uprawnień.

 

Rodzaje uprawnień:

•r - uprawnienie do odczytywania pliku

•w - uprawnienia do modyfikacji pliku

•x - uprawnienia do wykonywania pliku

 

Podgląd uprawnień dla pliku lub katalogu uzyskamy dzięki poleceniu vdir.
Wygląda to na przykład:

 drwxr-xr-x 2 root root 4096 2009-10-19 17:33 Dokumenty

 

Uprawnienia odczytujemy następująco:

 

Do nadawania atrybutów plikom służy polecenie:  chmod

Dodaje się uprawnienia w ten sposób:  chmod u+rxw nazwa_pliku

Natomiast odbiera gdy wpiszemy:  chmod u-rwx nazwa_pliku

Nadawać uprawnienia można również liczbowo (oktalnie), tzn. wpisując odpowiednia liczbę.
Aby to zrobić, trzeba odpowiednio obliczyć, i tak:

 r - to: 4 odczyt

 w - to: 2 modyfikacja

 x - to: 1 wykonywanie

Czyli:

Metodą liczbową nadajemy uprawnienia w następujący sposób:  chmod 755 nazwa_pliku
np. dla 'tylko do odczytu' wpisujemy: chmod 444 nazwa_pliku

 


Plik passwd i shadow

 

Plik passwd

Położenie:

 /etc/passwd

Składnia pliku:

 nazwa_użytkownika:hasło:UID:GID:komentarz:katalog_domowy:polecenie_logowania

Gdzie:

 nazwa_użytkownika - jest polem zawierającym jednoznacznie identyfikującą nazwę użytkownika

 hasło - jest zakodowanym hasłem użytkownika. Jeśli w systemie użyto maskowania haseł to w miejscu tym znajduje się x.
Brak jakiejkolwiek wartości oznacza brak hasła na tym koncie

 UID - unikalny numer reprezentujący użytkownika w systemie

 GID - unikalny numer wskazujący na domyślną grupę, do której należy użytkownik

 komentarz - zawiera informacje o użytkowniku dostępną dla innych użytkowników po wydaniu polecenia finger

 katalog_domowy - określa miejsce katalogu domowego użytkownika

 polecenie_logowania - polecenie, które zostaje uruchomione w trakcie logowania do systemu. Często jest to wpis wskazujący na powłokę.

 

Plik shadow

Położenie:

 /etc/shadow

Składnia pliku:

nazwa_użytkownika:hasło:data_zmiany_hasła:min:max:przypomnienie:ważność_konta:inne

Gdzie:

 nazwa_użytkownika - jest polem zawierającym jednoznacznie identyfikującą nazwę użytkownika

 hasło - zaszyfrowane hasło

 data_zmiany_hasła - data ostatniej zmiany hasła

 min - minimalny okres pomiędzy zmianami hasła

 max - maksymalny okres pomiędzy zmianami hasła

 przypomnienie - wartość ta określa na ile dni przed upływem terminu przypominać o zmianie hasła

 ważność_konta - termin ważności konta

 inne - miejsce zarezerwowane na przyszłe zmienne

 


Skrypty

Skrypty są odpowiednikami plików wsadowych systemu DOS. Skrypty są potężnymi narzędziami programistycznymi. Skrypt to niekompilowany tekstowy plik wykonywalny, zawierający jakieś polecenia systemowe oraz polecenia sterujące jego wykonaniem. Wykonywany jest tylko i wyłącznie przez interpreter, który tłumaczy polecenia zawarte w skrypcie na język zrozumiały dla procesora.

 

Przykładowe skrypty:

 

Generator wizytówek

 

 #!/bin/bash

 echo 'Witaj w generatorze wizytowek'

 echo '##################################################'

 echo 'Program poprosi Cie o wpisanie danych'

 echo 'Po wpisaniu wciśnij Enter'

 echo '##################################################'

 echo 'Podaj Imie i nazwisko'

 read name

 echo 'Podaj swój e-mail'

 read mail

 echo 'Podaj swoje gg'

 read gg

 echo '##################################################'

 echo 'Pobieranie danych zakończone'

 touch wizytowka.txt

 echo "$name">>wizytowka.txt

 echo "Email: $mail">>wizytowka.txt

 echo "GG $gg">>wizytowka.txt

 echo 'Generowanie zakończone'

 echo 'Plik wizytowka.txt gotowy'

 echo '#################################################'

 

Tworzenie kopii zapasowych

 

 #!/bin/bash

 sciezka="/root/zabawa"

 katalog="kopia_zapasowa"

 function menu_stworz_kopie

 {

 if [ ! -r $sciezka ]

 then

 echo "Nie masz odpowiednich uprawnien"

 exit 1

 fi

 if [ ! -d $sciezka/$katalog ]

 then

 if [ ! -w $sciezka ]

 then

 echo "Brak uprawnien do zapisu"

 exit 1

 else

 mkdir $sciezka/$katalog

 fi

 fi

 stworz_kopie /etc resolv.conf

 stworz_kopie /etc hosts

 #stworz_kopie /etc *

 echo "kopia wykonana"

 menu="3"

 }

 

 function stworz_kopie

 {

 sciezka_tmp=$1

 plik_tmp=$2

 if [ -r $sciezka_tmp ]

 then

 if [ ! -d $sciezka/$katalog$sciezka_temp ]

 then

 mkdir -p $sciezka/$katalog$sciezka_tmp

 fi

 cp -Rf $sciezka_tmp/$plik_tmp $sciezka/$katalog$sciezka_tmp

 else

 echo "Nie masz uprawnien do $sciezka_tmp"

 exit 1

 fi

 }

 menu="1"

 while [ ! $menu = "3" ]; do

 clear

 echo "Wybierz opcje menu:"

 echo "1-Stworz kopie"

 echo "2-Zastap obecne pliki kopiami zapasowymi"

 echo ""

 echo "3-wyjscie"

 echo "4-czyszczenie kopii zapasowej"

 read menu

 echo ""

 case $menu in

 "1")menu_stworz_kopie

 sleep 2

 ;;

 "2")echo "wybrano 2"

 sleep 2

 ;;

 "3")echo "wychodzimy"

 sleep 2

 ;;

 "4") rm -Rf ~/zabawa/kopie_zapasowe

 ;;

 *)echo "taka opcja nie istnieje"

 ;;

 esac

 done

 

 

Instalacja oprogramowania

Istnieją  co najmniej trzy rodzaje instalacji:

•z pakietów dystrybucyjnych,

•za pomocą pliku binarnego

•poprzez kompilację.

 Sposobem najbardziej zalecanym jest kompilacja, gdyż program tworzony jest na maszynie, na której będzie używany (co daje dużą kompatybilność).

 

Instalacja poprzez kompilacje:

 1) Rozpakowanie plików Dekompresja pliku tar Plik z takim rozszerzeniem może być rozpakowany następującym poleceniem:
tar -xvf plik.tar

 Dekompresja pliku tar.gz Ten plik możemy rozpakować na 2 sposoby:

tar -xvzf plik.tar.gz lub gunzip plik.tar.gz

 Dekompresja pliku tar.bz2 Ten plik możemy rozpakować na 2 sposoby:

tar -xvjf plik.tar.bz2 lub bunzip2 plik.tar.bz2

 2) Kompilacja i instalacja Rozpakowane archiwum trzeba skompilować. Zaleca się na początku użyć polecenia ./configure to polecenie uruchomi program, który sprawdza czy w systemie są odpowiednie biblioteki i ostrzega przed możliwymi błędami kompilacji. Tworzy również plik konfiguracyjny dla instalacji. Następnie wpisujemy make w celu kompilacji plików źródłowych.
Jeśli nie pojawiły się błędy wpisujemy make install które zainstaluje skompilowane pliki.
Aby odinstalować oprogramowanie używamy polecenia make uninstall.

Instalacja poprzez pakiety: Pakiety to skompilowane źródła. Pakiety mogą mieć różną postać, w zależności oddystrybucji i sposobu zarządzania nimi.

Trzy główne typy:

RPM - Red Hat Package- występują w rodzinie Red Hata.

DEB - Pakiety występujące w Debianie.

TGZ -archiwa tara, pakiety obecne w Slackware

Dla repozytorii:

RPM:

 rpm -i nazwa_pakietu.rpm - instalacja

 rpm -q nazwa_pakietu.rpm - wyświetla informacje o pakiecie

 rpm -r nazwa_pakiety.rpm - usunięcie

DEB:

 dpkg -i nazwa_pakietu.deb - instalacja

 apt-get remove nazwa_pakietu.deb - usunięcie

 dpkg --info nazwa_pakietu.deb - wyświetla informacje o pakiecie

 dpkg --reconfigure nazwa_pakietu.deb - ponowna konfiguracja pakietu

 dpkg --list nazwa_pakietu.deb - wyświetlenie listy pakietów o podanym wzorcu nazwy

 dpkg --unpack nazwa_pakietu - rozpakowanie pakietu

TGZ:

 installpkg nazwa_pakietu.tgz - instalacja

 removepkg nazwa_pakietu.tgz – usunięcie

 

Aktualizacja Linux'a wersji UBUNTU

wpisujemy w wierszu poleceń:

apt-get upgrade

 

Instalacja programu:

apt-get install nazwa_programu

 


Dyski i partycje

Dyski

Oznaczenia dysków ATA:

 Etykieta hdx (hda, hdb, itd.) informuje o tym, że mamy do czynienia z dyskiem ATA.

Oznaczenia dysków SATA:

 W przypadku dysków SATA oznaczenie przyjmie postać sdx (sda, sdb, itd.). A więc zależności od rodzaju posiadanych dysków, dysk pierwszy będzie posiadał etykietę hda lub sda, dysk drugi hdb lub sdb trzeci hdc lub sdc, itd.

Partycje

 W systemie operacyjnym Linux wyróżniamy partycje główne i rozszerzone/logiczne. Partycji głównych można być co najwyżej 4. W przypadku gdy chcemy mieć więcej partycji niż 4, to można stworzyć 3 partycje główne, jedną rozszerzoną, na której będą partycje logiczne. Partycje główne w Linuksie są numerowane od 1 do 4, a partycje logiczne od 5 do 8. Główna partycja na dysku pierwszym oznaczona będzie etykietą hda1 albo sda1, na dysku drugim hdb1 albo sdb1 itd.

Przykład etykiet i ich prawidłowe czytanie:

 /dev/hda1 - pierwsza partycja na dysku ATA primary master

 /dev/sdb4 - czwarta partycja na dysku SATA primary slave

 /dev/hdc - dysk ATA secondary master

 /dev/sdd1 - pierwsza partycja na dysku SATA secondary slave

 


FTP - vsftpd

vsftpd (Very Secure FTP Daemon) to serwer FTP dla systemów uniksowych.

 Instalacja: sudo apt-get install vsftpd

 Standardowy folder w którym umieszczamy pliki to: /srv/ftp.

 Plik konfiguracyjny znajduję się w katalogu etc: /etc/vsftpd.conf

Podstawowe komendy:

 Start: sudo /etc/init.d/vsftpd start

 Stop: sudo /etc/init.d/vsftpd stop

 Restart: sudo /etc/init.d/vsftpd restart

Konfiguracja serwera tak by było logowanie:

 Najpierw instalujemy serwer ftp oraz narzędzie do obsługi bazy użytkowników: aptitude install db4.2-util

Edytujemy plik /etc/vsftpd.conf:

 

 # /etc/vsftpd.conf

 #Uruchamianie serwera w trybie standardowy

 listen=YES

 listen_ipv6=NO

 #Zabronienie logowania się użytkownikom anonimowym

 anonymous_enable=NO

 #Zezwolenie na logowanie się użytkownikom lokalnym

 local_enable=YES

 guest_enable=YES

 virtual_use_local_privs=YES

 pam_service_name=vsftpd-virtual

 guest_username=ftp

 local_root=/srv/ftp

 #Umask (w większości serwerów używany jest 022)

 local_umask=022

 #Zezwolenie na zapis w katalogu użytkownika lokalnego

 write_enable=YES

 hide_ids=YES

 dirmessage_enable=YES

 use_localtime=YES

 #Włączenie logowania

 xferlog_enable=YES

 log_ftp_protocol=YES

 setproctitle_enable=YES

 connect_from_port_20=YES

 #Ograniczenie użytkownikom do poruszania się jedynie w obrębie katalogu domowego

 chroot_local_user=YES

 #Zabronienie użytkownikom, poruszania się poza katalogiem domowym

 chroot_list_enable=NO

 #Katalog dla chroot-a

 secure_chroot_dir=/var/run/vsftpd/empty

Przygotowujemy plik /etc/pam.d/vsftpd-virtual:

 auth required pam_userdb.so db=/etc/vsftpd-virtual

 account required pam_userdb.so db=/etc/vsftpd-virtual

 

Przygotowujemy plik z użytkownikami i hasłami /etc/vsftpd-konta:

 

uzytkownik1

 haslo1

 uzytkownik2

 haslo2

 umieszczamy hasła w bazie: db4.2_load -T -t hash -f /etc/vsftpd-konta /etc/vsftpd-virtual.db a następnie restartujemy: sudo /etc/init.d/vsftpd restart

 

Po każdej zmianie użytkowników odświeżamy bazę i restartujemy serwer.

 


HTTP - Apache

Apache - otwarty serwer HTTP dostępny dla wielu systemów operacyjnych.

 Instalacja Apache: sudo apt-get install apache2

 Instalacja PHP: sudo apt-get install php5

Podstawowe komendy:

 Start: sudo /etc/init.d/apache2 start

 Stop: sudo /etc/init.d/apache2 stop

 Restart: sudo /etc/init.d/apache2 restart

 Katalog do którego wrzuca się strony to: /var/www. Aby sprawdzić czy serwer działawchodzimy na adres: http://localhost/ lub http://nasze_ip/.

By sprawdzić czydziała PHP tworzymy plik np. test.php i wpisujemy w nim:

 <?php phpinfo();?>

 I wchodzimy na adres http://localhost/test.php, powinna się wyświetlić strona informacyjna PHP.

 


SSH i Telnet

Instalacja:

SSH: sudo apt-get install ssh

 Telnet: sudo apt-get install telnet

Łączenie się z innym komputerem:

 SSH: ssh użytkownik@ip

 użytkownik - nazwa użytkownika na komputerze do którego się podłączamy

 ip - ip komputera z którym się łączymy

 Następnie wpisujemy hasło.

 Telnet: telnet -l użytkownik ip

 użytkownik - nazwa użytkownika na komputerze do którego się podłączamy

 ip - ip komputera z którym się łączymy

Następnie wpisujemy hasło.

Przykładowe operacje:

 Po zalogowaniu możemy używać standardowych poleceń linuxa do poruszana się po katalogach. Również możemy używać wszystkich innych poleceń np. tworzyć konta, instalować oprogramowanie. Wszystkie polecenia są wykonywane na komputerze do którego się zalogowaliśmy. Kopiowanie pomiędzy komputerami:

scp plik użytkownik@nasze_ip

 


Samba - praca w siecii

Samba to nazwa oprogramowania, przeznaczonego dla serwera plików oraz drukarek, współpracującego z platformą Windows, przeznaczonego dla platformy Linux/Unix i rozpowszechnianego na licencji GNU. Protokół transmisji wykorzystywany przez Sambę i systemy Microsoftu to SMB (ang. Server Message Block), przy czym jako protokół transportowy niższej warstwy używany jest TCP/IP. Samba pozwala na tworzenie mieszanego środowiska, w którym nie tylko w ramach jednej sieci lokalnej mogą działać obok siebie komputery z systemem operacyjnym Unix i Linux oraz Windows, ale także mogą wzajemnie korzystać ze swoich zasobów.

Instalacja i konfiguracja

 Najpierw instalujemy pakiet Samby: sudo apt-get install samba

 Tworzymy użytkownika: adduser nazwa_uzytkownika

 i ustawiamy hasło smbpasswd nazwa_uzytkownika

 Następnie edytujemy plik konfiguracyjny: sudo gedit /etc/samba/smb.conf

 i szukamy linijki "workgroup = WORKGROUP" i zmieniamy WORKGROUP na naszą grupę roboczą.

 Zapisujemy i resetujemy Sambe: sudo /etc/init.d/samba restart

 Teraz zostaje tylko coś udostępnić. W tym celu otwieramy znowu plik konfiguracyjny. Na końcu dopisujemy:

 [Net]

 comment = net

 path = sciezka_do_katalogu

 public = yes

 writable = yes

 create mask = 0777

 directory mask = 0777

 force user = nobody

 force group = nogroup

 available = yes

 

Tworzymy katalog o ile nie został już utworzony i restartujemy Sambe.

 

Inne polecenia sieciowe Linux oraz praca w siecii

smbtree (sprawdzamy jakie komputery pracują obecnie w sieci);

netstat -a (sprawdzamy aktywne połączenia sieciowe naszego komputera);

 

Jądro Linuksa obsługuje sieć, posługując się podstawowym pojęciem interfejsu sieciowego.

Interfejs sieciowy, to na przykład połączenie lokalne LAN na karcie sieciowej, połączenie kablem szeregowym z innym komputerem, połączenie modemowe, tunel VPN, itd.

Każdy interfejs jest obsługiwany niezależnie od pozostałych.

Interfejsy, podobnie jak typowe moduły, można konfigurować, włączać i wyłączać w trakcie działania systemu.

Na każdy interfejs można „nakładać” kolejne, coraz bardziej zaawansowane funkcje, np. mądrzejsze protokoły, czy polityki sterowania ruchem – jest to pewien „drugi wymiar” modularności.

Konfiguracja połączenia modemowego – kppp.

Portom COM[1-4] odpowiadają pliki specjalne /dev/ttyS[0-3].

Reszta równie prosta, jak w windowsach.

Konfiguracja łącza stałego.

Interfejsy sieciowe nazywają się eth[0,1,2...]; gdy mamy 1 kartę sieciową:

eth0.

W Redhacie mamy do dyspozycji graficzne narzędzie redhat-config-network.

Wystarczy podać w nim parametry sieci (adres IP stały, bądź przez DHCP).

Nieco trudniej ma się sprawa z Neostradą Plus.

Potrzebny jest dodatkowy program do obsługi protokołu sieciowego PPP over Ethernet, np. pppoe.


PROBLEMY

instalacja Linuksa razem z Windowsami na jednym komputerze Nie ma problemu. Instalator RedHata robi to standardowo, pewien problem pojawia się, jeżeli windowsy były instalowane PO Linuksie i zamazały “boot sector” (ściślej: MBR) dysku twardego, skutkiem czego nie możemy uruchomić Linuksa.

Proste rozwiązanie:

MBR to pierwsze 512 bajtów dysku.

po instalacji Linuksa zrzuć MBR do pliku-kopii.

# dd if=/dev/hda of=/root/mbr-copy bs=512 count=1

w razie zamazania MBR przez Windowsy:

uruchom Linuksa z płyty instalacyjnej

otwórz terminal, zamontuj partycję linuksową, odtwórz MBR:

# dd if=mbr-copy of=/dev/hda bs=512 count=1