[OpenBSD]

[Spis treści] [Sekcja 7 - Ustawienia klawiatury i wyświetlania] [Sekcja 9 - Migracja na OpenBSD]

8 - Pytania ogólne


Spis treści


8.1 - Zapomniałem hasła superużytkownika... Co robić?

Zasadniczo proces przywracania hasła root'a sprowadza się do uruchomienia systemu w trybie jednoużytkownikowym, podmontowaniu odpowiednich partycji (/ and /usr), oraz wywołaniu passwd(1) do zmiany hasła superużytkownika. Następnie należy wykonać restart i można się logować normalnie.

Szczegółowy opis:

Jeżeli nie jest to komputer osobisty, prawdopodobnie powinieneś używać sudo(8) aby nadawać różnym (zaufanym) użytkownikom, możliwość wykonywania poleceń root'a.

"Czekaj. To wyglądało zbyt prosto! Nie jest to szczególnie bezpieczne!" W sytuacji gdy atakujący ma fizyczny dostęp do twojego systemu, wygrał, niezależnie od zainstalowanego systemu operacyjnego. Istnieją sposoby na wymuszenie podawania hasła root'a w trybie jednoużytkownikowym (zobacz: ttys(5)), oraz wyeliminowanie pauzy dla i386/amd64 (zobacz: boot.conf), jednak prawdę mówiąc obejście tych zabezpieczeń jest także całkiem proste (Jedna z możliwości: boot z dyskietki lub CDROM-u, edycja lub nadpisanie pliku z hasłami). Możesz probować zabezpieczyć się i przed tym, jednak wówczas ktoś może wyjąc dysk z twojego komputera. Utrudnianie zarządzania maszyną nie jest prawdziwym bezpieczeństwem i jeżeli nie zabezpieczasz fizycznego dostepu do maszyny, nie masz prawdziwego bezpieczeństwa.

Uwaga: większość systemów "zdalnie zarządzanych" udostępnia większość z funkcjonalności fizycznego dostępu do komputera, i to także powinno być rozważone. Nie wmawiaj sobie że system jest bezpieczny jeżeli istnieje sposób aby atakujący dostał się do konsoli, użył wirtualnej dyskietki lub go zrestartował. Mogą równie dobrze mieć fizyczny dostęp do systemu. System zarządzania konsolami prawdopodobnie nie jest tak bezpieczny jak OpenBSD...

8.2 - X Window nie uruchamia się; zamiast tego wyświetlanych jest mnóstwo komunikatów o błędach

Częstym powodem problemów z serwerem X jest ustawienie machdep.allowaperture w sysctl(8). Ponieważ w OpenBSD jest to domyślnie wyłączone, jest bardzo prawdopodobne, że rozwiąże to problem.

Będziesz musiał wyedytować plik /etc/sysctl.conf i ustawić machdep.allowaperture=2 (lub 1, w zależności od twojej architektury). Umożliwi to X-om dostęp do sterownika xf86(4), po ponownym uruchomieniu systemu. Dostęp do tej zmiennej nie jest możliwy po uruchomieniu. Można także ustawić ją podczas instalacji, odpowiadając "Y" gdy zostaniesz zapytany o przewidywane korzystanie z X Window System.

OpenBSD wymaga, by dostęp do sterownika aperture był aktywowany w platformach alpha, amd64, i386, macppc oraz sparc64, aby kontrolować dostęp do kart graficznych. Inne platformy korzystają z bezpieczniejszej metody obsługi systemu graficznego, i tego nie wymagają (nie posiadają także tego w jądrze). Jeżeli nie przewidujesz korzystania z X-ów w twoim systemie, zalecane jest nie włączanie sterownika aperture.

Więcej informacji na temat konfiguracji i użytkowania X na twojej platformie znajdziesz w pliku /usr/X11R6/README twojego systemu.

8.3 - Czy mogę korzystać z języka programowania "L" w OpenBSD?

Możesz znaleźć wsparcie dla wielu powszechnych języków programowania albo w systemie bazowym (a mówiąc dokładniej w pakietach baseXX.tgz oraz compXX.tgz), lub w systemie portów i pakietów. Zalecane jest abyś zainstalował zestaw plików lub pakiet zawierający kompilator którego chcesz użyć zamiast kompilowania go ze źródeł. W przypadku niektórych kompilatorów, kompilacja ze źródeł wymaga sporych zasobów systemowych i nie jest zazwyczaj potrzebna, o ile nie masz specjalnych potrzeb lub porządany pakiet nie istnieje.

Zamieszczona poniżej tabela w zamierzeniu ma pokazać przegląd kompilatorów dla różnych języków, gdzie możesz znaleźć kompilator, oraz czy istnieją jakieś ograniczenia lub zagadnienia z nim związane. Niektóre z nich są ograniczone do konkretnych platform. Możesz także zobaczyć podobne zestawienie przeglądając rezultat przeszukiwania drzewa portów pod kątem wpisów nie zawierających "Archs", lub poprzez ręczne przeszukanie pliku Makefile drzewa portów. W drugim przypadku, szukaj linii zawierających ONLY_FOR_ARCHS, NOT_FOR_ARCHS, BROKEN, itd.

