background image

Linuksowy system plików 

Linuksowy system plików 

 
 

 

1. Pliki i katalogi w systemie Linux. Poruszanie się po katalogach, operacje na plikach, kopiowanie, 

przenoszenie, tworzenie linków 

2. Struktura systemu plików, podstawowe katalogi i pliki systemu 

3. Prawa dostępu do plików i katalogów, polecenia chmod, chown, chgrp 
4. Konfigurowanie środowiska pracy systemu Linux, zmienne systemowe 

5. Edytor

 

vi 

 
 
 

 
 

 

1

background image

Linuksowy system plików 

1. Pliki i katalogi w systemie Linux.  

Poruszanie się po katalogach, operacje na plikach, 

kopiowanie, przenoszenie, tworzenie linków 

 

 
Podczas procesu instalacji, opisanego w module pierwszym i wykonanego przez słuchacza 
na dysku twardym, w komputerze zostały zapisane dane niezbędne do działania systemu 
operacyjnego Linux. Dane te zostały zapisane w postaci plików, tak jak to jest 
wykonywane w innych systemach operacyjnych, na przykład Windows. Pliki są 
zapisywane w wielu katalogach, odpowiednio nazwanych i umieszczonych w strukturze 
katalogów na dysku. Pod tym względem linuksowy system plików zasadniczo nie różni się 
od znanego systemu występującego w środowisku Windows. W katalogu głównym są 
katalogi, w których mogą znajdować się zarówno pliki, jak i katalogi niższego rzędu, 
które tworzą drzewo, symbolizujące rozgałęziającą się strukturę podziału na katalogi 
niższego rzędu. Użytkownicy systemu operacyjnego Windows wiedzą, że poszczególne 
dyski logiczne oznacza się kolejnymi literami z dwukropkiem. Podstawowym dyskiem jest 
dysk oznaczony jako C:, dalsze dyski lub napędy CD-ROM, DVD czy dyski wymienne 
oznacza się kolejnymi literami D:, E: itd. W systemie Linux wszystkie zainstalowane dyski 
tworzą jeden system plików, którego katalog główny jest oznaczony prawym ukośnikiem, 
czyli znakiem „/”. Również ten znak (w systemach Windows znak „\”) jest 
wykorzystywany w systemie Linux do oddzielania od siebie poziomów katalogów. Dla 
użytkownika systemu nie ma znaczenia, czy dane są zapisane na pierwszym, drugim czy 
kolejnym dysku. Najważniejsze, by znał położenie pliku (lub katalogu) w systemie plików, 
czyli znał tzw. ścieżkę do pliku. Obecnie zostaną omówione podstawowe polecenia 
służące do poruszanie się po linuksowym systemie plików. Podstawowym poleceniem 
wyświetlającym zawartość katalogu, czyli nazwy i ewentualnie inne informacje o plikach 
jest polecenie ls (skrót od angielskiego słowa list).  

 
 

 

2

background image

Linuksowy system plików 

 

Rysunek 1. Przykład działania polecenia ls 

 
 

Jak widać na rysunku, w bieżącym katalogu jest tylko jeden plik o nazwie procesy.txt 

(plik ten został utworzony w poprzednim ćwiczeniu poleceniem ps). Zawartość tego pliku 
można wyświetlić na ekranie poleceniem cat procesy.txt (należy przypomnieć 
wiadomości z poprzedniego modułu, że do wykonania tego polecenia wystarczy napisać 
na klawiaturze cat p i wcisnąć klawisz tabulatora). 

 
 

 

Rysunek 2. Wyświetlanie zawartości pliku poleceniem cat 

 
 

 

3

background image

Linuksowy system plików 

Plik ten jest na tyle duży, że jego zawartość nie mieści się na jednym ekranie. 
Początkowe linie pliku można wyświetlić poleceniem head nazwa_pliku, a końcowe tail 

nazwa_pliku.  

 
 

 

Rysunek 3. Przykład działania poleceń head i tail 

 

 

Wykonane wcześniej polecenie ls wyświetliło na ekranie zawartość katalogu bieżącego, 
czyli jakiego? Jaki jest katalog bieżący? Łatwo jest to sprawdzić poleceniem pwd (od 
angielskiego print working directory). Jak widać z rysunku poniżej, tym katalogiem jest 
/home/jacnow. Jest to tak zwany katalog domowy użytkownika, czyli katalog, który staje 
się bieżącym bezpośrednio po zalogowaniu się użytkownika. Katalogiem domowym 
użytkownika test1 jest /home/test1, użytkownika test2 /home/test2.  

 
 

 

4

background image

Linuksowy system plików 

 

Rysunek 4. Przykład działania polecenia pwd 

 

 
Do poruszania się w systemie plików między katalogami służy polecenie cd (od 
angielskiego change directory). Parametrem wywołania polecenia jest nazwa katalogu, 
który ma stać się katalogiem bieżącym. Szczególne przypadki wywołania polecenia cd są 
następujące: 
  cd .. — parametrem są dwie kropki (nie dwukropek), powoduje przejście do 

katalogu nadrzędnego, 

  cd — polecenie wywołane bez parametru, powoduje przejście do katalogu domowego 

użytkownika, 

  cd ~ — parametrem jest znak tyldy (~), tak jak powyżej powoduje przejście do 

katalogu domowego użytkownika, 

  cd / — parametrem jest ukośnik „/”, powoduje przejście do głównego katalogu 

systemu plików. 

 
Przykłady użycia polecenia cd są pokazane na rysunku powyżej.  
Opisane wcześniej polecenie cat procesy.txt spowodowało wyświetlenie na ekranie 
zawartości pliku, który znajdował się w katalogu bieżącym. Często jednak korzysta się  
z programów lub plików, które nie są w katalogu bieżącym, więc trzeba w takim 
przypadku jednoznacznie określić położenie pliku w strukturze katalogów. Poza podanym 
sposobem wykonania tego polecenia, można wywołać je, podając tzw. pełną ścieżkę 
dostępu do pliku, czyli pisząc cat /home/jacnow/procesy.txt. Podany parametr, często 
zwany bezwzględną ścieżką do pliku, musi rozpoczynać się od znaku ukośnika „/”, gdyż 
jest to oznaczenie katalogu głównego. Parametr określający położenie pliku względem 

 

5

background image

Linuksowy system plików 

katalogu bieżącego, czyli tzw. względna ścieżka do pliku, nie rozpoczyna się od ukośnika. 
Na poniższym rysunku zostały pokazane różne przykłady wyświetlenia zawartości 
katalogu, w którym jest plik procesy.txt, zarówno w przypadku prawidłowego podania 
ścieżki bezwzględnej i względnej, jak i błędnego, na co system zareagował komunikatem 
„Nie ma takiego pliku ani katalogu”. 
 
Użytkownik systemu Linux ma możliwość zbudowania swojej, odpowiadającej jego 
potrzebom, struktury podkatalogów w jego katalogu domowym. Do tworzenia katalogów 
jest wykorzystywane polecenie mkdir nazwa_katalogu, a do usuwania katalogów 
polecenie rmdir nazwa_katalogu. Parametrem jest nazwa katalogu mogąca zawierać 
zarówno ścieżkę w postaci względnej (nierozpoczynającej się od znaku „/”), jak  
i bezwzględnej (rozpoczynającej się od znaku „/”). 

 
 

 

Rysunek 5. Przykłady określania ścieżki dostępu do pliku lub katalogu 

 
 

W trakcie pracy użytkownik nieustannie zmienia zawartość swojego dysku, tworzy nowe 
pliki, kasuje stare, kopiuje, przenosi, tworzy kopie zapasowe, czasami zachodzi 
konieczność znalezienia pliku, który się zawieruszył na dysku. Oczywiście dysk powinien 
być uporządkowany, odpowiednie pliki powinny się znajdować we właściwych katalogach 
na dysku. Podstawa zachowania porządku na dysku to możliwość zarządzania 
katalogami, ich tworzenie i usuwanie.  
 
 

 

6

background image

Linuksowy system plików 

Polecenia pomagające użytkownikowi zapanować nad hierarchiczną strukturą danych:  

mkdir nazwa_katalogu — służy do tworzenia katalogu, 

rmdir nazwa_katalogu — służy do kasowania katalogu. 

 
Nazwa katalogu, który zostanie utworzony, może być podana zarówno z pełną 
(bezwzględną), jak i względną ścieżką. Przykład tworzenia i kasowania katalogów jest 
pokazany na poniższym rysunku. 

 
 

 

Rysunek 6. Przykład tworzenia katalogów 

 
 
W łatwy sposób użytkownik może sprawdzić, czy utworzona struktura katalogów jest 

prawidłowa. Polecenie tree wyświetla w prosty sposób strukturę katalogów na dysku, co 
jest przedstawione na kolejnym rysunku. Komunikaty [error opening directory] 
potwierdzają, że użytkownik jacnow nie ma praw dostępu do katalogów innych 

użytkowników. Polecenie tree pozwala również na wyświetlenie struktury całego 
linuksowego systemu plików. Należy podejść do tego zadania z rozwagą, gdyż wykonanie 
tego polecenia może trwać kilka lub kilkanaście minut. 

 

 

7

background image

Linuksowy system plików 

 

Rysunek 7. Wyświetlanie struktury katalogów poleceniem tree 

 
 
Podstawowe operacje na plikach to ich kopiowanie, usuwanie i przenoszenie.  

cp plik_źródłowy plik_docelowy — kopiowanie pliku, 

rm plik_źródłowy plik_docelowy — usuwanie pliku, 

mv plik_źródłowy plik_docelowy — zmiana nazwy lub położenia pliku. 

 
W powyższych poleceniach zamiast plików mogą także wystąpić katalogi. Polecenie to  
— choć wydaje się bardzo proste do wykonania — posiada kilka przydatnych opcji 
opisanych skrótowo poniżej: 
  cp — plik_źródłowy plik_docelowy — interaktywnie program pyta, czy 

nadpisywać istniejące pliki docelowe, 

  cp — plik_źródłowy plik_docelowy  operacja jest wykonywana rekurencyjnie 

na całym drzewie podkatalogów,  

  cp — f plik_źródłowy plik_docelowy — usuwa pliki docelowe. 

 

Poza możliwością skopiowania pliku, system Linux pozwala na utworzenie tak zwanego 
linku, czyli dowiązania symbolicznego. Inaczej mówiąc, plik może mieć wiele nazw, co 
pozwala na odwołanie się do pliku przez wiele identyfikatorów. Jak widać z poniższego 
rysunku, pliki oznaczające dowiązania są wyświetlane w innym kolorze. sendmail to  
w istocie dowiązanie (link) do pliku ../sbin/sendmail, podobnie X11 stanowi link do pliku 
../X11R6/lib/X11.  

 
 

 

8

background image

Linuksowy system plików 

 

Rysunek 8. Przykład wyświetlania zawartości katalogu 

 
 
