Hei!Pystytin kesän aikana kouluumme Ubuntu-verkon Windows 2000 domainin tilalle ja ajattelin kertoa tarinan täällä.
Lyhyesti taustaa + tavoitteita: Serverille on keskitetty käyttäjähallinta sekä kotikansiot. Koneita on n. 80 ja käyttäjiä vajaa 500. Vuosittain vaihtoa on suunnilleen 150 käyttäjän verran. Olen välttänyt muiden kuin repoista löytyvien ohjelmien asennusta. Verkkossamme on valmiina (kaupungin puolelta) DHCP, kytkimet ja nettiyhteys + palomuuri. Sain käyttööni D-luokan verkon ja laitoin kaikkiin koneisiin kiinteän osoitteen. Opetusverkko on erotettu kytkimissä hallinnosta ja naapureinani on vain yksi yläaste ja pari alakoulua.
1. Serveri
2. Client – asennus (NIS, NFS)
3. Client – asennuksen viimeistely
4. Kloonausta
5. Käyttäjien luominen
6. TODO / Neuvoja kaivataan / Suunnitteilla
1. Serverin asennusAsennus Ubuntu-server-levyltä.
Kiinteä ipMuokkaa asetustiedostoa:
sudo pico /etc/network/interfaces
Niin, että siellä on (esimerkiksi):
auto eth0
iface eth0 inet static
address 10.2.2.2
network 10.2.0.0
netmask 255.255.0.0
gateway 10.2.0.1
NISLähde:
http://lyre.mit.edu/~powell/debian-howto/nis.html ynnä muut NIS-HOWTO-sivut.
Asennus:
sudo apt-get install nis
(Muistaakseni asennus kysyy domainname:a. Jos ei, niin kirjoita se tiedostoon
/etc/defaultdomain ainoaksi riviksi.
Lisää sama nimi tiedostoon
/etc/hosts osoitteen 127.0.0.1 muiden nimien perään, esim.
127.0.0.1 localhost.localdomain localhost valitsemasi_nimi
Muuta arvoa NISSERVER tiedostossa
/etc/default/nis niin, että rivillä on
NISSERVER=master.
Lisää tiedostoon
/etc/yp.conf rivi:
ypserver valitsemasi_nimi server 10.2.2.2
(Tässä taitaa olla toinen liikaa, mutta toimii...)
Muokkaa tiedostoa
/etc/ypserv.securenets. Kommentoi 0.0.0.0-rivi ja tilalle esimerkin mukaan verkkoalue. Esimerkissä rivi 255.255.0.0 10.2.2.0 sallii pääsyn vain osoitteille 10.2.2.*.
# This line gives access to everybody. PLEASE ADJUST!
#0.0.0.0 0.0.0.0
255.255.255.0 10.2.2.0
Käynnistä nis uudelleen.
sudo /etc/init.dnis restart
NIS:n alustus:
sudo /usr/lib/yp/ypinit -m
Ja aina, kun käyttäjiä lisätään tms:
sudo make -C /var/yp
NFS(Tässä osiossa saattaa olla puutteita tai virheitä, dokumentointi jäi...)
Lähde:
http://www.tldp.org/HOWTO/NFS-HOWTO/server.htmlAsennus:
sudo apt-get install nfs-kernel-server
Jaot kuntoon: Lisää tiedostoon
/etc/exports rivejä jakojesi mukaan. Esim.
/home 10.2.2.0/255.255.255.0(rw,sync)
/yhteiset 10.2.2.0/255.255.255.0(rw,sync)
Ylläoleva jakaa hakemistot /home ja /yhteiset niin, että koneilla (osoitteilla) 10.6.6.0-10.6.6.255 on pääsy.
Jotta palvelin ei ihan kaikille kertoisi ihan kaikkea, tulee
/etc/hosts.allow ja
/etc/hosts.deny tiedostoja muokata. Ohjeita mm. osoitteessa
http://www.faqs.org/docs/Linux-HOWTO/NFS-HOWTO.html(Itse en saanut aliverkkomäärityksiä toimimaan hosts.allow-tiedostossa, joten siellä on listattu yksittäisinä IP-osoitteina koko 10.2.2.100 – 10.2.2.250...)
2. Clientin asennus2.1 Asennus ja alkutoimetAsenna Ubuntu ”normaalisti” kuitenkin huomioiden:
Sama superuser samalla salasanalla kuin kaikissa muissakin koneissa.
Koneelle valmiiksi yksilöllinen nimi (minulla luokan ja mallin mukaan).
2.1.1 Aseta kiinteä ip (mukaillen näitä arvoja):Järjestelmä -> Hallinta -> Verkkoasetukset
-> Yleiset-välilehti
Valitse aktiivinen laite ja sen ominaisuudet
-> Vaihda IP-osoite kiinteäksi
-> Syötä osoite: 10.2.2.x mikä onkaan seuraava vapaa.
-> Aliverkon peite: 255.255.0.0
-> Yhdyskäytävän osoite: 10.2.0.1
-> Paina OK!
-> DNS – välilehti
->Tarkista, että DNS-palvelimina ovat
10.2.0.2
123.123.123.123
124.124.124.124
ja aluenimessä
kaupunki.fi
-> Paina lopuksi OK!
2.1.2 Päivitysten automatisointiValitse Järjestelmä -> Hallinta -> Ohjelma-asetukset -> Internet-päivitykset ja rastita kohta Asenna turvallisuuspäivitykset kysymättä.
2.2 Client – NIS ja NFSHuom! Jakeen lopussa scripti, joka tekee asennuksen automaattisesti.
2.2.1 NISAsennus:
sudo apt-get install nis
Perusta kuntoon
sudo gedit /etc/nsswitch.conf
Tarkista, että tiedostossa on seuraavat arvot:
passwd: compat
group: compat
shadow: compat
netgroup: nis
(Minulla oli joka kerta.)
Kerrotaan NIS-domainin ja -palvelimen nimet:
sudo gedit /etc/defaultdomain
ja lisää (ainoaksi riviksi):
valitsemasi_domainnimi
sudo gedit /etc/yp.conf
ja lisää loppuun
ypserver valitsemasi_domainnimi
Laitetaan serverin osoite paikalleen:
sudo gedit /etc/hosts
lisää rivi:
10.2.2.2 valitsemasi_domainnimi
Kirjautumistiedostoihin kamaa:
sudo gedit /etc/passwd
ja lisää alimmaksi rivi:
+::::::
(plussa ja kuusi kaksoispistettä)
sudo gedit /etc/shadow
ja lisää alimmaksi rivi:
+::::::::
(plussa ja kahdeksan kaksoispistettä)
sudo gedit /etc/group
ja lisää alimmaksi rivi:
+:::
(plussa ja kolme kaksoispistettä)
Käynnistä
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nis restart
Tässä vaiheessa login pitäisi toimia, mutta käyttäjillä (pl. pääkäyttäjä) ei ole kotihakemistoa.
2.2.2 NFSLähde:
http://venda.uku.fi/tietotekniikka/linux/nfsv3.shtmlAsennus:
sudo apt-get install portmap nfs-common
Suojat:
sudo gedit /etc/hosts.deny
johon rivi:
portmap: ALL
sudo gedit /etc/hosts.allow
johon rivi:
portmap: 10.2.2.2
(Tai mikä onkin serverin IP.)
Luo hakemisto yhteisen hakemiston mounttausta varten, esim:
sudo mkdir /yhteiset
Automaattinen mounttaus:
sudo gedit /etc/fstab
johon rivit:
valitsemasi_domainnimi:/home /home nfs bg,rw,intr,exec,nosuid,rsize=8192,wsize=8192 0 0
valitsemasi_domainnimi:/yhteiset /yhteiset nfs bg,rw,intr,exec,nosuid,rsize=8192,wsize=8192 0 0
Testaus:
cd /
sudo mount /home
sudo mount /yhteiset
Kone liittää ko. hakemistot serverille käynnistyessään.
Tässä vaiheessa serverin tunnuksilla pitäisi voida kirjautua palvelimelle (myös graafisesti) ja saada
/home ja
/yhteiset käyttöön.
Käynnistä kone uudelleen. Ei heti pakollinen, jos /home mountattu käsin.
2.2.3 Tässä scripti NIS:n ja NFS:n asennukseen:Suorita scripti roottina:
sudo su root
sh alkuasennus.sh
(Tai mikä tiedoston nimi onkaan.)
Itse kannoin mukanani USB-tikkua, jolla scripti oli. Scriptiin pitää muokata mm. IP:t ja domainnimi.
Scripti:
apt -get install nis portmap
echo ypserver valitsemasi_domainnimi | cat >> /etc/yp.conf
echo 10.2.2.2 valitsemasi_domainnimi | cat >> /etc/hosts
echo +:::::: | cat >> /etc/passwd
echo +:::::::: | cat >> /etc/shadow
echo +::: | cat >> /etc/group
echo portmap: ALL | cat >> /etc/hosts.deny
echo portmap 10.2.2.2 | cat >> /etc/hosts.allow
mkdir /yhteiset
echo valitsemasi_domainnimi:/home /home nfs bg,rw,intr,exec,nosuid,rsize=8192,wsize=8192 0 0 | cat >> /etc/fstab
echo valitsemasi_domainnimi:/yhteiset /yhteiset nfs bg,rw,intr,exec,nosuid,rsize=8192,wsize=8192 0 0 | cat >> /etc/fstab
3. Client – asennuksen viimeistelyHuom! Jakeen lopussa scripti, joka suorittaa tämän osion.
3.1 Pakettivarastot kuntoon + päivityksiäsudo gedit /etc/apt/sources.list
Poista kaikki ja tilalle rivit
# http://www.ubuntulinux.nl/source-o-matic
#
# If you get errors about missing keys, lookup the key in this file
# and run these commands (replace KEY with the key number)
#
# gpg --keyserver subkeys.pgp.net --recv KEY
# gpg --export --armor KEY | sudo apt-key add -
# Suomi mirrori Main, universe ja multiverse
deb http://www.nic.funet.fi/pub/mirrors/archive.ubuntu.com/ dapper universe main restricted multiverse
## Multimedia kodeekit + muuta suljettua tavaraa
deb http://dtw.silverentertainment.fi/oo2-soikko/ gcc34 non-free
deb http://archive.ubuntu.com/ubuntu/ dapper main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ dapper-security main restricted
deb http://archive.ubuntu.com/ubuntu/ dapper-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ dapper-backports main restricted universe multiverse
deb http://wine.budgetdedicated.com/apt breezy main
Avaimet kuntoon komentoriviltä:
gpg --keyserver subkeys.pgp.net --recv 33BAC1B3
gpg --export --armor 33BAC1B3 | sudo apt-key add -
Soikkoa varten:
gpg --keyserver hkp://subkeys.pgp.net/ --recv-keys E1FF97A0
gpg --export E1FF97A0 | sudo apt-key add -
Päivitys
sudo apt-get update
sudo apt-get upgrade
Tehokkaampi ydin
sudo apt-get install linux-image-686
3.2 Multimedia Codecit, playereitä ja pluginejahttps://wiki.ubuntu.com/RestrictedFormatsAsenna multimedia codecit
(Yhden rivin komento...)
sudo apt-get install gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multiverse gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse gstreamer0.10-ffmpeg mpg321 vorbis-tools libxine-extracodecs gstreamer0.10-ffmpeg gstreamer0.10-gl libxine-main1
Hae ja asenna Windows-codecit:
(Jos olet jo pääkäyttäjänä sisällä, pakettia kannattaa pitää kotihakemistossa ja sivuuttaa wget-komento.)
wget -c ftp://ftp.nerim.net/debian-marillat/pool/main/w/w32codecs/w32codecs_20050412-0.4_i386.deb
sudo dpkg -i w32codecs_20050412-0.4_i386.deb
DVD
sudo apt-get install libdvdread3
sudo /usr/share/doc/libdvdread3/examples/install-css.sh
FLASH
sudo apt-get install flashplugin-nonfree
sudo update-flashplugin
ADOBE
sudo apt-get install acroread mozilla-acroread
JAVA
sudo apt-get install sun-java5-bin
sudo update-alternatives --config java
... ja valitse Sunin java kun kysytään.
sudo apt-get install sun-java5-plugin
Soikko
sudo apt-get install openoffice.org2-soikko
(Jotta toimii on alussa lisätty rivi pakettivarastoon.)
3.3 Ääni yms. laitteet toimimaanTämän löysin sivulta
http://tech.canterburyschool.org/tech/UbuntuWorkstations kohdasta Sound, USB, etc access.
Lisää tiedostoon
/etc/pam.d/gdm rivi
auth optional pam_group.so
Lisää tiedostoon
/etc/security/group.conf rivi
gdm;*;*;Al0000-2400;floppy,audio,cdrom,video,plugdev,scanner
Tällöin jokainen gdm:än kirjautuva luetaan kuuluvaksi ko. ryhmiin.
3.4 Scripti luvun kolme asennuksiinAja scripti roottina:
sudo su root
sh loput.sh
Oletetaan, että scripti ajetaan pääkäyttäjän kotihakemistossa. Silloin siellä on oltava
a. tiedosto sorsat, jossa on uusi (ylläoleva) luettelo repoista
b. kodekit eli tiedosto w32codecs_20050412-0.4_i386.deb tai viimeisin vastaava
Itse scripti (loput.sh):
cp sorsat /etc/apt/sources.list
gpg --keyserver subkeys.pgp.net --recv 33BAC1B3
gpg --export --armor 33BAC1B3 | sudo apt-key add -
gpg --keyserver hkp://subkeys.pgp.net/ --recv-keys E1FF97A0
gpg --export E1FF97A0 | sudo apt-key add -
apt-get update
apt-get upgrade
apt-get install linux-image-686
apt-get install gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multiverse gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse gstreamer0.10-ffmpeg mpg321 vorbis-tools libxine-extracodecs gstreamer0.10-ffmpeg gstreamer0.10-gl libxine-main1
dpkg -i w32codecs_20050412-0.4_i386.deb
apt-get install libdvdread3
/usr/share/doc/libdvdread3/examples/install-css.sh
apt-get install flashplugin-nonfree
update-flashplugin
apt-get install acroread mozilla-acroread sun-java5-bin
sudo update-alternatives --config java
apt-get install sun-java5-plugin
apt-get install openoffice.org2-soikko
echo auth optional pam_group.so | cat >> /etc/pam.d/gdm
echo gdm;*;*;Al0000-2400;floppy,audio,cdrom,video,plugdev,scanner | cat >> /etc/security/group.conf
Kuten aiempikin scripti, tämä pysähtyy kyselemään kaikenlaista. Kun käynnistin scriptin usealta koneelta yhtäaikaa, tippuivat latausnopeudet huomattavasti. Scriptissä voisi varmastikin myös yhdistää komentoja, nyt se noudattelee jakeidein 3.1 – 3.3 järjestystä.
4. KloonaustaItse kloonasin koneet heti asennuksen jälkeen, mutta nyt kun sitä mietin, voisi kloonauksen kai tehdä tässäkin kohdassa (non-tested). Kloonattava kone kannattaa tosin vaihtaa käyttämään DHCP:tä .
Levyimagen teko
Käynnistä kone asennus-CD:n avulla. Kopioi pakattu levy (tai osio) ssh:lla palvelimelle (tai jollekin toiselle koneelle). Vastaanottavassa koneessa oltava openssh-server.
cat /dev/hda | gzip -c - | ssh remote_fileserver "cat - > rawbackup.img.gz"
Imagen kopiointi levylle:
Käynnistä kohdekone asennus-CD:llä ja sitten edellinen päinvastoin eli
ssh remote_fileserver "cat rawbackup.img.gz" | zcat - > /dev/hda
Muistaakseni tätä ennen jouduin puukottamaan oikeuksia (sudo chmod 777 /dev/hda).
Kloonauksen jälkeen ensin oikea IP, sitten koneelle uusi nimi + boot.
5. Käyttäjien luominenKomento newusers ottaa syötteekseen tekstitiedoston, jossa on samanlaisia rivejä, kuin tiedostossa
/etc/passwd. Ainoa ero on se, että syötetiedostossa on käyttänimen jälkeen haluttu salasana kryptaamattomana. Esim:
ulla.uusikayttaja:vaihdaheti:1234:1234:Ulla Uusi,,,:/home/luokka/ulla.uusikayttaja:/bin/bash
Ja sitten:
sudo newusers tiedosto_jossa_on_ylläolevia_rivejä
Tietojen (tunnukset, juokseva ID ja GID yms.) generointi OpenOfficella on kohtuu helppoa, jos jostain saa oppilaiden nimet. Minulla tämä kävi helposti Primuksen tiedonsiirtona. (Primus on eräs koulujen hallinto-ohjelma.) Jos mukana vie HETU:n, voi tunnukset ja salasanat viedä sen avulla takaisinpäin primukseen Wilman tiedoiksi. (Wilma on opiskelijoiden www-liittymä Primukseen.)
Samasta OO-taulukosta voi tallentaa toiseen tiedostoon (hakemistot_kuntoon) vain yhden sarakkeen eli kultakin riviltä /home/luokka/ulla.uusikayttaja. Silloin voi alla olevalla scriptillä (oikeudet.sh) säätää oikeudet niin, etteivät toiset pääse käyttäjän kotihakemistoon:
sudo sh oikeudet.sh
Ja scripti (oikeudet.sh):
cat hakemistot_kuntoon | while read koti
do
chmod 700 $koti
done
6. TODO / Neuvoja kaivataan / SuunnitteillaCat ei ole ihan paras kloonaukseen, sillä se pakkaa koko levyn. Blankolle levylle tehty asennus olisi paras, sillä käytössä olleilla levyillä oli bittiroskaa luultavasti lähes koko matkalta eli imageista tulee aika isoja. Onneksi ei ollut kiire mihinkään. Ideoita vain tiedostojen pakkamiseen niin, että ne voidaan dumpata levylle, vastaanotetaan.
Jos käyttäjä jättää kirjautumisensa auki ja ko. ohjelmia auki, eivät OO ja Firefox pelaa oikein. Firefox herjaa jotain firefoxin olemisesta jo käynnissä, eikä käynnisty. OO aloittaa palautusta toisella clientilla auki olevista tiedostoista. Ainakin firefoxin kohdalla sama käy, jos clientti kaatuu. Tähän en ole löytänyt muuta apua, kuin bootata serveri. (Öisin crondilla...)
Uuteen OpenOfficeen en ole löytänyt keinoa muuttaa oletustallennusmuodoksi MS Officen muotoja kaikille/uusille käyttäjille.
Winen säätäminen niin, että kaikki käyttäjät voisivat ilman säätämistä käyttää PhotoShop Elementsiä.
Viimeistely-scriptin hiominen sellaiseksi, ettei tarvitsisi vastailla kysymyksiin. Apt-komentojen osalta varmasti onnistuu, mutta entä asennukset, jotka pyytävät hyväksymistä/ohjeita (java, flash).
Jottei (myöhemmin) kloonauksen jälkeen joutuisi upgradeamaan satoja megoja, ajattelin rakennella kloonauksen niin, että (toimivan) koneen kovo zipattaisiin ja työnnettäisiin suoraan ssh:lla toisen koneen levyn päälle.
Slave-serverin (NIS) pystytys.
Oman päivityspalvelimen pystytys ja käyttäminen.
Tietoturvapäivitysten käyttöönotto jotain asetustiedostoa muokkaamalla?