wtorek, 31 lipca 2012

Ubuntu 12.04 - różne błędy

Jeżeli podczas próby aktualizacji systemu otrzymujesz komunikat typu: BADSIG 40976EAF437D05B5 Ubuntu Archive Automatic Signing Key ..., możesz spróbować następującej metody:
  • sudo apt-get clean
  • cd /var/lib/apt
  • sudo mv lists lists.old
  • sudo mkdir -p lists/partial
  • sudo apt-get clean
  • sudo apt-get update
  • sudo rm -r lists.old
  • sudo apt-get dist-upgrade

piątek, 27 lipca 2012

Ubuntu Server 12.04 LTS - monitoring

Narzędzia

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 sudo.
  • cat /var/lib/dhcp/dhcpd.leases | less - lista dzierżaw serwera dhcp;
  • tail -f /var/log/syslog - bieżący przegląd logu systemowego, gdzie widać m.in. komunikaty firewalla;
  • apt-get install iptraf - narzędzie pokazujące ruch i statystyki na wybranych interfejsach;

Tcpdump

  • apt-get install tcpdump - instalacja
  • tcpdump -D - lista interfejsów
  • tcpdump [-A] -i eth1 tcp port 80 [-w plik] - nasłuchiwanie na wskazanym interfejsie pakietów http, opcja -A pokaże zawartość pakietów, opcja -w plik zapisuje pakiety do pliku, z którego można je później wczytać (-r), plik taki może być również analizowany w programie Wireshark.
  • tcpdump -i eth1 host mojhost and mojserwer - śledzenie ruchu między wskazanymi hostami
  • tcpdump -i eth1 src 192.168.1.2 and tcp dst port 80 - logowanie pakietów z podanego hosta kierowanych na port 80
  • tcpdump -i eth1 src 192.168.1.2 and dst port 80 and tcp\[13\] == 2
  • sudo tcpdump -i eth1 src 192.168.1.2 and dst port 80 and tcp\[tcpflags\]=tcp-syn - przechwytywanie pakietów z ustawioną flagą SYN, poprzedni przykład prezentuje możliwość badania wskazanych bitów w nagłówkach warstwy tcp
  • tcpdump -i eth1 -w zrzut.dmp \(tcp or udp\) and \(dst port 137 or dst port 138 or dst port 139\) - logowanie, tym razem do pliku (-w plik) pakietów NetBIOS
  • tcpdump -i eth1 icmp - logowanie komunikacji protokołu icmp
  • tcpdump -i eth1 icmp[0]=0 - logowanie tylko komunikatów echo replay
  • -v, -vv, -vvv - przełączniki zwiększające szczegółowość informacji logowanych przez tcpdump
  • -xX - pokazywanie zawartości pakietu w formacie heksadecymalnym

TShark

TShark - czyli konsolowa wersja programu Wireshark.
  • apt-get install tshark - instalacja
  • tshark -D - lista interfejsów
  • tshark -i eth1 tcp port 80 and host 192.168.1.4 - nasłuchiwanie na wskazanym interfejsie pakietów http od wskazanego hosta

Po instalacji TSharka warto umożliwić uruchamianie go z konta zwykłego użytkownika. W tym celu wydajemy następujące polecenia:
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
Po przelogowaniu się nasz_user może uruchamiać TSharka bez sudo.

Logowanie komunikatów firewalla

Domyślnie wszystkie komunikaty wg konfiguracji iptables przedstawionej w poprzednim poście trafiają do pliku /var/log/syslog. Jeżeli chcemy, aby logi firewalla znalazły się w osobnym pliku, modyfikujemy skrypt uruchamiający firewalla:
# 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

- 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 rsyslog, tworzymy więc plik /etc/rsyslog.d/20-iptables.conf:
:msg, contains, "droplog: " -/var/log/iptables.log
& ~

- nakazuje ona, przekierowanie wszystkich komunikatów zawierających wyrażenie "droplog: " do pliku /var/log/iptables.log. Pozostaje restart usługi: sudo service rsyslog restart.

Nmap

  • nmap -v -sT localhost [192.168.1.0/24] - wykrywanie otwartych portów na lokalnym hoście albo w całej sieci
  • Inne opcje: -v -sS - skanowanie TCP SYN; -v -sF - skanowanie TCP FIN; -v -O - skanowanie UDP; -v -sR - skanowanie TCP RPC