Korzystanie z linków ułatwia dostęp do plików i katalogów, gdyż można — korzystając  
z krótkiej nazwy — odwołać się do pliku o długiej nazwie, znajdującego się głęboko  
w strukturze katalogów. Tworzenie linków jest realizowane poleceniem: 

ln oryginał  link lub ln –s oryginał  link. 

 
Pierwsze z nich tworzy tzw. twardy link, czyli oryginał i link są nierozróżnialne. 
Użytkownik — na przykład odczytując zawartość pliku — nie wie, czy pracuje  
z oryginalnym plikiem, czy jego linkiem. Skasowanie pliku jest możliwe dopiero po 
usunięciu wszystkich twardych linków do niego. Przykład utworzenia takiego twardego 
linku jest pokazany na poniższym rysunku. Jak widać, oryginał i link mają takie same 
rozmiary. Tworzenie twardych linków jest możliwe tylko w obrębie tego samego systemu 
plików, czyli na przykład na tej samej partycji dysku. Liczba znajdująca się w drugim polu 
informacji o pliku oznacza liczbę twardych dowiązań do pliku i — jak widać na przykładzie 
— po utworzeniu twardego linku została zwiększona do 2.  

 
 

 

9

background image

Linuksowy system plików 

 

Rysunek 9. Przykład tworzenia linku, czyli dowiązania symbolicznego 

 
 
Drugie z poleceń służy do tworzenia tzw. miękkiego linku. Przykład jego utworzenia jest 
przedstawiony na poniższym rysunku. Linki tego typu można tworzyć między obiektami 
znajdującymi się na różnych systemach plików. 
 
 

 

Rysunek 10. Przykład tworzenia tzw. miękkiego linku 

 
 
 
 

 

10

background image

Linuksowy system plików 

Przy kopiowaniu bądź przenoszeniu plików można stosować tzw. znaki globalne, które 
znacznie ułatwiają i przyspieszają pracę. Znak „?” (znak zapytania) może symbolizować 
dowolny znak w nazwie występujący tylko na tej pozycji, a „*” dowolny znak do końca 
pliku. Z tego wynika, że polecenie cp * wyklady spowoduje skopiowanie całej zawartości 
bieżącego katalogu do folderu wyklady
 

 

11

background image

Linuksowy system plików 

2. Struktura systemu plików,  

podstawowe katalogi i pliki systemu 

 

 
Po zalogowaniu się użytkownika katalogiem bieżącym jest jego katalog domowy. Nie 
oznacza to, że pracujący w systemie Linux nie może „obejrzeć” zawartości dysku, 
zorientować się, jakie dane są zapisane na serwerze linuksowym. W ramach bieżącego 
tematu zostanie w zarysie przedstawiona struktura danych zawartych na dysku, ich 
przeznaczenie i uprawnienia użytkowników do ich przeglądania i modyfikacji. 
Przykładowo wyświetlenie zawartości katalogu głównego można wykonać  
poleceniem ls /.  

 
 

 

Rysunek 11. Przykład wyświetlania zawartości katalogu 

 
 
Jak widać z rysunku w katalogu głównym znajduje się około 10 obiektów i są to katalogi 
stanowiące poszczególne gałęzie systemu plików. Na jakiej podstawie można zorientować 

się, że są to katalogi? Poleceniem ls –l zostały wyświetlone rozszerzone informacje  
o zawartości katalogu, które należy odczytać następująco: 

 

drwxr-xr-x   17 root     root       77824 sie 26 19:28 dev 
 

 

12

background image

Linuksowy system plików 

d  

litera d umieszczona w pierwszej kolumnie oznacza katalog,  

w przypadku pliku występuje znak „–” (minus), 

rwxr-xr-x  

kolejne znaki, które mogą być dowolną kombinacją liter rwx oraz 

znaku „–” (minus) oznaczają uprawnienia użytkowników do danego 
pliku lub katalogu, 

20  

 

oznacza liczbę dowiązań do danego pliku lub katalogu, 

root  

nazwa 

użytkownika, który jest właścicielem pliku lub katalogu, 

root 

 

nazwa grupy użytkowników, do której należy plik lub katalog, 

116736  rozmiar 

wyrażony w bajtach, 

sie 26 13:06  data i godzina ostatniej modyfikacji pliku lub katalogu, 

dev 

 

nazwa pliku lub katalogu. 

 
Dodatkowym ułatwieniem jest to, że nazwy katalogów są wyświetlane w kolorze 
niebieskim. Poniżej zostanie skrótowo opisana zawartość poszczególnych katalogów 
 
 

Tabela 1. Zawartość podstawowych katalogów w systemie Linux 

Nazwa Zawartość 

/bin 

Zawiera podstawowe programy narzędziowe, jego nazwa pochodzi od 

binaries 

/boot 

Zawiera pliki z systemem operacyjnym wczytywane przy uruchamianiu 
komputera 

/dev 

Zawiera pliki urządzeń. Linux traktuje wszystko, z czego może odczytać 
dane lub je zapisać, jak pliki. W tym katalogu są pliki określające wszystkie 

urządzenia znajdujące się w komputerze 

/etc 

W tym katalogu i podkatalogach są przechowywane pliki konfiguracyjne 

systemu i wszystkie pozostałe pliki systemowe, stąd jego nazwa. Zazwyczaj 
są to pliki tekstowe, które mogą być łatwo edytowane przez administratora 

w celu zmiany konfiguracji systemu 

/home 

