System Unix cz. I – wstęp

Spis treści:

Słowo wstępu

Poradnik ten tworzony jest na potrzeby studiów i część rozwiązań pomimo swojej akademickich natury może znaleść wiele ciekawych i praktycznych zastosowań. Kieruje go głównie do ludzi dopiero zaczynających swoja przygode z systemami rodziny UNIX. Każdy z nas kiedyś się uczył i zdaje sobie sprawę jak ważny jest dostęp do materiałów i wiedzy. Piękną rzeczą w IT jest otwartość na rozwój i współpracę, to na tych zasadach Linus Torvalds oparł swój system – Linux. Postaram się by ten mini-poradnik napisany był w przystępnym i praktycznym stylu. Uwagi i sugestie proszę kierować na adres patryk.nizio@gmail.com. Proszę abyś miał na uwadze że przedstawione tutaj rozwiązania nie zawsze będą najbardziej optymalne, a sposóbów rozwiązań danego zaganienia jest wiele.

Historia

Każdy z nas słyszał o Linuxie i jego dystrybucjach, mało kto natomiast zna krętą droge historii która doprowadziła do jego stworzenia. Wszystko zaczeło się w 1969 r. kiedy to grupka programistów po godzinach pracy, hobbystycznie zaczeła pisać system operacyjny. Wszystko działo sie w Bell Labs (oddział badawczy firmy AT&T ). Dennis Ritchi, Ken Thompson oraz paru ich kolegów po godzinach pracy pracowali nad nowym systemem operacyjnym, korzystąc z firmowego sprzętu. System (wówczas jeszcze bez nazwy) który napisali funkcionował wewnątrz firmy przez pare miesięcy. W 1971 roku zyskał nazwe UNIX jako gra słów do Multics. W 1972 roku został przepisany z assemblera na język C. Ciekawostką jest to ze język C powstał właśnie na potrzeby UNIXa.

W 1974 r. AT&T została uznana za monopolistę przez Departament Sprawiedliwości USA, zgodnie z wyrokiem sądu w postępowaniu antymonopolowym przeciwko firmie AT&T będącej właścicielem Bell Labs, miała ona zakaz wchodzenia na rynek komputerowy. Unix nie mógł być z tego powodu wydany jako produkt – firma miała obowiązek udostępnienia swoich niezwiązanych z telefonami technologii każdemu zainteresowanemu podmiotowi. I tak system ten stał sie popularny w srodowiskach akademickich, gdzie tworzono nowe rozwiązania i moduły.

W roku 1982 r. zakończył sie trwajacy od 1974 r. proces sądowy. Nowy wyrok anulował poprzednie zarządzenia, które zabraniały firmie wydania Uniksa jako produktu, dzięki czemu UNIX System V mógł zostać wydany na licencji komercyjnej. W tym czasie krążyło już wiele wersji i wariacji systemu, W latach 80 firmy tworzyły własne wersje systemu UNIX które komercializowali. Niespodobało się to firmie AT&T która powołała Unix Internacional, okres lat 90 to tzw. „wojna unixowa”. Ciągle wytaczane procesy omal nie doprowadziły do upadku całego systemu. W 1991 roku Linus Torvalds – fiński student zaczą prace nad Unix-podobnym systemem nazwanym póżniej Linux. Dzięki szybkiemu rozwojowi otwartego oprogramowania Linux zyskał na popularności i jest uzywany w różnych wersjach do dzisiaj.

Jeśli jesteś ciekaw jak rozwiajały się systemy rodziny UNIX zobacz poniższe drzewo rozwoju

System plików – Teoria

System plików jest to sposób reprezentacji plików na przestrzeni dyskowej. Dzięki niemu możemy tworzyć, usuwać, otwierać pliki i katalogi. Położenie danych mozemy określić podając do nich ścieżke.

 

  • Ścieżka względna – względem bieżącego katalogu (katalog roboczy), polecenie pwd wyswietla pełną ścieżkę do obecnego katalogu roboczego, na przykład: ./katalog1/text.txt

.. - przenosi nas do katalogu wyżej (dwie kropki). - to katalog w którym obecnie się znajdujemy (jedna kropka)

  • Ścieżka bezwzględna – ścieżka absolutna względem katalogu domowego np. /home/katalog1/katalog2/plik.txt

 

Żeby jednak zacząć poruszać się po systemie przybliże sposób wpisywania komend do konsoli. Polecenia (komendy) w systemie UNIX mogą zawierać „flagi, parametry” co to jest? Otóż są to opcje polecenia. Może lepiej będzie to przedstawić na przykładzie. Polecenie ls listuje nam zawartośc katalogu ale polecenie z flagą „-S” ls -S posortuje zawartość katalogu według rozmiaru pliku, zamiast domyslnego sortowania alfabetycznego. Największe pliki wyświetlane będą na początku. Żeby zobaczyć jakie flagi ma polecenie użyj wbudowaną instrukcje obsługi wpisując man [polecenie]

Uogólniony zapis poleceń możemy zapisać tak:

[polecenie] [parametry,flagi] [argumenty]

Na początku może wydawać Ci sie to troche skomplikowane, ale po pewnym czasie i oswojeniu z man’em zaczniesz swobodnie korzystać z konsoli. Poniżej podaje podstawowe polecenia które przydadzą się w poruszaniu się po systemie.

 Ważniejsze polecenia na początek:

cd [scieżka] – służy do przemieszczania się między katalogami

Przykład:

cd A/B – przechodzi do katalogu B który jest w katalogu A
cd .. – przechodzi do katalogu rodzica
cd – powraca do katalogu domowego

mkdir [nazwa_katalogu] – polecenie to służy do tworzenia katalogów

Przykład:

mkdir --mode=666 nowy_kat – polecenie tworzy katalog „nowy_kat” nadając mu od razu odpowiednie prawa dostępu

cp źródło1 źródło2 … źródło_N cel – kopiuje źródła 1,2,… N do cel (pewien katalog)

Przykład:

cp -r A D – kopiuje (rekurencja) zawartość katalogu A do katalogu D

mv – polecenie przeniesienia

Przykład:

mv /home/user /tmp – Przeniesienie katalogu /home/user do /tmp mv plik1 plik2 – zmienia nazwe z „plik1” na „plik2”

tree – wyświetla drzewo katalogów

rm -r – usuwa katalog wraz z podkatalogami (rekurencja)

rmdir – usuwa pusty katalog

clear – czyszczenie konsoli

touch – zmiany w pliku, np. zmiana daty, touch plik1 – tworzy pusty plik

ls [parametr] [katalog] – listowanie zawartości katalogu

man [nazwa_strony] – najważniejsza komenda podczas początków nauki, czyli manual – instrukcja obsługi. Objaśnienie komend i atrybutów np. man cd

System plików – Praktyka

Teraz będzie ciekawie, spróbujemy utworzyć kilka katalogów jedna komendą, pamiętajmy że “ .. ” – powraca do katalogu wyżej, komendą mkdir -p utworze katalog kuchnia z podkatalogami,

dyzio@student:~$ mkdir -p  kuchnia/lodowka/wodka_zimna/../jajka/../maslo/../../zamrazarka/wodka_bardzo_zimna/../pierogi/../../chlebak/chleb/   
dyzio@student:~$ tree kuchnia 
kuchnia
|-- chlebak
|   `-- chleb
|-- lodowka
|   |-- jajka
|   |-- maslo
|   `-- wodka_zimna
`-- zamrazarka
|-- pierogi
`-- wodka_bardzo_zimna

Prawa dostępu

Prawa dostępu to mechanizm określający uprawnienia w systemach unixowych. Po co nam prawa dostępu na naszym komputerze? Tutaj one nie są nam aż tak potrzebne. Należy jednak pamiętać że system Unix jest systemem z którego może korzystać wielu uzytkowników na raz (system wielodostępny). Co wiec gdy mamy wiele zasobów i wielu użytkowników? Wyobraź sobie serwer pewnej firmy, każdy z pracowników ma swoje konto z którego pracuje. Mamy również 3 grupy w firmie, szefostwo, księgowość i pracownicy. Pewien nieuczciwy pracownik wszedł w katalog pani Baśi z ksiegowości i w arkuszu z wypłatami dopisał jedno zero przy swojej wypłacie. Innym razem pewien śmieszek z działu analiz podmienił szefowi prezentacje dochodów rocznych na prezentacje zabawek erotycznych. Szef po dosyć wstydliwym wystąpieniu przed azjatyckimi inwestorami pomyślał że musi nadać uprawnienia swoim pracownikom. Dzięki uprawnieniom każdy z pracowników mógł dalej bez problemu korzystać ze swojego konta ale nie mógł np. zajrzeć w katalog pani Baśi. Szef dostał uprawnienia odczytu do katalogów pracowników by na bieżąco móc sprawdzić postęp danego projektu. Pracownik o imieniu Bartek pracował dzielnie, dzień i noc zamieniajac kawę w kod. Bartek chciął podzielić sie z zespołem postępami i udostępnił pewne pliki nadając im odpowiednie uprawnienia

Więc jak widzisz gdy użytkowników jest wiele i chcemy utrzymać pewien ład i porządek, powinniśmy korzystać z praw dostępu.

Wyróżniamy :

r (read) – prawo do odczytu
w (write) – prawo do zapisu
x (execute) – prawo do uruchamiania

Przykład: rw- // taki plik będzie można otworzyć, zapisać ale nie będzie można go uruchomić
Przykład: — //całkowity brak dostępu do katalogu/pliku
Przykład: r-x //tylko do odczytu, bez możliwosci usuwania i edycji

Uprawnienia Symboliczne

Prawa dostępu dostępu do plików i katalogów zmieniamy poleceniem chmod poniżej jego atrybuty:

Komu?Dowolna kombinacja

        u  (użytkownik)
        g  (grupa)
        O  (pozostali)
        a  (wszyscy)
Co robimy?Tylko jedno

        +  (dodaj)
        –  (odbierz)
        =  (ustaw)
Jakie prawa?Dowolna kombinacja

        r  (odczyt)
        w  (zapis)
        x  (uruchamianie)

Sprawdź co oznacza ciąg znaków: (najedź myszką) |rwx|r-x|r–

 

Uprawnienia numeryczne

Jeżeli chcesz odebrać wszystkie prawa osobom które nie są członkami twojej grupy to uzyjesz polecenia: chmod O-rwx wiadomosc

Jest to tylko jeden sposób nadawania uprawnień, poznaliśmy już sposób symboliczny. Przejedzmy teraz do sposobu numerycznego, pokaże Wam prosty przykład a później wytłumaczę:

dyzio@student:~$ ls -l wiadomosc
-rw-r--r-- 1 dyzio geolgrp 0 2016-03-02 01:08 wiadomosc
dyzio@student:~$ chmod 666 wiadomosc
dyzio@student:~$ ls -l wiadomosc
-rw-rw-rw- 1 dyzio geolgrp 0 2016-03-02 01:08 wiadomosc

Sposób numeryczny wydaje się na pierwszy rzut oka bardziej skomplikowany jednak gdy nauczymy się przeliczać prawa dostępu będzie on praktyczny i wygodny, a sposób symboliczny będziemy stosować tylko w przypadkach gdy będziemy chcieli nadać pojedyncze uprawnienia np. chmod O+r

Jak zamienia się uprawnienia na liczby? W bardzo prosty sposób, na pewno każdy zna system binarny i ósemkowy i wie że liczba 101 (2) to 5 (8), wiec ciąg uprawnień rw-r–r– będzie liczbą 644, ciąg znakowy podzielmy sobie na 3 częsci: rw- | r– | r– w miejsca liter wstawiamy 1 a tam gdzie jest pusto stawiamy 0. Otrzymujemy liczbę 110100100, teraz podzielmy ja na 3 części 110 | 100 | 100 i każdą z tych części zamieńmy na liczbę ósemkowa wiedząc że waga od najstarszego (po lewej) to 4,2,1 (kolejne potęgi dwójki: 2^0=1, 2^1=2, 2^2=4) wiec otrzymamy liczbę 110->6 | 100->4 | 100->4 a więc 644.

Jakie prawa dostępu nadają poniższe wartości?

764 
664 
640

Przykład:

dyzio@student:~/sh$ ls -l
total 8
-rw-rw-rw- 1 dyzio geolgrp 122 2016-03-20 21:54 login.sh
-rwxr-xr-- 1 dyzio geolgrp  32 2016-03-20 21:03 skrypt.sh*
dyzio@student:~/sh$ chmod 774 login.sh
dyzio@student:~/sh$ ls -l
total 8
-rwxrwxr-- 1 dyzio geolgrp 122 2016-03-20 21:54 login.sh*
-rwxr-xr-- 1 dyzio geolgrp  32 2016-03-20 21:03 skrypt.sh*
dyzio@student:~/sh$ chmod 755 login.sh skrypt.sh
dyzio@student:~/sh$ ls -l
total 8
-rwxr-xr-x 1 dyzio geolgrp 122 2016-03-20 21:54 login.sh*
-rwxr-xr-x 1 dyzio geolgrp  32 2016-03-20 21:03 skrypt.sh*

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *