sieciowe systemy operacyjne sieci lokalnych i rozległych, Pomoce naukowe, studia, informatyka


xxx

xxx

xxx

xxx

SIECIOWE SYSTEMY OPERACYJNE SIECI LOKALNYCH I ROZLEGŁYCH

W STARŻY GRANICZNEJ

xxx

xxx

______________________________________________________________________xxx


Wstęp

Do początku lat osiemdziesiątych, środowisko przetwarzania danych było zdominowane przez duże systemy komputerowe oraz minikomputery otoczone armiami programistów, analityków i zarządców systemów informatycznych. Większość użytkowników miała niewielką wiedzę o komputerach i systemach przetwarzania danych. W większości organizacji personel zajmujący się przetwarzaniem danych rzadko się kontaktował z administracją na tematy dotyczące ich systemów i na odwrót. Ludzie projektujący systemy nie kontaktowali się z tymi, którzy mieli je stosować. Aby wpływać na zmiany systemów i aplikacji, kierownicy decydowali się na drogi i czasochłonny proces analizy potrzeb. Zanim takie zmiany mogły być zrealizowane, mijało nierzadko kilka lat, potrzeby w tym czasie zmieniały się i proces zaczynał się od nowa.

W chwili gdy zaczęły pojawiać się mikrokomputery, zauważono, że w wielu przypadkach można było zastosować niedrogie, gotowe programy do zaimplementowania w przeciągu tygodni lub miesięcy. Pomimo, że początkowo mikrokomputery dały wiele korzyści pojedynczym użytkownikom, miały niewielki wpływ na przetwarzanie danych. Pierwsze komputery osobiste posiadały mało pamięci i nie mogły konkurować z dużymi systemami.

W miarę jak coraz nowsze komputery osobiste zapewniały obsługę twardych dysków i udostępniały większą pamięć, sytuacja szybko się zmieniała. Wiedza użytkowników na temat komputerów rosła i skuteczne oprogramowanie użytkowe rozwijało się. Zwykli ludzie, a nie wyłącznie profesjonaliści mogli zacząć wykorzystywać efektywnie komputery.

Gdy komputery osobiste wkraczały coraz bardziej w świat gospodarki, pojawił się problem z efektywnym dzieleniem się informacją. Zastosowanie dyskietek do przenoszenia danych z jednej maszyny na inną było wystarczające w niektórych sytuacjach, ale nie mogło pomóc w przypadku dużych plików lub danych, które musiały być dostępne dla wielu osób jednocześnie.

Ponadto we wczesnych latach rozwoju mikrokomputerów, takie urządzenia jak twarde dyski czy drukarki były drogie. Aby rozwiązać tego typu problemy, kilka firm opracowało sprzęt i oprogramowanie do stworzenia lokalnych sieci mikrokomputerowych.

Technologia sieciowa nie była czymś nowym w momencie pojawienia się IBM PC. Firmy takie jak Xerox, DEC, Intel i Datapoint używały sieci do łączenia terminali z minikomputerami i większymi systemami. Nadal jednak we wczesnych latach 80-tych, idea zastąpienia sieci minikomputerowych przez sieci mikrokomputerowe była nie do zrealizowania. Sieci były prymitywne i w większości zawodne. Obecnie jednak wiele programów użytkowych jest przenoszonych do środowiska sieci mikrokomputerowych. Zmianie ulega także sama struktura środowiska przetwarzania danych. Dziś wiele zadań uprzednio zarezerwowanych wyłącznie dla dużych systemów jest efektywnie wykonywanych przez komputery osobiste połączone w sieć.

Wraz z małymi komputerami i lokalnymi sieciami rozwija się heterogeniczne środowisko komputerowe, w którym odmienne systemy mogą się komunikować i wspólnie korzystać z tych samych danych. Komputery PC, Apple Macintosh, stacje robocze Unix i inne mogą teraz efektywnie współpracować oraz mogą się łączyć z większymi systemami poprzez sieć i zastosowanie najnowszych systemów operacyjnych.

W poszczególnych rozdziałach opisałem systemy operacyjne wykorzystywane w jednostkach organizacyjnych Straży Granicznej.

W rozdziale pierwszym opisałem System Unix, który po dziś dzień jest nadal głównym systemem operacyjnym używanym w SG. Wykorzystywany jest jako motor do baz informixowych, oraz magic.

Rozdział drugi opisuje system Linux, który też jest stosowany w SG głównie jako serwery internetowe oraz jako routery maskujące.

Rozdział trzeci opisuje system Novell, który w znikomej ilości jest wykorzystywany w jednostkach SG i traktuję go jako bardziej zapoznawczy niż dogłębne studiowanie jego zabezpieczeń i właściwości.

W ostatnim czwartym rozdziale opisuję produkty firmy Microsoft, które wraz z rozwojem informatyki w SG szeroko wchodzą do użytku.

Obecnie wszystkie te systemy tworzą wielką sieć heterogeniczną, która wpływa na efektywne przesyłanie informacji pomiędzy poszczególnymi jednostkami SG.

Rozdział I

  1. System operacyjny Unix

Dla większości ludzi komputer jest narzędziem służącym do rozwiązywania problemów. Jeśli działa w nim różnego typu oprogramowanie oferujące bardziej zaawansowane funkcje niż zwykły kalkulator. Podłączony do sieci komputerowej staje się elementem systemu telekomunikacyjnego.

W sercu każdego komputera znajduje się najważniejszy zestaw programów nazywany systemem operacyjnym. Oprogramowanie to steruje urządzeniami wejścia/wyjścia, takimi jak klawiatura i dyski czy ładowaniem i uruchamianiem programów użytkowych. System operacyjny jest również zestawem mechanizmów i strategii, które pomagają definiować i sterować wykorzystaniem wspólnych zasobów systemowych.

Z systemem operacyjnym współpracuje zawsze zestaw standardowych programów narzędziowych, które pomagają w wykonaniu typowych funkcji, takich jak kopiowanie plików i wyświetlanie zawartości katalogów. Mimo iż programy te nie stanowią technicznie części samego systemu, to mogą one mieć dramatyczny wpływ na jego bezpieczeństwo.

    1. Wielozadaniowość i wieloużytkowość.

Najważniejszymi cechami Unixa jest Wielozadaniowość i wieloużytkowość. Wielozadaniowość oznacza, że użytkownik może wykonywać wiele zadań równocześnie, a co za tym idzie pracować bardziej efektywnie. Druga cecha: wieloużytkowość daje możliwość korzystania z zasobów komputera więcej niż jednej osobie, co wspomaga pracę grupową bez ponoszenia dużych kosztów zakupu pojedynczych komputerów.

Można go uruchomić na prawie każdym komputerze. Istnieje wiele wersji systemu Unix dla różnych typów komputerów: począwszy od komputerów osobistych (IBM PC i Macintosh) poprzez komputery średniej wielkości (VAX firmy DEC) aż do superkomputerów firmy Cray. W praktyce są tylko dwa komputery, na których niemożliwe jest uruchomienie tego systemu: starsze modele PC (np. PC XT) i systemy komputerowe do zadań specjalnych (np. AS/400).

Ponadto Unix jako pierwszy z systemów na komputery PC zapewniał pracę za pośrednictwem sieci jak i połączeń modemowych. W systemie zaszyta jest warstwa umożliwiająca komunikację z użytkownikami odległymi, którzy nawet nie zdają sobie z tego sprawy. Protokół komunikacyjny TCP/IP jest standardem, w wypadku sieci opartych o serwery Unixowe. Cała sieć Internet opiera się właśnie na tym protokole, a najczęściej spotykanymi węzłami tej sieci są serwery Unixowe.

    1. Historia Unixa

