poniedziałek, 29 sierpnia 2011

CentOS/Red Hat: (tiger)VNC server

Szybkie howto instalacji i konfiguracji serwera vnc. W moim przykładzie użyłem systemu CentOS 6.

# uname -a
Linux ph01 2.6.32-71.29.1.el6.x86_64 #1 SMP Mon Jun 27 19:49:27 BST 2011 x86_64 x86_64 x86_64 GNU/Linux

Instalujemy serwer vnc
# yum -y install tigervnc-server.x86_64 tigervnc-server-applet.noarch tigervnc-server-module.x86_64

Gdzie:
tigervnc-server.x86_64 to A TigerVNC server
tigervnc-server-applet.noarch to Java TigerVNC viewer applet for TigerVNC server
tigervnc-server-module.x86_64 to TigerVNC module to Xorg

Następnie logujemy się na użytkownika, na którym będzie możliwość połączenia się i tworzymy hasło o które aplikacja zapyta podczas próby połączenia
$vncpasswd

W wyniku powinnien zostac utworzony katalog .vnc w $HOME użytkownika a w nim plik passwd.

Następnie edytujemy plik plik konfiguracyjny serwera
#vi /etc/sysconfig/vncservers

głównie interesują nas ostatnie wpisy w pliku, edytujemy:

VNCSERVERS="2:mik" # użytkownik mik na 'monitorze' 2
VNCSERVERARGS[2]="-geometry 1024x768" # ustawiamy główne opcje: geometry - rozdzielczość; localhost - blokuje zdalny dostęp, jedynie istnieje możliwość podłączenia się przez bezpieczny tunel; nolisten tcp - blokuje połączenia przez tcp. Więcej opcji oczywiście możemy znaleźć w manualu.

Po skonfigurowaniu pozostaje uruchomić serwer:
#service vncserver start


** Gdy nie dodaliśmy do VNCSERVERARGS opcji -localhost, możemy zalogować się uruchamiając aplikację vnctiger viewer, jako adres wpisujemy ip:display np.: 192.168.1.55:2

Oczywiście wcześniej należy odblokować porty na naszym firewall`u. Jeżeli chcemy sprawdzic na jakich portach pracuje TigerVNC Server to należy użyc następującej komendy:
# netstat -nlp |grep -i vnc
W wyniku polecenia otrzymamy mniej więcej taki zapis:
tcp        0      0 127.0.0.1:5802              0.0.0.0:*                   LISTEN      3526/Xvnc           
tcp        0      0 127.0.0.1:5902              0.0.0.0:*                   LISTEN      3526/Xvnc           
unix  2      [ ACC ]     STREAM     LISTENING     17586  3526/Xvnc           /tmp/.X11-unix/X2
unix  2      [ ACC ]     STREAM     LISTENING     17585  3526/Xvnc           @/tmp/.X11-unix/X2


** Gdy dodaliśmy do VNCSERVERARGS opcję -localhost, możemy zalogować się uruchamiając aplikację vnctiger viewer, jako adres wpisujemy ip:display, ale w tym przypadku wcześniej musimy wykonać forward portu poleceniem:
#ssh -l mik -L 5902:127.0.0.1:5902 192.168.1.55 # (-L local-port:host:remote-port host)
i tak po uruchomieniu aplikacji w pole adresu wpisujemy: 127.0.0.1:2

To wszystko :-)

czwartek, 23 czerwca 2011

Script: Czyszczenie adresów IP z tablicy dhcp

Jest to prosty skrypt, który przyśpieszy czyszczenie tablicy dhcp w przypadku dużej ilości adresów IP.

#!/usr/bin/bash

#ustawiamy własną scieżkę
PATH=/usr/sbin:/usr/bin:/root/bin 


#Lista makr
net=`dhtadm -P | cut -f1 | sed '1,2d;s/[ \t]*$//'`

echo "Dostepne makra:
${net}" 



#Podajemy nazwę tablicy

echo "Podaj nazwe makra"
read network

echo "Wybrales makro -> ${network}"


#Sprawdzamy czy zmienna ma wartość, jeżeli tak to przystępujemy do przetwarzania
if [ $network ]
then
        for cl in `pntadm -Pv ${network} | cut -f3 | sed s/"Client IP"//g | sed -n '/^.\{2\}/p;s/[ \t]*$//'`
        do
                pntadm -D $cl ${network}
        done
else
echo "Blad. Nie podales makra."

exit 1
fi


Może nie jest skomplikowany, ale swoje zadanie spełnia dobrze.

czwartek, 28 października 2010

Generowanie kluczy ssl do apache


Tworzenie klucza:
#openssl req -new > new.cert.csr

Usuwanie hasła z klucza:
#openssl rsa -in privkey.pem -out new.cert.key

Podpisanie klucza:
#openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 365

