Kurs Bash'a (część II)

W poprzedniej części kursu poznaliśmy najbardziej podstawowe polecenia powłoki
bash. Dziś dowiemy się nieco więcej o Linuxowym (i nie tylko) systemie plików.

Ale po kolei. Po pierwsze zajmijmy się jeszcze poznanymi w poprzednim
odcinku uprawnieniami. Wiemy już co to są uprawnienia, jak je odczytywać, ale
brakuje nam jednej, bardzo ważnej informacji - w jaki sposób można je zmienić.
Otóż służy do tego komenda:

chmod nowe_uprawnienia plik_lub_katalog

Jeśli przykładowo mamy plik o nazwie plik.txt z nadanymi uprawnieniami
rw-r--r-- i chcemy nadać wszystkim użytkownikom prawo do zapisu tego pliku oraz
dodatkowo jego właścicielowi prawo do wykonywania, powinniśmy użyć następującej
komendy:

chmod u+x,a+w plik.txt

Pewnie nie wygląda to zbyt zrozumiale, ale w rzeczywistości jest bardzo proste.
Pierwszy znak uprawnień oznacza grupę użytkowników do których mają być dane
uprawnienia zastosowane. Wyróżniamy cztery takie grupy:
u - właściciel pliku,
g - grupa, do której należy właściciel pliku,
o - pozostali użytkownicy,
a - wszyscy użytkownicy.
Kolejny znak (plus lub minus) oznacza czy dane uprawnienia dodajemy, czy
zdejmujemy. Ostatni ze znaków reprezentuje uprawnienia, które chcemy ustawić.
Symbole uprawnień znamy już z poprzedniej części kursu. Po przecinku można
zapisać kolejne zmiany, np. dotyczące innych grup użytkowników czy innych
uprawnień. Zmiany uprawnień możemy również łączyć ze sobą. Na przykład zamiast
pisać g+w,o+w można napisać go+w, zamiast g+w,g+x użyjemy g+wx itd. No dobrze,
ale co jeśli chcemy zmienić właściciela danego pliku lub jego grupę. Otóż służą
do tego odpowiednio komendy:

chown nowy_właściciel plik_lub_katalog

i

chgrp nowa_grupa plik_lub_katalog

Pierwsza z nich wymaga, aby użytkownik ją wywołujący był właścicielem pliku
(lub superużytkownikiem root) i zmieniał właściciela na siebie (w przypadku
root`a na dowolnego użytkownika). Druga również może być wywoływana tylko przez
właściciela pliku (lub root`a) i użytkownik wywołujący polecenie musi należeć
do grupy 'nowa_grupa' (oczywiście oprócz root`a, który może podać nazwę
dowolnej grupy).

Kolejnym ważnym zagadnieniem jest obsługa innych dysków/partycji niż
standartowa systemowa. Otóż Linux nie używa liter dysków, tak jak DOS/Win, lecz
wszystkie dostępne zasoby przedstawia na jednym drzewie katalogowym. Zazwyczaj
inne partycje dostępne są jako podkatalogi katalogu /mnt. Jednak nie są one
dostępne od razu po umieszczeniu ich w komputerze (np. po włożeniu dyskietki do
stacji dysków). Należy system powiadomić o ich dostępności (tzw. montowanie).
Służy do tego polecenie:

mount -t system_plików urządzenie katalog_montowania

Przełącznik -t oznacza, że będziemy chcieli podać jaki system plików jest użyty
na montowanym dysku. Najpopularniejsze to:
vfat - znany z DOS/Win
iso9660 - używany na płytach CD-ROM,
ext2 - standartowy system Linuxa,
nfs - używany przy mapowaniu zasobów sieciowych.
Kolejnym parametrem komendy mount jest urządzenie, które przechowuje dany
system plików, np.:
/dev/cdrom - napęd CD-ROM,
/dev/fd0 - pierwsza stacja dyskietek, kolejne to /dev/fd1 itd.,
/dev/hda1 - pierwsza partycja pierwszego dysku twardego, kolejne partycje
oznaczamy zmieniając ostatnią cyferkę, a kolejne dyski zmieniając literkę
występującą po hd.
Katalog montowania, ostatni z parametrów mount, może być dowolnym katalogiem
istniejącym na dysku. Zazwyczaj używa się podkatalogów /mnt aby uniknąć
bałaganu.
Jednak co zrobić jeśli nie chce nam się za każdym razem montować jakiejś partycji, chcielibyśmy mieć ją podmontowaną już przy starcie systemu? Otóż do tego służy plik /ect/fstab. Składa się on z linii o następującej konstrukcji:

/dev/hda1 /mnt/dysk_c vfat defaults 0 0

Pierwsze trzy informacje są chyba jasne: urządzenie, katalog, w którym ma być montowane i system plików. Dalej znajduje się sposób, w który urządzenie ma być montowane. Można tu znaleźć:
defaults - montowane przy starcie systemu
noauto - montowane przez użytkownika skróconą komendą mount katalog_montowania
Można w tym miejscu dodać też uprawnienia jakie mają być nadane plikom na danym urządzeniu (dla systemów nie posiadających własnych uprawnień). Ostatnie dwie cyfry służą do sterowania innymi programami narzędziowymi i zazwyczaj nie są potrzebne (ustawiamy je na 0).

Ostatnim problemem, jaki chciałbym dziś poruszyć są tzw. aliasy. Otóż polecenia bash'a są często długie i skomplikowane. Aby je skrócić używany aliasów definiowanych w następujący sposób:

alias 'nowe_polecenie'='inne_polecenie_lub_ciąg_poleceń_oddzielonych_średnikami"

Jeśli na przykład chcielibyśmy zastąpić ls -al poleceniem dir posłuży nam do tego komenda:

alias 'dir'='ls -al'

Niestety aliasy są tracone przy każdym restarcie systemu, więc za każdym razem trzeba je definiować od nowa. Aby sobie oszczędzić wklepywania tych samych komend za każdym razem, można je wpisać do pliku ~/.bashrc. Plik ten jest przetwarzany za każdym logowaniem użytkownika. Jest to właśnie przykład prostego skryptu powłoki - ciąg poleceń wpisanych do pliku.

W poprzednim odcinku obiecałem pisanie pierwszych własnych skryptów. Niestety będziemy musieli przełożyć to na trzecią część naszego kursu. Do tego czasu poćwiczcie znane już polecenia, abyście mogli ich spokojnie używać w bardziej
skomplikowanych konstrukcjach. Przyjrzyjcie się również gotowym już skryptom, np. ~/.bashrc, ~/.bash_profile. Nawet jeśli nic nie rozumiecie - nie szkodzi. Po lekturze następnego odcinka wszystko powinno stać się o wiele jaśniejsze. Polecam też lekturę systemowego podręcznika,
wywoływanego komendą:

man nazwa_polecenia

gdzie nazwa_polecenia to komenda, o której chcemy się dowiedzie czego więcej.
Na początek proponuje man man. To tyle na dziś. Do zobaczenia (przeczytania?) w kolejnym odcinku.

Golish
goish@yoyo.pl 

 Copyright © 2000 SYSTEM. Wszystkie prawa zastrzeżone.
 Kopiowanie tekstów w całości lub we fragmentach bez zgody redakcji i autorów zabronione.