Unix swoimi korzeniami sięga do połowy lat sześćdziesiątych, kiedy firmy American Telephone and Telegraph i General Electric oraz uniwersytet Massachusetts Institute of Technology rozpoczęły prace nad projektem pewnego narzędzia informacyjnego. Projekt, który nazwano MULTICS (co pochodzi od Multiplexed Information and Computing Service), był w dużym stopniu sponsorowany przez agencję ARPA (Departament of Defense Advanced Research Projects Agency), znaną również jako DARPA. Większość prac badawczych odbywało się w MIT, w Cambridge w stanie Massachusetts.

MULTICS był modułowym systemem budowanym z elementów, takich jak szybkie procesory, pamięć i urządzenia komunikacyjne. Konstrukcja miała umożliwiać wyłączanie niektórych modułów bez wpływu na inne części systemu i użytkowników. Celem było zbudowanie komputera działającego przez 24 godziny na dobę i 365 dni w roku, który można by powiększyć, dołączając dodatkowe moduły. Mimo, że takie funkcje są dziś czymś normalnym, kiedy powstawał MULTICS, możliwości takich nie było.

W budowaniu MULTICS-a brano również pod uwagę wojskowe wymagania bezpieczeństwa. System ten był projektowany jako odporny na ataki zewnętrzne oraz chroniący użytkowników przed sobą nawzajem. MULTICS miał implementować koncepcję bezpieczeństwa wielopoziomowego. Informacje typu Top Secret (ściśle tajne), Secret (tajne), Confidential (poufne) i Unclassified (dostępne) miały koegzystować w tym samym komputerze. Informacje zastrzeżone na jednym z tych poziomów miały być niedostępne dla wszystkich, którym ich nie udostępniono. MULTICS osiągną stopień bezpieczeństwa, o jaki dziś trudno w wielu funkcjonujących systemach operacyjnych - w tym i w Unixie.

W 1969 roku firma AT&T podejmuje decyzję o podzieleniu projektu ze względu na duże opóźnienia w stosunku do planów.

Pracownik AT&T Ken Thompson pracujący nad MULTICS-em przejmuje nie używany komputer PDP-7 i rozpoczyna samodzielną pracę nad tym systemem. Wkrótce dołączył do niego Denis Ritchie, który również pracował nad projektem. Nazwę Unix dla nowego systemu zaproponował Peter Neumann. Nazwa miała być humorystyczną analogią do nazwy MULTICS i policzkiem dla projektu trwającego w Cambridge (który rzeczywiście ciągną się jeszcze półtorej dekady).

MULTICS miał robić wszystkie rzeczy dobrze, Unix tylko jedną - uruchamiać programy. Koncepcja silnych systemów zabezpieczeń nie mieściła się w jego założeniach.

Zawężenie zakresu prac było wszystkim, czego naukowcom było trzeba. Wczesna wersja Unixa była gotowa kilka miesięcy wcześniej niż MULTICS.

W ciągu roku Tompson, Ritchie i inni napisali wersję Unixa dla PDP-11, nowego komputera firmy Digital.

W latach siedemdziesiątych naukowcy z AT&T dodawali do swojego systemu różne funkcje - Unix zmienił się w raj dla programistów. System bazował na małych, zwartych programach nazywanych narzędziami, z których każdy mógł wykonywać pojedynczą funkcję. Łącząc te narzędzia, programiści mogli wykonywać skomplikowane zadania.

Unix naśladował sposób myślenia programistów. Aby osiągnąć pełną funkcjonalność, użytkownik musiał uzyskać dostęp do wszystkich tych narzędzi - i w wielu przypadkach również ich kodu źródłowego. Dlatego też w trakcie ewolucji systemu każdy, kto miał dostęp do maszyn, przyczyniał się do powstawania nowych narzędzi i do testowania istniejących.

W 1973 roku Tompson przepisał większość Unixa na C - język programowania wynaleziony wtedy przez Ritchiego. Język C powstał jako prosty i umożliwiający łatwe przenoszenie programów. Programy napisane w C można było bez trudu przenosić z jednego typu komputera do innego - co było możliwe również w przypadku takich języków jak FORTRAN - tylko że działały tak szybko, jak programy kodowane bezpośrednio w języku maszynowym komputera.

Taka była teoria, natomiast w praktyce każdy komputer w Bell Labs miał swój własny system operacyjny. Programy w C napisane na PDP-11 mogły być rekompilowane na innych maszynach laboratorium, ale nie zawsze działały poprawnie, ponieważ każdy system operacyjny wykonywał operacje wejścia/wyjścia trochę inaczej. Mike Lesk napisał „przenośną bibliotekę wejścia/wyjścia", która rozwiązała te problemy, niestety nie wszystkie. Potem w 1977 roku członkowie grupy doszli do wniosku, że zamiast przenośnych bibliotek lepiej opracować przenośny system Unix. Najpierw przeniesiono go na Interdata 8/32, komputer laboratorium, który był podobny do PDP-11. W 1978 roku system został przeniesiony na minikomputer VAX firmy Digital. Unix pozostawał wciąż systemem eksperymentalnym, mimo to zyskał sporą popularność na wielu uniwersytetach i został zauważony przez kilka firm. Nagle Unix stał się czymś więcej niż tylko naukowym kuriozum.

Faktycznie, już w 1973 roku istniało ponad 16 różnych jednostek AT&T i Western Electric poza Bell Labs, w których działał Unix. System rozpowszechnił się nawet bardziej. Na sympozjum dotyczącym zasad działania systemów operacyjnych, ACM Symposium on Operating System Principles (SOSP), w październiku 1973 roku Tompson i Ritchie zaprezentowali swoje prace. W ciągu kilku miesięcy od tego wydarzenia różne organizacje z całego świata uzyskiwały i instalowały kopie systemu. Mimo iż firma AT&T miała - na mocy ugody rządowej zawartej z rządem federalnym USA z 1965 roku - zabronione reklamowanie, sprzedaż i obsługę oprogramowania komputerowego, popyt na system stale rósł. W 1977 używało go już ponad 500 firm i organizacji; 125 z nich stanowiły uniwersytety z USA i ponad 10 innych krajów. W tym roku pojawiła się również pierwsza komercyjna wersja Unixa, wtedy była to wersja 6.

W większości miejsc, a zwłaszcza na uniwersytetach, typowe środowisko pracy Unixa wyglądało jak w Bell Labs: komputery znajdowały się w dobrze wyposażonych laboratoriach, do których dostęp fizyczny był mocno ograniczony. Użytkownicy, którzy intensywnie używali komputerów, byli ludźmi z wieloletnim doświadczeniem i to oni wprowadzili istotne zmiany i ulepszenia do systemu operacyjnego i jego narzędzi. Nie musieli się martwić o bezpieczeństwo, ponieważ tylko oni byli upoważnieni do korzystania z komputerów. Poza tym implementowanie funkcji bezpieczeństwa kolidowało z opracowaniem narzędzi i ulepszaniem oprogramowania. Jeden z autorów pracował w początku lat osiemdziesiątych w dwóch takich laboratoriach. W jednym z nich hasło do konta root uważane było za niepotrzebną niedogodność, gdyż i tak każdy, kto miał dostęp do maszyny, miał uprawnienia superużytkownika!

Środowisko można było najlepiej scharakteryzować na podstawie przykładu z uniwersytetu Berkeley w Kalifornii. Szkoła ta, tak jak inne szkoły, zapłaciła 400 dolarów za taśmę zawierającą komplet kodów źródłowych Unixa. Zamiast po prostu uruchomić system dwóch studentów. Bill Joy i Chuck Haley, rozpoczęli prace nad znacznymi poprawkami modyfikacjami. W 1978 roku Joy rozesłał 30 egzemplarzy produktu o nazwie „Berkeley Software Distribution (BSD)", który był zbiorem programów i modyfikacji Unixa. Opłata: 50 dolarów za nośnik i koszty wysyłki.

W ciągu następnych sześciu miesięcy w wyniku sponsorowania przez ARPA tak zwany BSD Unix urósł do rangi samodzielnego systemu operacyjnego, który istotnie przewyższał produkt AT&T. Na przykład programista BSD mógł przełączać się między wieloma działającymi jednocześnie programami. Unix z AT&T zezwalał na stosowanie nazw plików o długości do 14 znaków, a wersja z Berkeley do 255. Ale być może najważniejszym owocem działalności Berkeley była wersja sieciowa systemu, która nosiła nazwę BSD Unix 4.2. Umożliwiała ona łączenie Unixa z sieciami lokalnymi.

Z wszystkich tych powodów wersja z Berkeley stała się bardzo popularna

w środowiskach naukowych i akademickich.

Wraz ze wzrostem popularności Unixa z Berkeley przedstawiciele AT&T zawiązała firmę o nazwie Unix Support Group (USG), która miała kontynuować prace nad systemem i zająć się sprzedażą. Grupa USG swój nowy produkt Unixa ochrzciła jako „AT&T System V" i ogłosiła go nowym standardem.

Uniwersytet w Berkeley aby nie renegocjować swojej umowy z AT&T uaktualniony swój produkt nazwał BSD 4.2.

Największym nieuniwersyteckim zwolennikiem Unixa z Berkeley była firma Sun Microsystems. System SunOS, stworzony częściowo przez absolwentów informatyki w Berkeley, był pod każdym względem systemem operacyjnym z Berkeley (wzorowany był na wersji BSD 4. l c), Innym adaptatorem systemu była firma Digital Equipment, której system Ultrix był również podobny do wersji z Berkeley (oparty był na BSD 4.2).

Firmy wchodzące na rynek stawały przed dylematem, który z systemów wybrać BSD czy też Unix System V. Z uwagi na brak serwisu do BSD większość korporacji, które opracowały swoje Unixy w drugiej połowie lat osiemdziesiątych - w tym Data General, IBM, Hewlett Packard i Silocon Graphics - zaadaptowały System V. W początkach lat osiemdziesiątych powstała też trzecia wersja Unixa stworzona przez formę Microsoft, której nadano nazwę Xenix. Licencję na ten system sprzedano do Santa Cruz Operation (SCO). Xenix był wzorowany na starszej wersji Unixa firmy AT&T-System III.

W latach osiemdziesiątych Microsoft i SCO uaktualniały swoje systemy, dodając pewne nowe funkcje, ale nie wszystkie.

Pod koniec lat osiemdziesiątych (1988r.) nastąpiło połączenie dwóch wersji Unixa, którymi były Xenix i AT&T System V, w wyniku czego powstał Unix System V/386 relase 3.12.

W tym samym roku AT&T oraz Sun Mierosystem podpisały umowę o wspólnej pracy nad połączeniem dwóch kolejnych wersji systemu. W wyniku prac powstał Unix System V Relase 4 łączący w sobie najlepsze funkcje z Systemu V i Unixa z Berkeley i był kompatybilny z oprogramowaniem napisanym dla swoich przodków.

W maju 1988r. siedmiu wiodących producentów Unixa - Apollo Computer, Digital Equipment Corporation, Hewlett Packard, IBM i trzy mniejsze firmy z Europy - ogłosiły utworzenie Open Software Foundation (OSF).

Celem tej organizacji było przejęcie kontroli nad Unixem od AT&T i przekazanie jej do organizacji o charakterze niekomercyjnym, a produkt swój oparła na systemie AIX, następnie przeniosła się na jądro MACH z Carnegie Mellon University oraz zbiór bibliotek unixowych od HP, IBM-a i Digitala. Ze względu na opóźnienia z Systemem OSF/1 niektóre firmy budowały swoje systemy, a inne zaadoptowały SVR4.

W roku 1993 firma AT&T sprzedała Unix System Laboratories (USL) firmie Novell, która przeniosła znak handlowy Unixa do X/0pen Consortium dając prawo do używania go każdemu systemowi, który przejdzie serię 1170 testów. Następnie Novell sprzedał prawa do kodu źródłowego w 1995 roku grupie SCO.

Mimo braku unifikacji liczba systemów unixowych ciągle rośnie. W połowie lat dziewięćdziesiątych Unix działał na około pięciu milionach komputerów na całym świecie. Unix stał się systemem najczęściej wybieranym przez wiele uczelni. Jest też popularny w środowiskach badawczych i naukowych.

Pojawiło się wiele zestawów norm dotyczących unixowych systemów operacyjnych (dotyczących na przykład interfejsu, bibliotek i charakterystyk działania), ale mimo ich istnienia poszczególne implementacje nadal znacznie się od siebie różnią. Zestawem takim jest POSDC opracowany początkowo przez IEEE, a następnie zaadaptowany jako norma ISO/IEC 9945. Czynione są również starania o ujednolicenie interfejsów VMS, Windows NT i innych platform kryjących w sobie zupełnie różne od Unixa mechanizmy. Obecny Unix oparty jest na wielu standardach, co zwiększa jego atrakcyjność jako wspólnej platformy dla biznesu i środowisk akademickich.

Najważniejsze organizacje związane z tworzeniem systemu UNIX i jego odmianami.

Nazwa

Organizacja

AIX

IBM

A/UX

Apple

BSD

Uniwersytet Kalifornijski w Berkeley

GNU

Free Software Foundation

HP/UX

Hewlett-Packard

SunOS

Sun Microsystems

Ultrix

Digital Equipment Corporation (DEC)

Unicos

Cray Corporation

UNIX

AT&T, SCO, Sun Microsystems

Xenix

SCO

Warto również dodać, że system posiada wiele udziwnień, które mogą być niezrozumiale dla dzisiejszego użytkownika, ale trzeba pamiętać, że system był tworzony przez niczym nieskrępowanych ludzi. Byli oni pełni inwencji i wcielali w system pomysły, które wydają się anachroniczne. Również wiele nazw budzi zastrzeżenia, gdyż w systemie roi się od krwawych określeń typu „zabić", „demon" czy „zombie". Bierze się to stąd, że system miał zapewniać dużą tajność danych, czyli był przeznaczony dla instytucji militarnych.

    1. Podział Unixa

System Unix można podzielić na cztery podstawowe części:

- Jądro (serce systemu), specjalny program, który jest ładowany zaraz po włączeniu komputera. Jądro kontroluje wszystkie systemy wejścia i wyjścia komputera, umożliwia jednoczesne wykonywanie wielu programów i steruje podziałem czasu i pamięci między nimi. W jego skład wchodzi system plików, który jest odpowiedzialny za przechowywanie plików i katalogów na dyskach. System plików jest głównym mechanizmem wzmacniającym bezpieczeństwo komputera. Niektóre nowoczesne wersje Unixa pozwalają programom użytkownika na ładowanie do jądra po rozpoczęciu działania systemu dodatkowych modułów, takich jak sterowniki urządzeń.

- Standardowe programy narzędziowe, które mogą być uruchamiane przez użytkowników i przez system. Niektóre programy są małe i funkcyjne, np. /bin/ls wyświetla listę plików, a /bin/cp umożliwia ich kopiowanie, inne - duże i bardziej uniwersalne, np. /bin/sh czy /bin/csh, powłoki Unixa służące do przetwarzania poleceń użytkownika, które same w sobie można uznać za języki programowania.

- Pliki systemowej bazy danych, z których większość jest względnie mała, używane przez różne programy systemu. Przykładem może być plik /etc/passwd, w którym znajduje się główna lista wszystkich użytkowników systemu, albo /etc/group, który zawiera definicje grup użytkowników mających podobne prawa dostępu.

- Strategia bezpieczeństwa determinująca działanie komputera w stosunku do użytkownika i administracji systemem.

Strategia odgrywa tak ważną rolę w wybieraniu mechanizmów obronnych jak programy systemu operacyjnego. Komputerowi, który nie jest obsługiwany zgodnie z zasadami bezpieczeństwa, nie można ufać, nawet jeśli jest wyposażony w najbardziej wymyślne oprogramowanie zabezpieczające. Z tego powodu określenie i skodyfikowanie strategii odgrywa istotną rolę w ogólnym procesie obsługi bezpiecznego systemu.

    1. Powłoka, nazewnictwo i system plików Unixa

      1. Powłoka

Powłoka (shell - interpreter poleceń) jest programem, który odczytuje, interpretuje i przetwarza polecenia. Zaraz po zarejestrowaniu się użytkownika system przygotowuje powłokę, która czeka na wydanie polecenia. Powłoka zapewnia łączność pomiędzy systemem a użytkownikiem. Istnieje kilka rodzajów powłok, z których najważniejsze to powłoki Bourne'a i C. Z obu tych powłok wywodzi się kilka innych.

Nazwa programu

Pełna nazwa (nazwa angielska)

Sh

powłoka Bourne'a (Bourne Shell)

Rsh

ograniczona powłoka Boume'a (Restricted Bourne Shell)

Ksh

powłoka Koma (Kom Shell)

Rksh

ograniczona powłoka Koma (Restricted Kom Shell)

Bash

poprawiona powłoka Boume'a (Bourne Again Shell)

Sch

powłoka C (C-Shell)

Tcsh

bez nazwy

Powłoka ta wzięła swą nazwę od jej głównego twórcy, Stephena R. Bourne'a, pracującego w Laboratoriach Bella. Została ona opracowana w późnych latach siedemdziesiątych i stała się podstawowym procesorem poleceń. O tym, że korzystamy właśnie z tej powłoki informuje nas znacznik $ (symbol dolara).

Jej autorem jest Bili Joy, doktorant na Uniwersytecie Kalifornijskim w Berkeley. Jest ona szczególnie używana przez programistów Unixa. Do jej zalet można zaliczyć:

modyfikowanie,

z możliwością sprawdzenia ich zaawansowania i zmiany stanu,

nazw zastępczych dla często wydawanych poleceń. Np. zamiast Is -l| more

można utworzyć nazwę zastępczą Ism.

Znacznikiem powłoki jest znak % (symbol procenta).

Specjalna odmiana powłoki Bourne'a stosowana do tworzenia środowiska użytkowego o ograniczonych możliwościach i prawach dostępu. Jest ona szczególnie przydatna dla użytkowników o niewielkich umiejętnościach, wykonujących prace biurowe.

Wzięła swoją nazwę od jej autora, Davida Korna, pracującego w Laboratoriach Bella. Powstała w 1983 roku, a jej publikacja odbyła się w 1986 roku. Stanowi ona rozszerzenie powłoki Bourne'a o cechy podobne do opisanych wyżej zalet powłoki C. Różnica jest natomiast w sposobach zapewniających te udogodnienia.

      1. Nazewnictwo

Nazewnictwo w systemie Unix odgrywa ważną rolę. Należy przede wszystkim uważać na wielkość liter, gdyż pliki:

Start.tar

StarT.tar

start.tar

START.TAR

to są różne cztery pliki. Wpisanie chociaż jednej innej litery spowoduje, że otrzymamy komunikat o braku takiego pliku lub katalogu. Na pierwszy rzut oka może się to wydawać jakimś archaizmem, jednak na dłuższą metę płyną korzyści z takiego podejścia.

Kolejnym ważnym elementem jest to, że w systemie Unix nie stosuje się rozszerzeń (tak niezbędnych w DOS-ie), a jeżeli są stosowane spełniają one rolę wyłącznie identyfikacyjno-informacyjną.

W systemach unixowych można stosować długie nazwy plików, jednak zaleca się stosowanie długości nazwy nie przekraczającej 15 znaków, ponieważ „rozjeżdża" się wtedy listing zawartości katalogu, stając się przez to mało czytelnym.

      1. System plików

Osobnym problemem jest nazewnictwo katalogów. Spotykamy się tutaj z brakiem oznaczenia dysku, a mówimy o fliesystemach. Ta nazwa właściwie dotyczy w szczególności administratora, ale użytkownik w wyniku swojej pracy może nieświadomie spowodować spowolnienie pracy systemu, aż do całkowitego padu.

Użytkownik wszystkie dyski jakie są w systemie widzi jako jeden. Struktura katalogów jest tak zorganizowana, że katalogiem głównym (zwanym także rootowym lub korzeniem) jest /. Od niego rozpoczyna się cała struktura systemu, w której jesteśmy umiejscowieni w jakimś miejscu. Nawet urządzenia zewnętrzne, takie jak napęd dyskietek czy CD-ROM znajdują się w strukturze katalogów.

    1. Struktura katalogów w Unix-e

W systemie Unix każdy katalog ma określoną funkcję i użytkownicy korzystają z niego w zakresie przydzielonych im uprawnień. Należy podkreślić, że struktura ta jest stała i nienaruszalna.

Katalog

Opis

/bin

programy wykonywalne

/dev

pliki (łączówki) urządzeń komputera, czyli napędu dyskietek, portów drukarkowych, terminali

/etc

pliki i narzędzia administracyjne systemu, skrypty startujące i zatrzymujące system, podsystemy autoryzacji i ustawienia jądra

/lib

biblioteki używane przez narzędzia i programy

/lost+found

używany do odzyskiwanych plików przez program diagnozujący filesystem

/mnt

pusty katalog do montowania filesystemów np. napędów dyskietek

/tcb

Informacje o zabezpieczeniach systemu, hasła użytkowników, logi monitoringu

/tmp

Używany przez system do tworzenia plików tymczasowych, kasowany czasowo przez program cron

/u

Katalog do montowania filesystemu z plikami użytkowników

/usr

Zawiera aplikacje, informacje użytkowników systemowych, domyślny katalog dla tworzonych użytkowników

Oczywiście w w/w katalogach znajdują się podkatalogi, niektóre z nich są omówione poniżej.

Katalog

Opis

/etc/auth

podsystemy domyślne i autoryzacji

/etc/conf

konfiguracja jądra

/etc/default

ustawienia domyślne systemu

/etc/init.d

pliki zadań w trakcie bootowania

/etc/rc[02].d

skrypty startujące i zatrzymujące system

Na szczególne uwzględnienie zasługuje katalog /etc/rc0.d odpowiedzialny za zamykanie systemu (shutdown) i /etc/rc2.d startujący system. W pierwszym znajdują się pliki rozpoczynające się na literę K z numerem dwucyfrowym i określeniem czynności np. K85tcp czyli skrypt zamykający usługę TCP/IP. W drugim jest analogicznie, z tym, że pierwszą jest litera S, np. S85tcp.

Katalog

Opis

/tcb/audittmp

logi śledzące system (audit)

/tcb/bin

programy auditingu

/tcb/files

pliki autoryzacji i hasłowe użytkowników

/tcb/lib

biblioteki auditingu

Katalog /tcb/files/ posiada podkatalog auth i znajdujące się w nim katalogi a, b, c ... z. Zawarte są w nich pliki autoryzujące i hasłowe każdego użytkownika np. /tcb/files/autfa/r/root jest plikiem użytkownika root, a /tcb/files/auth/d/dareks użytkownika dareks.

Katalog

Opis

/usr/adm

logi administratora

/usr/bin

programy użytkowe systemu

/usr/include

pliki programowe

/usr/lib