Procesy i inne

  • ps -ef [-eF, axf] - wyświetlenie procesów w różnych formatach
  • lsof -i -n -P - wyświetlenie połączeń sieciowych
  • netstat -tuap - wyświetlenie połączeń sieciowych
  • vmstat 5 - wyświetlanie statystyk użycia pamięci, przestrzeni wymiany itd. w odstępach 5-sekundowych

czwartek, 26 lipca 2012

Ubuntu Server 12.04 LTS - dokumentacja

Oto 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:

Różne

Linux - polecenia

Operacje na użytkownikach

Dodawanie/usuwanie użytkownika "jacek":
  • useradd -d /home/jacek -g users -G audio,video,optical -s /bin/bash - dodanie konta użytkownika
  • userdel -r jacek - usunięcie konta
Modyfikowanie grup użytkownika "jacek":
usermod -a -G wheel jacek
Dodawanie/usuwanie grupy "www-users":
groupadd www-users
groupdel www-users


Uprawnienia specjalne

  • chmod 1xyz /path/plik[katalog] - ustawienie bitu lepkości (ang. sticky bit), 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.
  • chmod 2xyz /path/plik[katalog] - ustawienie sgid (ang. set group id) - 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.
  • chmod 4xyz /path/plik[katalog] - ustawienie suid (ang. set user id) - 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.
  • chmod 6xyz /path/plik[katalog] - 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.

Domyślne uprawnienia plików/katalogów:
umask - 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. umask = 0002 oznacza domyślne uprawnienia 0664 dla plików i i 0775 dla katalogów.


Wyświetl listę użytkowników:
cat /etc/passwd | grep '/home' | cut -d : -f 1

Zmiana uprawnień
chmod 644 /path/plik
chmod 755 /path/katalog

Zmiana uprawnień wszystkich katalogów w katalogu /path/katalog:
find /path/katalog -type d -exec chmod 2775 {} \;

Zmiana uprawnień wszystkich plików w katalogu /path/katalog:
find /path/katalog -type f -exec chmod 0664 {} \;

Zmiana właściciela
chown jacek:users /path/plik
chown -R jacek:users /path/katalog


Sieć

  • cat /etc/services - lista standardowych usług sieciowych
  • lsof -i - lista otwartych połączeń sieciowych
  • lsof -i -n -P - lista otwartych i ustanowionych połączeń sieciowych
  • netstat 192.168.1.0/24 - podstawowe skanowanie sieci
  • netstat -lnptu - lista połączeń sieciowych
  • netstat -tuap - lista połączeń sieciowych
  • netstat -an|grep LISTEN [grep -v ^unix] - lista połączeń sieciowych
  • netstat -platune | grep 80 - lista uruchomionych usług na portach 80, 8080
  • nmap -v -A ip_address - skanowanie hosta
  • nmap -v -A -PN ip_address - skanowanie opornego hosta
  • nmap -sU [-sT,-sS] ip_adress - skanowanie przy użyciu protokołu UDP, TC
  • ss -ltp - lista nasłuchujących usług

Logi

  • dmesg [| grep ata] - przeglądanie logu systemowego
  • tail -n 100 /var/log/syslog - śledzenie logu systemowego

wtorek, 24 lipca 2012

Ubuntu Serwer 12.04 LTS - konfiguracja

Założenia wstępne

Serwer pełnił będzie funkcję routera, posiada dwa interfejsy sieciowe: eth0 (WAN, połączenie z internetem) adresowany przez DHCP, oraz eth1 (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 szkolnych pracowniach, czy po modyfikacjach uwzględniających w większym stopniu zagadnienia bezpieczeństwa w małych firmach.

Konfiguracja interfejsów

Zmian dokonujemy w pliku /etc/network/interfaces:
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

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:
  • sudo nohup sh -c "ifdown eth0 && ifup eth0" - restart interfejsu eth0 ("sudo service networking restart" zostało odrzucone);
  • sudo ip addr - informacja o wszystkich interfejsach
  • sudo ifconfig - informacja o wszystkich interfejsach (obszerniejsza)


Konfiguracja routera i firewalla

Routing, a zarazem firewall zrealizowane zostanie za pomocą iptables. Ponieważ będziemy korzystać z usługi NAT, w pliku /etc/sysctl.conf trzeba odkomentować opcję: net.ipv4.ip_forward=1

W pliku /etc/mojserwer/firewall.sh (nazwa katalogu i pliku dowolna) tworzymy skrypt ładujący odpowiednie reguły:
#!/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"


Plikowi należy nadać prawa do wykonywania: chmod a+x /etc/mojserwer/firewall.sh. Aby reguły były wczytywane podczas startu systemu w pliku /etc/rc.local umieszczamy wywołanie skryptu:

# Start firewalla
cd /etc/mojserwer/
./init_firewall.sh
#


Użyteczne polecenia:
  • sh /etc/rc.local - uruchomienie (restart) firewalla i routingu;

Serwer DHCP

Uzupełnienie: tandem isc-dhcp-server + bind można zastąpić usługą Dnsmasq.
Instalacja (wersja 4.1): apt-get install isc-dhcp3-server

Konfiguracja

W pliku /etc/default/isc-dhcp-server ustawiamy interfejs, na którym ma działać serwer: INTERFACES="eth1"

W pliku /etc/dhcp/dhcpd.conf definiujemy ustawienia globalne i podsieci:
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;
}


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.:

option domain-name-servers 208.67.222.222,208.67.220.220;

Użyteczne polecenia:
  • sudo service isc-dhcp-server start (restart) - uruchomienie (restart) serwera dhcp

Squid

Instalacja: sudo apt-get install squid3

Konfiguracja

Przed utworzeniem pliku konfiguracyjnego warto zmienić nazwę oryginalnego pliku, który zawiera opis wszystkich opcji, natomiast właściwy plik utworzyć od początku:

sudo mv /etc/squid3/squid.conf /etc/squid3/squid.conf.org
sudo touch /etc/squid3/squid.conf


Zawartość pliku:

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

Przygotowanie katalogu cache:
sudo mkdir /home/cache
sudo chmod 777 /home/cache
sudo chown proxy:proxy /home/cache


Utworzenie katalogu cache: sudo squid3 -z - nie powinno być żadnych błędów.

Użyteczne polecenia:
  • sudo service squid3 start (restart) - uruchomienie (restart) squida;

Dansguardian

Instalacja: sudo apt-get install dansguardian

Konfiguracja

W pliku /etc/dansguardian/dansguardian.conf zmieniamy niewiele:
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

Jak widać, linię accessdeniedaddress zakomentowujemy, ostatnia opcja umożliwia wgląd w źródłowe IP klienta. W pliku /etc/dansguardian/dansguardianf1.conf opisującym domyślną grupę użytkowników (czyli wszystkich) ustalamy reguły filtrowania:

naughtynesslimit = 150 #ustawienie wrażliwości filtra

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:

 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

- 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.

Użyteczne polecenia:
  • sudo service dansguardian start (restart) - uruchomienie (restart) usługi;
  • sudo dansguardian -g - polecenie ponownego wczytania konfiguracji, np. po dokonaniu poprawek w listach;

Bind - serwer DNS

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ą Dnsmasq.

Instalacja: sudo apt-get install bind9

Konfiguracja

Ustawień dokonujemy w plikach zawartych w katalogu /etc/bind. Podstawowe opcje ustawiamy w /etc/bind/named.conf.options:

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; };
};


W pliku /etc/bind/named.conf.local definiujemy naszą domenę lokalną:

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";
};


W zdefiniowanych powyżej plikach konfiguracyjnych trzeba wprowadzić odpowiednie rekordy DNS. W pliku /etc/bind/db.mojadomena.org opisujemy naszą domenę:

$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


W pliku /etc/bind/db.192 konfigurujemy domenę odwrotną:

$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.


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 /etc/dhcp/dhclient.conf powinniśmy mieć wpisy:
supersede domain-name "mojadomena.org";
prepend domain-name-servers 127.0.0.1;
- dzięki czemu w pliku /etc/resolv.conf znajdzie się właściwy wpis: nameserver 127.0.0.1 oraz search mojadomena.org.

Użyteczne polecenia:
  • sudo service bind9 start (restart) - uruchomienie (restart) serwera DNS;
  • named-checkzone example.com /etc/bind/db.mojadomena.org - sprawdzenie poprawności konfiguracji domeny lokalnej;
  • named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192 - sprawdzenie poprawności konfiguracji domeny odwrotnej;
  • dig -x 127.0.0.1 - sprawdzenie działania serwera na interfejsie lokalnym;
  • dig google.pl - testowanie serwera, należy powtórzyć co najniej dwa razy, aby sprawdzić czas odpowiedzi, czyli działanie funkcji buforowania;
  • tail -f /var/log/syslog - śledzenie ewentualnych błędów;

Samba

Instalacja: sudo apt-get install samba

Przed edycją pliku konfiguracyjnego warto zrobić jego kopię: sudo cp /etc/samba/smb.conf.master /etc/samba/smb.conf.org. Edytujemy plik /etc/samba/smb.conf.master:

[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

Tworzymy katalogi na profile mobilne oraz katalogi udostępniane:
sudo mkdir -m 1777 -p /srv/samba/netlogon
sudo mkdir -m 1777 -p /srv/samba/profiles
sudo mkdir -m 777 -p /srv/samba/public
sudo mkdir -m 755 -p /srv/samba/materialy


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:
sudo addgroup -gid 200 ntadmins
sudo addgroup -gid 201 machines

sudo addgroup -gid 202 designers
sudo addgroup -gid 203 nobody
net groupmap add ntgroup="Domain Admins" unixgroup=ntadmins rid=512 type=d
net groupmap add ntgroup="Domain Users"  unixgroup=users rid=513 type=d
net groupmap add ntgroup="Domain Guests" unixgroup=nobody rid=514 type=d
net groupmap add ntgroup="Designers" unixgroup=designers type=d


Dodanie konta dla maszyny:
/usr/bin/useradd -g machines -d /dev/null -c "machine nickname" -s /bin/false test$
passwd -l test$
smbpasswd -a -m test


Dodanie konta dla użytkownika, dodanie użytkownika do przykładowych grup, dodanie użytkownika do kont samby:
sudo adduser juzio
sudo groupmod -a -G users,designers juzio
sudo smbpasswd -a juzio


Logi samby znajdziemy w /var/log/samba.

Podręczne polecenia:
  • sudo service smbd start (restart) - start (restart) podstawowej usługi
  • sudo service nmbd start (restart) - start (restart) usługi przeglądania
  • sudo pdbedit -L -v - podgląd użytkowników Samby

Vnstat

Instalacja i konfiguracja: sudo apt-get install vnstat
sudo vnstat -u -i eth0
sudo vnstat -u -i eth1

Przeglądanie statystyk:
sudo vnstat przełącznik
  • -q - ogólne
  • -s - krótkie
  • -h - ostatnie 12 godzin
  • -d - ostatnie dni
  • -m - miesiące
  • -l - statystyki w czasie rzeczywistym

Optymalizacja

Przede wszystkim podana wyżej konfiguracja Squida i Dansguardiana działa, ale należy dostosować ją do konkretnych warunków, czyli warto obserwować logi:
tail -f /var/log/squid3/access.log oraz tail -f /var/log/dansguardian/access.log
Warto zastanowić się, które strony są zaufane/potrzebna, a które należy blokować i dopisać je do plików odpowiednio /etc/dansguardian/lists/exceptionsitelist oraz /etc/dansguardian/lists/bannedsitelist.

Na serwerze nie powinny działać żadne usługi, które nie są na nim niezbędne, więc co można usunąć?
  • sudo apt-get purge whoopsie - usunięcie narzędzia raportowania błędów (instalowane automatycznie)
  • sudo apt-get purge update-notifier-common - usunięcie zbędnych na serwerze powiadomień o aktualizacjach
  • sudo apt-get purge apport apport-symptoms python-apport python-problem-report - usunięcie usługi tworzącej raporty awarii

Aktualizacja: powyższa konfiguracja działa również na Debianie (Wheezy), przy czym ISC DHCP Server + Bind zastąpiono pakietem Dnsmasq.

Zobacz: Dokumentacja

wtorek, 17 lipca 2012

Ubuntu 12.04 LTS - sieć

Polecenia sieciowe

ip addr - wyświetla dostępne interfejsy

Konfiguracja interfejsów

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:
# definicja pętli zwrotnej
auto lo
iface lo inet loopback
#definicja karty sieciowej
auto eth0
iface eth0 inet dhcp


Zmiana nazwy interfejsu

Lista interfejsów zapisana jest w pliku /etc/udev/rules.d/70-persistent-net.rules. Na końcu każdego wpisu znajduje się wyrażenie NAME="eth1", w którym definiujemy nazwę interfejsu.

Serwer DHCP

sudo apt-get install dhcp3-server - instalacja
W pliku /etc/default/isc-dhcp-server określamy na jakim interfejsie ma działać serwer, np. INTERFACES="eth1". W pliku /etc/dhcp/dhcpd.conf definiujemy konfigurację serwera:
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.254;
option domain-name "mojadomena.org";

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
}

- 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.

piątek, 13 lipca 2012

Rezpozytoria Ubuntu 12.04

Podstawowe

W pliku /etc/apt/sources.list:
deb http://pl.archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse
deb http://pl.archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://pl.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse
deb http://pl.archive.ubuntu.com/ubuntu precise-security main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu precise-security multiverse
deb http://archive.canonical.com/ubuntu precise partner
deb http://extras.ubuntu.com/ubuntu precise main


Dodatkowe

Można dopisać do pliku /etc/apt/sources.list:
deb http://packages.medibuntu.org/ precise free non-free
deb http://linux.dropbox.com/ubuntu precise main
deb http://deb.opera.com/opera/ stable non-free


Po wydaniu komendy sudo apt-get update wyświetlą się błędy GPG, należy dodać klucze publiczne poszczególnych repozytoriów:
sudo apt-get install medibuntu-keyring
wget -O - http://deb.opera.com/archive.key | sudo apt-key add -
sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5044912E


Aktualizacja i instalacja oprogramowania

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install opera dropbox

Błędy

Po zainstalowaniu dropboksa podczas kolejnej próby zaktualizowania reopozytoriów może pojawić się błąd W: Duplicate sources.list.... Należy usunąć wpis wyświetlonego repozytorium z pliku /etc/apt/sources.list, ponieważ został on dodany w osobnym pliku w katalogu /etc/apt/sources.list.d.

poniedziałek, 9 lipca 2012

Nginx + php5 + php5-fpm

Instalacja na Debianie (testing)/Ubuntu

sudo apt-get install nginx php5 php5-gd php5-sqlite php5-fpm

Instalacja na Bridge Linux/Archlinux

sudo pacman -S nginx php php-gd php-sqlite php-fpm

W /etc/php5/fpm/php.ini ustawiamy opcje dla php, np. włączamy wyświetlanie błędów itp. W Bridge Linux edytujemy plik /etc/php/php.ini i wyłączamy jedną opcję, aby otrzymać: #open_basedir = /srv/http/...

W /etc/php5/fpm/pool.d/www.conf:
listen = /var/run/php5-fpm.sock
- w Ubuntu 12.04 jest domyślnie listen = 127.0.0.1:9000, czyli ustawienie dla php5-cgi, a nie php5-fpm, dlatego trzeba zmienić. W Ubuntu 13.04 nic nie trzeba zmieniać. W Bridge'u/Archu cała konfiguracja zawarta jest w /etc/php/php-fpm.conf i nic nie trzeba zmieniać, ale ścieżka gniazda ma inną postać: listen = /run/php-fpm/php-fpm.sock.

W /etc/nginx/sites-available tworzymy plik (wpis) definiujący nasz serwer i zapisujemy go (w Debianie, Ubuntu) pod dowolną nazwą, np. local.org. W Bridge'u/Archu edytujemy plik /etc/nginx/nginx.conf. Przykładowa zawartość:
server {
   listen 80;
   server_name localhost;
   charset utf-8;
   access_log off;
   root /home/lolek/public_html;
   index index.php;

   location / {
      try_files       $uri $uri/ /index.php;
#lub: try_files       $uri $uri/ /index.php?id=$uri&$args
   }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass   unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
    location ~ /\.ht { deny all; }
    location ~ /\. { deny all; }
}
- przy czym najważniejszy jest parametr root, który zawiera ścieżkę do katalogu z plikami serwisu, oraz sekcja location ~.\.php$ definiująca sposób przetwarzania wywołań php.
W przypadku Bridge'a/Archa pamiętamy o wprowadzeniu poprawnej ścieżki do gniazda (!), czyli unix:/run/php-fpm/php-fpm.sock. Zmieniamy też fastcgi_params na fastcgi.conf.

Usuwamy dowiązanie /etc/nginx/sites-enabled/default i tworzymy nowe:
ln -s /etc/nginx/sites-available/lolcal.org /etc/nginx/sites-enabled/default

Na koniec restartujemy usługi:
invoke-rc.d php5-fpm restart; invoke-rc.d nginx restart - w Debianie
service php5-fpm restart; service nginx restart - w Ubuntu
rc.d restart php-fpm; rc.d restart nginx - w Bridge Linux

Uwaga: powyższa konfiguracja jest bardzo podstawowa i służyć ma do lokalnych testów, nie uwzględnia więc zagadnień bezpieczeństwa, zwłaszcza związanych z możliwością wykonywania skryptów php.
Ponieważ sporo sieciowych tutoriali zawiera błędy i/lub uproszczenia, poprawnych (czyt. bezpiecznych) konfiguracji trzeba szukać u źródła, czyli na stronie wiki projektu Nginx.

Ubuntu 12.04 LTS - konfiguracja

Wszystkie usługi w oknie "Programy startowe"

sudo sed -i 's/NoDisplay=true/NoDisplay=false/g' /etc/xdg/autostart/*.desktop

Wyłączenie Apport

Apport to system raportowania błędów w działaniu aplikacji.
W /etc/default/apport enabled="0" i ew.: sudo service apport stop

Na dobrą sprawę można odinstalować (zobacz niżej).

Wyłączenie Avahi

Avahi to mechanizm automatycznej konfiguracji sieci i usług sieciowych.
W /etc/default/avahi-daemon: AVAHI_DAEMON_DETECT_LOCAL=0
W /etc/init/avahi-daemon.conf: start on (never and filesystem and started dbus)

Wyłączenie listy użytkowników na ekranie logowania

W /etc/lightdm/lightdm.conf: greeter-hide-users=true

Automatyczne montowanie partycji

sudo blkid - wyświetla unikalne identyfikatory partycji (UUID)
W /etc/fstab:
UUID=3E4B8D313D841927 /media/Dane ntfs-3g defaults,allow-other,locale=pl_PL.UTF-8 0 0
UUID=BD26-FD52 /media/Dane2 vfat defaults,rw,nosuid,nodev,uid=1000,fmask=0000,dmask=0000,codepage=437,iocharset=iso8859-2,shortname=mixed,utf8=1,showexec,flush,uhelper=udisks 0 0

- linia pierwsza dla partycji ntfs, druga dla partycji fat32. W przypadku tej ostatniej pełny dostęp przyznajemy pierwszemu utworzonemu użytkownikowi w systemie o identyfikatorze 1000.

Usuwanie zbędnych pakietów

  • sudo apt-get purge fonts-kacst fonts-kacst-one fonts-khmeros-core fonts-lao fonts-nanum fonts-tlwg-* ttf-indic-fonts-core ttf-punjabi-fonts - zbędne czcionki;
  • sudo apt-get purge whoopsie apport apport-symptoms - usuwamy narzędzie zgłaszające błędy oraz usługę tworzącą raporty awarii;
  • sudo apt-get purge brltty


wtorek, 3 lipca 2012

Pacman

Podstawy

Pacman to menedżer pakietów w dystrybucjach opartych na Archu.

W /etc/pacman.d/mirrorlist:
Server = http://archlinux.limun.org/$repo/os/$arch
Server = http://mirror.chmuri.net/archmirror/$repo/os/$arch
Server = ftp://ftp5.gwdg.de/pub/linux/archlinux/$repo/os/$arch
Server = http://archlinux.mirror.dkm.cz/pub/archlinux/$repo/os/$arch
Server = http://mirror.datacenter.by/pub/archlinux/$repo/os/$arch


Aktualizacja: szczerze mówiąc status repozytoriów najlepiej sprawdzać na tej stronie. Niestety, od czasu do czasu potrzebna jest zmiana repo.

Typowe polecenia

  • pacman -Syu - synchronizacja bazy i upgrade systemu
  • pacman -Ss [-Qs] nazwa - wyszukiwanie pakietu [zainstalowanego]
  • pacman -Si [-Qi] nawza - informacje o pakiecie [zainstalowanym]
  • pacman -Qdt nazwa - lista osieroconych pakietów
  • pacman -S nazwa - instalacja pakietu
  • pacman -Sd nazwa - instalacja pakietu bez sprawdzania zależności
  • pacman -Rns - usunięcie pakietu wraz z zależnościami i plikami konfiguracyjnymi
  • pacman -Sg - lista grup pakietów
  • pacman -Sg grupa - zawartość grupy pakietów


Bridge Linux 2012.5 - konfiguracja

Po instalacji

Ponieważ w Archu następuje migracja do systemu zarządzania systemd, poniższa konfiguracja rc.conf uznana została za przestarzałą, ale jeszcze działa.
W /etc/rc.conf:
HARDWARECLOCK="UTC"
TIMEZONE="Europe/Warsaw"
KEYMAP="pl"
CONSOLEMAP="pl"
LOCALE="pl_PL.UTF8"
DAEMON_LOCALE="yes"
HOSTNAME=nazwa_maszyny

- w przypadku, gdy mamy oprócz Linuksa mamy zainstalowany Windows XP, UTC trzeba zmienić na localtime (jeżeli mamy Windows Vista lub 7 pozostawiamy UTC).

Nowy rc.conf (po upgradzie powinien znajdować się w pliku /etc/rc.conf.pacnew)zawiera tylko ustawienia usług, które mają uruchamiać się podczas startu systemu, np.: DAEMONS=(dbus networkmanager syslog-ng @alsa), a także ustawienia podsystemu RAID, LVM  oraz sieci (adresowanie statyczne). Zgodne z systemd ustawienia zostały przeniesione do osobnych plików. Ustawień zegara dokonujemy w pliku /etc/adjtime:
0.000000 0 0.000000
0
LOCAL # lub UTC

Po utworzeniu pustego pliku warto wydać polecenie: sudo hwclock --set --date="2012-08-01 16:00:00" --localtime [--utc], która ustawi odpowiednie wartości.
Strefa czasowa definiowana jest przez plik /etc/localtime, który jest dowiązaniem do pliku odpowiedniej strefy: /usr/share/zoneinfo/Europe/Warsaw.
Ustawień języka, klawiatury konsoli dokonujemy w pliku /etc/vconsole.conf:
KEYMAP=pl
FONT=lat2-16
FONT_MAP=

Ustawienia języka przechowywane są w pliku /etc/locale.conf:
LANG=pl_PL.UTF-8

Dodatkowo w pliku /etc/locale.gen należy odkomentować odpowiednie wpisy:
en_US.UTF-8 UTF-8
pl_PL.UTF-8 UTF-8

Nazwę komputera umieszczamy w pliku /etc/hostname:
mojkomputer
i pliku /etc/hosts:
127.0.0.1 localhost.localdomain localhost mojhost
::1  localhost.localdomain localhost mojhost

Jeżeli jakiś plik nie istnieje, tworzymy go np. za pomocą polecenia sudo nano /etc/nazwapliku, wpisujemy zawartość i zapisujemy na dysku (CTRL+O, CTRL+X).

W /etc/pacman.conf:
SigLevel=Never //brak sprawdzania autentyczności pakietów
- i dodanie repozytorium dla mate-desktop:
[mate]
Server = http://packages.mate-desktop.org/repo/archlinux/$arch


Upgrade systemu

Aktualizacja systemu zainstalowanego w odległym czasie od daty wydania wersji Bridge Linux 2012.5 nastręcza kilka problemów. Ich rozwiązanie publikowane jest na stronie http://www.archlinux.org/news/. Ostatnio zadziałała następująca procedura:
sudo pacman -Sy
sudo pacman -S pacman
sudo pacman -Syu --ignore glibc filesystem #(to da błędy)
sudo rm /usr/lib/python3.2/site-packages/__pycache__/Reflector.cpython-32.pyc
sudo pacmn -Sd binutils gcc gcc-libs libtool
sudo pacman -S --force filesystem
sudo pacman -Syu --ignore glibc
sudo pacman -Su

Po zainstalowaniu nowego pacmana zaleca się utworzenie odpowiednich kluczy weryfikujących instalowane pakiety:
sudo pacman-key init
sudo --populate archlinux

Jeżeli podczas pierwszej z tych operacji generowanie klucza głównego trwa bardzo długo, w innej konsoli warto wydać polecenie ls -alR /, w miarę potrzeby kilkakrotnie. Po wydaniu drugiego z poleceń trzeba zaakceptować 5 kluczy naciskając "t" + ENTER. Pamiętać należy, że podana wyżej globalna opcja SigLevel=Never w pliku /etc/pacman.conf wyłącza weryfikowanie autentyczności pakietów.

Obsługa drukowania

sudo pacman -S cups cups-pdf ghostscript gsfonts hpoj gutenprint hplip splix

LibreOffice

sudo pacman -S libreoffice-base libreoffice-calc libreoffice-common libreoffice-draw libreoffice-gnome libreoffice-impress libreoffice-math libreoffice-writer hyphen hyphen-pl libmythes mythes-pl hunspell hunspell-pl

Mate-desktop

sudo pacman -S mate mate-extras [1 4 5 6 12]

Kodeki i flash

sudo pacman -S gstreamer0.10-plugins flashplugin

Katalogi użytkownika

sudo pacman -S xdg-user-dirs
- modyfikacja domyślnych nazw w /etc/xdg/user-dirs.default:
DESKTOP=Pulpit
DOWNLOAD=Pobrane
TEMPLATES=Szablony
PUBLICSHARE=Publiczne
DOCUMENTS=Dokumenty
MUSIC=Muzyka
PICTURES=Obrazy
VIDEOS=Wideo

Wydać należy jeszcze polecenie: xdg-user-dirs-update.
Generalnie w katalogu ~/.config powinny znaleźć się dwa pliki: user-dirs.dirs o zawartości:
XDG_DESKTOP_DIR="$HOME/Pulpit"
XDG_DOWNLOAD_DIR="$HOME/Pobrane"
XDG_TEMPLATES_DIR="$HOME/Szablony"
XDG_PUBLICSHARE_DIR="$HOME/Publiczny"
XDG_DOCUMENTS_DIR="$HOME/Dokumenty"
XDG_MUSIC_DIR="$HOME/Muzyka"
XDG_PICTURES_DIR="$HOME/Obrazy"
XDG_VIDEOS_DIR="$HOME/Wideo"
- oraz user-dirs.locale: pl_PL. Podczas pierwszego logowania do systemu Bridge kopiuje do katalogu domowego użytkownika zawartość /etc/skel. Zarówno w tym ostatnim folderze, jak i w katalogu domowym użytkownika utworzonego podczas instalacji można zmienić nazwy folderów ręcznie, np. mv Desktop Pulpit. Przed dokonaniem takich zmian wyloguj się ze środowiska graficznego.

Przeglądarka dokumentów pdf

sudo pacman -S evince
sudo pacman -S cairo

- na pytanie czy usunąć pakiet cairo-ubuntu odpowiadamy twierdząco.

Instalacja Gruba 2

sudo mv /boot/grub /boot/grub-legacy
sudo pacman -R grub sudo pacman -S grub-bios os-prober
sudo grub-install --directory=/usr/lib/grub/i386-pc --target=i386-pc --boot-directory=/boot --recheck --force /dev/sdaX
sudo grub-mkconfig -o /boot/grub/grub.cfg

- oczywiście parametr /dev/sdaX trzeba zastąpić wpisem /dev/sda - jeżeli instalujemy Gruba w MBR (master boot sector) pierwszego dysku, lub /dev/sda6 - jeżeli chcemy zainstalować w sektorze startowym partycji, na której zainstalowaliśmy Bridge'a, np. sda6.

Problemy

Jeżeli po instalacji i restarcie widzimy "nic", być może mamy trefną kartę Intela, ATI lub Nvidii, po naciśnięciu CTRL+ALT+DEL (restart) w menu Gruba naciskamy "e", aby przejść do edycji polecenia wczytującego jądro. Na końcu dodajemy parametr nomodeset. Po uruchomieniu i skonfigurowaniu systemu.


INIT: Id "x" respawning too fast: disabled for 5 minutes

W /etc/inittab:
x:5:respawn:/usr/sbin/lxdm >& /dev/nul ->
Uwaga: ta zmiana powoduje również automatyczne uruchamianie się graficznego menedżera logowania lxdm. Nota bene w tym samym pliku warto zmienić linię definiującą pierwszą konsolę:
c1:2345:respawn:/sbin/agetty --noclear -8 38400 tty1 linux
- dzięki czemu komunikaty pojawiające się podczas startu systemu nie zostaną wyczyszczone i po przełączeniu się ze środowiska graficznego do konsoli (CTRL+ALT+F1) będzie można je podejrzeć.

W /etc/lxdm/lxdm.conf:
session=/usr/bin/startxfce4
- w tym samym pliku można też ustawić temat, tło i inne opcje graficznego menedżera logowania lxdm.

W przypadku długiego uruchamiania się Thunara (domyślny menedżer plików w XFCE) w pliku /usr/share/gvfs/mounts/network.mount ustawiamy:
AutoMount=false
- dzięki czemu start programu nie będzie opóźniany przez sprawdzanie zasobów sieciowych.

Przydatne polecenia

  • mkinitcpio -p [nazwa_jądra] - tworzenie startowego obrazu jądra