Uwaga: Aby można było łatwiej korzystać z tabeli, jest ona posortowana alfabetycznie bez rozpatrywania różnych kategorii języków programowania. Nie jest to pełna lista wszystkiego co jest dostępne, lub może być wykorzystane w OpenBSD. Jeżeli uważasz że istnieją nieścisłości lub pewne zagadnienia nie wspomniane w tabeli możesz to zgłosić.

JęzykLokalizacjaUwagi
Awk base42.tgz, awk(1)
lang/gawk GNU awk
C, C++ comp42.tgz, gcc(1) Kompilatory C/C++ zawarte w systemie bazowym zostały poddane audytowi i posiadają kilka rozszerzeń bezpieczeństwa (tj. ProPolice) włączonych domyślnie. Prosimy zobacz gcc-local(1) po więcej szczegółów. Będą także emitowały ostrzeżenia w sytuacjach wykorzystania niebezpiecznych funkcji takich jak sprintf(), strcpy(), strcat(), tmpnam, itd. Zauważ, że większość platform korzysta z gcc 3.3.5, lecz niektóre z 2.95.3.
C, C++ lang/gcc Kompilatory te nie przechodzą audytu bezpieczeństwa i nie zawierają rozszerzeń w zakresie bezpieczeństwa jak te w systemie bazowym. Kompilatory te nazywają się egcc, eg++, itd, aby uniknąć zamieszania z ich odpowiednikami w systemie bazowym.
Caml lang/ocaml Objective Caml
COBOL lang/open-cobol
Erlang lang/erlang
Fortran comp42.tgz, g77(1) Wspierany jest tylko Fortran 77.
lang/gcc Wspierany jest także Fortran 95 poprzez egfortran w gcc 4.0 i wyższych. Ten nowy kompilator jest dostępny jako podpakiet gcc (g95).
Haskell lang/ghc
lang/nhc98
Java devel/jdk Sun JDK - nie są dostępne pakiety; zobacz sekcję dotyczącą kompilacji poniżej.
lang/classpath podstawowe biblioteki dla Javy
lang/kaffe
lang/jikes Szybki kompilator, działa dobrze. Wymaga "run-time jar", wersja bytecode wszystkich standardowych API.
devel/eclipse Duży IDE; działa z Sun JDK.
Lisp lang/clisp
Lua lang/lua Dodatkowe biblioteki Lua i pomocnicze narzędzia są dostepne w drzewie portów.
Perl base42.tgz, perl(1) Wiele modułów Perl'a jest dostępna w drzewie portów, zatem zacznij szukać tam, zanim rozpoczniesz instalację modułów z CPAN.
PHP www/php4 Dostępnych jest wiele podpakietów dla różnych modułów PHP.
www/php5
Prolog lang/gprolog Kompilator GNU Prolog.
lang/swi-prolog Środowisko SWI-Prolog.
Python lang/python Inne porty korzystają domyślnie z Python-a 2.4.
Ruby lang/ruby
Scheme lang/chicken
lang/scheme48
lang/scm
shells/scsh
Smalltalk lang/squeak
Tcl lang/tcl

Budowanie Sun JDK

Ze względu na restrykcyjną licencję SCSL, OpenBSD nie może dostarczać binarnych pakietów dla JDK. Oznacza to że będziesz zmuszony zbudować je z portów. Zwracamy uwagę, że do tego celu wymagana jest duża ilość pamięci RAM by kompilacja zakończyła się sukcesem.

Porty JDK znajdują się w podkatalogu devel/jdk drzewa portów. Możesz wybierać pomiędzy różnymi wersjami, każda znajduje się w osobnym podkatalogu. Gdy wpiszesz make pojawi się wiadomość prosząca się o ręczne pobranie plików źródłowych ze stony Sun'a. Zanim to zrobisz, będziesz się musiał zarejestrować na tej stronie, i wyrazić zgodę na warunki licencji. Z tego właśnie powodu nie może nastąpić automatyczne pobranie.

Gdy już zdobędziesz niezbędne pliki dystrybucyjne i zestaw łat, skopiuj je do katalogu /usr/ports/distfiles. Potrzebne bedą także zainstalowane X-y. Rozpocznij tworzenie wydając polecenie make w odpowiednim podkatalogu drzewa portów.