pliki biblioteczne dla programów

/usr/man

pliki pomocy używane przez program man

/usr/mmdf

używany przez programy pocztowe

/usr/spool

używany przez podsystem drukujący

Wszystkie znaki, z jakimi spotykamy się w systemie mają własne kody, które wykorzystywane są przy przesyłaniu danych, jak i ich zapisywania w postaci plików.

System Unix używa starego kodu ASCII (American Standard Code for Information Interchange), który zawierał 128 znaków. Poprostu w odróżnieniu od obecnego kodu ASCII poprzedni był zapisywany na 7 bitach (2x2x2x2 x 2 x 2 x 2 czyli 27 = 128) a obecnie na 8 bitach (2x2x2x2x2x2x2x2 czyli 28 = 256). W czasie gdy kod ASCII był rozszerzany do 8 bitów, ze względu na zastosowanie specjalnych symboli do rysowania ramek, czy akcentowania liter, system Unix był na tyle dojrzały, że nie można go było zmieniać. Stąd też pojawiają się problemy przy emulatorach terminali, czy programowaniu ramek.

    1. Bezpieczeństwo

System Unix spełnia wymagania bezpieczeństwa normy C2, a sam proces logowania jest bardzo restykcyjny, gdyż nie wiemy czy podaliśmy źle nazwę użytkownika czy hasło, a jedynym stałym użytkownikiem jest root, czyli administrator. Przechwycenie jego hasła daje pełny dostęp do zasobów systemu, a co za tym idzie do plików użytkowników, jak również umożliwia manipulowanie ustawieniami systemu.

Następnym elementem bezpieczeństwa są hasła. Przy serwerze samodzielnym wystarczy je zmieniać co 30 dni, ale przy sieciowym zalecane jest raz w tygodniu. Hasło nie może zawierać imion i nazw własnych, różnego rodzaju dat, itp.

W niektórych systemach, administrator sam zmienia hasła użytkowników, dając im wykaz haseł np. na cały miesiąc. W tym przypadku administrator chroni własny system w przypadku obecności użytkowników, którzy używają jakiegoś programu, a w związku z tym nie mają dostępu do linii poleceń systemu.

Niektórzy użytkownicy nie mogą korzystać z dyskietek lub innych nośników danych, gdyż jest to następny element systemu bezpieczeństwa. Użytkownik może dane przesyłać na swoje konto na serwerze wyłącznie z wykorzystaniem protokołu FTP. Związane jest to z tym, że napędy urządzeń zewnętrznych niosą potencjalne zagrożenie dla systemu związane np. z odtwarzaniem danych przy ścieżkach bezwzględnych. Dlatego dostęp do tych urządzeń ma tylko administrator i/lub osoba odpowiedzialna za wykonywanie kopii bezpieczeństwa.

Najważniejszym elementem bezpieczeństwa systemu jest sam system i jego odporność na różnego rodzaju działania użytkowników. Nawet jeżeli ktoś złapie konto użytkownika, to ze względu na przydzielone prawa (a raczej ich brak) nie za wiele może zdziałać, a reakcja administratora na działania użytkowników powinna być na tyle szybka, aby zminimalizować straty wynikające z przestoju serwera (w czarnym scenariuszu).

    1. Unix a sieć

Większość implementacji systemu Unix zawiera protokół TCP/IP oraz wsparcie dla standardu Ethernet. Ponadto wiele implementacji tego systemu posiada rozproszony system plików o nazwie Network File System (NFS), opracowany przez firmę Sun Microsystem. Stosowanie takiego systemu plików umożliwia użytkownikom uzyskanie dostępu do plików odległych systemów tak jak gdyby te systemy były częścią systemu użytkownika. Przeglądanie nazw plików i katalogów oraz ich kopiowanie na dysk lokalny nie wymaga dodatkowych poleceń lub procedur ponieważ odległy system jest odwzorowany w taki sposób, że wygląda jak lokalny.

TCP/IP jest powszechnie wykorzystywanym protokołem sieciowym, cechującym się dużymi możliwościami. Został on opracowany na zlecenie Departamentu Obrony USA - w celu umożliwienia połączenia ze sobą wielu różniących się między sobą systemów. W skład TCP/IP wchodzi wiele aplikacji, takich jak: telnet, ftp i innych umożliwiających wykonywanie zdalnych czynności na innych serwerach.

    1. Implementacje Unixa

ULTRIX, jest nazwą wersji systemu Unix opracowaną przez firmę Digital Equipment Corporation (DEC) dla maszyn VAX, MicroVAX, VAX-station oraz RISC-owych - DEC-station. System ULTRIX zawiera:

V l. 5 systemów Apollo,

Novell natomiast stworzył UnixWare, który łączy w sobie możliwości systemów Unix System V, NetWare i DR DOS. Został zaprojektowany tak, aby mógł pełnić rolę platformy integrującej sprzęt obliczeniowy zakładów, umożliwiającej współdziałanie systemów DOS , Microsoft Windows, NetWare i Unix. Charakterystyczne cechy systemu to:

Novell UnixWare Application Serwer to wersja systemu UnixWare przeznaczona dla wielu użytkowników, umożliwiająca dostęp do aplikacji systemów Unix, DOS i Microsoft Windows w środowiskach rozproszonych. Użytkownik może utworzyć wiele sesji w protokole NetWare IPX/SPX lub TCP/IP. UnixWare składa się z dwóch konfiguracji: wersja klienta i wersja serwera.

Rozdział II

  1. Linux

Linux - to system oparty na nieśmiertelnym Unixie i z niego czerpie zalety. Jest wielozadaniowy (może uruchamiać wiele procesów naraz). Jest wielodostępny (umożliwia pracę wielu użytkowników na jednym komputerze). Jest systemem zorientowanym sieciowo (co ciekawe: nawet w komputerze bez sieci tworzy swoistą "sieć bez sieci"), obsługuje właściwie wszystkie protokoły sieciowe wysokiego i niskiego poziomu oraz dużą gamę kart sieciowych. Napisany w całości w C, dzięki czemu jest przenośny (można go uruchomić na i386, Motoroli, Alphie, Sparcu, PowerPC...). Jest idealną platformą dla serwerów, poprzez swoją stabilność. Powstaje na niego coraz więcej normalnego oprogramowania użytkowego. A co najważniejsze - jest stale rozwijany przez wielu ludzi na całym świecie.

    1. Historia Linuxa

Cofnijmy się w przeszłość do roku 1983, do laboratorium MIT (Massachusetts Institute of Technology). Pracował tam Richard Stallman, wielki zwolennik wolnego oprogramowania. Był on zaniepokojony rosnącą popularnością zamkniętych, komercyjnych produktów. Aby z tym walczyć, zapoczątkował rozwój wolnego, darmowego, dostępnego dla wszystkich systemu operacyjnego. Postanowił oprzeć go na UNIX-e. Nazwał go GNU (Gnu's Not Unix - GNU nie jest Unixem). Wiele osób zainteresowało się projektem, powstawało wiele aplikacji (m.in. EMACS), rozwijane było i jest po dziś dzień jądro.

W roku 1991 fiński student Linus Torvalds eksperymentował z wykorzystaniem trybu chronionego nowego procesora Intela - 386. Chciał sprawdzić, ile mocy można uzyskać z tego procesora. W tym celu stworzył jądro Linuxa. Nazwa Linux to akronim od Linux Is Not UniX - Linux nie jest Unixem. System został udostępniony wszystkim jako wolne oprogramowanie. Dzięki temu rozwój był bardzo szybki. Zaczęto natomiast szukać systemu, z którym mógłby działać Linux, odnaleziono GNU. I tak powstał GNU/Linux - jądro Linuxa + aplikacje GNU. Ten system był rozwijany dalej - ale w kierunku serwera sieciowego i stacji roboczej.

System był używany w bardzo małym gronie osób „wtajemniczonych”. Powód: żeby używać system, trzeba było go samemu poskładać i pokompilować, plik po pliku, pakiet po pakiecie. Postanowiono więc jakoś to wszystko uprościć - zebrać wszystko w całość, spakietować, dołożyć instalator. I tak powstały pierwsze dystrybucje Linuxa. Pionierami były: Slackware, Debian, Red Hat. Szczególnie ten środkowy i ostatni zasługują na uwagę. Debian jest wolną, całkowicie antykomercyjną dystrybucją, ale niezwykle trudną w użytkowaniu. Ale jednak jest pierwszą, która wprowadziła pakiety z numerem wersji, opisem i zależnościami - deb'y. Drugi natomiast - to światowy lider, najpopularniejsza dystrybucja. Jest tak pewnie ze względu na prostotę, ale jednocześnie moc i złożoność tej dystrybucji. Dzięki dystrybucji zniknęła część problemów - ale ciągle system nie mógł być używany przez przeciętnego użytkownika.

Pozostawała wciąż trudność użytkowania, odziedziczona z potężnych Unixów. Typowy użytkownik nie jest w stanie bezproblemowo władać setkami komend sterujących systemem, plikami, zabezpieczeniami. Nawet obszerna dokumentacja nie pomagała (w krajach innych niż USA i GB była jeszcze przeszkoda językowa) Programy w konsoli tekstowej też nie były zbyt przyjemne w obsłudze (vi lub emacs). Był już wprawdzie dostępny wolny system X-Window - X-Free86, ale to nic nie zmienia. Potrzebna była ładna, prosta i przyjemna powłoka graficzna podobna do Windows. I tak oto powstał KDE, a następnie GNOME. Linux przestał kryć się po kątach - wyszedł z ukrycia i niespodziewanie uderzył na potęgę Windows. Linux zaczął wchodzić do domów, zaczęto mówić o Linuxie, pisać w gazetach komputerowych, tworzyć strony o Linuxie.

    1. Cechy systemu

    1. Wady i zalety

ZALETY

  • stabilność

  • bezpieczeństwo

  • małe wymagania sprzętowe

  • wielodostępność

  • wysoka konfigurowalność

  • wydajność

  • unix

  • cena

  • szybki rozwój

  • sieciowość

  • OpenSource

  • zdalny login (telnet, ssh)

WADY

  • niedobór driverów

  • skomplikowany

  • nie dla graczy

  • wymaga czasu.

  • trudności w konfiguracji

    1. Dystrybucje Linuxa

Trzeba tu dokonać rozróżnienia między Linuxem a towarzyszącymi aplikacjami. Sam Linux - to jądro systemu, czyli jego „serce” - tak jak DOS'owy io.sys. Linux wraz ze zbiorem aplikacji, narzędziami systemowymi i instalatorem - to dystrybucja. Takich dystrybucji jest wiele, różnych wersji, różnych firm czy grup. Każda z tych dystrybucji posiada inny instalator, inny sposób konfiguracji, inny zestaw aplikacji. Poniżej krótko scharakteryzuję każdą z nich.

Slackware charakteryzował się w miarę łatwą instalacją. Inne dystrybucje wyprzedziły jednak Slackware'a. Slackware operuje na przestarzałych pakietach tgz, które nie zawierają zależności między pakietami ani opisu pakietu. Zestaw aplikacji dołączany do dystrybucji nie zachwyca.

Debian jest dobrą, cenioną przez administratorów dystrybucją. Cechuje się wysokim stopniem skomplikowania i odmiennością od pozostałych dystrybucji. Debian używa formatu pakietów deb, zachowujących się podobnie jak rpm'y. Niestety, zarządzanie debami nie jest proste, jest dystrubucją zupełnie niekomercyjną.

Corel Linux jest oparty na Debianie. Jest bardzo łatwą w instalacji i użyciu dystrybucją, najłatwiejszą chyba ze wszystkich. Wszystkie czynności przeprowadzane są w trybie graficznym. Interfejsem jest przerobiony KDE. Możliwa jest instalacja na dysku z Windows. Niestety, wadą Corel Linuxa jest mały zestaw aplikacji - można jednak używać pakietów Debiana.

Red Hat Linux jest obecnie najpopularniejszą dystrybucją Linuxa. Popularność Red Hat zawdzięcza głównie łatwej instalacji, pakietom rpm i dobrze dobranemu zestawowi aplikacji. Z Red Hatem dostarczone jest mnóstwo windowmanagerów oraz KDE i GNOME, więc każdy może używać tego, czego chce. Red Hat jest dystrybucją komercyjną.

Mandrake Linux jest dystrybucją tworzoną na podstawie Red Hata. Jest z nim właściwie 100% kompatybilny. Jest optymalizowany na Pentium, więc nie można odpalić go na 486 i 386. Bez problemu radzi sobie z polskimi znakami. Zresztą, po wybraniu przy instalacji języka polskiego, interfejs części programów też zostaje spolszczony. Dystrybucja jeszcze prostsza w użyciu niż Red Hat.

S.u.S.E. Linux jest głównym konkurentem Red Hata. Używa pakietów rpm. Zawiera pokaźny zestaw oprogramowania. Jego instalacja jest bardzo prosta - wszystko ułatwia doskonały program YaST, który potem służy za główne narzędzie administracyjne. Dystrybucja przeznaczona głównie na rynek biurowy i domowy. Znakomita obsługa polskiego języka. SuSE używa interfejsu KDE.

Caldera OpenLinux jest całkowicie komercyjną dystrybucją. Używa pakietów rpm. Instalacja i interfejs systemu są w całości w trybie graficznym. Wersje ewaluacyjne zawierają dość mało oprogramowania. Inferfejsem użytkownika jest KDE. W konfiguracji pomaga COAS (Caldera Open Administration System). Wersja komercyjna zawiera m.in. program Partition Magic służący do wydzielenia wolnego miejsca na Linuxową partycję.

Polish Linux Distribution czyli PLD jest dopiero w fazie tworzenia. Nie zawiera nawet instalatora. Ma to być bardzo łatwa w użyciu dystrybucja. Jedynym sposobem na jej zainstalowanie jest zaimplantować już zainstalowaną dystrybucję. Na razie skorzystają z niego pewnie tylko osoby, które chcą przyczynić się do jego rozwoju.

Oprócz "dużych" dystrybucji istnieją też minidystrybucje, mieszczące się na jednej lub kilku dyskietkach albo instalujące się na dysku w partycji dosowej używając do 250 MB. Dystrybucje te mają bardzo wąskie zastosowania. Dystrybucje dyskietkowe mogą służyć jako systemy ratownicze, przenośne systemy sieciowe, rutery czy firewalle. Zaś minidystrybucje twardyskowe służą właściwie do celów edukacyjnych. Najlepszymi minidystrybucjami dyskietkowymi są Alfa Linux, BrutalWare, CClinux, Floppix, Coyote Linux, oraz polskie Pocket Linux i Linux In A Pill.

Dystrybucje twardyskowe to cLIeNUX, DosLinux/LoopLinux, DragonLinux.

    1. Prawa dostępu

Linux ma bardzo ciekawy system regulowania praw dostępu do plików (taki sam ja Unix). Po wpisaniu ls (odpowiednik Dir z Dos-u) w atrybutach pojawia się np. DRWXRWXRWX. Do tego dochodzi posiadacz i grupa posiadacza pliku. Myślnik na pierwszej pozycji oznacza plik. Może tam być też D (katalog), L (dowiązanie symboliczne), C (urządzenie znakowe), B (urządzenie blokowe), S (gniazdo unixowe), F (kolejka FIFO). Dalej są trzy RWXy. R oznacza prawo do odczytu, W do zapisu, X do wykonania. W przypadku katalogu R i X - to prawo do otwarcia katalogu, W - to prawo do kasowania plików w katalogu lub samego katalogu. Pierwszy RWX - to prawa dostępu dla posiadacza (ownera), drugi - to prawa dostępu dla grupy posiadacza, trzeci zaś - to prawa dla wszystkich użytkowników. W zestawie uprawnień dla grupy i posiadacza może zamiast X-a wystąpić S - jest to tzw. bit setuid (dla posiadacza) i setgid (dla grupy) i powoduje, że po uruchomieniu program przejmuje uprawnienia posiadacza lub grupy niezależnie od tego, kto go uruchomił. Przydaje się to np. demonowi PPP, który musi działać pod uprawnieniami roota. Należy jeszcze wspomnieć, że root może ominąć uprawnienia.

Dzięki tym prawom dostępu można np. ustalić, że: właściciel może zapisywać i odczytywać swoje pliki, współpracownicy mogą je odczytywać, a wszyscy inni nie mogą ich nawet zobaczyć. Można również ograniczać prawa dostępu do urządzeń - gdyż są one reprezentowane przez pliki - np. do modemu.

Polecenia do obsługi uprawnień to chown (zmiana posiadacza) i chmod (zmiana praw dostępu). Chown pobiera jako atrybut właściciela i grupę w formacie właściciel:grupa, np. chown tilk:users pliczek. Chown natomiast bierze sekwencję w formacie kto?co. Kto - to kombinacja znaków UGOA (U - właściciel, G - grupa, O - inni, A - wszyscy). Znakiem zapytania może być + (plus) - dodajemy uprawnienia, - (minus) - zabieramy uprawnienia, oraz = (znak równości) - ustawiamy uprawnienia.

Istnieje jeszcze system kontroli dostępu ACL (Access Control Lists), które pozwalają na bardzo dokładne określenie praw dostępu, lecz wymagają patchy w jądrze i narzędziach.

    1. Partycje pod Linuxem

Partycje oznacza się cyfrą za nazwą urządzenia dysku (np. /dev/hda1). Cyfry 1 do 4 oznaczają partycje podstawowe lub rozszerzone. Cyfry od 5 w górę oznaczają dyski logiczne. Czyli np. jeśli chcemy dostać się do drugiego dysku logicznego drugiego dysku na pierwszym kablu IDE użyjemy /dev/hdb6. Do polecenia montowania można używać nazw partycji, czyli polecenia np. mount /dev/fd0 i mount /mnt/floppy są równoważne.

Partycjami pod Linuxem zarządza się programem fdisk (tekstowy) i cfdisk (semigrafika). Partycje formatuje się poleceniem mkfs.

Partycja wymiany spełnia taką samą rolę co plik wymiany w Windows, czyli przechowuje dane, które nie są aktualnie potrzebne, ale mogą się przydać. Innymi słowy, jest to swoiste „poszerzanie pamięci”. Oczywiście, taka pamięć dyskowa jest wolna, więc nie zastąpi zwykłej pamięci.

Linux dla potrzeb swappingu (dokładniej pagingu) rezerwuje całą partycję. Jakie są z tego korzyści? Po pierwsze, jest zawsze na swoim miejscu. Po drugie, nie ulega rozfragmentowaniu po całym dysku. Po trzecie, ma stały rozmiar. Partycje wymiany formatuje się poleceniem mkswap. Partycje wymiany są odpowiednio oznaczone w fstabie.

    1. System plików

Unixowy system plików ma wiele właściwości, których nie mają inne systemy plików. Podstawowa sprawa - to dowiązania. Każdy plik charakteryzuje specyficzna liczba, która pozwala go odróżnić od innych. Liczba ta oznacza tzw. numer inode'a. Sam inode to struktura danych, w której są wszystkie informacje o pliku za wyjątkiem nazwy. Przeniesienie informacji o pliku z katalogu do inode'a daje znakomite możliwości.

Możliwe jest otwarcie pliku, a następnie jego skasowanie. Dzięki temu plik będzie istniał dalej, ale nie będzie go w tablicy katalogów. To doskonałe rozwiązanie dla plików tymczasowych, gdyż po zakończeniu programu plik bez wpisu w tablicy katalogów zostaje usunięty. Istnieje także możliwość wskazywania na jeden plik większej ilości dowiązań. Dzięki temu można dostać się do jednego pliku z kilku różnych ścieżek. Do tworzenia dowiązań służy polecenie ln.

Istnieje także inny rodzaj dowiązań - dowiązanie symboliczne. Tak naprawdę dowiązanie symboliczne jest krótkim plikiem z zapisaną ścieżką dostępu do oryginalnego pliku. System wykorzystuje to, by przy próbie otwarcia dowiązania symbolicznego otworzyć właściwy plik. Dowiązania symboliczne mają swoje wady i zalety. Zaletą jest fakt, że po skasowaniu głównego pliku dowiązanie symboliczne przestaje działać - tak jak skrót w Windows. Natomiast wadą jest fakt, że dowiązanie symboliczne przestanie działać po przeniesieniu głównego pliku. Zajmuje też dodatkowego inode'a. Dowiązania symboliczne są najlepsze do tworzenia skrótów lub innych nazw pliku. Tworzy się je poleceniem ln -s.

Oprócz zwykłych plików istnieją także pliki specjalne. Jednym z nich jest katalog. Jest on po prostu plikiem z nazwami i numerami inode'ów, którym odpowiadają. Dostęp bezpośredni do katalogów (tzn. jako plik) jest jednak niemożliwy.

Innym z plików specjalnych jest plik-urządzenie. Charakteryzują go dwie liczby - większa, mniejsza - oraz znak (b lub c). Oznaczają one, który sterownik będzie go kontrolował. Zapytania o odczyt-zapis tego pliku trafiają wprost do odpowiedniego sterownika w jądrze. Dzięki temu zostało osiągnięte nieosiągalne - urządzenia przestały być anonimowe, miały swoje oznaczenia. Możliwe też stało się kontrolowanie dostępu do urządzeń, np. do modemu.

Kolejnym z plików specjalnych jest tzw. potok nazwany (named pipe) lub inaczej kolejka FIFO (first in, first out). To, co zostanie zapisane jako pierwsze, pierwsze zostanie odczytane. Ten typ plików znakomicie nadaje się do komunikacji między procesami - jeden zapisuje, drugi odczytuje. Częściej jednak używa się potoków nienazwanych, otwieranych znakiem | (pionowa kreska) w Bashu. Tak naprawdę są to te same potoki, lecz bez dowiązania w systemie plików.

Istnieje jeszcze tzw. gniazdo unixowe. Jest to sposób na komunikację między procesami z połączeniem. Używane jest m.in. do lokalnej komunikacji z X serwerem.

Oprócz tego wszystkiego, w katalogu proc mamy tzw. system plików proc. Nie służy on do zapisywania plików na dyskach, lecz do podawania informacji o pracy systemu i do kontrolowania jego pracy. Jego zawartość nie jest stała, system generuje zawartość plików w nim przy próbach odczytu. Montowany jest domyślnie w katalogu /proc. Zawiera wiele informacji o systemie, np. dane wszystkich procesów, rodzaj i możliwości procesora, używane urządzenia, zamontowane systemy plików, używane przerwania, porty I/O i kanały DMA, informacje o sterownikach, sieci itd.

    1. BASH

Słowo BASH jest skrótem od Bourne Again SHell. Mówi on o autorze pierwowzoru (Steve Bourne). Jednocześnie jest angielską grą słów i oznacza „nowo narodzony sh” lub „nowo narodzony shell Bourne'a”. Jest to podstawowa powłoka używana w Linuxie. Już to zapowiada, że Bash prezentuje nowe możliwości w porównaniu do pierwotnego shella.

Interpreter poleceń BASH pozwala na kilka ciekawych rzeczy. Można korzystać z historii poleceń (strzałka w górę i dół). Dzięki temu nie musimy powtórnie wpisywać długiego polecenia, gdy popełnimy literówkę. Można wywoływać kilka poleceń po kolei, łącząc je znakiem średnika - ;. Można też łączyć programy nienazwanymi potokami (FIFO), kierując wyjście jednego w wejście drugiego, używając znaku | (pionowa kreska). Wynik pracy wielu poleceń można zapisać w pliku poleceniem tee. Można też kierować wyjście programu do pliku albo skierować plik na wejście (znaki < i >) bądź dopisywać do pliku (>>). Można też uruchamiać programy w tle dopisując znak & (ampersand) na końcu polecenia. Wszystko to pozwala na składanie poleceń w złożone zestawy, ułatwiające wykonanie określonego zadania.

Istnieje rozszerzenie wzięte z powłoki C, zwane brace expansion. Pozwala na zautomatyzowanie czynności, w których jakaś część nazwy powtarza się wielokrotnie. Polecenie jest wywoływane wielokrotnie, jeden raz dla każdej możliwości. Przykładowo, wpisanie mkdir katalog_{pierwszy,drugi,trzeci} spowoduje utworzenie trzech katalogów - katalog_pierwszy, katalog_drugi i katalog_trzeci.

Możliwe jest wykonywanie operacji arytmetycznych. Jest to usprawnienie zaczerpnięte z powłoki Korna. Polecenia arytmetyczne wykonuje się, wstawiając je w obrębie znaków $((...)) lub $[...]. Obsługiwane jest większość operatorów arytmetycznych Ansi C. Obsługiwana też jest kolejność działań. Przykładowo, polecenie echo $((2 + 2)) spowoduje, że na ekranie pojawi się 4.

Oczywiście, możliwe jest tworzenie skryptów. Z zewnętrznego punktu widzenia skrypt wygląda identycznie jak binarium wykonywalne: plik z ustawionym atrybutem x. Dopiero wewnątrz widoczne są zmiany: na początku pliku znajdują się dwa znaki: #! , a po nich nazwa interpretera poleceń, np. /bin/sh. Tak więc pierwsza linia skryptu może mieć postać: #!/bin/sh, #!/bin/bash, #!/usr/bin/perl lub cokolwiek innego. Skrypt pisze się oczywiście w języku interpretera. Znak # powoduje zakomentowanie reszty linii na prawo od znaku.

    1. Jądro systemu

Jądro systemu - to jego najważniejsza część. Odpowiada m.in. za komunikację ze sprzętem, obsługę systemów plików, sterowanie procesami. Jądro Win 95/98 (plik io.sys) jest jednozadaniowe, zajmuje się obsługą twardego dysku, klawiatury i trybu tekstowego, resztę funkcji dodaje systemowi nakładka win.exe. Inaczej w Linuxie - jądro komunikuje się z całym dostępnym sprzętem, włączając kartę sieciową, mysz, modem, cd-rom, jojstick i inne. Obsługuje też sieć - obsługa sieci jest w Linuxie kluczowa i nie można jej pominąć.

Patrząc na cały ogrom funkcji jądra Linuxa można stwierdzić, że jądro Linuxa jest wielkie i napakowane funkcjami obsługi sprzętu jakiego na oczy nikt nie widział i przez to wolne. Niestety tak nie jest. Po pierwsze, kod źródłowy Linuxa jest otwarty i darmowy, co oznacza, że każdy ma do niego dostęp, może go zmieniać i na jego podstawie kompilować jądro. Można przekompilować je tak, że będzie zawierać tylko obsługę tego sprzętu, który posiadamy.

Ważnym elementem jest numeracja wersji jądra. Przykładowym numerem jest 2.2.16. Pierwsza liczba to główny numer wersji, druga liczba - to numer podwersji. Jeśli jest parzysty, jądro jest wersją stabilną, jeśli nieparzysty - wersją rozwojową, o dużej ilości nowych funkcji, lecz niezbyt stabilne. Trzeci numer to numer release'u (publikacji). Im wyższy jest ten numer, tym nowsze jądro.

Linux jest chyba jedynym systemem operacyjnym do którego tak szybko ukazują się poprawki w przypadku stwierdzenia błędów, w porównaniu z innymi systemami.

Rozdział III

  1. Novell

Novell jest jedną z wiodących firm w dziedzinie technologii i produkcji sieciowych systemów komputerowych.

Swoje pierwsze produkty sieciowe firma Novell tworzyła na początku lat osiemdziesiątych, wraz z powstaniem pierwszych komputerów osobistych. W roku 1983 Novell wprowadził system współużytkowania plików. Po kilku latach wprowadza NetWare/86, który zapewniał możliwości serwera plików. Nowy system operacyjny serwera pozwalał użytkownikom nie tylko na współużytkowanie plików, ale także na dostęp do nich poprzez system bezpieczeństwa oraz pomagał w zarządzaniu siecią.

W miarę wzrostu popularności NetWare firma zwiększyła jego niezależność od sprzętu i zapewniła obsługę dla produktów innych producentów. Była to jedna z najważniejszych strategii, umożliwiająca utworzenie z NetWare standardu.

W 1989 roku nowa wersja NetWare - Advanced NetWare - zapewniła jeszcze lepszą obsługę sprzętu i sieci, poprzez łączenie przy pomocy mostów wewnątrz serwera lub zewnętrznej stacji roboczej różnych typów sieci. Możliwe się stało zainstalowanie w serwerze zarówno karty Ethemet jak i Token Ring.

Advanced NetWare 286 zaprojektowany z myślą o wykorzystaniu zalet systemów opartych na procesorze Intel 80286. Zapewniał on wielozadaniowość na długo przed pojawieniem się systemów OS/2 oraz Microsoft Windows. Ponadto wykorzystano w nim tryb pracy chronionej, dzięki której możliwe stało się korzystanie z zaawansowanych procedur niemożliwych do wykonania na komputerze opartym na systemie DOS (DOS mógł zaadresować tylko 640 KB pamięci operacyjnej).

W roku 1989 firma Novell wprowadziła na rynek NetWare 386 wersja 3.0. System ten stworzono praktycznie od nowa, aby móc wykorzystać możliwości procesora Intel 80386. NetWare 386 jest w pełni 32 bitowym systemem operacyjnym, zaprojektowanym dla dużych sieci. Zapewniał on również większe bezpieczeństwo, wydajność i elastyczność. W 1991 roku Novell zaoferował wersję 3.11, która obsługiwała pliki DOS, Macintosh, Windows, OS/2 oraz Unixa. Natomiast dla wielkich sieci korporacyjnych Novell zaprojektował NetWare 4.2.

We wrześniu 1998 roku firma Novell wprowadza na rynek swój najnowszy produkt NetWare 5, który w szybkim czasie zaczyna zdobywać największą popularność wśród sieciowych systemów operacyjnych.

    1. Wydajność

Na najwyższym poziomie system operacyjny NetWare oferuje usługi, dzięki którym serwer tego systemu jest wydajniejszy od serwerów obsługiwanych przez sieciowe systemy operacyjne działające pod kontrolą innego systemu operacyjnego (serwery pracujące w trybie gospodarza). System operacyjny ogólnego zastosowania, który pracuje na serwerze działającym w trybie gospodarza, ma za zadanie zapewnić uniwersalne środowisko dla uruchamiania wielu zadań - na ogół nie jest optymalizowany pod kątem zastosowań sieciowych.

Na doskonałość systemu NetWare mają wpływ następujące czynniki: