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