JDK wymaga działającego kompilatora Java 2 jako podstawy do kompilacji. Z tego powodu, od wersji OpenBSD 4.0, port JDK 1.5 korzysta z kaffe, pozwalając na korzystanie z JDK 1.5 na platformach i386 i amd64, a także redukując czas kompilacji. Jeżeli czujesz że to nie jest fair, powinieneś spytać firmę Sun, dlaczego nie dostarczają natywnej wersji dla OpenBSD. Emulacja linuksa w OpenBSD jest ograniczona do systemów i386, zatem starsze wersje JDK skompilują się tylko na platformie i386. Budowa portów powinna zadbać o zainstalowanie właściwych plików i ustawienie kern.emul.linux=1. Więcej informacji dotyczącej emulacji linuksa znajdziesz na stronie manuala compat_linux(8), a także w FAQ 9 - Uruchamianie aplikacji linuksowych w OpenBSD. Zwróć uwagę, że emulacja linuksa jest potrzebna tylko podczas budowy JDK, która daje natywną wersję JDK dla OpenBSD. Nie potrzebujesz emulacji linuksa by pracować z natywną wersją JDK.

Po wielu godzinach kompilacja się zakończy. Aby zainstalowac JDK po prostu wpisz make install.

W sytuacji w której otrzymasz błąd podobny do: "Could not reserve enough space for object heap", spróbuj zwiększyć limit pamięci dla procesów korzystając z wbudowanego polecenia powłoki ulimit z flagą -d.

Inne narzędzia rozwojowe

Dodatkowo, istnieje znacznie więcej narzędzi rozwojowych dostępnych w systemie bazowym lub poprzez system portów i pakietów. Kilka przykładów:

8.4 - Co to są porty?

Proszę przeczytaj FAQ 15, Praca z portami.

8.5 - Co to są pakiety?

Proszę przeczytaj FAQ 15, Zarządzanie pakietami.

8.6 - Czego używać - portów czy pakietów?

Proszę przeczytaj FAQ 15.

8.8 - Czy można wykorzystać stację dyskietek, która nie była podłączona podczas rozruchu systemu?

Konieczne będzie takie skonfigurowanie jądra żeby zakładał, że stacja dysków jest przyłączona, nawet jeśli nie zostanie ona wykryta przy starcie systemu. Można to osiągnąć przez ustawienie flagi na wartość 0x20 w przy urządzeniu fdc(4). Przydatny może być tutaj User Kernel Config lub po prostu ustawienie tej flagi na stałe podczas konfiguracji jądra. Korzystając z UKC operacja ta będzie wyglądać tak:

# config -e -f /bsd
OpenBSD 4.2 (GENERIC) #375: Tue Aug 28 10:38:44 MDT 2007
    deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
Enter 'help' for information
ukc> change fd*
254 fd* at fdc0 drive -1 flags 0x0
change [n] y
drive [-1] ? ENTER
flags [0] ? 0x20
254 fd* changed
254 fd* at fdc0 drive -1 flags 0x20
ukc> q

Saving modified kernel.
#

8.9 - Program ładujący OpenBSD (tylko i386 i amd64)

Podczas rozruchu systemu OpenBSD pojawia się następujący znak zachęty.

boot>

Jeżeli użytkownik nie ingeruje, jądro zostanie załadowane automatycznie. Czasem jednak pojawiają się problemy, lub zachodzi konieczność podania specjalnych opcji dla jądra. W tym właśnie momencie można podać jedną z nich. Przygodę z programem ładującym najlepiej rozpocząć od lektury strony podręcznika systemowego boot(8). Zademonstrujemy tutaj tylko kilka najczęściej używanych polecenień programu ładującego.

Podczas normalnego startu, jeśli nie zostaną podane inne opcje, program ładujący próbuje uruchomić jądro skompilowane w pliku /bsd. Jeśli to się nie powiedzie poszuka pliku /obsd, a następnie /bsd.old. Można samodzielnie podać nazwę kernela, który ma zostać uruchomiony:

boot> boot hd0a:/bsd
lub
boot> b /bsd

Ten przykład zadziała jeśli kernel bsd będzie znajdował się na partycji 'a' na pierwszym twardym dysku rozpoznanym przez BIOS.

Oto krótka lista opcji, których można użyć podczas startu jądra OpenBSD.

Składnia dla polecenia boot jest następująca: boot [ plik_jądra [-acds]]

Szczegółowy opis zawiera strona podręcznika systemowego boot(8).

8.10 - OpenBSD i jednorazowe hasła S/Key

S/Key jest systemem uwierzytelniania "haseł jednorazowych" (ang. "one-time password"). Może być użyteczny dla osób które nie mają możliwości korzystać z szyfrowanych kanałów, chroniących ich transmisję uwierzytelniającą, tak jak to może być realizowane poprzez korzystanie z ssh(1).

OSTRZEŻENIE: Systemy jednorazowych haseł chronią tylko informacje autoryzacyjne. Nie przeszkodzą sieciowemu podsłuchiwaczowi w dostępie do prywatnych informacji. Ponadto, jeżeli łączysz się z zabezpieczonym systemem A, zalecane jest byś wykonywał to z innego zaufanego systemu B aby mieć pewność, że uzyskuje dostępu do twojego systemu A poprzez logowanie "keystrokes" i/lub podrabiając wejście i wyjście twojego terminala.

System S/Key generuje sekwencję jednorazowych haseł (jednokrotnego użycia) korzystając z secret passphrase oraz z "challenge" otrzymanym z serwera korzystając z bezpiecznej funkcji haszującej. System ten jest bezpieczny tylko w przypadku gdy przepustka (ang. "passphrase") nie jest przenoszona po sieci. Z tego powodu inicjalizacja lub zmiana twojej przepustki MUSI być wykonywana poprzez bezpieczny kanał, taki jak ssh(1) lub konsola.

Implementacja S/Key w OpenBSD pozwala na korzystanie z różnych jednokierunkowych funkcji mieszających. Dostępne są poniższe algorytmy:

Przygotowanie S/Key - Krok pierwszy

Aby rozpocząć prace z S/Key konieczny jest katalog /etc/skey. Jeżeli ten katalog nie istnieje, należy go utworzyć jako użytkownik root wydając polecenie:

# skeyinit -E

Po utworzeniu katalogu możesz zainicjować swój S/Key. Musisz to zrobić za pomocą polecenia skeyinit(1). Zaraz po uruchomieniu skeyinit(1) poprosi o podanie hasła i musisz to zrobić korzystając z bezpiecznego kanału, jak to zostało wyjaśnione powyżej! Program ci o tym przypomni. Z skeyinit(1), najpierw zostaniesz poproszony o podanie hasła do systemu. Jest to to samo hasło którego używasz do zalogowania się do systemu. Gdy juz zautoryzujesz się hasłem systemowym, zostaniesz zapytany o przepustkę S/Key. Nie jest to twoje hasło systemowe. Sekretna fraza powinna zawierać przynajmniej 10 znaków. Zaleca się użycie frazy zawierającej kilka wyrazów. Oto przykład wykorzystania skeyinit(1):

$ skeyinit

Reminder - Only use this method if you are directly connected
   or have an encrypted channel.  If you are using telnet,
   exit with no password and use skeyinit -s.
Password:
[Adding ericj with md5]
Enter new secret passphrase:
Again secret passphrase:

ID ericj skey is otp-md5 100 oshi45820             
Next login password: HAUL BUS JAKE DING HOT HOG

Bardzo ważną linią w powyższym przykładzie jest ID ericj skey is otp-md5 100 oshi45820. Zawiera ona wiele cennych informacji, których znaczenie opisano poniżej:

Ale najważniejsze jest hasło jednorazowe. Nowe hasło zawiera 6 krótkich wyrazów wraz ze spacjami i innymi znakami. Hasło jednorazowe wyświetlone przez skeyinit nie może być użyte do zalogowania (jest dla niego specjalne zastosowanie, patrz skeyinit(1)). Aby się zalogować, hasło jednorazowe dla odpowiedniego numeru sekwencyjnego, wyświetlonego przy procesie logowania, musi zostać obliczone przy pomocy skey(1). Następna sekcja pokaże jak to należy robić.

Wykorzystanie ważnego hasła jednorazowego do zalogowania

Posiadając juz hasło jednorazowe można zalogować się w systemie. Poniżej przedstawiony jest przykład sesji używającej S/Key przy logowaniu. Aby zalogować się z użyciem S/Key, należy dołączyć frazę :skey do nazwy użytkownika.

$ ftp localhost
Connected to localhost.
220 oshibana.shin.ms FTP server (Version 6.5/OpenBSD) ready.
Name (localhost:ericj): ericj:skey
331- otp-md5 96 oshi45820
331 S/Key Password:
230- OpenBSD 4.2 (GENERIC) #375: Tue Aug 28 10:38:44 MDT 2007
230-
230- Welcome to OpenBSD: The proactively secure Unix-like operating system.
230-
230- Please use the sendbug(1) utility to report bugs in the system.
230- Before reporting a bug, please try to reproduce it with the latest
230- version of the code.  With bug reports, please try to ensure that
230- enough information to reproduce the problem is enclosed, and if a
230- known fix for it exists, include that as well.
230-
230 User ericj logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.

Proszę zauważyć, że dołączono frazę ":skey" do nazwy użytkownika. Informuje to demona ftpd, że do autentykacji zostanie użyte hasło jednorazowe. Uważny czytelnik mógł dostrzec, że numer zmienił się na otp-md5 96 oshi45820. Stało się tak dlatego, że kilkakrotnie używano już haseł jednorazowych podczas logowania. Jak w takim razie zdobyć następne hasło jednorazowe po wykorzystaniu poprzedniego?