Są tu zawarte wszystkie katalogi domowe użytkowników systemu (tzw. 
home directory

/lib 

Są tu zawarte biblioteki wykorzystywane przez kompilatory przy linkowaniu 
programów 

/lost+found 

Zawiera pliki zagubione i odzyskane 

/mnt 

Katalog używany do montowania urządzeń: stacji dyskietek, CD-ROM-u, 
partycji dyskowych 

/proc 

Zawiera informacje o różnych parametrach pracy systemu 

 

13

background image

Linuksowy system plików 

 

/root 

Katalog domowy administratora 

/sbin 

Zawiera programy służące do administrowania systemem i uruchamiane 

automatycznie 

/tmp 

Zawiera pliki tymczasowe 

/usr 

Zawiera pliki i polecenia systemowe 

/var 

Zawiera pliki, które się zmieniają, np. pocztę, serwis WWW 

 

 
Jest to wykaz orientacyjny i nie zawiera szczegółowego omówienia, większość  
z katalogów jest bardzo rozbudowana. Przeglądając różne katalogi, można było 
zauważyć, że nazwy plików i katalogów zazwyczaj są pisane małymi literami i rzadko 
zawierają rozszerzenia nazwy, a jeżeli — to nazwy są wieloczłonowe i mogą zawierać 
wiele kropek, przykładowo libBrokenLocale-2.2.4.so. W systemie Windows wiadomo, że 
program wykonywalny ma rozszerzenie .exe. W systemie Linux rozszerzenie nazwy nie 
ma wpływu na to, czy program jest wykonywalny. W zasadzie nie wydziela się 
rozszerzenia nazwy pliku. Polecenie file nazwa_pliku

 

pozwala na określenie typu pliku. 

Przykłady określania typu pliku są pokazane na kolejnym rysunku.  

 
 

 

Rysunek 12. Przykładowe rodzaje zawartości pliku rozpoznawane programem file 

 
 
 

 

14

background image

Linuksowy system plików 

Do omówienia w ramach niniejszego tematu pozostało zagadnienie poszukiwania plików. 

Do tego celu służy polecenie find, którego składnię można opisać następująco: 

find katalog — opcje kryterium. 

katalog oznacza katalog, w którym system będzie szukał plików, np. katalog /home 
oznacza katalogi domowe wszystkich użytkowników, a zgodnie z wcześniejszymi 
informacjami znak „/” (ukośnik) oznacza przeszukiwanie całego systemu plików.  
 
Znaczenie opcji jest następujące: 
  name wzorzec — są poszukiwane pliki, których nazwa pasuje do wzorca, 
  size numer— są poszukiwane pliki, których rozmiar jest równy podanej liczbie 

wyrażonej w blokach lub bajtach (np. 1024c), 

  mtime numer — są poszukiwane pliki, które zostały zmodyfikowane numer dni temu, 
  newer wzorzec — są poszukiwane pliki, które były modyfikowane później niż ten, 

którego nazwa pasuje do wzorca.  

 
 

 

Rysunek 13. Przykład poszukiwania plików w systemie 

 

 

15

background image

Linuksowy system plików 

3. Prawa dostępu do plików i katalogów,  

polecenia chmod, chown, chgrp 

 

 
Poniższy rysunek pokazuje część listy nazw z katalogu głównego serwera linuksowego 
oraz zawartość katalogu /home. Nie jest to katalog domowy, co może sugerować jego 
nazwa. Jest to katalog nadrzędny nad katalogiem domowym użytkowników.  

 
 

 

Rysunek 14. Przykład wyświetlania pełnej informacji o zawartości katalogu 

 
 

Właścicielem katalogów zawartych w katalogu głównym serwera jest użytkownik root 
(czyli administrator komputera), należący do grupy root. W katalogu /home właścicielami 
poszczególnych katalogów są poszczególni użytkownicy należący do grup, których nazwy 
są takie same jak użytkownik, czyli właścicielem katalogu test1 jest użytkownik logujący 
się do systemu jako test1, który jest członkiem grupy również o nazwie test1. Należy 
przypomnieć, że podczas instalacji systemu Linux zostały utworzone takie konta 
użytkowników, a jak widać również takie grupy użytkowników.  

 
 

 

16

background image

Linuksowy system plików 

 

Rysunek 15. Przykład zmiany katalogu bieżącego z odmową dostępu 

 
 
Na powyższym rysunku zostały przedstawione przykłady poleceń wydanych przez 
użytkownika jacnow, których zadaniem były różne zmiany katalogów i przejrzenie ich 
zawartości. Użytkownik przeszedł z katalogu /home do swojego katalogu domowego 
(czyli /home/jacnow), wyświetlił jego zawartość w postaci szczegółowej (poleceniem  

ls –l), a następnie z katalogu /home spróbował przejść do podkatalogu test1, czyli 

katalogu domowego (często stosuje się określenie prywatnego) użytkownika, logującego 
się jako test1. Okazuje się, że nie było to możliwe, system wyświetlił komunikat 
Permission denied, co można przetłumaczyć jako dostęp zabroniony. Jest to prosty 
przykład potwierdzający tezę, że system Linux zapewnia użytkownikowi ochronę jego 
zasobów, czyli tylko on (i oczywiście administrator) ma do nich dostęp. Nie ma obawy  
o to, że inny użytkownik zapozna się z zawartością katalogów i plików nienależących do 
niego i tym bardziej ich nie zmodyfikuje lub nie usunie. W poprzednim punkcie został 

omówiony wydruk pełnej informacji o pliku (poleceniem ls –l), w której w pierwszych 
kolumnach są drukowane uprawnienia do pliku w postaci kombinacji znaków rwx oraz 
minus (–). Ich znaczenie jest następujące: 
  — oznacza prawo do odczytu (read), 
  w — oznacza prawo do zapisu (write), 
  x — oznacza prawo do wykonania (eXecute), 
  – — oznacza brak uprawnienia. 
 

 

17

background image

Linuksowy system plików 

Kombinacja tych znaków powtarza się trzykrotnie. Pierwsza grupa oznacza uprawnienia 
przysługujące właścicielowi pliku (lub katalogu), druga — innych użytkowników, 
należących do tej samej grupy, co właściciel pliku, trzecia trójka znaków dotyczy 
uprawnień pozostałych użytkowników systemu. Przykładowo oznaczenia dla pliku  
–rwxr-xr-- należy odczytać następująco: 
  rwx — właściciel pliku ma do niego pełne prawa, może go odczytać, zapisać (co 

również oznacza skasować) i wykonać, 

  r-x — inni użytkownicy, należący do tej samej grupy, co właściciel, mogą ten plik 

odczytać i uruchomić, 

  r-- — pozostali użytkownicy systemu mogą ten plik odczytać. 

 

Jak zmienić uprawnienia do pliku? Służy do tego polecenie chmod. Składnia polecenia jest 
następująca: 

chmod uprawnienia nazwa_pliku 
Przykład: chmod a+r procesy.txt 
 
Wyjaśnienia wymagają uprawnienia, które w przykładzie mają postać a + r. Pierwsza 
litera oznacza użytkowników i może być jedną z następujących: u — właściciel pliku 
(user), g — grupa (group), o — pozostali użytkownicy (others), a — wszyscy (all), 
kolejny znak to „+” (plus), co oznacza dodanie uprawnień lub „–” (minus), symbolizujący 
odebranie uprawnień i ostatni znak rwx określający rodzaj uprawnień opisany 
powyżej. Pomiędzy znakami nie może wystąpić spacja. W systemie Linux można również 
zmieniać prawa dostępu do plików, posługując się zapisem ósemkowym. Każdemu  
z uprawnień odpowiada bit ustawiony w określonej pozycji, co pozwala na łatwą 
konwersję liczby dwójkowej na ósemkową, jak w poniższym przykładzie: 

 
 

r w x r w x r w x 

4 2 1 4 2 1 4 2 1 

7 7 7 

 

Rysunek 16. Przykład konwersji uprawnień oznaczanych literami na liczby ósemkowe 

 
 

Uprawnienia rwxrwxrwx można zapisać liczbowo jako 777, czyli polecenie chmod 

a+ra+wa+x p* można również zapisać w postaci chmod 777 p*, a wynik działania będzie 

taki sam.  

 

 

18

background image

Linuksowy system plików 

 

r w x r – x r – – 

4 2 1 4 0 1 4 0 0 

7 5 4 

 

Rysunek 17. Przykład konwersji uprawnień oznaczanych literami na liczby ósemkowe 

 
 

Poniższy rysunek pokazuje różne przykłady działania polecenia chmod.  
 
 

 

Rysunek 18. Przykłady działania polecenia chmod 

 

 
Należy zwrócić uwagę na fakt wyświetlania pliku procesy.txt różnymi kolorami,  
w zależności od tego, czy miał nadane uprawnienia do jego wykonania. Nadawanie 
uprawnień prowadzi do kolejnego spostrzeżenia: o możliwości wykonania programu nie 
decyduje rozszerzenie nazwy pliku (jak to ma miejsce w Windows), lecz prawo danego 
pliku do wykonania (atrybut eXecute), które może być w każdej chwili nadane lub 
odebrane przez uprawnionego użytkownika.   
 
Nie tylko prawa dostępu do pliku mogą być zmieniane. Również właściciel pliku może 
zostać zmieniony. Dokonuje się tego poleceniem  

chown nowy_właściciel nazwa_pliku, jak w przykładzie: chown test2 procesy.txt.  

 

 

19

background image

Linuksowy system plików 

Przykład sposobu zmiany właściciela pliku jest przedstawiony na poniższym rysunku. 
Należy zwrócić uwagę na fakt, że ta operacja była możliwa do wykonania jedynie przez 
administratora systemu. Podobnie działa polecenie chgrp nowa_grupa nazwa_pliku
Polecenie chgrp pozwala na jednoczesną zmianę właściciela pliku i grupy, jeśli parametr 
poda się w postaci nowy_właściciel:nowa_grupa.  

 
 

 

Rysunek 19. Przykłady działania polecenia chown 

 

 
W uprawnieniach dostępu do pliku występują również znaczniki (bity) SUID i SGID. 
Ustawienie bitu SUID pozwala użytkownikowi uruchamiającemu program wykonanie go  
z prawami administratora. Jest to potencjalna luka w bezpieczeństwie systemu i należy 
rozważnie korzystać z nadawania tych uprawnień użytkownikom. W przypadku 
ustawienia bitu SGID program jest wykonywany z prawami dostępu grupy, do której 
należy, a nie uprawnieniami grupy, do której należy użytkownik uruchamiający ten 
program. Dodawanie lub usuwanie bitów SUID i GUID jest wykonywane poleceniem: 
  chmod u+s nazwa_pliku  — ustawienie bitu SUID, 
  chmod u-s nazwa_pliku  — usunięcie bitu SUID, 
  chmod g+s nazwa_pliku  — ustawienie bitu GUID, 
  chmod g-s nazwa_pliku  — usunięcie bitu GUID. 
 
 

 

20

background image

Linuksowy system plików 

Bity SUID i GUID można również ustawić poleceniem chmod, podając uprawnienia  
w postaci liczbowej: 

chmod 4755 nazwa_pliku   ustawienie bitu SUID, 

chmod 2755 nazwa_pliku   ustawienie bitu GUID. 

 

Do wyszukania w systemie plików z ustawionymi bitami SUID i GUID można użyć 

polecenia find z odpowiednimi parametrami: 

find /usr –perm +4000 — odszuka pliki z ustawionym bitem SUID, znajdujące się  

w katalogu /usr i podkatalogach,  

find /bin –perm +2000 — odszuka pliki z ustawionym bitem GUID, znajdujące się  

w katalogu /bin i podkatalogach. 

 

Informacja o ustawionych bitach SUID i GUID jest pokazana jako litera „s”  

w uprawnieniach do pliku wyświetlanych poleceniem ls –l. Przykład zmian ustawienia 
bitów SUID i GUID jest pokazany na następnym rysunku. 

 
 

 

Rysunek 20. Przykłady informacji o plikach z ustawionymi bitami SUID 

 
 
 
 

 

21

background image

Linuksowy system plików 

4. Konfigurowanie środowiska pracy systemu Linux,  

zmienne systemowe 

 
 
Zalogowanie się użytkownika do systemu powoduje uruchomienie programu powłoki 

(shella) określonego w pliku /etc/passwd. W Linuksie domyślną powłoką jest /bin/bash. 
Tak jak w przypadku wielu programów i jego konfiguracja jest zapisana w różnych 
plikach tekstowych, które tworzą profil użytkownika. Są to następujące pliki: 
.bashrc — jest umieszczany automatycznie w katalogu domowym użytkownika, 
.bash_profile — jest umieszczany automatycznie w katalogu domowym użytkownika, 
.bash_history — zawiera listę ostatnio uruchomionych poleceń, 
/etc/bashrc — zawiera listę aliasów systemowych, 
/etc/profile — zawiera definicje zmiennych środowiskowych. 
 
Jak widać z powyższego wykazu, pierwsze trzy pliki są plikami ukrytymi, znajdującymi 
się w katalogu użytkownika (nazwa pliku ukrytego rozpoczyna się od kropki).  

 
 

 

Rysunek 21. Lista plików ukrytych w katalogu domowym użytkownika 

 

 
Domyślne środowisko pracy jest określone przez zestaw zmiennych systemowych 
zdefiniowanych w pliku /etc/profile. Listę i wartości wszystkich zmiennych systemowych 

można wyświetlić poleceniem env lub printenv. To ostatnie polecenie pozwala również 

 

22

background image

Linuksowy system plików 

na wyświetlenie wartości dowolnej wybranej zmiennej systemowej. Znaczenie wybranych 
zmiennych systemowych jest przedstawione w poniższej tabeli. 

 
 

Tabela 2. Znaczenie zmiennych systemowych 

Zmienna Znaczenie 

HISTSIZE 

liczba poleceń zapamiętywanych w pliku historii 

HOME 

nazwa katalogu domowego aktualnego użytkownika 

LOGNAME 

identyfikator (login) aktualnego użytkownika 

PATH 

ścieżka przeszukiwania katalogów podczas uruchamiania programów 

PS1 

zgłoszenie systemowe linii poleceń 

PS2 

zgłoszenie systemowe w kolejnej linii poleceń, gdy są wymagane dodatkowe 
parametry 

 
 

Przykładowe wartości zmiennych systemowych wyświetlone poleceniem env są 
przedstawione na poniższym rysunku. 

 
 

 

Rysunek 22. Wyświetlone wartości zmiennych systemowych 

 
 

 
 

 

23

background image

Linuksowy system plików 

Domyślne zgłoszenie systemowe można zastąpić innym, zmieniając definicje zmiennych 

PS1 i PS2. Przy definiowaniu tych zmiennych można wykorzystać symbole zestawione  

w poniższej tabeli. Symbole w definicji zmiennych PS1 i PS2 należy umieszczać  
w cudzysłowach. 

 
 

Tabela 3. Symbole stosowane w zgłoszeniu systemowym 

Symbol Znaczenie 

\! 

wyświetla numer polecenia w historii 

\# 

wyświetla kolejny numer aktualnego polecenia 

\$ 

wyświetla znak #, jeśli zalogowanym użytkownikiem jest root, znak $  

w pozostałych przypadkach 

\\ 

wyświetla znak \ 

\[ 

oznacza początek ciągu niewyświetlanych znaków 

\] 

oznacza koniec ciągu niewyświetlanych znaków 

\d 

wyświetla aktualną datę 

\h 

wyświetla nazwę hosta 

\n 

znak końca wiersza (złamanie linii) 

\nnn 

wyświetla znak o kodzie ósemkowym nnn 

\s 

wyświetla nazwę shella 

\t 

wyświetla aktualną godzinę 

\u 

wyświetla identyfikator użytkownika 

\W 

wyświetla ścieżkę do katalogu bieżącego 

\w 

wyświetla nazwę katalogu bieżącego 

 

 

Zdefiniowane zmienne systemowe mają zasięg lokalny, czyli są „widoczne” tylko  
w powłoce, w której zostały zdefiniowane. Uruchomienie innego programu lub skryptu 
generuje podpowłokę, w której nowo zdefiniowane zmienne nie będą już widoczne. By 
udostępnić zmienne dla wszystkich powłok (procesów), należy zmienną „wyeksportować” 

za pomocą polecenia export z nazwą zmiennej systemowej jako parametrem,  
np. export PS1. Do zdefiniowanych zmiennych można się odwoływać i wykorzystywać je 
w programach, poprzedzając ich nazwę znakiem $, na przykład polecenie echo $PATH 
wyświetli aktualną wartość zmiennej PATH, czyli ścieżkę przeszukiwania katalogów. Jak 
widać z przedstawionych przykładów nazwy zmiennych są zazwyczaj pisane wielkimi 
literami, ale oczywiście nie jest to konieczne. Zmienne systemowe są tradycyjnie 
oznaczane w ten sposób, ale użytkownik może zdefiniować dowolną zmienną, której 
nazwa jest pisana małymi literami, jak w poniższym przykładzie:  
 

 

24

background image

Linuksowy system plików 

zm1=nowa_zmienna  
export zm1 

 

 

Nowa zmienna systemowa o nazwie zm1 została zdefiniowana, wyeksportowana i jest 
dostępna dla wszystkich programów, gdyż jej wartość została wyświetlona poleceniem 

printenv. Należy zwrócić uwagę na to, że przy definiowaniu zmiennych po obu stronach 

znaku równości nie mogą wystąpić odstępy (spacje), co jest pokazane w pierwszej linii 
powyższego przykładu.  
 

Jedną z cech powłoki bash jest możliwość stosowania aliasów, czyli innych nazw poleceń. 
Komenda alias bez parametrów wyświetla zdefiniowane aliasy. 

 
 

 

Rysunek 23. Wyświetlanie aliasów poleceń 

 
 

Jak widać, w systemie zostały już wcześniej zdefiniowane pewne aliasy. Są to aliasy 
dostępne dla wszystkich użytkowników i są wpisane w pliku /etc/bashrc. Często 
wykonywane polecenia, np. zawierające długie nazwy katalogów, można łatwo 
przedefiniować na krótsze, jak w poniższym przykładzie: 
alias xxx='cd /usr/X11/lib/X11config' 

alias cp=’cp –i’ 
alias mv=’mv –i’ 

 

 

25

background image

Linuksowy system plików 

Przedefiniować również można polecenia. W powyższym przykładzie znane i często 

stosowane polecenia cp oraz mv zostały przedefiniowane tak, że będą działać w trybie 
interaktywnym, czyli żądać potwierdzenia skasowania istniejących plików, co nie jest 
domyślnym trybem działania tych poleceń. Należy zwrócić uwagę na to, że wokół znaku 
równości nie mogą wystąpić spacje
. Usuwanie aliasu jest realizowane poleceniem 

unalias zdefiniowany_alias. Przykłady definiowania i usuwania aliasów są pokazane 

na kolejnym rysunku.  

 
 

 

Rysunek 24. Przykłady definiowania i usuwania aliasów 

 
 
Polecenia wprowadzane przez użytkownika są zapisywane w pliku .bash_history, a liczbę 

linii tego pliku określa wartość zmiennej HISTSIZE. Domyślną wartością tej zmiennej jest 
1000, czyli system pamięta ostatnich tysiąc poleceń. Użytkownik może wywołać dowolne 
z poleceń wykonanych wcześniej, podając jego numer, początkowe znaki lub fragment 
polecenia (wzorzec) poprzedzone wykrzyknikiem, jak w poniższych przykładach: 
!5  — zostanie wykonane piąte polecenie w historii, 
!cat — zostanie wykonane wydane wcześniej polecenie zaczynające się od cat, 
!-8  — zostanie wykonane polecenie wydane osiem poleceń wcześniej. 

 

Linie poleceń uruchomionych wcześniej można łatwo edytować. Służy do tego polecenie 

fc. Uruchamia ono domyślny edytor (zazwyczaj vi) dla podanej linii. Parametry 

wywołania po polecenia fc są takie same jak przy wywoływaniu poleceń z historii 

 

26

background image

Linuksowy system plików 

opisanych powyżej. Poniżej jest pokazany przykład uruchomienia edytora historii 

poleceniem fc cat. Po zakończeniu edycji poprawione polecenie jest wykonywane. 

 
 

 

Rysunek 25. Przykład działania edytora historii poleceń 

 

27

background image

Linuksowy system plików 

5. Edytor

 

vi 

 
 

Parametry konfiguracyjne systemu Linux są zazwyczaj zapisane w plikach tekstowych, 
których edycja pozwala na zmiany konfiguracji i wprowadzanie modyfikacji. Każdy 
system operacyjny musi zapewniać podstawowe możliwości zapisania tekstu 
wprowadzonego z klawiatury. W zasadzie do tego celu nie jest potrzebny edytor, 
wystarczy wykorzystać możliwości terminala linuksowego. Przykład takiego wpisywania 
tekstu z klawiatury jest przedstawiony na poniższym rysunku. 

 
 

 

Rysunek 26. Przykład najprostszego edytora 

 
 
Jak widać polecenie cat nowyplik umożliwia wpisanie tekstu z klawiatury i zapisanie go 
w pliku. Nie jest możliwe poprawianie tekstu w taki sposób. Nieodłącznym składnikiem 
systemu UNIX i Linux jest edytor vi, który wbrew powszechnym opiniom o swojej 
prostocie ma bardzo szerokie możliwości edycji. Uruchomienia programu vi dokonuje się 
w terminalu, podając nazwę pliku jako parametr, ale nie jest to konieczne.  

 

 

28

background image

Linuksowy system plików 

 

Rysunek 27. Praca z edytorem vi 

 

 
Powyżej jest pokazany widok ekranu po wydaniu polecenia vi nowyplik. Edytor vi może 
pracować w dwóch trybach — wydawania poleceń i edycji tekstu. Domyślnym trybem 
pracy po uruchomieniu edytora jest wydawanie poleceń. Na tym ekranie możliwe jest 
tylko przesuwanie kursora po tekście, nie jest możliwe wpisywanie tekstu. Edytor pracuje 
w trybie poleceń, które są najczęściej pojedynczymi znakami, nie zaś w trybie edycji. 
Przejście w tryb edycji jest możliwe po wpisaniu jednego z poleceń (czyli litery): 

a — przechodzi do trybu edycji w miejscu za kursorem, 

A — przechodzi do trybu edycji na końcu linii, 

i — przechodzi do trybu edycji w miejscu przed kursorem, 

I — przechodzi do trybu edycji na początku linii, 

o — wstawia nową linię pod kursorem i przechodzi do trybu edycji w tej linii, 

O — wstawia nową linię nad kursorem i przechodzi do trybu edycji w tej linii. 

 
 

 

29

background image

Linuksowy system plików 

 

Rysunek 28. Ekran edytora vi w trybie wpisywania tekstu 

 

 
Praca edytora w trybie edycji jest sygnalizowana napisem INSERT wyświetlanym  
w najniższej linii ekranu. 
 
W trybie wydawania poleceń następujące polecenia pozwalają na usuwanie znaków: 

x — usuwa znak wskazywany przez kursor, 

X — usuwa znak przed wskazywanym przez kursor, 

dw — usuwa słowo wskazywane przez kursor, 

dd — usuwa linię wskazywaną przez kursor, 

D — usuwa znaki od kursora do końca linii, 

d0 — usuwa znaki od kursora do początku linii. 

 

Edytor vi pozwala również na zaznaczanie, kopiowanie, usuwanie i wklejanie fragmentów 
tekstu. Tryb zaznaczania włącza się poleceniem v (w trybie poleceń, w przeciwnym 
wypadku zostanie napisana litera „v”). Po zaznaczeniu tekstu można użyć jednego  
z poleceń: 

d — usuwa zaznaczony tekst i przenosi do bufora, 

y — kopiuje zaznaczony tekst do bufora, 

U — zamienia małe litery na duże, 

u — zamienia duże litery na małe. 

 

Do wstawiania tekstu z bufora służy polecenie p. 

 

30

background image

Linuksowy system plików 

 
Przejście z trybu edycji do trybu wydawania poleceń następuje po naciśnięciu klawisza 
Esc. W tym trybie są dostępne tzw. liniowe polecenia edycyjne, bardzo ważne, gdyż 
umożliwiają zapis danych. Te polecenia są poprzedzane dwukropkiem, a ich działania są 
następujące: 

:w — zapisuje dane na dysku i kontynuuje edycję, 

:x — zapisuje dane na dysku i kończy pracę edytora, 

:r nazwa_pliku — wstawia plik tekstowy, 

:q — kończy pracę edytora bez zapisywania danych. 

 
 

 

Rysunek 29. Przykładowy komunikat edytora vi 

 
 

Jak widać z powyższego rysunku edytor nie zakończy pracy, jeśli dane zostały zmienione 
od czasu ostatniego zapisu na dysku. Można jednak wymusić odrzucenie wprowadzonych 

zmian, kończąc polecenie wykrzyknikiem, czyli :q!. Wtedy użytkownik świadomie nie 
zapisze zmienionych danych. Edytor vi nie jest lubiany przez użytkowników systemu 
Linux. Jest to jednak standard wywodzący się z UNIX-a i występuje we wszystkich 
odmianach i dystrybucjach Linuksa. Powyżej zostały zebrane jedynie niezbędne 
informacje wystarczające do pracy z tym edytorem, ale jego możliwości są zazwyczaj 
niewykorzystywane. Jednak podstawy posługiwania się nim w Linuksie są niezbędnym 
elementem kursu. 
 

 

31

background image

Linuksowy system plików 

Innym — również popularnym edytorem — jest edytor pico. Widok ekranu z wczytanym 
tym samym plikiem, co w edytorze vi jest przedstawiony na rysunku poniżej. Polecenia, 
które są wyświetlane u dołu ekranu, są wywoływane przez naciśnięcie kombinacji 
klawiszy Ctrl + litera

 
 

 

Rysunek 30. Praca z edytorem pico 

 
 
Obsługa najważniejszych poleceń jest następująca: 
Ctrl + G — wyświetla pomoc do programu, 
Ctrl + X — koniec pracy z edytorem, należy podać nazwę zapisywanego pliku  
(jak na rysunku), 

 
 

 

32

background image

Linuksowy system plików 

 

33

 

Rysunek 31. Zapisywanie pliku w edytorze pico 

 
 

Ctrl + J — wyrównanie tekstu, 
Ctrl + R — wczytanie pliku, 
Ctrl + W — poszukiwanie ciągu znaków. 

 

Znajomość podstawowych zasad pracy z systemem Linux, a przede wszystkim z jednym 
z edytorów, pozwoli na taką pracę w systemie, że studenci będą mogli podjąć próby 
dostosowywania komputera pracującego z tym systemem operacyjnym do swoich 
potrzeb i oczekiwań. Interfejs znakowy, jaki jest dotychczas wykorzystywany, jest 
niezbędny do postawienia pierwszych kroków przy pracy w tym systemie. 
 


Document Outline