tag:blogger.com,1999:blog-78310440446722220642024-03-13T09:39:09.275-07:00LinEtcBlog o technologii informacyjnej.kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.comBlogger39125tag:blogger.com,1999:blog-7831044044672222064.post-19055496461778204352015-12-16T12:41:00.003-08:002016-03-20T02:53:59.267-07:00TVN Player w Linux Mint 17.3Opisane kroki powinny zadziałać nie tylko w Mincie, ale również w Ubuntu 14.04 i wyższym.
<ol>
<li>Instalujemy wtyczkę Pipelight zgodnie z instrukcją umieszczoną na stronie twórców <a href="http://pipelight.net/cms/install/installation-ubuntu.html">Installation - Ubuntu</a>, czyli wydajemy polecenia w terminalu:</li>
<code>
sudo add-apt-repository ppa:pipelight/stable<br />
sudo apt-get update<br />
sudo apt-get install --install-recommends pipelight-multi<br />
sudo pipelight-plugin --update
</code>
<li>Aktywujemy wtyczkę Silverlight 5.0 wg <a href="http://pipelight.net/cms/plugin-silverlight.html">instrukcji</a>, czyli w terminalu:</li>
<code>
sudo pipelight-plugin --disable silverlight5.1 --enable silverlight5.0
</code>
<li>Otwieramy przeglądarkę Firefoks i czekamy spokojnie bardzo, aż skonfiguruje się Wine i wtyczka Silverlight. Zamykamy przeglądarkę.</li>
<li>Tworzymy profil dla przeglądarki Firefoks:</li>
<code>
sudo pipelight-plugin --create-mozilla-plugins
</code>
<li>Uruchamiamy Firefoksa ponownie i upewniamy się, że żadne rozszerzenie blokujące reklamy czy serwisy śledzące nie jest włączone - poświęcamy prywatność, bo chcemy cennego contentu. A więc jeżeli mamy jakiś dodatek typu AdBlock, uBlock, LightBeam czy cokolwiek, otwieramy "Dodatki" np. wpisując na pasku adresu "about:addons", i klikamy po kolei "Wyłącz". Jeszcze raz restartujemy przeglądarkę i cieszymy się kolejnym odcinkiem "Na Wspólnej".</li>
</ol>kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-20263741072872928682013-05-15T12:37:00.000-07:002013-05-16T12:24:07.419-07:00Brzydkie czcionki w LinuksieNa wielu forach internetowych można natknąć się na wpisy, w których użytkownicy systemów opartych na Linuksie narzekają na sposób renderowania czcionek. Biorąc pod uwagę liczbę możliwych konfiguracji kart graficznych i monitorów, nie powinno to dziwić. A propos, w systemie Windows (7, 8, ale nie pod XP(!)) również dzieją się takie rzeczy, np. w konfiguracjach zintegrowanej grafiki AMD ATI i niektórych monitorów (np. Samsunga) o natywnej rozdzielczości 1366x768.<br />
<br />
<h3>
Środowisko XFCE</h3>
W środowisku XFCE wybieramy <i>Ustawienia/Wygląd/Czcionki</i>. Włączamy, jeżeli nie zaznaczono, "Antyaliasing", i eksperymentujemy z ustawieniami "Przyciąganie do siatki" oraz "Układ podpikseli" – tu zazwyczaj ustawiamy "RGB". Jako czcionkę interfejsu polecić można "Liberation Sans" lub "Droid Sans".<br />
<br />
<h3>
Archlinux</h3>
Jeżeli ustawienia oferowane przez środowisko nie zaspokajają potrzeb, spróbujmy doinstalować pakiety dostępne w repozytorium <a href="https://wiki.archlinux.org/index.php/Arch_User_Repository" target="_blank">AUR</a>, zawierające biblioteki i konfiguracje czcionek z Ubuntu.<br />
Na początku warto zainstalować menedżera pakietów obsługującego repo AUR, może to być np. <a href="https://aur.archlinux.org/packages/packer/?setlang=pl" target="_blank">packer</a> (używany domyślnie np. w Bridge Linux) lub <a href="https://aur.archlinux.org/packages/yaourt/?setlang=pl" target="_blank">yaourt</a>. Wybrany menedżer trzeba zainstalować ręcznie:<br />
<ul>
<li><code>sudo pacman -S base-devel</code> – instalujemy pakiet deweloperski</li>
<li><code>mkdir ~/builds</code> – tworzymy katalog roboczy do zbudowania pakietu instalacyjnego</li>
<li>pobieramy archiwum (tarball) wybranego menedżera i zapisujemy w utworzonym powyżej katalogu</li>
<li><code>cd ~/builds; tar -xvzf packer(yaourt).tar.gz</code> – rozpakowujemy pobrane archiwum</li>
<li><code>makepkg -s</code> – tworzymy pakiet instalacyjny godząc się na zainstalowanie (-s) potrzebnych zależności</li>
<li><code>sudo pacman -U packer.x.pkg.tar.xz</code> – instalujemy utworzoną paczkę</li>
</ul>
Od tej pory do instalacji pakietów z AUR (i nie tylko) możemy używać zainstalowanego menedżera. Aby zainstalować wspomniane wyżej pakiety do obsługi czcionek wydajemy polecenia:<br />
<ul>
<li><code>sudo packer (yaourt) -S fontconfig-ubuntu freetype2-ubuntu cairo-ubuntu libxft-ubuntu</code></li>
</ul>
Podczas budowania pakietów wciskamy 'n' na pytania, czy chcemy przeglądać skrypty budujące, oraz 't' na pytanie, czy zainstalować pakiet i ewentualnie zastąpić pakiety standardowe (mają takie same nazwy, ale bez przyrostka "-ubuntu").<br />
W razie problemów zawsze warto przeczytać artykuł nt. <a href="https://wiki.archlinux.org/index.php/Font_Configuration" target="_blank">konfiguracji czcionek w Archu</a>. Przywrócenie oryginalnych pakietów umożliwia polecenie:<br />
<ul>
<li><code>sudo pacman -S --asdeps fontconfig freetype2 cairo libxft</code></li>
</ul>
<br />
<h3>
Debian</h3>
Prostym sposobem na poprawę jakości wyświetlania czcionek w jest podmienienie konfiguracji czcionek plikami z pakietu przygotowanego dla Ubuntu.<br />
<ul>
<li>ściągamy pakiet <a href="http://packages.ubuntu.com/search?keywords=fontconfig-config" target="_blank">fontconfig-config</a> z ostatniego wydania Ubuntu (teraz: 13.04)</li>
<li><code>sudo cp -r /etc/fonts /etc/fonts.debian</code> – archiwizujemy konfigurację Debiana</li>
<li><code>dpkg -x fontconfig-config_2.10.2-0ubuntu2_all.deb ~/tmp</code> – rozpakowujemy pakiet instalacyjny do utworzonego wcześniej katalogu</li>
<li><code>sudo cp -r ~/tmp/etc/fonts /etc</code> – kopiujemy pliki konfiguracyjne</li>
<li><code>sudo chown -R root:root /etc/fonts</code> – ustawienie właściwych uprawnień</li>
</ul>
Dwie ostatnie operacje łatwiej wykonać za pomocą konsolowego menedżera Midnight Commander. Po ponownym zalogowaniu się i ewentualnym dostrojeniu ustawień (patrz wyżej), jakość czcionek powinna się poprawić.kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-35607571666665984532013-05-08T12:15:00.001-07:002013-05-08T12:15:21.135-07:00Archlinux - brak ikon w Evince 3.8Wraz z aktualizacją środowiska Gnome do wersji 3.8, uaktualnieniu podlega również wykorzystywana również w instalacjach z innymi środwiskami przeglądarka plików <i>pdf</i> Evince, w wyniku czego program uruchamia się bez ikon, tzn. zamiast oznaczeń narzędzi na pasku widoczne są czerwone krzyżyki. Rozwiązanie jest proste, należy ponownie zainstalować bibliotekę <i>librsvg</i>: <code>sudo pacman -S librsvg</code>.kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-41402165185154543512013-03-26T12:57:00.000-07:002013-03-26T13:35:46.643-07:00Nginx + php + userdirW Nginx nie zaimplementowano mechanizmu <i>userdir</i>, znanego z serwera Apache, który w prosty sposób umożliwia uruchamianie skryptów php w katalogach użytkowników. Uczyniono tak ze względów bezpieczeństwa. Niemniej jednak czasami przydaje się taka funkcjonalność, np. do celów testowych, a więc nauki programowania w php. Poniżej konfiguracja działająca na Debianie/Ubuntu i Archu/Bridge'u:<br />
<br />
<pre>server {
listen 80;
access_log /var/log/nginx/localhost.access.log;
index index.php index.html index.htm;
server_name localhost;
autoindex on;
location ~ ^/~([^/]+)/(.+\.php)$ {
include fastcgi_params;
alias /home/$1/public_html/$2;
fastcgi_pass unix:/var/run/php5-fpm.sock; # dla Debiana, Ubuntu
fastcgi_pass unix:/run/php-fpm/php-fpm.sock; # dla Bridge'a
fastcgi_index index.php;
}
location ~ ^/~(.+?)(/.*)?$ {
alias /home/$1/public_html$2;
}
location ~ /\.ht { deny all; }
location ~ /\. { deny all; }
}
</pre>
<br />
W Debianie/Ubuntu powyższa konfiguracja powinna zostać zapisana w jakimś pliku (np. <i>userdir</i>) w katalogu <i>/etc/nginx/sites-available</i>, a następnie dowiązana w katalogu <i>/etc/nginx/sites-enabled</i>. W Archu/Bridge'u dopisujemy to w pliku <i>/etc/nginx/nginx.conf</i>.<br />
Uwaga: powyższa konfiguracja nie jest bezpieczna, nadaje się wyłącznie do celów testowych. Jeśli chcesz więcej wiedzieć, zajrzyj na stronę <a href="http://wiki.nginx.org/Main" target="_blank">wiki</a> projektu Nginx.kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com1tag:blogger.com,1999:blog-7831044044672222064.post-62950203526051920792013-02-05T13:14:00.000-08:002013-03-26T12:59:20.118-07:00Archlinux - problemy z weryfikacją pakietów podczas instalacjiPacman, domyślny menedżer pakietów w Archu, umożliwia <a href="https://wiki.archlinux.org/index.php/Pacman-key">weryfikowanie pakietów</a> na podstawie podpisów, niestety niekiedy mechanizm ten sprawia problemy. Co można zrobić?<br />
Pierwsza rzecz to wydać polecenie <code>pacman-key --refresh-keys</code>, które powinno zaktualizować lokalną bazę kluczy. <i>Notabene</i> odświeżenie kluczy zapewnia również instalacja pakietu <i>archlinux-keyring</i>. Jeżeli to nie pomoże, spróbuj zmienić repozytorium w <i>/etc/pacman.d/mirrorlist</i>. Jeżeli i to nie pomoże, można spróbować następujących kroków:<br />
<br />
<ol>
<li>W pliku konfiguracyjnym pacman.conf tymczasowo wyłączamy weryfikację pakietów dla repozytoriów core, extra i community, czyli wpisujemy <code>SigLevel = Never</code>,</li>
<li><code>rm -R /etc/pacman.d/gnupg</code> - usunięcie katalogu z kluczami,</li>
<li><code>rm /var/cache/pacman/pkg/*</code> - opróżnienie cachu pakietów, wymagane, gdyż w przeciwnym razie mogą wystąpić błędy mówiące o uszkodzonych pakietach,</li>
<li>w tym miejscu trzeba czasem zmienić serwer, z którego pobierane są pakiety (zajrzyj do pliku <i>/etc/pacman.d/mirrolist</i>),</li>
<li><code>pacman -Syu archlinux-keyring</code> - instalujemy aktualne klucze Archa,</li>
<li><code>pacman-key --init</code> - przygotowanie lokalnej bazy kluczy, podczas tej operacji warto w innych konsolach wydać polecenie <code>ls -R /</code> oraz poruszać i poklikać myszą, co przyśpieszy generowanie entropii; można też zainstalować pakiet haveged i poprzedzić inicjalizację poleceniem <code>haveged -w 1024</code>,</li>
<li><code>pacman-key --populate archlinux</code> - inicjalizacja kluczy, podczas której należy potwierdzić zaufanie dla kluczy głównych deweloperów wciskając "T" + Enter (samo Enter nie wystarczy!),</li>
<li>W pliku pacman.conf przywracamy weryfikację podpisów, czyli ustawiamy <code>SigLevel = PackageRequired</code> dla poszczególnych repozytoriów,</li>
<li><code>pacman -Syyu</code> - odświeżenie list pakietów i aktualizacja systemu.</li>
</ol>
<br />
Jeżeli powyższe kroki nie umożliwią bezproblemowej instalacji pakietów, pozostaje wspomniana opcja <code>SigLevel = Never</code>. To rozwiązanie ostateczne, wyłącza przecież weryfikację podpisów pakietów, nie jest więc polecenie, ale czasem przydaje się, żeby "awaryjnie" zainstalować jakiś pakiet.<br />
<br />
Niestety, zdarzyło się ostatnio kilka razy po zainstalowaniu najnowszego Bridge Linuksa, że powyższe porady nie przyniosły oczekiwanego skutku. Ciągle pozostawał jeden pakiet, co do którego pojawiała się informacja mówiąca o jego uszkodzeniu. Rozwiązanie było następujące: usunięcie problematycznego pakietu wg sugestii pacmana, tymczasowa zmiana serwera, zainstalowanie opornego pakietu, przywrócenie poprzedniego serwera (notabene niekonieczne, ale był szybszy) i dalsza instalacja (aktualizacja).kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com1tag:blogger.com,1999:blog-7831044044672222064.post-33858006725526306232013-01-10T08:34:00.000-08:002013-03-26T13:00:15.041-07:00Problemy z Dnsmasq<h3>
</h3>
Opis konfiguracji Dnsmasq na serwerze Ubuntu 12.04 LTS znajduje się <a href="http://linetc.blogspot.com/2012/08/ubuntu-server-1204-lts-dnsmasq.html">tutaj</a>. Czasem jednak nie wszystko do końca działa, jak trzeba. Dobrze skonfigurowany Dnsmasq powinien zapewniać rozwiązywanie nazw hostów podpiętych do lokalnej sieci. Można to osiągnąć stosując adresowanie statyczne IP oraz dopisując aliasy hostów w pliku /etc/host na serwerze. Plik ten jest następnie propagowany do hostów w sieci lokalnej. Jeżeli jednak chcemy korzystać z adresowania dynamicznego (co nie przeszkadza oczywiście adresować wybranych hostów statycznie) i mieć możliwość rozwiązywania lokalnych nazw, musimy sprawdzić kilka rzeczy, na co zwraca uwagę m.in. <a href="http://www.thekelleys.org.uk/dnsmasq/docs/FAQ">FAQ Dnsmasqa</a>.<br />
<ol>
<li>Upewniamy
się, że na interfejsie, na którym nasłuchujemy żądań z sieci lokalnej
jest dobrze ustawiony adres broadcast, który w systemach opartych na
debianie ustawiamy w <i>/etc/network/interfaces</i>; polecenie <code>sudo ip addr</code>
pozwoli sprawdzić poprawność ustawień.</li>
<li>Porty 67 i 68 dla protokołu UDP oraz ruch dla pakietów broadcast z adresem źródłowym 0.0.0.0 i adresem przeznaczenia 255.255.255.255 powinny być odblokowane w firewallu na interfejsie lokalnym. Jeżeli w sieci mamy MS Vistę, to do firewalla dodajemy:<br /><code>iptables -A OUTPUT -o $INTIF -p udp -s $INTIP --sport 67 -d $UNIVERSE --dport 68 -j ACCEPT</code><br />- gdzie $INTIF to nazwa interfejsu LAN, np. eth1, $INTIP - adres IP naszego serwera DHCP, $UNIVERSE - dowolny adres, czyli 0.0.0.0/0 (zobacz <a href="http://linetc.blogspot.com/2012/07/ubuntu-serwer-1204-lts-konfiguracja.html">przykładową konfigurację firewalla</a>).</li>
<li>W
przypadku systemów Windows XP zaleca się we właściwościach lokalnego
połączenia sieciowego podać nazwę lokalnej domeny, czyli <i>Panel
sterowania / Połączenia sieciowe</i>, prawy klik na połączeniu lokalnym i
<i>Właściwości / Protokół internetowy TCP/IP / Właściwości / Zaawansowane /
DNS / Sufiks DNS dla tego połączenia</i>: .mojadomena.org.</li>
<li>Dystrybucje linuksa korzystają zazwyczaj z dwóch różnych klinetów dhcp. Jest to albo dhcpcd - z nim nie ma problemu, tzn. domyślnie wysyła do serwera nazwę hosta, albo dhclient, który jest również domyślnie wykorzystywany przez ostatnie wersje Network Managera, np. w Archu. W tym ostatnim przypadku musimy utworzyć plik <i>/etc/dhclient.conf</i> i wpisać w nim linię: <code>send host-name = pick-first-value(gethostname(), "ISC-dhclient");</code> lub po prostu: <code>send host-name = mojhost;</code>.</li>
<li> Warto dodać, że Network Manager na stacjach roboczych z Archem, podpiętych do sieci lokalnej za pomocą kabla, nie jest potrzebny. Możemy go odinstalować za pomocą polecenia: <code>pacman -Rns networkmanager network-manager-applet</code>. Pamiętać tylko trzeba, żeby uruchamiać domyślnie usługę dhcpcd, czyli: <code>systemctl enable dhcpcd@eth0.service</code>.</li>
</ol>
<br />
<ol>
</ol>
kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-7894115788439741972012-12-21T02:51:00.000-08:002013-03-26T13:00:58.093-07:00Archlinux - konfiguracja<br />
<div>
Po zainstalowaniu "czystego" Archa, co opisałem w <a href="http://linetc.blogspot.com/2012/12/archlinux-instalacja.html">poprzednim poście</a>, czas na dostosowanie go do własnych potrzeb. Poniżej pokazuję, jak doinstalować i skonfigurować środowisko graficzne i programy użytkowe potrzebne w codziennej pracy. Wszystko wykonujemy po zalogowaniu się na konto roota.<br />
<br /></div>
<h3>
Instalacja</h3>
<div>
Uwaga: znak ";" oznacza zatwierdzenie komendy, czyli naciśnięcie Enter; po znakach "#" umieszczono komentarze do poleceń.</div>
<ol start="1" type="1">
<li><code>pacman -S sudo; visudo;</code> #odkomentowujemy wpis %wheel ALL=(ALL) NOPASSWD: ALL, dzięki czemu zwykły użytkownik dodany do grupy <i>wheel</i> będzie mógł wykonywać polecenia administracyjne z użyciem <i>sudo</i> </li>
<li><code>pacman -S xorg-server xorg-xinit xorg-server-utils xterm mesa xf86-video-vesa xf86-video-...</code> #instalacja serwera X, biblioteki grafiki 3D oraz sterownika karty graficznej, zamiast kropek trzeba wpisać: <i>intel, nouveau</i> lub <i>ati</i>; jeżeli ktoś ma wątpliwości lub starszy sprzęt powinien zajrzeć do <a href="https://wiki.archlinux.org/index.php/Beginners%27_Guide#Install_a_video_driver">podręcznika instalacji</a></li>
<li><code>pacman -S alsa-utils lxdm xfce4 xfce4-goodies gvfs-smb xdg-user-dirs gksu</code> #instalacja grfaicznego menedżera logowania (lxdm) oraz środowiska xfce4 i kilku narzędzi</li>
<li><code>pacman -S ttf-dejavu ttf-liberation cantarell-fonts ttf-droid</code> #podstawowe czcionki</li>
<li><code>pacman -S mc p7zip zip unzip unrar file-roller</code> #menedżer plików i archiwów</li>
<li><code>pacman -S gtk-engine-murrine gtk-engine-unico</code> #silniki tematów graficznych</li>
<li><code>pacman -S leafpad evince gpicview vlc gimp gstreamer0.10-plugins audacious</code> #instalacja edytora tekstów, przeglądarki pdf i plików graficznych oraz obsługi multimediów</li>
<li><code>pacman -S chromium jre7-openjdk icedtea-web-java7 flashplugin</code> #przeglądarka, obsługa javy i flasha </li>
<li><code>pacman -S libreoffice mythes mythes-pl hunspell hunspell-pl hyphen hyphen-pl</code> #instalacja pakietu biurowego, podczas wyboru składników można pominąć pakiety numer 7,9,10 i 11, polski pakiet lokalizacji ma numer 73</li>
<li><code>pacman -S geany</code> #jeżeli ktoś programuje...</li>
<li><code>pacman -S networkmanager network-manager-applet</code> #menedżer połączeń sieciowych</li>
</ol>
<h3>
Konfiguracja</h3>
<ol start="1" type="1">
<li><code>usermod -a -G wheel alek</code> #dodanie konta zwykłego użytkownika do grupy <i>wheel</i></li>
<li><code>systemctl enable graphical.target</code> #ustawienie graficznego trybu uruchamiania systemu jako domyślnego</li>
<li><code>systemctl enable lxdm.service</code> #ustawienie automatycznego uruchamiania graficznego menedżera logowania</li>
<li><code>systemctl enable NetworkManager</code> #automatyczne zarządzanie połączeniami sieciowymi</li>
<li><code>nano /etc/skel/.xinitrc</code> #odkomentować linię: exec startxfce4</li>
<li><code>nano /etc/X11/xorg.conf.d/10-keyboard-layout.conf</code>:<br />
<pre> Section "InputClass"
Identifier "keyboard-layout"
Driver "evdev"
MatchIsKeyboard "yes"
Option "XkbLayout" "pl, us"
EndSection
</pre>
</li>
<li><code>nano /etc/lxdm/lxdm.conf</code> #ustawiamy w sekcji [base] session=/usr/bin/startxfce4 i sekcji [userlist] disable=1</li>
<li><code>nano /etc/xdg/user-dirs.defaults</code> #wpisujemy domyślne nazwy folderów użytkownika, np. Pulpit, Pobrane, Szablony, Publiczny, Dokumenty, Muzyka, Obrazy, Wideo</li>
</ol>
<h3>
Uwagi</h3>
Zanim zrestartujemy system warto przetestować poprawność uruchamiania się serwera X, graficznego menedżera logowania i środowiska Xfce. W tym celu na drugiej konsoli logujemy się jako zwykły użytkownik, którego konto założyliśmy podczas instalacji, a następnie uruchamiamy usługę graficznego menedżera logowania: <code>sudo systemctl start lxdm</code>.<br />
Jeżeli uda się nam zalogować, Xfce zaoferuje utworzenie panelu, wybieramy opcję "domyślny". Jeżeli nie, błędów szukamy w plikach: <i>/var/log/Xorg.0.log</i> oraz <i>~/.xsession-errors</i>.kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-59534358701136544232012-12-16T11:00:00.000-08:002013-04-12T12:27:10.567-07:00Archlinux - instalacjaPrzygodę z <a href="https://www.archlinux.org/">Archlinuksem</a> można zacząć od jakiejś dystrybucji opartej na nim, ale prostszej w instalacji i zazwyczaj już skonfigurowanej. Przykładami takich dystrybucji są <a href="http://millertechnologies.net/">Bridge Linux</a> lub <a href="http://www.cinnarch.com/">Cinnarch</a>, które warto oczywiście wypróbować. Są o wiele lepiej przemyślane niż popularne Ubuntu. Jednak różnice pomiędzy "łatwiejszymi" dystrybucjami a "czystym" Archiem sprowadzają się w gruncie rzeczy do graficznego opakowania instalacji i (ewentualnie) konfiguracji.<br />
Jeżeli chcemy poznać podstawy dystrybucji linuksowych, warto spróbować instalacji i konfiguracji Archa od podstaw. Dodatkową korzyścią takiego podejścia jest także szybciej i zazwyczaj stabilniej działający system, ponieważ znajdą się w nim tylko pakiety wymagane przez nasz sprzęt. Proces ten dla średniozaawansowanego lub po prostu chcącego się czegoś nauczyć użytkownika nie jest bardzo trudny ze względu na świetną dokumentację zapewnianą przez <a href="https://wiki.archlinux.org/">Wiki Archa</a>. Na początku warto przejrzeć następujące strony:<br />
<br />
<ul>
<li><a href="https://wiki.archlinux.org/index.php/Beginners%27_Guide_(Polski)">Beginners'_Guide_(Polski)</a> (jeszcze lepiej w wersji angielskiej: <a href="https://wiki.archlinux.org/index.php/Installation_Guide">Installation_Guide</a>)</li>
<li><a href="https://wiki.archlinux.org/index.php/Installation_Guide_(Polski)">Installation_Guide_(Polski)</a> (jeszcze lepiej w wersji angielskiej: <a href="https://wiki.archlinux.org/index.php/Beginners%27_Guide">Beginners'_Guide</a>)</li>
</ul>
<br />
Ponieważ powyższe zasoby są dosyć rozbudowane, uwzględniają wiele potencjalnych konfiguracji i omawiają różne możliwości, przygotowałem skróconą, podręczną wersję.<br />
<br />
Najpierw pobieramy obraz aktualnego <a href="https://www.archlinux.org/download/">medium instalacyjnego</a>, wypalamy go na CD lub przenosimy na pendrive'a, a następnie uruchamiamy z niego komputer. Po uruchomieniu systemu trafimy do konsoli tekstowej, w której przeprowadzamy właściwą instalację.<br />
<br />
<h3>
Instalacja</h3>
Uwaga: znak ";" oznacza zatwierdzenie komendy, czyli naciśnięcie Enter; po znakach "#" umieszczono komentarze do poleceń.<br />
<ol>
<li><code>loadkeys pl; setfont Lat2-Terminus16;</code> #wczytanie polskiej klawiatury i ustawienie czcionki konsoli (można też użyć Lat2-Terminus16)</li>
<li><code>nano /etc/locale.gen;</code> #określamy język, w którym będziemy porozumiewali się z systemem; w pliku odkomentowujemy (tj. usuwamy znak #) linie zawierające wpisy: en_US.UTF-8 i pl_PL.UTF-8</li>
<li><code>locale-gen; export LANG=PL_PL.UTF-8;</code> #tworzymy bazę zlokalizowanych komunikatów systemowych i ustawiamy zmienną systemową określającą nasz język</li>
<li><code>cfdisk /dev/sda</code> #uruchamiamy narzędzie pozwalające przygotować partycje potrzebne do instalacji systemu, na początek wystarczą dwie, jedna o wielkości ok. 8-10 GB i druga, której wielkość jest dwa razy większa niż ilość pamięci RAM w naszym komputerze</li>
<li><code>mkfs.reiserfs /dev/sda2; mount /dev/sda2 /mnt;</code> #tworzymy system plików na przygotowanej partycji (można też użyć mkfs.ext4) i montujemy partycję instalacyjną</li>
<li><code>mkswap /dev/sda3; swapon /dev/sda3;</code> # tworzymy i montujemy partycję wymiany</li>
<li><code>nano /etc/pacman.d/mirrorlist;</code> #opcjonalnie wybieramy repozytorium</li>
<li><code>pacstrap -i /mnt base base-devel;</code> #instalujemy podstawowe grupy pakietów</li>
<li><code>genfstab -U -p /mnt >> /mnt/etc/fstab; nano /mnt/etc/fstab;</code> # generujemy plik fstab</li>
<li><code>arch-chroot /mnt;</code> #zmiana katalogu root na /mnt</li>
<li>powtarzamy punkty 1-3</li>
<li><code>echo LANG=pl_PL.UTF-8 > /etc/locale.conf</code> #ustawiamy polski język w konsoli</li>
<li><code>nano /etc/vconsole.conf;</code> #spolszczamy konsolę: <code>KEYMAP=pl; FONT=lat2-16; FONT_MAP=;</code></li>
<li><code>ln -s /usr/share/zoneinfo/Europe/Warsaw /etc/localtime</code> #ustawienie strefy czasowej</li>
<li><code>hwclock --set --date="2012-12-14 14:12:05" --utc; hwclock --hctosys --utc</code> #ustawienie zegara RTC (sprzętowego) na czas UTC i zsynchronizowanie go z zegarem systemowym</li>
<li><code>timedatectl set-time "2012-12-14 14:12:05 ; timedatectl set-local-rtc 0</code> #tych poleceń można użyć po(!) instalacji do ustawienia zegara;</li>
<li><code>echo archie > /etc/hostname;</code> #ustawienie nazwy komputera (archie)</li>
<li><code>systemctl enable dhcpcd@eth0.service;</code> #uruchomienie automatycznej konfiguracji sieci. Uwaga: nazwa interfejsu może być inna, sprawdzamy ją, wydając polecenie: <code>ip link</code>.</li>
<li><code>nano /etc/pacman.d/mirrorlist;</code> #opcjonalne sprawdzenie repozytoriów</li>
<li><code>mkinitcpio -p linux;</code> #wygenerowanie obrazu initrd (initial ramdisk environment)</li>
<li><code>passwd;</code> #ustawienie hasła roota</li>
<li><code>useradd -m -g users -G wheel,lp,optical,power,storage -s /bin/bash alek; passwd alek;</code> #dodanie konta użytkownika i ustawienie hasła</li>
<li><code>pacman -S grub-bios os-prober; grub-install --target=i386-pc --recheck --force /dev/sda; grub-mkconfig -o /boot/grub/grub.cfg;</code> #instalacja bootmenedżera GRUB w MBR i wygenerowanie jego pliku konfiguracyjnego</li>
<li><code>exit; umount /mnt; reboot;</code> #wyjście ze środowiska chroot, odmontowanie i restart</li>
<br />
<h3>
Uwagi</h3>
</ol>
<ul>
<li>Relatywnie najtrudniejszym elementem jest tworzenie partycji. Jeżeli mamy na dysku jakiś system, a także (zazwyczaj) jakieś partycje, lepiej skorzystać z graficznego edytora partycji i z jego pomocą wygospodarować miejsce na instalację. Można użyć np. środowiska <a href="http://gparted.sourceforge.net/livecd.php">GParted Live</a> lub <a href="http://clonezilla.org/downloads.php">CloneZilla</a>. Oczywiście oznaczenia partycji (np. /dev/sda2), należy dostosować.</li>
<li>Menadżer pakietów w Archu, czyli pacman, używa repozytoriów zgodnie z kolejnością ich wystąpienia w pliku /etc/pacman.d/mirrorlist. Na początek warto skopiować jakieś europejskie repo, np. bardzo szybkie i często aktualizowane:<br /><code>Server = http://mir1.archlinux.fr/archlinux/$repo/os/$arch</code>.</li>
<li>Uwaga: z doświadczenia wynika, że od czasu do czasu repozytorium trzeba zmienić ze względu na błędy podczas aktualizacji systemu.</li>
<li>Powyższa instrukcja pomija konfigurację sieci, zwłaszcza wifi, i zakłada automatyczne nawiązanie połączenia z internetem za pomocą łącza kablowego. Połączenie kablowe jest zalecane podczas instalacji.</li>
<li>W razie problemów zajrzeć trzeba do wspomnianych wyżej stron wiki.</li>
</ul>
<div>
W następnym wpisie przedstawię przykładową konfigurację Archa.</div>
<ol>
<br />
</ol>
kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com1tag:blogger.com,1999:blog-7831044044672222064.post-70734780139777646842012-11-13T13:12:00.000-08:002013-03-26T13:01:38.021-07:00Systemd i journal - poleceniaArchlinux przeszedł na nowy menedżer uruchamiania <i>systemd</i>, o czym pisałem <a href="http://linetc.blogspot.com/2012/11/czysty-systemd.html">poprzednio</a>. W związku z tym zmienia się również domyślny sposób zarządzania usługami, jak i mechanizm logowania zdarzeń systemowych. Poniżej lista przydatnych poleceń.<br />
<br />
<h3>
Systemctl</h3>
<ul>
<li><code>$ systemctl start/stop/retsart vftpd.service</code> - uruchomienie/zatrzymanie/restart usługi</li>
<li><code>$ systemctl enable/disable vftpd.service</code> - włączenie/wyłączenie uruchamiania usługi podczas startu systemu</li>
<li><code>$ systemctl enable/disable sshd.socket</code> - włączenie/wyłączenie uruchamiania usługi na żądanie</li>
<li><code>$ systemctl list-units --type=target</code> - pokaż "usługi" typu target</li>
<li><code>$ systemctl isolate multi-user.target</code> - uruchom podany "stan", zatrzymując inne; odpowiednik zmieniania poziomów (runlevel)</li>
</ul>
Szczegóły w manualu i na <a href="http://www.freedesktop.org/software/systemd/man/systemctl.html">stronie projektu</a>.<br />
<br />
<h3>
Journalctl</h3>
<ul>
<li><code>$ journalctl --b</code> - log z bieżącego uruchomienia systemu</li>
<li><code>$ journalctl -n100</code> - pokaż ostatnie 100 wpisów</li>
<li><code>$ journalctl -u NetworkManager</code> - pokaż logi dotyczące podanej "usługi"</li>
</ul>
<div>
Szczegóły w manualu i na <a href="http://www.freedesktop.org/software/systemd/man/journalctl.html">stronie projektu</a>.</div>
<div>
<br /></div>
<h3>
Problemy z uruchomieniem</h3>
Po uruchomieniu się Gruba wciskamy "e" i w linii rozpoczynającej się od "linux" dodajemy jako parametr startowy jądra: <code>systemd.unit=recovery.target</code> lub w ostateczności: <code>systemd.unit=emergency.target</code>.<br />
<br />kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-68034307252368880142012-11-06T03:45:00.000-08:002013-03-26T13:01:58.801-07:00Czysty systemdOd <a href="https://www.archlinux.org/news/end-of-initscripts-support/">4.11.2012</a> domyślnym mechanizmem uruchamiania Archa jest <i><a href="https://wiki.archlinux.org/index.php/Systemd">systemd</a></i>, a to oznacza, że podczas aktualizacji pakietów, np. w Bridge'u, należy pamiętać o kilku rzeczach. Przypomnijmy.<br />
<br />
1) Ustawienia systemowe w plikach:<br />
<ul>
<li>/etc/locale.conf</li>
<li>/etc/locale.gen</li>
<li>/etc/hostname</li>
<li>/etc/hosts</li>
<li>/etc/adjtime</li>
<li>/etc/vconsole.conf</li>
<li>/etc/environment</li>
</ul>
<div>
2) Usunięcie wsparcia dla <i>initscripts</i>, instalacja pakietu kompatybilności, usunięcie poprzedniego pliku konfiguracji systemu, pełna aktualizacja systemu:</div>
<div>
<ul>
<li><code>pacman -R sysvinit initscripts</code></li>
<li><code>pacman -S systemd-sysvcompat</code></li>
<li><code>rm /etc/rc.conf</code></li>
<li><code>pacman -Syu</code></li>
</ul>
</div>
<div>
3) Ustawienie domyślnego poziomu (targetu) uruchamiania oraz domyślnie uruchamianych usług, np.:</div>
<div>
<ul>
<li><code>systemctl enable graphical.target</code></li>
<li><code>systemctl enable lxdm.service</code></li>
<li><code>systemctl enable NetworkManager.service</code></li>
</ul>
</div>
<div>
4) Zmiana sposobu uruchamiania środowiska graficznego, np. XFCE w Bridge'u, co wymaga nowej zawartości pliku <i>~/.xinitrc</i>:<br />
<br /></div>
<pre>#!/bin/sh
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "$f" ] && . "$f"
done
unset f
fi
exec startxfce4
</pre>
<div>
<br /></div>
Po wykonaniu tych czynności wykonujemy restart, a system powinien wykorzystać już czysty <i>systemd</i>.<br />
<br />kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-34706245557021900872012-10-23T23:19:00.001-07:002012-10-23T23:19:04.148-07:00Aktualizacja do Ubuntu 12.10 w linii poleceńPo pierwsze należy zrobić standardową aktualizację systemu:<br />
<code>sudo apt-get update && sudo apt-get dist-upgrade</code><br />
<br />
Jeżeli podczas aktualizacji zostanie zainstalowane nowe jądro, dobrze jest zrestartować system.<br />
Następnie instalujemy menadżer aktualizacji:<br />
<code>sudo apt-get install update-manager-core</code><br />
<br />
Sprawdzamy, czy w pliku <i>/etc/update-manager/release-upgrades</i> mamy wpis <code>Prompt=normal</code>, w razie potrzeby zmieniamy na podany.<br />
Pozostaje uruchomić aktualizację:<br />
<code>sudo do-release-upgrade -d</code><br />
<br />
Po potwierdzeniu kilku zapytań pobrane zostaną nowe pakiety (co w zależności od szybkości połączenia może trwać długo) i nastąpi aktualizacja wydania.kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-74323804417443152292012-09-28T12:35:00.001-07:002012-09-28T12:35:54.743-07:00Bridge Linux - Grub - konsolaOstatnio po odtworzeniu obrazu dysku, na którym zainstalowany był Bridge Linux, używający Gruba2 zainstalowanego w MBR (startowy sektor dysku), powitała mnie konsola Gruba... 1. Wszystko przez ClonZillę, która obraz zrobiła poprawnie, ale podczas jego odtwarzania instalowała Gruba 1 zamiast 2.<br />
Reanimacja systemu możliwa jest oczywiście z płyty instalacyjnej Bridge Linux Live, ale można prościej. Należy wykorzystać możliwości konsoli Gruba:<br />
<br />
<ul>
<li><code>root (hd0,0)</code> - wskazanie partycji, na której zainstalowany był Bridge (/dev/sda1);</li>
<li><code>kernel /boot/vmlinuz-linux ro</code> - wskazanie jądra</li>
<li><code>initrd /boot/initramfs-linux.img</code> - wskazanie obrazu startowego systemu plików</li>
<li><code>boot</code> - uruchomienie</li>
</ul>
<br />
Po wydaniu powyższych komend, zgłosi się konsola awaryjna Bridge'a (Archa), czyli rootfs. Zakładając, że używamy systemd do uruchamiania systemu, wykonujemy następujące polecenia:<br />
<br />
<ul>
<li><code>mkdir /boot</code> - jeżeli mamy osobną partycję dla tego katalogu</li>
<li><code>mount /dev/sda1 /new_root</code> - montujemy partycję, na której zainstalowaliśmy Bridge'a</li>
<li><code>cd /new_root</code></li>
<li><code>exec init=/bin/systemd</code></li>
</ul>
<br />
Po wydaniu ostatniego polecenia system powinien wystartować. Pozostaje wtedy zainstalować Gruba2:<br />
<br />
<ul>
<li><code>sudo grub-install --target=i386-pc --recheck --force /dev/sda</code> - instalacja w MBR</li>
<li><code>sudo grub-mkconfig -o /boot/grub/grub.cfg</code></li>
</ul>
<br />
<br />
Po restarcie powinniśmy zobaczyć menu startowe Gruba.kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-46913951438455918452012-09-28T11:52:00.000-07:002012-09-28T11:53:42.764-07:00Bridge Linux - serwer SSH<h3>
Instalacja</h3>
<code>sudo pacman -S openssh</code><br />
<br />
<h3>
Konfiguracja</h3>
Edytujemy plik <i>/etc/ssh/sshd_config</i>, w którym można dodać następujące opcje:<br />
<pre>AllowUsers user1 user2
PermitRootLogin no
</pre>
<br />
Pierwsza wskazuje użytkowników, którzy będą mogli logować się przez ssh; druga opcja zabrania logowania na konto roota.<br />
<br />
<h3>
Uruchomienie serwera</h3>
Mamy dwie możliwości:<br />
<br />
<ul>
<li><code>sudo systemctl enable sshd.service</code> - uruchomienie serwera ssh podczas startu systemu</li>
<li><code>sudo systemctl enable sshd.socket</code> - uruchamianie serwera ssh po próbie połączenia</li>
</ul>
<br />
<br />
Proponuję wybrać drugie.kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-13703508606001088292012-09-12T01:41:00.001-07:002012-09-28T12:00:48.435-07:00Apache2 + PHP5 na Ubuntu 12.04 i ArchlinuxChodzi o zainstalowanie serwera www z obsługą php w katalogach domowych użytkownika.<br />
<h2>
Ubuntu 12.04</h2>
<br />
Instalujemy pakiety:<br />
<code>sudo apt-get install apache2 php5 php5-gd php5-sqlite</code>
<br />
<br />
Po instalacji edytujemy <i>/etc/apache2/mods-available/php5.conf</i>, aby odkomentować wspracie dla php w katalogach użytkownika. Następnie uaktywniamy odpowiednie moduły apache'a:<br />
<code>sudo a2enmod userdir rewrite<br />
sudo service apache2 restart - restart usługi</code>
<br />
<br />
<h2>
Archlinux, Bridge Linux</h2>
<br />
Instalujemy pakiety:<br />
<code>sudo pacman -S apache php php-gd php-sqlite<br />
sudo pacman -S systemd-httpd-units</code> - pliki konfiguracyjne usługi dla systemd<br />
<code>sudo packer -S php-apache</code>
<br />
<br />
Do pliku <i>/etc/httpd/conf/httpd.conf</i> dodajemy:<br />
<ul>
<li><code>LoadModule php5_module modules/libphp5.so</code> - na końcu sekcji LoadModule,</li>
<li><code>Include conf/extra/php5_module.conf</code> - na końcu sekcji Include, pod koniec pliku.</li>
</ul>
<br />
W tym samym pliku odkomentowujemy:<br />
<ul>
<li><code>TypesConfig conf/mime.types</code> - powinno być odkomentowane domyślnie,</li>
<li><code>MIMEMagicFile conf/magic</code> - opcjonalnie.</li>
</ul>
<br />
Do pliku <i>/etc/httpd/conf/mime.types</i> dodajemy na końcu listy "application":<br />
<code>application/x-httpd-php5 php php5</code>
<br />
<br />
<code>sudo systemctl start httpd.service</code> - uruchomienie<br />
<code>systemctl status httpd.service</code> - status<br />
<br />
<br />
<h2>
Błędy</h2>
<br />
W obydwu systemach zaglądamy do logów:<br />
<ul>
<li><code>cat /var/log/apache2/error.log</code> - Ubuntu</li>
<li><code>cat /var/log/httpd/error.log</code> - Arch</li>
</ul>
<br />
<h2>
Katalogi użytkownika</h2>
<br />
Tworzymy katalog na strony www:<br />
<code>mkdir public_html</code><br />
<br />
Tworzymy plik testowy <i>index.php</i> z zawartością:<br />
<pre><?php
phpinfo();
?></pre>
- i zapisujemy w <i>public_html</i>. W przeglądarce wpisujemy <i>localhost/~nazwa_użytk</i> i powinniśmy zobaczyć informacje o środowisku php i serwerze.
kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-9112364403456068422012-09-02T04:00:00.000-07:002013-03-26T13:03:04.419-07:00Bridge Linux i SystemdW poprzednim poście nt. instalacji najnowszego Bridge'a poruszyłem temat migracji na nowy mechanizm startowy <i>systemd</i>. Wypada rozszerzyć i uporządkować uwagi dotyczące wdrażania tego rozwiązania.<br />
<br />
<h4>
Pliki konfiguracyjne</h4>
Pierwszym, nieodzownym warunkiem przejścia na systemd jest zastąpienie dotychczasowego pliku konfiguracyjnego Archa, tj. <i>rc.conf</i>, plikami charakterystycznymi dla nowego <a href="https://wiki.archlinux.org/index.php/Systemd#Native_systemd_configuration_files">systemu</a>, co opisałem <a href="http://linetc.blogspot.com/2012/07/bridge-linux-20125-konfiguracja.html">wcześniej</a>:<br />
<br />
<ul>
<li>/etc/hostname</li>
<li>/etc/vconsole.conf</li>
<li>/etc/locale.conf</li>
<li>/etc/timezone</li>
<li>/etc/adjtime</li>
<li>/etc/environment</li>
</ul>
<br />
Obsługa modułów ładowanych podczas uruchamiania systemu realizowana jest przez pliki z katalogu <i>/etc/modules-load.d/</i> [<a href="https://wiki.archlinux.org/index.php/Modprobe#Loading">więcej</a>], moduły blokowane konfigurujemy w katalogu <i>/etc/modprobe.d/</i> [<a href="https://wiki.archlinux.org/index.php/Kernel_modules#Blacklisting">więcej</a>].<br />
<br />
<h4>
Próbne użycie systemd</h4>
Pierwsze użycie systemd wiąże się z czynnościami opisanymi w poprzednim <a href="http://linetc.blogspot.com/2012/09/bridge-linux-20128-i-systemd.html">poście</a>:<br />
<ul>
<li>w <i>/etc/environment</i> wstawiamy: <code>LANG=pl_PL.utf8</code></li>
<li>w <i>/etc/default/grub</i> dopisujemy: <code>GRUB_CMDLINE_LINUX_DEAFAULT="quiet init=/bin/systemd"</code></li>
<li><code>sudo grub-mkconfig -o /boot/grub/grub.cfg</code> - aktualizujemy Gruba</li>
<li><code>sudo systemctl enable graphical.target</code> - ustawiamy domyślny target (runlevel, poziom) uruchamiania</li>
<li><code>sudo systemctl enable lxdm.service</code> - uruchamiamy podczas startu systemu menedżer logowania</li>
</ul>
Restart i... wszystko powinno działać.<br />
<br />
<h4>
Tylko systemd</h4>
Jeżeli po restarcie wszystko (lub prawie) działa, należy spróbować całkowitego zastąpienia dotychczasowych skryptów startowych nowym mechanizmem:<br />
<ul>
<li><code>sudo pacman -R sysvinit initscripts</code> - usuwamy stare skrypty startowe</li>
<li><code>sudo pacman -S systemd-sysvcompat</code> - instalujemy pakiet kompatybilności systemd z sysvinit</li>
<li><code>sudo systemclt enable NetworkManager.service</code> - jeżeli wykorzystujemy NetworkManagera do zarządzania połączeniami sieciowymi uruchamiamy go podczas startu systemu</li>
</ul>
Restart i... wszystko powinno działać.<br />
Jeżeli wszystko (lub prawie) działa, z domyślnej konfiguracji Gruba można usunąć parametr "init=/bin/systemd", pamiętając o zaktualizowaniu potem pliku koniguracyjnego.<br />
<br />
<h4>
<a href="https://wiki.archlinux.org/index.php/Systemd#Systemd_Journal">Journal</a> zamiast syslog-ng</h4>
Systemd zawiera własną usługę logowania, <i>journal</i>. Syslog-ng można odinstalować lub skonfigurować do używania razem z journalem. Domyślnie logi journala są tracone po restarcie, aby tak nie było należy utworzyć klatalog: <code>sudo mkdir /var/log/journal</code>. Rozmiar logu ustawiamy w pliku <i>/etc/ssytemd/journald.conf</i>, np. na 20 MB:<br />
<pre>SystemMaxUse=20M
</pre>
Użyteczne polecenia:<br />
<ul>
<li><code>journalctl</code> - wyświetlenie logów</li>
<li><code>journalctl _SYSTEMD_UNIT=alsa.service</code> - przykładowe filtrowanie logów</li>
</ul>
kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-21318079482446995422012-09-01T12:37:00.000-07:002013-03-26T13:02:35.635-07:00Bridge Linux 2012.8 i systemdJak zainteresowanym wiadomo, dostępna jest następna kompilacja Bridge Linux, oznaczona <a href="http://millertechnologies.net/downloads.html">2012.8</a>. Instalacja przebiega tak samo, jak w wersji 2012.5, ale domyślnie instalowany jest GRUB2. W moim przypadku po restarcie okazało się, że bootmenedżer poprawnie się nie zainstalował. Musiałem więc jeszcze raz uruchomić komputer z wypalonej instalki Bridge'a i wklepać trochę kodu:<br />
<br />
<pre>sudo mount /dev/sda2 /mnt -o rw
cd /mnt
sudo mount -t proc proc proc/
sudo mount -t sysfs sys sys/
sudo mount -o bind /dev dev/
sudo mount -t devpts pts dev/pts/
chroot . /bin/bash
</pre>
- po tych operacjach można zainstalować GRUBA2 tak jak potrzeba, np.:<br />
<pre>grub-install --target=i386-pc --recheck --force /dev/sda[2]
grub-mkconfig -o /boot/grub/grub.cfg
exit
</pre>
- powyższe polecenia instalują GRUBa na dysku <i>/dev/sda</i> albo w MBR (<i>/dev/sda</i>), albo na wybranej partycji (<i>/dev/sda2</i>). Po restarcie wszystko powinno działać.<br />
<br />
Po udanej instalacji, jak zwykle uruchomi się skrypt konfiguracyjny, który ustawia m.in. repozytoria i uruchamia procedurę aktualizacji. Tym razem przebiega ona bez większych problemów, ale jak się okazuje Bridge nadal używa "starego" pliku konfiguracyjnego <i>/etc/rc.conf</i>. Ponieważ ArchLinux stopniowo rezygnuje ze skryptów startowych <i>sysvinit</i> na rzecz <i><a href="https://wiki.archlinux.org/index.php/Systemd">systemd</a></i>, należy je jednak utworzyć. W poście <a href="http://linetc.blogspot.com/2012/07/bridge-linux-20125-konfiguracja.html">Bridge Linux 2012.5 - konfiguracja</a> opisałem, które pliki są potrzebne. Po ich utworzeniu plik <i>/etc/rc.conf</i> można ograniczyć do wpisu:<br />
<pre>DAEMONS=(dbus networkmanager syslog-ng @alsa)
</pre>
- czyli określenia usług uruchamianych podczas startu systemu.<br />
<br />
<h4>
Systemd</h4>
Przejście Archa na mechanizm startowy <i>systemd</i> niesie ze sobą przede wszytskim przyśpieszenie uruchamiania i wyłączania systemu (w moim przypadku system uruchamia się w trybie GUI 10 sekund). Jednak żeby tak się stało, trzeba skonfigurować kilka rzeczy. Na początek w pliku <i>/etc/environment</i> dopisujemy:<br />
<pre>LANG=pl_PL.utf8
</pre>
- następnie w pliku <i>/etc/default/grub</i> jedną linię uzupełniamy:
<br />
<pre>GRUB_CMDLINE_LINUX_DEFAULT="quiet init=/bin/systemd"
</pre>
<br />
Trzeba jeszcze zaktualizować plik konfiguracyjny GRUBa, czyli: <code>sudo grub-mkconfig -o /boot/grub/grub.cfg</code>.<br />
Teraz można skonfigurować domyślny poziom (ang. <i>target</i>) uruchamiania się systemu i start graficznego menedżera logowania:
<br />
<pre>systemctl enable graphical.target
systemctl enable lxdm.service
</pre>
<br />
Pozostaje restart i... obserwowanie szybszego startu systemu... Na koniec warto dodać, że powyższe zmiany nie porzucają jeszcze całkowicie mechanizmu <i>sysvinit</i> i jego skryptów konfiguracyjnych. Jak całkowicie przejść na <i>systemd</i>, napiszę niedługo.<br />
<br />
Aktualizacja: <a href="http://linetc.blogspot.com/2012/11/czysty-systemd.html">Czysty systemd w Bridge Linux 2012.8</a>.kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com1tag:blogger.com,1999:blog-7831044044672222064.post-1191400296653079182012-08-09T12:35:00.001-07:002013-03-26T13:25:33.008-07:00Ubuntu Server 12.04 LTS - DnsmasqUsługi DHCP i DNS są zazwyczaj realizowane przez wyspecjalizowane oprogramowanie, takie jak odpowiednio <a href="https://www.isc.org/software/dhcp/">ISC DHCP</a> i <a href="https://www.isc.org/software/bind">ISC Bind</a>, niemniej w małych sieciach, gdzie ta sama maszyna pełni funkcję routera, serwera DHCP i DNS etc. można pomyśleć o alternatywnym rozwiązaniu, czyli <a href="http://www.thekelleys.org.uk/dnsmasq/doc.html">Dnsmasq</a>.
<br />
<br />
<h4>
Instalacja</h4>
<pre>sudo apt-get install dnsmasq</pre>
<h4>
Konfiguracja</h4>
Wszystkie ustawienia znajdują się w pliku <i>/etc/dnsmasq.conf</i>, chociaż moglibyśmy umieścić je w osobnych plikach w katalogu <i>/etc/dnsmasq.d</i>. Konfiguracja funkcjonalności serwera DHCP i DNS (cache) dla sieci lokalnej na interfejsie 192.168.19.1 (zobacz post nt. konfiguracji <a href="http://linetc.blogspot.com/2012/07/ubuntu-serwer-1204-lts-konfiguracja.html">Ubuntu Server 12.04 LTS</a>) przedstawia się następująco:
<br />
<pre>domain-needed
bogus-priv
filterwin2k
# nie korzystaj z pliku /etc/resolv.conf
no-resolv
# serwery DNS, np. naszego ISP
server=208.67.222.222
server=208.67.220.220
# nasza domena
local=/mojadomena.org/
# nasłuchuj na interfejsie
interface=eth1
expand-hosts
domain=mojadomena.org
# zakres adresów
dhcp-range=192.168.19.100,192.168.19.200,255.255.255.0,12h
# przykład rezerwacji adresów stałych
dhcp-host=00:1E:33:49:0E:C2,hostwlanie,192.168.19.14,1h
#
dhcp-option=3,192.168.19.1 # adres routera
# Opcje dla Samby w roli PDC
dhcp-option=19,0 # opcja ip-forwarding off
dhcp-option=44,0.0.0.0 # WINS server(s)
dhcp-option=45,0.0.0.0 # netbios datagram distribution server
dhcp-option=46,8 # netbios node type (hybrid)
dhcp-option=vendor:MSFT,2,1i # zwalnianie przydzielonego adresu DHCP
# serwer autorytatywny
dhcp-authoritative
cache-size=200
</pre>
W opcjach server podajemy adresy naszych serwerów DNS, w przykładzie powyżej mamy serwery <a href="http://www.opendns.com/">Open DNS</a>, pozostałe opcje są bardzo dobrze opisane w oryginalnym pliku konfiguracyjnym (warto zrobić jego kopię).<br />
<br />
Aby wszystko działało, trzeba jeszcze pamiętać o dwóch rzeczach. W pliku <i>/etc/dhcp/dhclient.conf</i> opcja <code>prepend domain-name-servers 127.0.0.1;</code> powinna być odkomentowana. Natomiast w pliku <i>/etc/hosts</i>, który dnsmasq propaguje do wszystkich klientów, powinna znaleźć się linia definiująca adres naszego routera i serwera Samby (bardzo ważne, jeżeli Samba jest serwerem PDC i korzystamy z profili wędrujących):<br />
<pre>#127.0.1.1 mojserwer.mojadomena.org mojserwer//to zakomentowujemy
192.168.19.1 mojserwer.mojadomena.org mojserwer
</pre>
Dnsmasq zużywa o wiele mniej zasobów niż tandem ISC DHCP + ISC Bind, jest też, jak widać prostszy w konfiguracji. Przydzielone adresy zapisywane są w pliku:
<br />
<pre>cat /var/lib/misc/dnsmasq.leases
</pre>
<br />
Usługę uruchamiamy standardowo, tzn. <code>sudo service dnsmasq start</code>, oczywiście jeżeli wcześniej skonfigurowaliśmy ISC Dhcp i Binda, trzeba je wyłączyć: <code>sudo service isc-dhcp-server stop && sudo service bind9 stop</code>. Żeby ISC Dhcp i Bind nie były uruchamiane podczas startu systemu (załóżmy, że chcemy wypróbować Dnsmasq nie odinstalowując niczego), można zrobić tak:
<br />
<pre># poniższe da błędy podczas startu, które można pominąć
sudo chmod a-x /etc/init.d/bind9
# przenosimy linki uruchamiajce isc-dhcp do swojego katalogu domowego
sudo mv /etc/init.d/isc-dhcp-* ./
</pre>
Po restarcie powinien uruchomić się Dnsmasq.kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-40216486513587326352012-08-01T07:59:00.001-07:002012-08-01T08:57:19.550-07:00Ubuntu Server 12.04 LTS - dynamiczna aktualizacja DNS przez DHCPChodzi nam o to, aby serwer DHCP na bieżąco aktualizował bazę usługi DNS. Obydwie usługi zainstalowane są na tej samej maszynie i obsługują sieć lokalną (zobacz poprzedni <a href="http://linetc.blogspot.com/2012/07/ubuntu-serwer-1204-lts-konfiguracja.html">post</a>).<br />
Sieć LAN: 192.168.19.0/24<br />
Adres serwera: 192.168.19.1<br />
<br />
Ponieważ serwer Bind9 musi mieć prawo zapisu do plików definiujących naszą strefę lokalną, przenosimy pliki konfiguracyjne i nadajemy odpowiednie uprawnienia, następnie generujemy klucz zabezpieczający dla usługi DHCP:<br />
<br />
<pre>sudo cp /etc/bind/db.* /var/lib/bind
sudo chown bind:bind /var/lib/bind/*
sudo dnssec-keygen -r /dev/urandom -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER
sudo cat Kdhcp_updater.*.private|grep Key
</pre>
<br />
Ostatnie polecenie wyświetli wygenerowany klucz na ekranie, np. <code>Key: 5FROo2v0qrs5qS3pKL8pS2==</code>, to co po dwukropku, należy skopiować do schowka.<br />
Zmieniamy plik <i>/etc/bind/named.conf.local</i>:<br />
<br />
<pre>key DHCP_UPDATER {
algorithm HMAC-MD5.SIG-ALG.REG.INT;
# Poniżej wklej skopiowany wcześniej klucz
secret "5FROo2v0qrs5qS3pKL8pS2==";
};
# W definicjach stref zmieniamy opcje file oraz dodajemy
# opcje allow-update
zone "lo1cg.org" {
type master;
file "/var/lib/bind/db.lo1cg.org";
allow-update { key DHCP_UPDATER; };
};
zone "19.168.192.in-addr.arpa" {
type master;
notify no;
file "/var/lib/bind/db.192";
allow-update { key DHCP_UPDATER; };
};
</pre>
<br />
Trzeba jeszcze skonfigurować usługę DHCP. Modyfikujemy plik <i>/etc/dhcp/dhcpd.conf</i>:<br />
<pre># Na początku pliku dodajemy:
ddns-update-style interim;
ignore client-updates;
update-static-leases on;
ddns-domainname "mojadomena.org.";
ddns-rev-domainname "in-addr.arpa.";
# Przed definicją podsieci dodajemy:
key DHCP_UPDATER {
algorithm HMAC-MD5.SIG-ALG.REG.INT;
# Poniżej wklej skopiowany wcześniej klucz
secret "5FROo2v0qrs5qS3pKL8pS2==";
};
zone lo1cg.org. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
zone 19.168.192.in-addr.arpa. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
</pre>
<br />
Reszta bez zmian. Na uwagę zasługuje opcja <i>update-static-leases</i>, którą powyżej włączyliśmy. Odpowiada ona za dopisanie do bazy DNS rekordów dla wszystkich hostów, którym przypisujemy statyczne adresy IP poprzez usługę DHCP. Manual <i>dhcpd.conf</i> ostrzega, że może to generować dużo ruchu wewnątrz sieci, więc trzeba zwrócić uwagę na opcje <i>min-lease-time</i> i <i>max-lease-time</i> oraz przeglądać log systemowy.<br />
Na koniec restartujemy obie usługi i sprawdzamy, czy poprawnie się uruchomiły:<br />
<pre>sudo service bind9 restart
sudo service isc-dhcp-server restart
sudo tail -n 50 /var/log/syslog
</pre>
<br />
Po uruchomieniu jakiejś maszyny w sieci LAN (mojhost), możemy sprawdzić, czy baza DNS została zaktualizowana:<br />
<pre>host 192.168.19.100 #adres IP mojegohosta
100.19.168.192.in-addr.arpa domain name pointer mojhost.mojadomena.org.
</pre>
<br />kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-3898702720577680162012-07-31T02:42:00.001-07:002012-08-01T08:10:27.074-07:00Ubuntu 12.04 - różne błędyJeżeli podczas próby aktualizacji systemu otrzymujesz komunikat typu:
<code>BADSIG 40976EAF437D05B5 Ubuntu Archive Automatic Signing Key ...</code>, możesz spróbować następującej metody:<br />
<ul>
<li><code>sudo apt-get clean</code></li>
<li><code>cd /var/lib/apt</code></li>
<li><code>sudo mv lists lists.old</code></li>
<li><code>sudo mkdir -p lists/partial</code></li>
<li><code>sudo apt-get clean</code></li>
<li><code>sudo apt-get update</code></li>
<li><code>sudo rm -r lists.old</code></li>
<li><code>sudo apt-get dist-upgrade</code></li>
</ul>kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-70877035380858442442012-07-27T01:34:00.000-07:002013-03-26T13:26:16.587-07:00Ubuntu Server 12.04 LTS - monitoring<h2>
Narzędzia</h2>
<div>
Większość poniższych narzędzi wymaga uprawnień roota, a więc albo logujemy się na to konto, co w domyślnej konfiguracji Ubuntu jest niemożliwe (konto roota nie ma hasła), albo korzystamy z <code>sudo</code>.</div>
<ul>
<li><code>cat /var/lib/dhcp/dhcpd.leases | less</code> - lista dzierżaw serwera dhcp;</li>
<li><code>tail -f /var/log/syslog</code> - bieżący przegląd logu systemowego, gdzie widać m.in. komunikaty firewalla;</li>
<li><code>apt-get install iptraf</code> - narzędzie pokazujące ruch i statystyki na wybranych interfejsach;</li>
</ul>
<h2>
Tcpdump</h2>
<ul>
<li><code>apt-get install tcpdump</code> - instalacja</li>
<li><code>tcpdump -D</code> - lista interfejsów</li>
<li><code>tcpdump [-A] -i eth1 tcp port 80 [-w plik]</code> - nasłuchiwanie na wskazanym interfejsie pakietów http, opcja <code>-A</code> pokaże zawartość pakietów, opcja <code>-w plik</code> zapisuje pakiety do pliku, z którego można je później wczytać (<code>-r</code>), plik taki może być również analizowany w programie Wireshark.</li>
<li><code>tcpdump -i eth1 host mojhost and mojserwer</code> - śledzenie ruchu między wskazanymi hostami</li>
<li><code>tcpdump -i eth1 src 192.168.1.2 and tcp dst port 80</code> - logowanie pakietów z podanego hosta kierowanych na port 80</li>
<li><code>tcpdump -i eth1 src 192.168.1.2 and dst port 80 and tcp\[13\] == 2</code></li>
<li><code>sudo tcpdump -i eth1 src 192.168.1.2 and dst port 80 and tcp\[tcpflags\]=tcp-syn</code> - przechwytywanie pakietów z ustawioną flagą SYN, poprzedni przykład prezentuje możliwość badania wskazanych bitów w nagłówkach warstwy tcp</li>
<li><code>tcpdump -i eth1 -w zrzut.dmp \(tcp or udp\) and \(dst port 137 or dst port 138 or dst port 139\)</code> - logowanie, tym razem do pliku (<code>-w plik</code>) pakietów NetBIOS</li>
<li><code>tcpdump -i eth1 icmp</code> - logowanie komunikacji protokołu icmp</li>
<li><code>tcpdump -i eth1 icmp[0]=0</code> - logowanie tylko komunikatów echo replay</li>
<li>-v, -vv, -vvv - przełączniki zwiększające szczegółowość informacji logowanych przez tcpdump</li>
<li>-xX - pokazywanie zawartości pakietu w formacie heksadecymalnym</li>
<li><br /></li>
</ul>
<h2>
TShark</h2>
TShark - czyli konsolowa wersja programu Wireshark.<br />
<ul>
<li>apt-get install tshark - instalacja</li>
<li>tshark -D - lista interfejsów</li>
<li>tshark -i eth1 tcp port 80 and host 192.168.1.4 - nasłuchiwanie na wskazanym interfejsie pakietów http od wskazanego hosta</li>
</ul>
<br />
Po instalacji TSharka warto umożliwić uruchamianie go z konta zwykłego użytkownika. W tym celu wydajemy następujące polecenia:<br />
<pre>sudo groupadd wireshark
sudo usermod -a -G wireshark nasz_user
sudo dpkg-statoverride --add root wireshark 750 /usr/bin/dumpcap
sudo chgrp wireshark /usr/bin/dumpcap
sudo chmod 750 /usr/bin/dumpcap #ewentualnie
sudo setcap CAP_NET_RAW,CAP_NET_ADMIN,CAP_DAC_OVERRIDE+eip /usr/bin/dumpcap
</pre>
Po przelogowaniu się nasz_user może uruchamiać TSharka bez sudo.
<br />
<br />
<h2>
Logowanie komunikatów firewalla</h2>
Domyślnie wszystkie komunikaty wg konfiguracji iptables przedstawionej w <a href="http://linetc.blogspot.com/2012/07/ubuntu-serwer-1204-lts-konfiguracja.html">poprzednim poście </a>trafiają do pliku <i>/var/log/syslog</i>. Jeżeli chcemy, aby logi firewalla znalazły się w osobnym pliku, modyfikujemy skrypt uruchamiający firewalla:<br />
<pre># Utworzenie łańcucha DROP.
iptables -N drop-and-log-it
iptables -A drop-and-log-it -j LOG --log-level debug --log-prefix "droplog: "
iptables -A drop-and-log-it -j REJECT
</pre>
<br />
- najważniejsza jest linia druga, która każe poprzedzać każdy komunikat prefiksem "droplog: ", dzięki czemu łatwo stworzymy regułę filtrującą komunikaty zapory. Za logi odpowiedzialna jest usługa <i>rsyslog</i>, tworzymy więc plik <i>/etc/rsyslog.d/20-iptables.conf</i>:
<br />
<pre>:msg, contains, "droplog: " -/var/log/iptables.log
& ~
</pre>
<br />
- nakazuje ona, przekierowanie wszystkich komunikatów zawierających wyrażenie "droplog: " do pliku <i>/var/log/iptables.log</i>. Pozostaje restart usługi: <code> sudo service rsyslog restart</code>.<br />
<br />
<h2>
Nmap</h2>
<ul>
<li><code>nmap -v -sT localhost [192.168.1.0/24]</code> - wykrywanie otwartych portów na lokalnym hoście albo w całej sieci</li>
<li>Inne opcje: <code>-v -sS</code> - skanowanie TCP SYN; <code>-v -sF</code> - skanowanie TCP FIN; <code>-v -O</code> - skanowanie UDP; <code>-v -sR</code> - skanowanie TCP RPC</li>
</ul>
<br />
<h2>
Procesy i inne</h2>
<ul>
<li><code>ps -ef [-eF, axf]</code> - wyświetlenie procesów w różnych formatach</li>
<li><code>lsof -i -n -P</code> - wyświetlenie połączeń sieciowych</li>
<li><code>netstat -tuap</code> - wyświetlenie połączeń sieciowych</li>
<li><code>vmstat 5</code> - wyświetlanie statystyk użycia pamięci, przestrzeni wymiany itd. w odstępach 5-sekundowych</li>
</ul>
<br />kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-11917567785528919372012-07-26T02:04:00.003-07:002013-03-26T13:03:26.359-07:00Ubuntu Server 12.04 LTS - dokumentacjaOto lista zasobów, z których warto skorzystać podczas konfigurowania i zarządzania Ubuntu Server 12.04 LTS przeznaczonym do obsługi średniej sieci lokalnej:<br />
<ul>
<li><a href="http://bodhizazen.net/Tutorials/iptables">IP Tables Primer</a></li>
<li><a href="https://help.ubuntu.com/community/IptablesHowTo">Iptables HowTo</a></li>
<li>Tłumaczenia <a href="http://lukasz.bromirski.net/dokumenty/tlumaczenia/">netfilter HowTo</a></li>
<li><a href="https://help.ubuntu.com/community/Router">Router</a></li>
<li><a href="https://help.ubuntu.com/community/dhcp3-server">Dhcp3-server</a></li>
<li><a href="http://www.thekelleys.org.uk/dnsmasq/doc.html">Dnsmasq</a></li>
<li><a href="https://help.ubuntu.com/12.04/serverguide/squid.html">Squid - Proxy Server</a></li>
<li><a href="http://dansguardian.pl/index.php?s=instalacja-5-minutowa">DansGuardian | Internet bez pornografii</a> </li>
<li><a href="https://help.ubuntu.com/12.04/serverguide/dns.html">Domain Name Service (DNS)</a> </li>
<li><a href="http://lani78.wordpress.com/2012/07/22/setting-up-a-dns-for-the-local-network-on-the-ubuntu-12-04-precise-pangolin-server/">Setting Up DNS Server for the local network</a></li>
<li><a href="https://help.ubuntu.com/12.04/serverguide/samba-dc.html">Samba as a Domain Controller</a> </li>
<li><a href="http://wioowszkole.org/mediawiki/index.php/SRU/Serwer">SRU/Serwer – Wioowszkole</a> - gotowe, działające rozwiązanie oparte na Ubuntu Server 10.04 LTS</li>
<li><a href="http://zsk.wsti.pl/publikacje/iptables_przystepnie.htm">Iptables</a> przystępnie</li>
<li><a href="http://lukasz.bromirski.net/docs/tutorials/tcpdump.html">Tcpdump</a> - wprowadzenie</li>
<li><a href="http://www.cyberciti.biz/tips/linux-scanning-network-for-open-ports.html">Nmap</a> scanning</li>
<li><a href="http://www.samba.org/samba/docs/using_samba/toc.html">Using Samba</a></li>
</ul>
<br />
<h2>
Różne</h2>
<ul>
<li><a href="http://packetlife.net/blog/2010/mar/19/sniffing-wireshark-non-root-user/">Uruchamianie TSharka (Wiresharka) z konta zwykłego użytkownika</a></li>
</ul>
kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-46528991242507651862012-07-26T01:44:00.003-07:002013-03-26T13:04:07.793-07:00Linux - polecenia<h2>
Operacje na użytkownikach</h2>
Dodawanie/usuwanie użytkownika "jacek": <br />
<ul>
<li><code>useradd -d /home/jacek -g users -G audio,video,optical -s /bin/bash</code> - dodanie konta użytkownika</li>
<li><code>userdel -r jacek</code> - usunięcie konta</li>
</ul>
Modyfikowanie grup użytkownika "jacek":<br />
<code>usermod -a -G wheel jacek</code><br />
Dodawanie/usuwanie grupy "www-users":<br />
<code>groupadd www-users <br />
groupdel www-users</code><br />
<br />
<h2>
Uprawnienia specjalne</h2>
<ul>
<li><code>chmod 1xyz /path/plik[katalog]</code> - ustawienie bitu lepkości (ang. <i>sticky bit</i>), program po zakończeniu będzie przechowywany w pamięci, plik lub katalog będzie możliwy do usunięcia tylko przez właściciela.</li>
<li><code>chmod 2xyz /path/plik[katalog]</code> - ustawienie sgid (ang. <i>set group id</i>) - ustawienie bitu grupy, program będzie wykonywany z uprawnieniami grupy, w katalogu z bitem sgid tworzone pliki i katalogi będą własnością grupy.</li>
<li><code>chmod 4xyz /path/plik[katalog]</code> - ustawienie suid (ang. <i>set user id</i>) - ustawienie bitu użytkownika, program będzie wykonywany z uprawnieniami właściciela (często roota), w katalogu z bitem suid tworzone pliki i katalogi będą własnością właściciela.</li>
<li><code>chmod 6xyz /path/plik[katalog]</code> - ustawienie bitów sgid i suid, program będzie wykonywany z uprawnieniami grupy i właściciela, w katalogu z bitem sgid i suid tworzone pliki i katalogi będą własnością grupy i właściciela.</li>
</ul>
<br />
Domyślne uprawnienia plików/katalogów:<br />
<code>umask</code> - wyświetla domyślne uprawnienia, zazwyczaj 0002. Wartość umask łączona jest (koniunkcja logiczna AND) z domyślnymi wartościami dla plików (0666) i katalogów (0777), w wyniku odejmowania nadawane są uprawnienia do pliku/katalogu. Np. <i>umask = 0002</i> oznacza domyślne uprawnienia 0664 dla plików i i 0775 dla katalogów.<br />
<br />
<br />
Wyświetl listę użytkowników:<br />
<code>cat /etc/passwd | grep '/home' | cut -d : -f 1</code><br />
<br />
Zmiana uprawnień<br />
<code>chmod 644 /path/plik<br />
chmod 755 /path/katalog</code><br />
Zmiana uprawnień wszystkich katalogów w katalogu /path/katalog:<br />
<code>find /path/katalog -type d -exec chmod 2775 {} \;</code><br />
<br />
Zmiana uprawnień wszystkich plików w katalogu /path/katalog:<br />
<code>find /path/katalog -type f -exec chmod 0664 {} \;</code><br />
<br />
Zmiana właściciela<br />
<code>chown jacek:users /path/plik<br />
chown -R jacek:users /path/katalog</code><br />
<br />
<h2>
Sieć</h2>
<ul>
<li><code>cat /etc/services</code> - lista standardowych usług sieciowych</li>
<li><code>lsof -i</code> - lista otwartych połączeń sieciowych</li>
<li><code>lsof -i -n -P</code> - lista otwartych i ustanowionych połączeń sieciowych</li>
<li><code>netstat 192.168.1.0/24</code> - podstawowe skanowanie sieci</li>
<li><code>netstat -lnptu</code> - lista połączeń sieciowych</li>
<li><code>netstat -tuap</code> - lista połączeń sieciowych</li>
<li><code>netstat -an|grep LISTEN [grep -v ^unix]</code> - lista połączeń sieciowych</li>
<li><code>netstat -platune | grep 80</code> - lista uruchomionych usług na portach 80, 8080</li>
<li><code>nmap -v -A ip_address</code> - skanowanie hosta</li>
<li><code>nmap -v -A -PN ip_address</code> - skanowanie opornego hosta</li>
<li><code>nmap -sU [-sT,-sS] ip_adress</code> - skanowanie przy użyciu protokołu UDP, TC</li>
<li><code>ss -ltp</code> - lista nasłuchujących usług</li>
</ul>
<br />
<h2>
Logi</h2>
<ul>
<li><code>dmesg [| grep ata]</code> - przeglądanie logu systemowego</li>
<li><code>tail -n 100 /var/log/syslog</code> - śledzenie logu systemowego</li>
</ul>
<br />kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0tag:blogger.com,1999:blog-7831044044672222064.post-18297673671632985202012-07-24T12:55:00.002-07:002013-03-26T15:16:51.715-07:00Ubuntu Serwer 12.04 LTS - konfiguracja<h2>
Założenia wstępne</h2>
Serwer pełnił będzie funkcję routera, posiada dwa interfejsy sieciowe: <i>eth0</i> (WAN, połączenie z internetem) adresowany przez DHCP, oraz <i>eth1</i> (LAN, połączenie z siecią lokalną), adresowany statycznie. Na interfejsie WAN uruchomiona zostanie usługa NAT (translacja adresów). Na interfejsie LAN uruchomione zostaną następujące usługi: serwer DHCP, serwer DNS, Samba jako PDC (Primary Domain Controller), transparentne proxy z filtracją treści WWW (Squid + Dansguardian). Konfiguracja taka może zostać zastosowana np. w <a href="http://ecg.vot.pl/?id=linux-w-szkole" target="_blank">szkolnych pracowniach</a>, czy po modyfikacjach uwzględniających w większym stopniu zagadnienia bezpieczeństwa w małych firmach.<br />
<br />
<h2>
Konfiguracja interfejsów</h2>
Zmian dokonujemy w pliku /etc/network/interfaces:<br />
<pre>auto lo
iface lo inet loopback
# WAN interface
auto eth0
iface eth0 inet dhcp
# LAN interface
auto eth1
iface eth1 inet static
address 192.168.19.1
network 192.168.19.0
netmask 255.255.255.0
broadcast 192.168.19.255
dns-nameservers 192.168.19.1
dns-search mojadomena.org
dns-domain mojadomena.org
</pre>
<br />
Adres zewnętrzny (WAN, połączenie z Internetem) przyznawany będzie więc dynamicznie, natomiast wewnętrzny (LAN, połączenie z siecią lokalną) ustawiony został na 192.168.19.1. Użyteczne polecenia:<br />
<ul>
<li><code>sudo nohup sh -c "ifdown eth0 && ifup eth0"</code> - restart interfejsu eth0 ("sudo service networking restart" zostało odrzucone);</li>
<li><code>sudo ip addr</code> - informacja o wszystkich interfejsach</li>
<li><code>sudo ifconfig</code> - informacja o wszystkich interfejsach (obszerniejsza)</li>
</ul>
<br />
<br />
<h2>
Konfiguracja routera i firewalla</h2>
Routing, a zarazem firewall zrealizowane zostanie za pomocą iptables. Ponieważ będziemy korzystać z usługi NAT, w pliku <i>/etc/sysctl.conf</i> trzeba odkomentować opcję: <code>net.ipv4.ip_forward=1</code>
<br />
<br />
W pliku <i>/etc/mojserwer/firewall.sh</i> (nazwa katalogu i pliku dowolna) tworzymy skrypt ładujący odpowiednie reguły:<br />
<pre>#!/bin/bash
echo -e "Ładowanie reguł iptables...\n\n"
#Nazwa interfejsu LAN
INTIF="eth1"
# Adres sieci LAN
INTNET="192.168.19.0/24"
# Adres IP interfejsu LAN
INTIP="192.168.19.1"
# Nazwa interfejsu WAN
EXTIF="eth0"
# Adres IP interfejsu WAN (wykryty)
EXTIP="`/sbin/ifconfig $EXTIF | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"
UNIVERSE="0.0.0.0/0"
# Odkomentowana opcja w /etc/sysctl.conf, więc tu może być zakomentowane
#echo 1 > /proc/sys/net/ipv4/ip_forward
# Wyczyszczenie wszystkich łańcuchów i reguł, określenie domyślnej polityki odrzucania pakietów (DROP).
iptables -P INPUT DROP
iptables -F INPUT
iptables -P OUTPUT DROP
iptables -F OUTPUT
iptables -P FORWARD DROP
iptables -F FORWARD
iptables -F -t nat
if [ "`iptables -L | grep drop-and-log-it`" ]; then
iptables -F drop-and-log-it
fi
iptables -X
iptables -Z
# Utworzenie łańcucha DROP.
iptables -N drop-and-log-it
iptables -A drop-and-log-it -j LOG --log-level info
iptables -A drop-and-log-it -j REJECT
# Reguły INPUT
# Wszystkie połączenia z localhost
iptables -A INPUT -i lo -j ACCEPT
# Odrzucenie połączeń podszywających się pod lokalne
iptables -A INPUT -i $EXTIF -s $INTNET -d $UNIVERSE -j drop-and-log-it
# Protokół ICMP
iptables -A INPUT -i $INTIF -p icmp -s $INTNET -d $UNIVERSE -j ACCEPT
iptables -A INPUT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP -j ACCEPT
# Połączeń zwrotne do serwera maskarady na interfejsie LAN
iptables -A INPUT -i $INTIF -s $INTNET -d $INTIP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Komunikaty ICMP: ping i echo
iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 7 -j ACCEPT
iptables -A INPUT -i $INTIF -p udp -s $INTNET -d $UNIVERSE --dport 7 -j ACCEPT
# Zapytania DNS
iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 53 -j ACCEPT
iptables -A INPUT -i $INTIF -p udp -s $INTNET -d $UNIVERSE --dport 53 -j ACCEPT
# Usługi Samby
iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 135 -j ACCEPT
iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 139 -j ACCEPT
iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 445 -j ACCEPT
iptables -A INPUT -i $INTIF -p udp -s $INTNET -d $UNIVERSE --dport 137 -j ACCEPT
iptables -A INPUT -i $INTIF -p udp -s $INTNET -d $UNIVERSE --dport 138 -j ACCEPT
# Protokół SSH
iptables -A INPUT -i $INTIF -p tcp -s $INTNET -d $UNIVERSE --dport 22 -j ACCEPT
# Serwer proxy Squid na interfejsie LAN, port 3128
iptables -A INPUT -i $INTIF -p tcp --dport 3128 -j ACCEPT
# Squid3 transparent bez Dansguardiana - trzeba wtedy odkomentować
#iptables -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j REDIRECT --to-ports 3128
# Dansguardian + Squid3 transparent proxy
iptables -A INPUT -i $INTIF -p tcp --dport 8080 -j ACCEPT
iptables -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j REDIRECT --to-ports 8080
# Połączenia przychodzące na interfejs WAN
# Połączenia zwrotne do serwera maskarady na interfejsie WAN
iptables -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Komunikaty ICMP: ping i echo.
iptables -A INPUT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP --dport 7 -j ACCEPT
iptables -A INPUT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP --dport 7 -j ACCEPT
# Odrzucanie i logowanie wszystkich innych połączeń przychodzących
iptables -A INPUT -s $UNIVERSE -d $UNIVERSE -j drop-and-log-it
# Reguły OUTPUT
# Odrzucanie połączeń do sieci LAN z WAN
iptables -A OUTPUT -o $EXTIF -s $UNIVERSE -d $INTNET -j drop-and-log-it
# Wszystkie połączenia localhost
iptables -A OUTPUT -o lo -j ACCEPT
# Zezwolenie dla LAN
iptables -A OUTPUT -o $INTIF -d $INTNET -j ACCEPT
# Zezwolenie na DHCP reply typu broadcast - dla MS Visty
iptables -A OUTPUT -o $INTIF -p udp -s $INTIP --sport 67 -d $UNIVERSE --dport 68 -j ACCEPT
# Zezwolenie dla WAN
iptables -A OUTPUT -o $EXTIF -j ACCEPT
# Odrzucanie i logowanie wszystkie innych połączeń wychodzących
iptables -A OUTPUT -s $UNIVERSE -d $UNIVERSE -j drop-and-log-it
# FORWARD: Włączenie routowania, tj. usługi NAT, zwanej maskaradą, czyli IMPASQ.
# Routing na interfejsie WAN
iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
# Routowanie ustanowionych połączeń
iptables -A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Odblokowanie poszczególnych usług
# Protokół ICMP
iptables -A FORWARD -i $INTIF -p icmp -j ACCEPT
# Porty wysokie
iptables -A FORWARD -i $INTIF -p tcp --dport 1024:65535 -j ACCEPT
iptables -A FORWARD -i $INTIF -p udp --dport 1024:65535 -j ACCEPT
# Komunikaty ICMP: ping, echo
iptables -A FORWARD -i $INTIF -p tcp --dport 7 -j ACCEPT
iptables -A FORWARD -i $INTIF -p udp --dport 7 -j ACCEPT
# Usługa DNS
iptables -A FORWARD -i $INTIF -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -i $INTIF -p udp --dport 53 -j ACCEPT
# Protokół SSH
iptables -A FORWARD -i $INTIF -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i $INTIF -p udp --dport 22 -j ACCEPT
# HTTP-FORWARD-OK
# HTTP -- jeśli wyłączony jest squid i dansguardian, poniższe trzeba odkomentować
# iptables -A FORWARD -i $INTIF -p tcp --dport 80 -j ACCEPT
# iptables -A FORWARD -i $INTIF -p udp --dport 80 -j ACCEPT
# HTTPS
iptables -A FORWARD -i $INTIF -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -i $INTIF -p udp --dport 443 -j ACCEPT
# FTP
iptables -A FORWARD -i $INTIF -p tcp --dport 20:21 -j ACCEPT
iptables -A FORWARD -i $INTIF -p udp --dport 21 -j ACCEPT
# Poczta
iptables -A FORWARD -i $INTIF -p tcp --dport 25 -j ACCEPT # smtp
iptables -A FORWARD -i $INTIF -p tcp --dport 110 -j ACCEPT # pop3
iptables -A FORWARD -i $INTIF -p tcp --dport 143 -j ACCEPT # imap
iptables -A FORWARD -i $INTIF -p tcp --dport 465 -j ACCEPT # legacy secure SMTP
iptables -A FORWARD -i $INTIF -p tcp --dport 587 -j ACCEPT # smtp Submission
iptables -A FORWARD -i $INTIF -p tcp --dport 993 -j ACCEPT # imap ssl
iptables -A FORWARD -i $INTIF -p tcp --dport 995 -j ACCEPT # pop3s
# Odrzucanie i logowanie wszystkich pozostałych połączeń.
iptables -A FORWARD -j drop-and-log-it
echo -e "Ładowanie reguł iptables zakończone!\n\n"
</pre>
<br />
<br />
Plikowi należy nadać prawa do wykonywania: <code>chmod a+x /etc/mojserwer/firewall.sh</code>. Aby reguły były wczytywane podczas startu systemu w pliku <i>/etc/rc.local</i> umieszczamy wywołanie skryptu:<br />
<br />
<pre># Start firewalla
cd /etc/mojserwer/
./init_firewall.sh
#</pre>
<br />
<br />
Użyteczne polecenia:<br />
<ul>
<li><code>sh /etc/rc.local</code> - uruchomienie (restart) firewalla i routingu;</li>
</ul>
<br />
<h2>
Serwer DHCP</h2>
Uzupełnienie: tandem isc-dhcp-server + bind można zastąpić usługą <a href="http://linetc.blogspot.com/2012/08/ubuntu-server-1204-lts-dnsmasq.html">Dnsmasq</a>.<br />
Instalacja (wersja 4.1): <code>apt-get install isc-dhcp3-server</code><br />
<h4>
Konfiguracja</h4>
W pliku <i>/etc/default/isc-dhcp-server</i> ustawiamy interfejs, na którym ma działać serwer: <code>INTERFACES="eth1"</code><br />
<br />
W pliku <i>/etc/dhcp/dhcpd.conf</i> definiujemy ustawienia globalne i podsieci:<br />
<pre>ddns-update-style none;
option domain-name "mojadomena.org";
option domain-name-servers mojserwer.mojadomena.org;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 192.168.19.0 netmask 255.255.255.0 {
range 192.168.19.100 192.168.19.200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.19.255;
option routers 192.168.19.1;
# DNS server
option domain-name-servers 192.168.19.1;
option domain-name "mojadomena.org";
# WINS server
option netbios-name-servers 192.168.19.1;
}</pre>
<br />
<br />
Jak widać zdefiniowano podsieć LAN 192.168.19.0/24, w której serwer będzie przyznawał
adresy w zakresie 192.168.19.100-192.168.19.200. Określono też domyślny adres naszego serwera, czyli 192.168.19.1, udostępniającego usługi routera, DNS i WINS. Uwaga: dopóki nie skonfigurujemy usługi DNS na serwerze, stacje nie będą mogły łączyć się z Internetem przy użyciu nazw domenowych. Na czas konfiguracji usługi DNS można podać adresy zewnętrznych serwerów DNS (np. swojego ISP lub open DNS), np.:<br />
<br />
<code>
option domain-name-servers 208.67.222.222,208.67.220.220;
</code>
<br />
<br />
Użyteczne polecenia:<br />
<ul>
<li><code>sudo service isc-dhcp-server start (restart)</code> - uruchomienie (restart) serwera dhcp</li>
</ul>
<br />
<h2>
Squid</h2>
Instalacja: <code>sudo apt-get install squid3</code><br />
<h4>
Konfiguracja</h4>
Przed utworzeniem pliku konfiguracyjnego warto zmienić nazwę oryginalnego pliku, który zawiera opis wszystkich opcji, natomiast właściwy plik utworzyć od początku:<br />
<br />
<code>sudo mv /etc/squid3/squid.conf /etc/squid3/squid.conf.org<br />
sudo touch /etc/squid3/squid.conf</code><br />
<br />
Zawartość pliku:<br />
<br />
<pre>acl all src
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 192.168.19.0/24 #Opis sieci LAN
acl LAN src 192.168.19.0/24 #Opis sieci LAN
acl safeports port 21 70 80 210 280 443 488 563 591 631 777 873 901 81 3128 1025-65535
acl sslports port 443 563 81 873 2087 10000
acl purge method PURGE
acl connect method CONNECT
follow_x_forwarded_for allow localhost
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !safeports
http_access deny CONNECT !sslports
http_access allow localhost
http_access allow localnet
http_access allow LAN
http_access deny all
icp_access allow localnet
icp_access deny all
# Normalny proxy
# http_port 3128
# Transparent proxy
http_port 3128 intercept
# Rozmiar cache'u
cache_mem 8 MB
maximum_object_size_in_memory 512 KB
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
cache_dir aufs /home/cache 8000 14 256
maximum_object_size 16 MB
cache_swap_low 93
cache_swap_high 97
# Logi
access_log /var/log/squid3/access.log
cache_log /var/log/squid3/cache.log
cache_store_log none
logfile_rotate 5
log_icp_queries off
# TIMEOUTS
forward_timeout 240 second
connect_timeout 30 second
peer_connect_timeout 5 second
read_timeout 600 second
request_timeout 60 second
shutdown_lifetime 10 second
</pre>
<br />
Przygotowanie katalogu cache:<br />
<code>
sudo mkdir /home/cache<br />
sudo chmod 777 /home/cache<br />
sudo chown proxy:proxy /home/cache</code>
<br />
<br />
Utworzenie katalogu cache: <code>sudo squid3 -z</code> - nie powinno być żadnych błędów.<br />
<br />
Użyteczne polecenia:<br />
<ul>
<li><code>sudo service squid3 start (restart)</code> - uruchomienie (restart) squida;</li>
</ul>
<br />
<h2>
Dansguardian</h2>
Instalacja: <code>sudo apt-get install dansguardian</code>
<br />
<h4>
Konfiguracja</h4>
W pliku <i>/etc/dansguardian/dansguardian.conf</i> zmieniamy niewiele:<br />
<pre>language = 'polish'
filterip =192.168.19.1 #ip, na którym ma nasłuchiwać dansguardian
#accessdeniedaddress = 'http://YOURSERVER.YOURDOMAIN/cgi-bin/dansguardian.pl'
forwardedfor = on
</pre>
<br />
Jak widać, linię <code>accessdeniedaddress</code> zakomentowujemy, ostatnia opcja umożliwia wgląd w źródłowe IP klienta. W pliku <i>/etc/dansguardian/dansguardianf1.conf</i> opisującym domyślną grupę użytkowników (czyli wszystkich) ustalamy reguły filtrowania:<br />
<br />
<code>
naughtynesslimit = 150 #ustawienie wrażliwości filtra
</code><br />
<br />
Dansguardian domyślnie nasłuchuje na porcie 8080, proxy możemy więc konfigurować ręcznie w przeglądarkach wybranych klientów. Jeżeli jednak cały ruch ma przechodzić przez filtr automatycznie (bez wiedzy użytkoników), w skrypcie firewalla (patrz wyżej) muszą znaleźć się wpisy:<br />
<br />
<pre> iptables -A INPUT -i $INTIF -p tcp --dport 8080 -j ACCEPT
iptables -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j REDIRECT --to-ports 8080
</pre>
<br />
- które przekierowują cały ruch http do Dansguardiana. Dodatkowo można zablokować port 3128, na którym nasłuchuje Squid, żeby uniemożliwić użytkownikom obchodzenie filtra.
<br />
<br />
Użyteczne polecenia:<br />
<ul>
<li><code>sudo service dansguardian start (restart)</code> - uruchomienie (restart) usługi;</li>
<li><code>sudo dansguardian -g</code> - polecenie ponownego wczytania konfiguracji, np. po dokonaniu poprawek w listach;</li>
</ul>
<br />
<h2>
Bind - serwer DNS</h2>
Instalacja i konfiguracja Binda jako lokalnego serwera DNS jest opcjonalna. Jeżeli ją pominiemy, pamiętać trzeba o umieszczeniu poprawnych adresów zewnętrznych serwerów DNS w konfiguracji usługi DHCP. Minusem będzie brak możliwości odwoływania się do innych komputerów w sieci lokalnej za pomocą ich nazw. Warto więc rozważyć ewentualne zastąpienie tandemu Bind + ISC DHCP alternatywą, czyli usługą <a href="http://linetc.blogspot.com/2012/08/ubuntu-server-1204-lts-dnsmasq.html">Dnsmasq</a>.<br />
<br />
Instalacja: <code>sudo apt-get install bind9</code>
<br />
<h4>
Konfiguracja</h4>
Ustawień dokonujemy w plikach zawartych w katalogu /etc/bind. Podstawowe opcje ustawiamy w <i>/etc/bind/named.conf.options</i>:<br />
<br />
<pre>options {
directory "/var/cache/bind";
forwarders {
208.67.222.222;
208.67.220.220;
};
dnssec-validation yes;
auth-nxdomain no;
listen-on { 192.168.19.1; 127.0.0.1; };
listen-on-v6 { any; };
};
</pre>
<br />
<br />
W pliku <i>/etc/bind/named.conf.local</i> definiujemy naszą domenę lokalną:<br />
<br />
<pre>zone "mojadomena.org" {
type master;
file "/etc/bind/db.mojadomena.org";
};
zone "19.168.192.in-addr.arpa" {
type master;
notify no;
file "/etc/bind/db.192";
};
</pre>
<br />
<br />
W zdefiniowanych powyżej plikach konfiguracyjnych trzeba wprowadzić odpowiednie rekordy DNS. W pliku <i>/etc/bind/db.mojadomena.org</i> opisujemy naszą domenę:<br />
<br />
<pre>$TTL 604800
@ IN SOA mojserwer.mojadomena.org. admin.mojadomena.org. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ); Negative Cache TTL
@ IN NS mojserwer.mojadomena.org.
localhost IN A 127.0.0.1
mojserwer IN A 192.168.19.1
dns1 IN CNAME mojserwer
</pre>
<br />
<br />
W pliku <i>/etc/bind/db.192</i> konfigurujemy domenę odwrotną:<br />
<br />
<pre>$TTL 604800
@ IN SOA mojserwer.mojadomena.org. admin.mojadomena.org. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ); Negative Cache TTL
@ IN NS mojserwer.
1 IN PTR mojserwer.mojadomena.org.
</pre>
<br />
<br />
Powyższa konfiguracja ma zapewniać serwer autorytatywny dla domeny lokalnej z funkcją buforowania zapytań, dlatego trzeba jeszcze zadbać, aby wszystkie zapytania DNS na serwerze kierowane były do serwera lokalnego (buforującego). W pliku <i>/etc/dhcp/dhclient.conf</i> powinniśmy mieć wpisy:<br />
<pre>supersede domain-name "mojadomena.org";
prepend domain-name-servers 127.0.0.1;
</pre>
- dzięki czemu w pliku /etc/resolv.conf znajdzie się właściwy wpis: <code>nameserver 127.0.0.1</code> oraz <code>search mojadomena.org.</code><br />
<br />
Użyteczne polecenia:<br />
<ul>
<li><code>sudo service bind9 start (restart)</code> - uruchomienie (restart) serwera DNS;</li>
<li><code>named-checkzone example.com /etc/bind/db.mojadomena.org</code> - sprawdzenie poprawności konfiguracji domeny lokalnej;</li>
<li><code>named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192</code> - sprawdzenie poprawności konfiguracji domeny odwrotnej;</li>
<li><code>dig -x 127.0.0.1</code> - sprawdzenie działania serwera na interfejsie lokalnym;</li>
<li><code>dig google.pl</code> - testowanie serwera, należy powtórzyć co najniej dwa razy, aby sprawdzić czas odpowiedzi, czyli działanie funkcji buforowania;</li>
<li><code>tail -f /var/log/syslog</code> - śledzenie ewentualnych błędów;</li>
</ul>
<br />
<h2>
Samba</h2>
Instalacja: <code>sudo apt-get install samba</code><br />
<br />
Przed edycją pliku konfiguracyjnego warto zrobić jego kopię: <code> sudo cp /etc/samba/smb.conf.master /etc/samba/smb.conf.org</code>. Edytujemy plik <i>/etc/samba/smb.conf.master</i>:<br />
<br />
<pre>[global]
workgroup = mojadomena.org
server string = %h server (Samba, Ubuntu)
interfaces = eth1
bind interfaces only = Yes
map to guest = Bad User
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 100
add machine script = /usr/sbin/useradd -N -g machines -c Machine -s /bin/false -d /dev/null %u
logon script = scripts\logon.cmd
logon path = \\%L\profiles\%U
logon drive = H:
logon home = \\%L\%U
domain logons = Yes
os level = 35
preferred master = Yes
domain master = Yes
dns proxy = No
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
idmap config * : backend = tdb
[homes]
comment = Katalogi domowe
valid users = %S
read only = No
create mask = 0700
directory mask = 0700
browseable = No
[netlogon]
comment = Network Logon Service
path = /srv/samba/netlogon
guest ok = Yes
browseable = No
[profiles]
comment = Users profiles
path = /srv/samba/profiles
read only = No
create mask = 0600
directory mask = 0700
profile acls = Yes
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0600
guest ok = Yes
printable = Yes
print ok = Yes
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
[public]
comment = Katalog publiczny
path = /home/public
read only = No
guest ok = Yes
[materialy]
comment = Zasoby dla uczniow
path = /home/materialy
guest ok = Yes
</pre>
<br />
Tworzymy katalogi na profile mobilne oraz katalogi udostępniane:<br />
<code>
sudo mkdir -m 1777 -p /srv/samba/netlogon<br />
sudo mkdir -m 1777 -p /srv/samba/profiles<br />
sudo mkdir -m 777 -p /srv/samba/public<br />
sudo mkdir -m 755 -p /srv/samba/materialy<br />
</code><br />
<br />
Dla każdego użytkownika i każdej maszyny, którą chcemy podłączyć do PDC (kontrolera domeny) musimy utworzyć konta. Ale najpierw utworzymy i zmapujemy w domenie przydatne grupy:<br />
<code>
sudo addgroup -gid 200 ntadmins <br />
sudo addgroup -gid 201 machines<br />
<br />
sudo addgroup -gid 202 designers<br />
sudo addgroup -gid 203 nobody<br />
net groupmap add ntgroup="Domain Admins" unixgroup=ntadmins rid=512 type=d<br />
net groupmap add ntgroup="Domain Users" unixgroup=users rid=513 type=d<br />
net groupmap add ntgroup="Domain Guests" unixgroup=nobody rid=514 type=d <br />
net groupmap add ntgroup="Designers" unixgroup=designers type=d<br />
</code>
<br />
<br />
Dodanie konta dla maszyny:<br />
<code>
/usr/bin/useradd -g machines -d /dev/null -c "machine nickname" -s /bin/false test$<br />
passwd -l test$<br />
smbpasswd -a -m test<br />
</code><br />
<br />
Dodanie konta dla użytkownika, dodanie użytkownika do przykładowych grup, dodanie użytkownika do kont samby:<br />
<code>
sudo adduser juzio<br />
sudo groupmod -a -G users,designers juzio<br />
sudo smbpasswd -a juzio<br />
</code><br />
<br />
Logi samby znajdziemy w <i>/var/log/samba</i>.
<br />
<br />
Podręczne polecenia:<br />
<ul>
<li><code>sudo service smbd start (restart)</code> - start (restart) podstawowej usługi</li>
<li><code>sudo service nmbd start (restart)</code> - start (restart) usługi przeglądania</li>
<li><code>sudo pdbedit -L -v</code> - podgląd użytkowników Samby</li>
</ul>
<br />
<h2>
Vnstat</h2>
Instalacja i konfiguracja: <code>
sudo apt-get install vnstat<br />
sudo vnstat -u -i eth0<br />
sudo vnstat -u -i eth1<br />
</code>
<br />
Przeglądanie statystyk:<br />
<code>sudo vnstat przełącznik</code>
<br />
<ul>
<li>-q - ogólne</li>
<li>-s - krótkie</li>
<li>-h - ostatnie 12 godzin</li>
<li>-d - ostatnie dni</li>
<li>-m - miesiące</li>
<li>-l - statystyki w czasie rzeczywistym</li>
</ul>
<br />
<h2>
Optymalizacja</h2>
Przede wszystkim podana wyżej konfiguracja Squida i Dansguardiana działa, ale należy dostosować ją do konkretnych warunków, czyli warto obserwować logi:<br />
<code>tail -f /var/log/squid3/access.log</code> oraz <code>tail -f /var/log/dansguardian/access.log</code>
<br />
Warto zastanowić się, które strony są zaufane/potrzebna, a które należy blokować i dopisać je do plików odpowiednio <i>/etc/dansguardian/lists/exceptionsitelist</i> oraz <i>/etc/dansguardian/lists/bannedsitelist</i>.<br />
<br />
Na serwerze nie powinny działać żadne usługi, które nie są na nim niezbędne, więc co można usunąć?
<br />
<ul>
<li><code>sudo apt-get purge whoopsie</code> - usunięcie narzędzia raportowania błędów (instalowane automatycznie)</li>
<li><code>sudo apt-get purge update-notifier-common</code> - usunięcie zbędnych na serwerze powiadomień o aktualizacjach</li>
<li><code>sudo apt-get purge apport apport-symptoms python-apport python-problem-report</code> - usunięcie usługi tworzącej raporty awarii</li>
</ul>
<br />
Aktualizacja: powyższa konfiguracja działa również na Debianie (Wheezy), przy czym ISC DHCP Server + Bind zastąpiono pakietem Dnsmasq.<br />
<br />
Zobacz: <a href="http://linetc.blogspot.com/2012/07/ubuntu-server-1204-lts-dokumentacja.html">Dokumentacja</a> kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com12tag:blogger.com,1999:blog-7831044044672222064.post-90093758357256925252012-07-17T01:57:00.002-07:002012-07-17T02:33:53.585-07:00Ubuntu 12.04 LTS - sieć<h2>
Polecenia sieciowe</h2>
<code>ip addr</code> - wyświetla dostępne interfejsy<br />
<br />
<h2>
Konfiguracja interfejsów</h2>
Przechowywana jest w pliku/etc/network/interfaces. Dla jednej karty sieciowej eth0 otrzymującej adres z serwera DHCP wpisy powinny wyglądać następująco:<br />
<code># definicja pętli zwrotnej <br />
auto lo<br />
iface lo inet loopback<br />
#definicja karty sieciowej<br />
auto eth0<br />
iface eth0 inet dhcp</code><br />
<br />
<h2>
Zmiana nazwy interfejsu</h2>
Lista interfejsów zapisana jest w pliku <code>/etc/udev/rules.d/70-persistent-net.rules</code>. Na końcu każdego wpisu znajduje się wyrażenie <code>NAME="eth1"</code>, w którym definiujemy nazwę interfejsu.<br />
<br />
<h2>
Serwer DHCP</h2>
<code>sudo apt-get install dhcp3-server</code> - instalacja<br />
W pliku <i>/etc/default/isc-dhcp-server</i> określamy na jakim interfejsie ma działać serwer, np. <code>INTERFACES="eth1"</code>. W pliku /etc/dhcp/dhcpd.conf definiujemy konfigurację serwera:<br />
<code>default-lease-time 600;<br />
max-lease-time 7200;<br />
option subnet-mask 255.255.255.0;<br />
option broadcast-address 192.168.1.255;<br />
option routers 192.168.1.254;<br />
option domain-name-servers 192.168.1.254;<br />
option domain-name "mojadomena.org";<br />
<br />
subnet 192.168.1.0 netmask 255.255.255.0 {<br />
range 192.168.1.10 192.168.1.100;<br />
range 192.168.1.150 192.168.1.200;<br />
}<br />
</code><br />
- pierwsze dwie linie określają minimalny i maksymalny okres dzierżawy adresu IP, pozostałe opcje ustalają parametry sieci, wpisy range definiują dostępne pule adresów.<br />
<br />kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com1tag:blogger.com,1999:blog-7831044044672222064.post-40202746515932716102012-07-13T01:33:00.000-07:002012-07-17T02:34:21.564-07:00Rezpozytoria Ubuntu 12.04<h2>
Podstawowe </h2>
<code>W pliku <i>/etc/apt/sources.list</i>:<br />
deb http://pl.archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse<br />deb http://pl.archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse<br />deb http://pl.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse<br />deb http://pl.archive.ubuntu.com/ubuntu precise-security main restricted universe multiverse<br />deb http://security.ubuntu.com/ubuntu precise-security multiverse<br />deb http://archive.canonical.com/ubuntu precise partner<br />deb http://extras.ubuntu.com/ubuntu precise main</code><br />
<br />
<h2>
Dodatkowe</h2>
Można dopisać do pliku <i>/etc/apt/sources.list</i>:<br />
<code>deb http://packages.medibuntu.org/ precise free non-free<br />
deb http://linux.dropbox.com/ubuntu precise main<br />
deb http://deb.opera.com/opera/ stable non-free</code><br />
<br />
Po wydaniu komendy <code>sudo apt-get update </code>wyświetlą się błędy GPG, należy dodać klucze publiczne poszczególnych repozytoriów:<br />
<code>sudo apt-get install medibuntu-keyring<br />
wget -O - http://deb.opera.com/archive.key | sudo apt-key add -<br />
sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5044912E</code><br />
<br />
<h2>
Aktualizacja i instalacja oprogramowania</h2>
<code>sudo apt-get update<br />
sudo apt-get dist-upgrade<br />
sudo apt-get install opera dropbox</code><br />
<h2>
Błędy</h2>
Po zainstalowaniu dropboksa podczas kolejnej próby zaktualizowania reopozytoriów może pojawić się błąd <code>W: Duplicate sources.list...</code>. Należy usunąć wpis wyświetlonego repozytorium z pliku <i>/etc/apt/sources.list</i>, ponieważ został on dodany w osobnym pliku w katalogu <i>/etc/apt/sources.list.d</i>.kukuhttp://www.blogger.com/profile/02481936606923744750noreply@blogger.com0