Dopisanie do httpd.conf:
SSLEngine on
SSLCertificateFile /sciezka/do/new.cert.cert
SSLCertificateKeyFile /sciezka/do/new.cert.key

poniedziałek, 25 października 2010

Screensaver debian

Wyłączenie wygaszacza ekranu w debianie
#uname -omr
2.6.26-2-686 i686 GNU/Linux

#cd /etc/console-tools
#vi config

odszukujemy linijkę BLANK_TIME=30 i zmieniamy na BLANK_TIME=0

czwartek, 7 października 2010

zone i dns

Podczas instalacji zony można spotkać się z problemem po stronie dns (na przykład poczas instalacji nowych pakietów).
Zakładając, że mamy zone zone1 w /zones/zone1 by rozwiązać ten problem należy skopiować resolv.conf z global zone


#pfexec cp /etc/resolv.conf /zones/zone1/root/etc/

a następnie podmienić plik nsswitch.conf na nsswitch.dns w zonie

#cp /etc/nsswitch.dns /etc/nsswitch.conf


W moim przypadku poskutkowało.

wtorek, 28 września 2010

Opensolaris audioctl

Opensolaris po każdym reboot i zalogowaniu ustawia domyślne wartości audio przy użyciu audioctl. Dla mnie najszybszym sposobem zachowania ustawień audio jest wykonanie następujących czynności:


Wpierw ustawiamy nasze wartości, można to zrobić za pomocą audioctl w terminalu, ale wygodniej jest poprostu ustawić je suwakami w gnome.

Następnie w konsoli zapisujemy ustawienia do pliku
#audioctl save-controls /nasza_sciezka

Mając zapisane ustawienia edytujemy plik .profile (gdy korzystamy z bash-a) i dopisujemy następujące polecenie

audioctl load-controls /nasza_sciezka

To wszystko :)

poniedziałek, 20 września 2010

lustatus && luactivate

listowanie i aktywowanie BE w solaris 10

czwartek, 16 września 2010

bash prompt && useradd -D -s w sol10

upiększenie bash-a:
#export PS1="[\u@\h \W]\\$ "
aby na stałe zachować zmiany, należy dodać komendę do pliku .bashrc w katalogu głównym użytkownika, albo definujemy zmienną w pliku .profile

istnieje mały problem, jeżeli chodzi o ustawienie domyślnej wartości shell podczas wykonywania useradd -D -s (zwracany jest błąd składni), aby to obejść należy wyedytować plik /usr/sadm/defadduser i tam "z ręki" zmienić shell jaki chcemy by był domyślny (np. /usr/bin/bash)
edit: abyśmy mogli odnaleźć plik defadduser w lokalizacji, którą podałem, musimy wpierw wykonać komendę
#useradd -D

bootowanie openindiana w trybe verbose

Na początek za pomocą svcadm wyłączamy gdm:
#svcadm disable gdm
następnie, edytujemy menu.lst gruba (/rpool/boot/grub/menu.lst)  i komentujemy linię splashimage /boot/solaris.xpm, a następnie modyfikujemy linię:
kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS,console=graphics

na

kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS -kv -m verbose

Wszystkie polecenia wykonujemy z root-a ;)

wtorek, 14 września 2010

session cache & accept filter error apache

Podczas uruchamiania serwera apache pod freebsd, można spotkać 2 problemy, które wymieniłem w temacie. 'Session cache' rozwiążemy edytując /etc/hosts (dodajemy ip + nazwę hosta serwera), a następnie w httpd.conf w ServerName wstawiamy nazwę hosta + można dodać port na którym serwerek nasłuchuje.

'accept filter error' rozwiążemy dodająć odpowiedni moduł do kernela:
#kldload accf_http
aby moduł ładował się przy starcie systemu, należy w pliku /boot/loader.conf umieścić następujący wpis accf_http_load="yes".

poniedziałek, 13 września 2010

httpd.conf

Krótki opis opcji httpd.conf

ServerRoot "/usr/local" #Górna granica drzewa katalogów, gdzie znajdują się pliki konifguracyjne, błędów oraz logi.

Listen 80 #Opcja ta daje nam możliwość przypisania serwera apache do konkretnego portu czy też adresu IP.

LoadModule authn_file_module libexec/apache22/mod_authn_file.so (..)#Wsparcie modułów DSO (Dynamic Shared Object). Składnia: LoadModule nazwa_modułu ścieżka_do_modułu. Moduły pozwalają nam na rozszerzenie funkcjonalności serwera, możemy je statycznie wkompilowac w httpd lub skompilowac jako DSO, dzięki czemu będą one oddzielone od httpd. Moduły DSO możemy skompilować podczas budowy serwera lub w późniejszym czasie z wykorzystaniem apxs (apache extension tool). Aby móc w ogóle skorzystać z DSO, nalezy podczas kompilacji serwera dodać obsługę mod.so (--enable-module=shared). Jeżeli dodamy moduł w httpd.conf, musimy zrestartować serwer by dany moduł został uruchomiony.

User www
Group www #Zmiana użytkownika i grupy dla demona httpd.

ServerAdmin mail@domena.com #Mail administratora serwera.

ServerName www.example.com:80 #Nazwa oraz port serwera w celu własnej identyfikacji, w przypadku braku zarejestrowanej nazwy hostu w DNS, wstawiamy adres IP

DocumentRoot "/usr/local/www/apache22/data" #Katalog z którego będziemy udostępniać dokumenty.

#Konfiguracja praw dostępu dla katalogów w których apache udostępnia poszczególne usługi. Przykład z httpd.conf polityki domyślnego blokowania:

<Directory />
  AllowOverride None
  Order deny, allow
  Deny from all
</Directory>

#Przykładowa kontrola udostępniania /usr/local/www/apache22/data
<Directory "/usr/local/www/apache22/data">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#Options odpowiada za to jakie cechy będą dostępne dla wybranego katalogu. Możemy wybrać następujące opcje: None (brak cech), All, ExecCGI (zezwalamy wykonywania skryptów CGI), FollowSymLinks (Serwer będzie podążać za symbolicznymi linkami w katalogu), Includes ('inkludownie' po stronie serwera jest dozwolone), IncludesNOEXEC (jak wcześniej tylko, że ze zezwalamy na użycie #exec cmd / #exec cgi), Indexes (jeżeli nastąpiło żadanie URLa, który mapuje do katalogu, a nie mamy zdefiniowanej dyrektywy DirectoryIndex, która informuje serwer o zasobach jakie ma szukać w przypadku gdy klient zażąda listowania katalogu np. jakisadres.pl/download/ to opcja Indexes spowoduje, że serwer sam wygeneruje listing żadania.), MultiViews (zezwalamy na użycie, wykorzystując moduł mod_negotiation), SymLinksIfOwnerMatch (serwer będzie podąrzać tylko za symbolicznymi linkami, których docelowe katalogi/plik są własnością użytkownika o takim samym id linku).
Opcje nie łączą się, wybierana jest najbardziej odpowiednia. Wyjątkiem jest gdy postawimy '+' lub '-' przed opcją. Domyślną wartością jest 'All'.

DirectoryIndex index.html #wspomniałem wyżej o tej opcji..

ErrorLog "/var/log/httpd-error.log" #Miejsce docelowe logu z błędami

LogLevel warn #Kontrola informacji, które znajdują się w error-log, możemy określić następujący poziom: debug, info, notice, warn, error, crit, alert, emerg

ErrorDocument XXX odpowiedź #Określamy własną odpowiedź na wybrany błąd serwera ("XXX"). Mamy 3 możliwości: zwykły tekst, lokalne przekierowanie, zewnętrzne przekierowanie. Na przykład:
ErrorDocument 404 /brak.html
ErrorDocument 404 "Brak strony"
ErrorDocument 404 http://www.google.pl
ErrorDocument 404 "/cgi-bin/jakassciezka.pl"

EnableNMAP off
EnableSendfile off #Zwiększa wydajność serwera jeżeli system obsługuje transport plików te metody (pliki dostarczane są za pomocą 'memory-mapping' albo 'sendfile syscall').

Dodatkowa konfiguracja opisana w pliku httpd.conf dotyczy głównie modułów, które znajdziemy w katalogu 'extra'. Dołączamy je za pomocą opcji Include, na przykład:
Include etc/apache22/extra/httpd-mpm.conf

Dużo podstawowych modułów możemy skonfigurować za pomocą tagów <IfModule id_modułu></IfModule> na przykład moduł alias:
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/usr/local/www/apache22/cgi-bin/"
</IfModule>

Szczegółowy spis modułów znajdziemy na stronie tutaj.

edit:
Po wgraniu i skonfigurowaniu php5 na nasz serwer należy dodać do httpd.conf opcję, która pozwoli prawidłowo wyświetlać zawartość *.php, czyli:
AddType application/x-httpd-php-source phps (testowane pod debianem)
 
Bardzo fajny moduł, który powoduje, że jeśli udostępniamy miejsce na
naszym serwerze innym użytkownikom, by mogli sami założyć własną witrynę
powinniśmy skorzystać z modułu UserDir. Szczegółowy opis znajduje się tutaj. 
Zgodnie z zaleceniami trzeba pamiętać by zablokować taką 
możliwośc dla konta root:
UserDir disabled root

Natomiast wpis:
UserDir public_html /lub/ UserDir /home/*/public_html
sprawi, że user posiadjący w swoim domowym katalogu katalog public_html
będzie mógł w nim opublikować swoją stronę www.