Gdy jesteś już zalogowany, proces login`u wydrukuje linię zawierającą wszystkie potrzebne informacje, dzięki którym możesz wygenerować od razu nowe jednorazowe hasło, poprzez skopiowanie i wklejenie, do wiersza poleceń:

otp-md5 96 oshi45820

Po wpisaniu swojej bezpiecznej frazy, zostanie wyświetlone twoje jednorazowe hasło, które możesz wykorzystać do zalogowania się poprzez S/Key. otp-md5 jest nie tylko opisem użytej funkcji haszującej, jest to także alternatywna nazwa dla komendy skey(1).

Jeśli jesteś już zalogowany i chcesz uzyskać jednorazowe hasło dla następnej sesji, skorzystaj z skeyinfo(1), który powie ci czego masz użyć przy następnym logowaniu. Na przykład tutaj, musiałem wygenerować kolejne hasło jednorazowe do kolejnego możliwego zalogowania się w przyszłości (pamiętaj że robię to poprzez bezpieczne połączenie).

$ skeyinfo
95 oshi45820

Jeszcze lepiej jest użyć komendy skeyinfo -v, która zwraca wynik możliwy do wykonania przez interpreter poleceń. Na przykład:

$ skeyinfo -v
otp-md5 95 oshi45820

Najprostszym sposobem na uzyskanie kolejnego hasła S/Key jest:

$ `skeyinfo -v`
Reminder - Do not use this program while logged in via telnet.
Enter secret passphrase:
NOOK CHUB HOYT SAC DOLE FUME

Proszę zwrócić uwagę na odwrócone, pojedyncze apostrofy zastosowane w powyższym przykładzie.

Często zdarza się, że uzyskanie bezpiecznego połączenia lub bezpiecznej lokalnej maszyny w danym momencie jest naprawdę kłopotliwe, a tworzenie S/Key podczas nieszyfrowanej sesji mija się z celem, czy można więc od razu utworzyć wiele haseł jednorazowych? Oczywiście można wywołać komendę skey(1) wraz z parametrem określającym ilość haseł do wygenerowania. Można je wydrukować i zabrać wszędzie tam gdzie będą potrzebne.

$ otp-md5 -n 5 95 oshi45820
Reminder - Do not use this program while logged in via telnet.
Enter secret passphrase:
91: SHIM SET LEST HANS SMUG BOOT
92: SUE ARTY YAW SEED KURD BAND
93: JOEY SOOT PHI KYLE CURT REEK
94: WIRE BOGY MESS JUDE RUNT ADD
95: NOOK CHUB HOYT SAC DOLE FUME

Hasło znajdujące się na samym dole tej listy powinno zostać użyte jako pierwsze, ponieważ numery sekwencyjne odliczane są do 100 do 1.

Użycie hasła jednorazowego w programach telnet(1) i ssh(1)

Stosowanie S/Key z usługami telnet(1) czy ssh(1) realizje się identycznie jak z ftp - należy dołączyć frazę ":skey" na końcu nazwy użytkownika. Na przykład:

$ telnet localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

OpenBSD/i386 (oshibana) (ttyp2)

login: ericj:skey
otp-md5 98 oshi45821
S/Key Password: SCAN OLGA BING PUB REEL COCA
Last login: Thu Apr  7 12:21:48 on ttyp1 from 156.63.248.77
OpenBSD 4.2 (GENERIC) #375: Tue Aug 28 10:38:44 MDT 2007

Welcome to OpenBSD: The proactively secure Unix-like operating system.

Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code.  With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.

You have mail.
$

8.12 - Czy OpenBSD obsługuje SMP?
(Symmetric Multi-Processor)

SMP jest obsługiwane na platformach OpenBSD/i386 i OpenBSD/amd64

W zestawach instalacyjnych jest dostarczane oddzielne jądro SMP "bsd.mp", które można wybrać w czasie instalacji. Zaleca się przetestowanie tego jądra przed uczynieniem go domyślnym jądrem poprzez zmianę jego nazwy na "bsd".

Mamy nadzieję wspierać inne systemy SMP w przyszłości. Na większości innych platform, OpenBSD będzie działać na maszynie wieloprocesorowej, ale tylko jeden z procesorów będzie wykorzystywany. Wyjątkiem jest platforma SPARC - OpenBSD/sparc może wymagać usunięcia dodatkowych modułów MBus, aby system w ogóle się uruchomił. Wieloprocesorowe maszyny SPARC64 będą działać pod warunkiem, że podstawowa wersja jest wspierana.

8.13 - Podczas próby użycia urządzeń tty wyświetlane są komunikaty o błędach

Dla połączeń inicjowanych przez maszynę z OpenBSD stosuje się urządzenia /dev/cuaXX. Urządzenia /dev/ttyXX przeznaczone są tylko do pracy jako terminale lub jako linie dial-in. We wcześniejszych wydaniach jądra możliwe było inne użycie urządzeń /dev/ttyXX, jednak ta opcja została usunięta.

Cytat z podręcznika systemowego cua(4):

Dla sprzętowych linii terminali szeregowych (dobrym przykładem będzie tu RS232) połączenia przychodzące (dial-in) i wychodzące (dial-out) obsługiwane są przez dwa różne urządzenia. Na przykład terminal /dev/tty03 posiada odpowiadające mu urządzenie /dev/cua03 służące do obsługi dial-out. Urządzenie /dev/cuaXX zazwyczaj posiada numer poboczny większy o 128 od przypisanego mu urządzenia /dev/ttyXX.Biorąc pod uwagę to, że urządzenia dial-in wymagają aktywności ze strony sprzętu aby móc zająć zasoby systemowe, w czasie oczekiwania urządzenia dial-out mogą bez przeszkód komunikować się z urządzeniami zewnętrznymi, na przykład z modemem. Oznacza to, że podczas oczekiwania procesu getty(8) aż ktoś z zewnątrz systemu połączy się z linią szeregową, można nawiązać połączenie dial-out (na tej samej sprzętowej linii szeregowej) bez powiadamiania getty(8) o tym fakcie. Po zakończeniu połączenia dial-out, getty(8) obsłuży przychodzące połączenie właściwie, nie zauważywszy nawet faktu, że urządzenie /dev/cuaXX było wykorzystywane.

8.14 - Jakie przeglądarki stron WWW są dostępne dla OpenBSD?

Tekstowa przeglądarka Lynx jest częścią bazowego systemu OpenBSD i posiada obsługę protkołu SSL. Inne przeglądarki znajdują się w drzewie portów, w tym:

Przeglądarki graficzne

Przeglądarki tekstowe

Większość wyżej wymienionych przeglądarek można znaleźć w kolekcji pakietów, w katalogu www. Wszystkie wymienione powyżej, po zainstalowaniu systemu portów, znajdują się w /usr/ports/www/. Bardzo często posiadają one także prekompilowane pakiety, dostępne na serwerach FTP i na płytach CD. Przeglądarki graficzne to najczęściej ogromne programy wymagające sporo czasu na pobranie źródeł i kompilację. Dlatego wszędzie tam, gdzie to możliwe, należy poważnie zainteresować się możliwością instalacji z pakietu.

8.15 - Jak używać edytora mg?

mg to mikroimplementacja edytora Emacs dostarczana wraz z OpenBSD. "Mikro" oznacza, że mg to bardzo mały edytor (trzeba pamiętać, że Emacs jest ogromną aplikacją). Podstawowa dokumentacja edytora mg znajduje się na stronie podręcznika systemowego mg(1) i w przewodniku, dostarczanym wraz z kodami źródłowymi. Więcej interesujących pytań (np.: "Gdzie jest klawisz Meta?") i odpowiedzi na nie znajduje się w Emacs FAQ.

mg jest niewielkim odpowiednikiem edytora Emacs. W praktyce znaczy to, że posiada wiele opcji edycyjnych jak Emacs 17, jednak nie zawiera dodatkowych udogodnien edytora (takich jak obsługa poczty elektronicznej, grup dyskusyjnych, a także tryb pracy dla języków Lisp, C++, Lex, Awk, Java, ...).

8.16 - ksh nie czyta mojego pliku .profile!

Prawdopodobną przyczyną ignorowania przez ksh(1) pliku .profile może być jeden z dwóch powodów:

8.17 - Dlaczego moje zmiany w pliku /etc/motd są nadpisywane?

Plik /etc/motd jest modyfikowany podczas każdego startu systemu. Aż do pierwszej pustej linii (ale wyłączając ją), wszystko jest zastępowane informacją o wersji jądra. Redagując ten plik należy pamiętać, aby pozostawić na początku jedną pustą linię, dzięki temu /etc/rc nie skasuje twoich wpisów gdy będzie edytował /etc/motd podczas startu.

8.18 - Dlaczego www.OpenBSD.org działa na systemie Solaris?

Chociaż żaden z developerów nie uważa tego za jakiś istotny problem, pytanie to często pojawia się na listach dyskusyjnych. Strona www.openbsd.org i główny serwer FTP projektu OpenBSD są utrzymywane są na serwerach SunSITE na University of Alberta w Kanadzie. Jest to system oparty na komputerach Sun, posiadający duże zasoby dyskowe oraz szybkie połączenie z Internetem. SunSITE umożliwia wykorzystanie swoich zasobów przez Projekt OpenBSD. Wiele serwerów lustrzanych Projektu działa na komputerach z systemem OpenBSD, ale nie mają one dostępu do tak szybkich łączy, zatem główna strona umiejscowiona jest na SunSITE.

8.20 - Antyaliasing i czcionki TrueType w X

Zagadnienie to omówiono w tym dokumencie.

8.21 - Czy w OpenBSD jest dostępny system plików z księgowaniem?

Nie. W OpenBSD używany jest inny mechanizm mający na celu uzyskanie podobnych efektów jak w systemach plików z księgowaniem. Nosi on nazwę "Soft Updates". Po więcej informacji zapraszamy do FAQ 14 - Soft Updates .

8.22 - Domena odwrotna
     - albo -
dlaczego logowanie trwa tak długo?

Wielu nowych użytkowników dotyka problem długiego, dwuminutowego oczekiwania na zalogowanie się podczas korzystania z usług takich jak ssh, ftp czy telnet. Zdarzyć się to może również w trakcie używania serwera proxy, na przykład ftp-proxy, a także podczas wysyłania poczty elektronicznej przy pomocy programu sendmail.

Prawie zawsze winę ponosi domena odwrotna (ang. reverse DNS). DNS (ang. Domain Name Server) używany jest w Internecie do tłumaczenia nazw takich jak "www.openbsd.org", na odpowiadające im numery IP. Drugim zadaniem DNS jest zamiana adresów IP na ich nazwy "domenowe" - ten proces nazywany jest właśnie "Reverse DNS".

Aby zapewnić lepszą jakość logowanych informacji, OpenBSD zawsze sprawdza domenę odwrotną podczas próby dostępu do takich usług jak ssh, ftp, telnet, sendmail lub ftp-proxy. Na nieszczęście, zdarza się, że maszyna próbująca połączyć się z daną usługą nie posiada właściwej domeny odwrotnej.

Przykład:

W tym przykładzie OpenBSD używany jest jako firewall i bramka dla małej sieci domowej, która mapuje wszystkie adresy z sieci lokalnej na adres zewnętrzny przy pomocy NAT. Można go także wykorzystać jako przekaźnik poczty. Postępując krok po kroku, zgodnie z opisem w podręczniku użytkownika, można otrzymać w pełni sprawny i dający powody do zadowolenia system. Z jednym wyjątkiem - każda próba połączenia się z maszyną kończy się długim oczekiwaniem (dochodzącym aż do dwóch minut), zanim cokolwiek się wydarzy.

Co się dzieje:

Użytkownik pracujący na komputerze znajdującym się za NAT, posiadającym adres 192.168.1.35 z puli zarezerwowanych adresów IP, próbuje uzyskać dostęp do bramki przy pomocy ssh. Serwer ssh prosi o podanie nazwy użytkownika i hasła. Następnie próbuje sprawdzić domenę odwrotną adresu 192.168.1.35, by zapisać ją w pliku dziennika. Pojawia się problem, ponieważ klasa adresów 192.168.0.0 jest klasą zarezerwowaną i serwer DNS poza siecią lokalna nie będzie posiadał informacji na jej temat. Czasem serwer DNS odeśle szybką odpowiedź o wystąpieniu błędu, w tym przypadku OpenBSD przyjmie, że nie można uzyskać informacji o domenie odwrotnej dla danego adresu i pozwoli użytkownikowi zalogować się. Inne serwery DNS nie udzielą ŻADNEJ odpowiedzi - w tym przypadku OpenBSD będzie oczekiwać, aż czas oczekiwania resolwera na odpowiedź zakończy się. Czasem może to zabrać około dwóch minut, zanim system pozwoli się zalogować. Sytuacja jest jeszcze bardziej problematyczna w przypadku ftp-proxy - część klientów FTP uzna, że ftp-proxy nie działa, zanim system pośredniczący zakończy oczekiwanie na rozwinięcie domeny odwrotnej.

Może to być bardzo denerwujące. Na szczęście istnieje prosty sposób pozwalający naprawić taką sytuację.

Plik /etc/hosts:

Najprostszą metodą jest umieszczenie w pliku /etc/hosts informacji o wszystkich komputerach znajdujących się w sieci wewnętrznej. Plik /etc/resolv.conf powinien zawierać linię lookup file bind, która sprawi, że resolwer najpierw sprawdza zawartość pliku /etc/hosts zanim wyśle zapytanie do serwera DNS, podanego po dyrektywie "nameserver" w pliku /etc/resolv.conf.

Przykładowy plik /etc/hosts może wyglądać w następujący sposób:
::1 localhost.w.sieci.lokalnej.org localhost
127.0.0.1 localhost.w.sieci.lokalnej.org localhost
192.168.1.1 gw.w.sieci.lokalnej.org gw
192.168.1.20 scrappy.w.sieci.lokalnej.org scrappy
192.168.1.35 shadow.w.sieci.lokalnej.org shadow

Plik resolv.conf może przyjąć taką postać:
search w.lokalnej.sieci.org
nameserver 24.2.68.33
nameserver 24.2.68.34
lookup file bind

A co jeśli w sieci lokalnej, do przydzielania adresów IP, używany jest serwer DHCP? Jak skonfigurwać plik /etc/hosts? Bardzo prosto! Wystarczy umieścić w nim wpisy dotyczące wszystkich adresów przydzielanych dynamicznie oraz te, które są stałe.
::1 localhost.w.sieci.lokalnej.org localhost
127.0.0.1 localhost.w.sieci.lokalnej.org localhost
192.168.1.1 gw.w.sieci.lokalnej.org gw
192.168.1.20 scrappy.w.sieci.lokalnej.org scrappy
192.168.1.35 shadow.w.sieci.lokalnej.org shadow
192.168.1.100 d100.w.sieci.lokalnej.org d100
192.168.1.101 d101.w.sieci.lokalnej.org d101
192.168.1.102 d102.w.sieci.lokalnej.org d102
         [... ciach ...] 
192.168.1.198 d198.w.sieci.lokalnej.org d198
192.168.1.199 d199.w.sieci.lokalnej.org d199

W tym przykładzie, zakładam że masz ustawiony używany przez DHCP zakres od 192.168.1.100 do 192.168.1.199 oraz trzy statyczne adresy IP.

Jeśli sama bramka dostępowa używa DHCP do konfiguracji swoich interfejsów, może pojawić się kłopot - dhclient, za każdym razem gdy odnawiana jest dzierżawa, nadpisze plik /etc/resolv.conf, usuwając z niego linię "lookup file bind". Rozwiązaniem tego problemu jest umieszczenie w pliku /etc/resolv.conf.tail linii "lookup file bind".

Lokalny serwer DNS

Szczegóły opisujące konfigurację DNS wykraczają poza zakres tego dokumentu. Najważniejsze jest, aby serwer DNS, którego używają komputery z sieci wewnętrznej, był autorytatywnym serwerem dla domeny normalnej i odwrotnej dla tej sieci i aby wszystkie hosty (łącznie z bramką) korzystały z tego serwera.

8.23 - Dlaczego strony WWW OpenBSD nie odpowiadają standardom HTML4/XHTML?

Obecnie strony WWW tworzone są tak, by były poprawnie wyświetlane na różnych przeglądarkach począwszy od wersji 4.0. Nie ma sensu dostosowywać starszych stron do standardu HTML4 lub XHTML dopóki nie będzie pewności, że będą one prawidłowo działać na starszych przeglądarkach. Oczywiście, wszyscy nowi ochotnicy są mile widziani, ale priorytetem jest pisanie kodu czy dokumentacji dotyczącej nowych problemów, a nie dostosowywanie istniejących stron WWW do nowych standartów.

8.24 - Dlaczego zegar jest niedokładny o dwadzieścia kilka sekund?

Po użyciu polecenia rdate(8) do synchronizacji czasu z serwerem NTP może się zdażyć, że zegar będzie późnił się o dwudzieścia kilka sekund w stosunku do czasu lokalnego.

Jest to spowodowane różnicą pomiędzy czasem uniwersalnym (UTC - Coordinated Universal Time - czas atomowy, który uwzględnia obserwacje astronomiczne), a czasem TAI (International Atomic Time - czas bazujący tylko na zegarze atomowym). Aby uczynić czas UTC zgodnym z obserwowanym ruchem słońca na niebie dodawane są do niego sekundy przestępne korygujące różnice pomiędzy UTC, a czasem słonecznym. Właśnie te dodatkowe sekundy są powodem rozbieżności. Dokładniejsze informacje można uzyskać wpisując w wyszukiwarce WWW hasło (bez apostrofów): "leap seconds UTC TAI" [lub na stronach polskich: "sekundy przestępne UTC TAI" - przyp. tłum].

Rozwiązanie tego problemu jest bardzo proste. W większości krajów można otrzymać prawidłowy czas poprzez dodanie parametru "-c" do programu rdate(8) i wybranie właściwej strefy czasowej z katalogu /usr/share/zoneinfo/right/. Np. prawidłowy czas dla Niemiec można ustawić w taki sposób:

     # cd /etc && ln -sf /usr/share/zoneinfo/right/CET localtime
     # rdate -ncv ptbtime1.ptb.de
Dla innych krajów może to wyglądać trochę inaczej.

Dlaczego zegar jest niedokładny o kilka godzin?

Domyślnie OpenBSD przyjmuje że zegar systemowy ustawiony jest na UTC (Universal Coordinated Time) zamiast na czas lokalnyc w przeciwieństwie do innych systemów operacyjnych zatem może to powodować problemy przy multibooting-u.

Wiele innych systemów operacyjnych można zmusić do podobnego zachowania, także w Windows, co pozwala uniknąć podobnych problemów. Dla przykładu w Windows NT/2000/XP aby ustawić by zegar rzeczywisty ustawiony był na UTC, wystarczy utworzenie i ustawienie w rejestrze parametru DWORD na 1:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

W przypadku gdy problematyczne jest ustawienie zegara sprzętowego na UTC, możesz zmienić to zachowanie w OpenBSD korzystając z config(8). Dla przykładu chcąc skonfigurować zegar systemowy na US/Eastern (5 godzin przed UTC, czyli 300 minut):

#config -ef /bsd
OpenBSD 4.2 (GENERIC) #375: Tue Aug 28 10:38:44 MDT 2007
    deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
Enter 'help' for information
ukc> timezone 300
timezone = 300, dst = 0
ukc> quit
Saving modified kernel
Więcej informacji znajdziesz w options(4) pod hasłem "TIMEZONE=value".

Normalnie strefa czasowa ustawiana jest podczas instalacji systemu. Jeżeli potrzebujesz zmienić strefę czasową możesz stworzyć nowe dowiązanie symboliczne do właściwego pliku strefy czasowej w /usr/share/zoneinfo. Dla przykładu, by ustawić maszynę do korzystania z EST5EDT jako nową strefę:

# ln -fs /usr/share/zoneinfo/EST5EDT /etc/localtime

Zobacz także:

[Spis treści] [Sekcja 7 - Ustawienia klawiatury i wyświetlania] [Sekcja 9 - Migracja na OpenBSD]


[wstecz] www@openbsd.org
$OpenBSD$