8.3 Pliki konfiguracyjne
Podstawowe wiadomości o plikach konfiguracyjnych w Linuksie:
- Pliki konfiguracyjne Linuksa to pliki tekstowe.
- Na końcu każdego pliku konfiguracyjnego powinien być zawsze pozostawiony jeden wiersz pusty.
- Wszystko, co znajduje się po znaku # jest uważane za komentarz i nie jest brane pod uwagę.
- Pliki tekstowe pod Linuksem to nie to samo, co pliki tekstowe pod Windows. Różnią się one znakiem
końca wiersza. Windows koniec wiersza koduje jako CR+LF natomiast Linux jako LF. Aby przenosić pliki
tekstowe między tymi systemami możemy użyć np. programu EmEditor, który znajdziecie
tutaj.
- większość plików konfiguracyjnych znajduje się w katalogu /etc
Ponieważ plików konfiguracyjnych w Linuksie jest od groma a praktycznie każdy z nich
opisany jest na stronach odpowiedniego manuala to po informacje o nich odsyłam was właśnie tam.
8.3.1 Opis plików konfiguracyjnych
/etc/fstab
Plik ten opisałem dokładnie w artykule Dodawanie kolejnego dysku HDD
/etc/group
Plik zawiera informacje o grupach użytkowników w systemie. Każda linia jest formatu:
identyfikator_grupy : zaszyfrowane_hasło : numer_grupy : lista_użytkowników
Jeśli pole hasło jest puste oznacza to, że żadne dodatkowe hasło nie jest potrzebne.
/etc/inittab
Plik ten opisałem dokładnie w artykule Start systemu - krok po kroku
/etc/issue
Plik ten zawiera tekst wyświetlany przed linią zachęty w momencie rejestrowania się do systemu.
/etc/motd
Zawartość tego pliku jest wyświetlana zaraz po udanym zarejestrowaniu
się do systemu przed uruchomieniem interpretatora poleceń.
/etc/mtab
Plik zawiera dane o aktualnie przyłączonych systemach plików. Są to
wiadomości zmieniane dynamicznie przez komendy mount i unmount. Format danych jest taki
sam jak w pliku /etc/fstab.
/etc/nologin
Obecność tego pliku sprawia, że jedynie administrator może się
zalogować do systemu.Gdy ktoś inny spróbuje się zarejestrować zostanie mu wyświetlona
zawartość tego pliku i operacja zakończy się niepowodzeniem.
Tips&Tricks #13
/etc/passwd
Plik ten opisałem w rozdzale
11.5 Zmiana domyślnej powłoki dla niektórych użytkowników.
/etc/profile
Plik zawiera ustawienia zmiennych środowiskowych przy starcie systemu.
/etc/rc.d
Katalog zawierający skrypty uruchamiające i zatrzymujące poszczególne
usługi i demony podczas przejść pomiędzy różnymi poziomami startu. Plik ten opisałem
szczegółowo w artykule Start systemu - krok po kroku
/etc/rc.d/rc.local
Skrypt wykonywany jako ostatni przy starcie systemu.
Może uruchamiać różne dodatkowe procesy.
/etc/securetty
Plik zawierający nazwy terminali, z których administrator może się zalogować do systemu.
/etc/shells
Plik zawierający pełne ścieżki dostępu do interpretatorów poleceń dostępnych w systemie (tzw. powłok).
/etc/syslog.conf
Plik konfiguracyjny programu syslogd podający gdzie mają być kierowane informacje
( logi ) z różnych części systemu i demonów działających w tym systemie.
W linii podane jest najpierw skąd i o jakim priorytecie informacje maja być zapisywane,
po czym podana jest pełna ścieżka do pliku, w którym te informacje mają zostać zgromadzone.
Zamiast ścieżki do pliku może tu być ewentualnie podany adres innego komputera lub identyfikator
użytkownika, który miałby te informacje otrzymywać.
8.4 Prawa dostępu do plików i katalogów
Każdy plik w systemie Linux posiada przyporządkowane uprawnienia dostępu:
- read acces ( czytanie ) - r
- write acces ( pisanie ) - w
- execute acces ( wykonywanie ) - x
uprawnienia te można przyporządkować do trzech rodzajów użytkowników dla każdego pliku:
- owner ( właściciel pliku )
- group ( grupa do której należy właściciel )
- others ( inni użytkownicy )
Daje nam to dziewięć pozycji dla każdego pliku ( 3 prawa x 3 grupy ). Plus jedna
pozycja na początku określająca rodzaj pliku. W systemie Linux mamy siedem rodzajów
plików:
"-" normalny plik,
"d" - katalog,
" l" - link, dołączenie symboliczne,
"b" - urządzenie blokowe,
"c" - urządzenie znakowe,
"s" - gniazdo unixowe,
"f" - kolejka FIFO
(First In First Out).
Jak widać na rysunku uprawnienia mają również odpowiednik cyfrowy, który wyjaśnie za chwilę.
Prawa dostępu do plików możemy zobaczyć wydając polecenie ls -l. Weźmy taki przykład:
# ls -l
-rw-r--r-- 1 root daemon 1852 Sep 17 16:25 file1
-rw-r--r-- 1 root daemon 408 Jul 29 08:30 file2
drwxrwxrwx 2 root wheel 2048 Apr 2 2003 dokumenty/
lrwxrwxrwx 1 root wheel 9 Sep 15 11:17 bin -> ./usr/bin/
Plik file1 ma prawa dostępu "-rw-r--r-- 1 root daemon".
Wynika z tego że właścicielem pliku jest root, plik należy do grupy
daemon, właściciel ma prawo czytania i zapisu do pliku, grupa oraz wszyscy inni
użytkownicy mają prawo do czytania z tego pliku. Patrząc na rysunek powyżej zapis cyfrowy uprawnień dla tego
pliku wyglądałby tak: 0644 ( 400 + 200 + 40 + 4 = 644).
Pewnie zastanawiasz się czemu nie napisałem po prostu 644 tylko 0644. Zero na
początku świadczy, że plik nie ma przyporzadkowanych dodatkowych praw. Ale o tym za chwile.
Litery "d" i "l"
w uprawnieniach do plików dokumenty oraz
bin świadczą, że jest to odpowiedznio katalog i dołączenie
symboliczne do pliku ./usr/bin.
Żeby trochę skomplikować to jest mała różnica między interpretacją praw dostępu
do katalogów i plików. Różnice przedstawiłem w poniższej tabeli.
| |
Pliki |
Katalogi |
Read |
Zawartość pliku może być czytana |
Da się wyświetlić listę plików w katalogu przy pomocy komandy ls (bez dodatkowych opcji) |
Write |
Da się pisać do pliku, kasować, zmieniać nazwę |
Zawartość katalogu może być modyfikowana. Można tworzyć nowe
pliki i katalogi, zmieniać nazwy istniejącym, kasować pliki i katalogi
|
Execute |
Plik może być uruchamiany (program, skrypt) |
Można "wejść" do katalogu. Lub mówiąc dokładniej można go uczynić katalogiem bieżącym |
Zauważ, że można uruchomić, przeczytać plik znajdujący się w katalogu gdy ma się tylko prawo do czytania (read) tego katalogu (jeśli tylko znamy nazwę pliku, który
chcemy uruchomić lub przeczytać).
Prócz powyższych praw istnieją również prawa dostępu nazywane
set UID, set GID
i sticky bit. Mają one następujące znaczenie:
- SUID lub setuid: zmień ID użytkownika
przy uruchamianiu. Jeśli plik posiada prawo setuid to podczas uruchamiania będziepracował
z prawami użytkownika do którego ten plik należy.
Jeśli plik ma ustawione prawo setuid, należy do root i ma prawo wykonywalny
to po uruchomieniu będzie działał jako proces należący do root. Takie prawo ma np. polecenie
passwd, które pozwala normalnemu użytkownikowi na zmianę hasła.
Polecenie to musi pracować z uprawnieniami root ponieważ by zmienić hasło musi zmienić piki
/etc/passwd i /etc/shadow do których
dostęp ma tylko root.
- SGID lub setgid: zmień grupę GID użytkownika
przy uruchamianiu. Podobnie jak wyżej tylko odnośnie grupy do której należy program. Jeśli ustawimy SGID dla katalogu to wszystkie tworzone w nim pliki będą należeć do tej samej grupy co ten katalog, niezależnie od tego do jakiej grupy należy tworzący je użytkownik.
- Sticky bit. W folderze z ustawionym
prawem sticky bit możesz kasować tylko pliki należące do ciebie - nawet jeśli
masz prawo pisania do tego katalogu.
To prawo ma ustawiony np. katalog /tmp.
Każdy może wrzucić tam jakieś pliki a później jeskasować, ale tylko jeśli należą do niego.
Polecenie ls -l wyświetla informacje o tych prawach w następujący sposób:
SUID |
Jeśli ustawione pojawia się jako s lub S w części odpowiadającej za prawa właściciela ( na miejscu x )
-rws------ prawo do uruchomienia i suid ustawione jednocześnie
-r-S------ prawo uruchomienia nie ustawione natomiast ustawione prawo suid
|
SGID |
Jeśli ustawione pojawia się jako s lub S w części odpowiadającej za prawa grupy ( na miejscu x )
-rwxrws--- prawo do uruchomienia i sgid ustawione jednocześnie
-rwxr-S--- prawo uruchomienia nie ustawione natomiast ustawione prawo sgid
|
Sticky |
Jeśli ustawione pojawia się jako t lub T w części odpowiadającej za prawa innych użytkowników ( na miejscu x )
-rwxrwxrwt prawo do uruchomienia i sticky ustawione jednocześnie
-rwxrwxr-T prawo uruchomienia nie ustawione natomiast ustawione prawo sticky
|
Liczbowa wartość praw SUID, SGID i Sticky reprezentowana jest w następujący sposób:
0 |
SUID, SGID i Sticky nie ustawione |
1 |
Sticky ustawione |
2 |
SGID ustawione |
3 |
SGID i Sticky ustawione |
4 |
SUID ustawione |
5 |
SUID i Sticky ustawione |
6 |
SUID i SGID ustawione |
7 |
SUID, SGID i Sticky ustawione |
Mając więc plik o prawach 4740 znaczy że:
- SUID jest ustawione
- Właściciel ma prawo do zapisu, odczytu i uruchamiania
- Grupa ma prawo do odczytu
- Wszyscy inni nie mają żadnych praw do pliku
Prawa do plików możemy modyfikować przy pomocy poleceń chmod oraz
chown:
# chown root.users plik1 plik2 plik3
# chmod 4740 plik1 plik2 plik3
Pierwsze polecenie zmieni właściciela pliku(ów) na root i grupę na users a drugie
przyzna prawa dostępu do pliku(ów) jak w poprzednim przykładzie.
W poleceniu chmod możemy również używać literek odwzorowywyjących prawa dostępu:
# chmod ugoa+-=rwx <plik>
gdzie: u - właściciel pliku,
g - grupa,
o - wszyscy inni,
a - wszyscy,
- (minus) - zabiera,
+ - daje,
= - czyni podane prawa jedynymi prawami dla pliku. Kilka przykładów:
# chmod a-w nazwa_pliku
# chmod g-x nazwa_pliku
# chmod o+w nazwa_pliku
# chmod g=r nazwa_pliku
# chmod og-r nazwa_pliku
[ Poprzednia ]
[ Spis treści ]
[ Następna ]