table of contents
CONFIG(1) | OpenSSL | CONFIG(1) |
NAZWA¶
config - biblioteka plików konfiguracyjnych OpenSSL CONF
OPIS¶
Biblioteka OpenSSL CONF służy do wczytywania plików konfiguracyjnych. Obsługuje główny plik konfiguracyjny OpenSSL openssl.cnf oraz kilka innych, jak na przykład pliki SPKAC i pliki rozszerzenia certyfikatów dla narzędzi x509.
Plik konfiguracyjny jest podzielony na sekcje. Każda z nich rozpoczyna się wierszem [ nazwa_sekcji ] i kończy wraz z początkiem następnej sekcji lub wraz z końcem pliku. Nazwa sekcji może się składać ze znaków alfanumerycznych oraz znaków podkreślenia.
Pierwsza sekcja pliku konfiguracyjnego ma specjalne znaczenie i określana jest jako sekcja domyślna. Zwykle nie ma nazwy i znajduje się na początku pliku, przed pierwszą nazwaną sekcją. Nazwy są wyszukiwane najpierw w nazwanych sekcjach (o ile takie są), a następnie w sekcji domyślnej.
Środowisko jest mapowane na sekcję o nazwie ENV.
Komentarze należy poprzedzać znakiem #.
Każda sekcja pliku konfiguracyjnego składa się z par nazwa/wartość w formie nazwa=wartość.
Łańcuch nazwa może zawierać dowolne znaki alfanumeryczne jak również niektóre znaki przestankowe, takie jak . , ; oraz _.
Łańcuch wartość składa się z ciągu znaków pomiędzy znakiem = a końcem wiersza, z wyłączeniem wszelkich spacji poprzedzających oraz końcowych.
Łańcuch wartości podlega przesłanianiu zmiennych. Robi się to poprzez użycie formy $zmienna lub ${zmienna}: zastępuje to wartość nazwanej zmiennej w bieżącej sekcji. Można także zastąpić wartość z innej sekcji przy użyciu formy $sekcja::nazwa lub ${sekcja::nazwa}. Zmienne środowiskowe przesłania się za pomocą konstrucji ENV::nazwa. W ten sam sposób można także definiować zmienne środowiskowe, jeśli tylko program wyszukuje je za pośrednictwem biblioteki CONF zamiast bezpośredniego wywołania getenv().
Można cytować poszczególne znaki poprzez dowolny znak cytowania lub znak \. Przez postawienie znaku \ na końcu wiersza łańcuch wartość można rozciągać na kilka wierszy. Tę samą rolę pełnią też sekwencje \n, \r, \b oraz \t.
UWAGI¶
Jeżeli plik konfiguracyjny stara się przesłonić nieistniejącą zmienną, podnoszony jest znacznik błędu i plik nie zostaje wczytany. Może się to stać podczas próby przesłaniania nie zdefiniowanej zmiennej środowiskowej. Na przykład domyślny plik konfiguracji OpenSSL używał wartości HOME, która może nie istnieć w systemach innych niż uniksy.
Można to obejść za pomocą sekcji domyślnej, w której znajdą się domyślne wartości: jeżeli wśrod zmiennych środowiska nie znajdzie się danej wartości, zostanie użyta właśnie wartość domyślna. Aby ten sposób działał właściwie, wartość domyślna musi zostać zdefiniowana w pliku wcześniej niż przesłonięcie. Przykładów poszukaj w sekcji PRZYKŁADY.
Jeśli ta sama wartość jest zdefiniowana więcej niż jeden raz, wszystkie wystąpienia poza ostatnim zostaną pominięte bez komunikatu o błędzie. W sytuacjach takich jak DN to samo pole może się pojawić wielokrotnie - rozwiązaniem jest zwykle pomijanie znaków przed początkową ., na przykład:
1.OU="Moje pierwsze OU" 2.OU="Moje Drugie OU"
PRZYKŁADY¶
Oto przykładowy plik konfiguracyjny zawierający niektóre z wymienionych wyżej elementów:
# To jest sekcja domyślna.
HOME=/temp RANDFILE= ${ENV::HOME}/.rnd configdir=$ENV::HOME/config
[ sekcja_pierwsza ]
# Jesteśmy w pierwszej sekcji.
# Cytowanie pozwala na używanie spacji poprzedzających i końcowych cokolwiek = " dowolna nazwa zmiennej "
tekst = Łańcuch który może \ rozciągać się na kilka wierszy \ przy użyciu \\ na końcu wiersza
komunikat = Witaj świecie\n
[ sekcja_druga ]
pozdrowienia = $sekcja_pierwsza::komunikatNastępny przykład pokazuje jak bezpiecznie przesłaniać zmienne środowiskowe.
Załóżmy, że chcemy aby zmienna tmpfile wskazywała nazwę pliku roboczego. Katalog, w którym ten plik się znajduje, można odczytać ze zmiennych środowiskowych TEMP lub TMP, lecz mogą one nawet nie mieć nadanej żadnej wartości. Jeśli po prostu użyjemy nazw zmiennych środowiskowych i okaże się, że one nie istnieją, to podczas próby otwarcia pliku wystąpi błąd. Przy wykorzystaniu sekcji domyślnej możemy spowodować, że najpierw będzie poszukiwana zmienna TEMP, następnie TMP, a jeśli żadna z nich nie będzie zdefiniowana, zostanie użyty katalog /tmp.
TMP=/tmp # Powyższa wartość jest używana kiedy TMP nie ma w środowisku TEMP=$ENV::TMP # Powyższa wartość jest używana kiedy TEMP nie ma w środowisku tmpfile=${ENV::TEMP}/tmp.filename
BŁĘDY¶
W obecnej chwili nie ma sposobu na wykorzystanie znaków w zapisie ósemkowym \nnn. Wszystkie łańcuchy są zakończone znakiem braku informacji, więc te znaki nie mogą pojawiac się w wartościach.
Cytowanie nie jest całkiem porządne: po użyciu sekwencji w rodzaju \n nie można więcej używać cytowania w tym samym wierszu.
Pliki są wczytywane tylko w jednym przebiegu. Z tego powodu przesłanianie zmiennych działa tylko jeżeli są one zdefiniowane we wcześniejszych wierszach danego pliku.
ZOBACZ TAKŻE¶
OD TŁUMACZA¶
Tłumaczenie Daniel Koć <kocio@linuxnews.pl> na podstawie strony podręcznika systemowego config(1) 0.9.6c, 15.04.2002.
0.9.6c | 3rd Berkeley Distribution |