LPIC-1 - Kaku konspekt 2011, 1. osa
ETTEVAATUST! SELLE LEHE NÄPPIMINE ON HETKEL VÄGA POOLELI!!!
NB! Tegemist on Kaku personaalsete märkmetega eksamiteks valmistumise ajast, aluseks on Roderick W. Smithi raamat LPIC-1: Linux Professional Institute Certification Study Guide.
Diskleimer: otseseid vastuseid päris eksamiküsimustele on eksamireeglite järgi keelatud levitada. Seetõttu neid ka siit konspektist ei leia.
LPI-101
Käsurida
Käsukestad:
- bash
- csh
- tcsh
- ksh
- zsh
/bin/sh - sümlink soovitavale kestale
Sisekäsud:
- cd
- cwd
- echo
- exec
- time
- set
- exit/logout
NB! exec-iga programmi x-terminalist käivitades suletakse lõpetamisel ka xterm!
Mõned sisekäsud on dubleeritud väliskäskudeks - sel juhul on prioriteet sisekäsul, kui pole lisatud täit kataloogiteed väliskäsuni
Käskude tabuleerimine (tab completion)
.history - kättesaadav terminalis üles-noole abil
Bashi kiirklahvid on võetud Emacsilt:
- Ctrl-A - rea algus (Home)
- Ctrl-E - rea lõpp (End)
- Ctrl-B - märk vasakule (<-)
- Ctrl-F - märk paremale (->)
- Ctrl-Left - sõna vasakule (Esc-B)
- Ctrl-Right - sõna paremale (Esc-F)
- Ctrl-D - kustutus paremalt (Del)
- Ctrl-K - kustutus kursorist rea lõpuni
- BkSp - kustutus vasakule
- Ctrl-X + BkSp - kustutus kursorist rea alguseni
- Ctrl-T - vahetab kursori all oleva sümboli eelmisega
- Esc-T - vahetab kursori all oleva sõna eelmisega
- Esc-U - muudab kursorist sõna lõpuni suurtähtedeks
- Esc-L - muudab kursorist sõna lõpuni väiketähtedeks
- Esc-C - muudab kursorialuse tähe suurtäheks
- Ctrl-X + Ctrl-E - käivitab editori (määratud $EDITOR või $FCEDIT -muutujas). Varuvariant: Emacs
history sisaldab enamasti 500 viimast käsku; history -c puhastab
Kasutaja sätted: ~/.bashrc, ~/.profile
Süsteemsed: /etc/bash.bashrc, /etc/profile
Keskkonnamuutujad
Näide:
- $ NNTPSERVER=news.abigisp.com
- $ export NNTPSERVER
Võib ka kokku panna: $ export NNTPSERVER=news.abigisp.com
env - kuvab kõik muutujad!
man <käsk> - saab anda ka manuaali sektsiooni:
man 5 passwd - passwd-käsu manuaali 5. sektsioon (peatükk)
man vs info
Suunamised
Standardsed vood (enamasti käsitletakse programmides samaväärselt andmefailidega):
- stdin - tüüpiliselt klaver
- stdout - tüüpiliselt kuvar
- stderr - tüüpiliselt kuvar
S/V suunamine:
- käsk > fail.txt
- käsk > käsk
- > - loob stdout-i infost uue faili (olemasolev kirjutatakse üle)
- >> - lisab stdout-i info olemasolevale failile (kui pole olemas, luuakse)
- 2> - loob stderr-i infost uue faili (olemasolev kirjutatakse üle)
- 2>> - lisab stderr-i info olemasolevale failile (kui pole olemas, luuakse)
- &> loob stdout-i JA stderr-i infost uue faili (olemasolev kirjutatakse üle)
- < - kasutab määratud faili stdin-ina
- << - järgnevate ridade teksti kasutatakse stdin-ina
- <> - kasutab määratud faili NII stdin-i KUI stdout-ina
/dev/null - eimiski. N: whine 2> /dev/null - whine'i kõik veateated visatakse ära
<< - nimet. ka "here document" (here doc) - enamasti ainult skriptides, mitte käsureal!
N: proge << blah jääb kuulama:
aaa - läheb proge sisendisse bbb - see ka ccc - see ka ddd - see ka blah - lõpetab ära
Ctrl-D - EOF-sümbol!
tee - suunab stdout-i lisaks ka mainitud failidesse. Enamasti skriptikäsk.
N: ls | tee blabla.txt - ls kuvab nagu tavaliselt, kuid lisaks läheb ka faili (nagu ls ja ls > blabla.txt koos!)
Toru:
esimene | teine
Backtick:
Kasutatakse "käsk käsus" loomiseks:
$ rm `find ./ -name “*~”` - kustutab kõik ~-lõpulised failid
xargs - saadab argumendid edasi:
$ find ./ -name “*~” | xargs rm - find'i argumendid söödetakse rm-käsku (rm esimene~ , rm teine~ , rm kolmas~ jne )
Tekstifiltrid:
cat - faili kuvamine või failide sidumine
cat esimene teine > kolmas
argumendid: -E - näita realõpusümbolit ($) -n - nummerdab read -b - nummerdab mittetühjad read -s - asendab tühjade ridade plokid üheainsa tühja reaga -T - näitab tabulatsioone (ˇI) -v - näitab mittetrükitavaid sümboleid
tac - cat tagurpidi, kuvab read vastupidises järjekorras
join - ühendab failid väljade kaupa. N:
fail nimed.txt: 1. Jüri 2. Mari 3. Peeter 4. Elmar
fail pikkus.txt: 1. 198 2. 166 3. 180 4. 178
Kokku: 1. Jüri 198 2. Mari 166 3. Peeter 180 4. Elmar 178
Saab määrata ka erinevaid võtmevälju: -1 n - esimeses failis on võtmeväljaks n-es väli -2 m - teises... jne
paste - ühendab failid rida-realt:
1. Jüri 198
...
NB! sed jt tekstivahendid ei muuda algset faili, vaid saadavad muudetud tulemuse kas stout-i (kuvarile) või faili!
expand - asendab Tab-id tühikutega. Vaikimisi 8, väärtust saab lisada parameetriga expand -t number unexpand - vastupidine od (octal dump) - algselt mõeldud failide kuvamiseks kaheksandsüsteemis, aga suudab kuvada ka kuueteistkümnend- ja kümnendsüsteemi, ASCIId jmm.
sort
- -f (--ignore-case) - ei erista suur- ja väiketähti
- -M (--month-sort) - sorteerib ingliskeelsete kolmetäheliste kuunimede järgi (JAN...DEC)
- -n (--numeric-sort) - arvude järgi
- -r (--reverse-sort) - tagurpidi
- -k väli (--key-field=) - võtmeväli (vaikimisi esimene). Saab panna ka kaks välja
split - jagab faili kaheks või enamaks failiks. Ette antakse väljundfaili nimi - komponendid luuakse kujul nimiaa,nimiab,nimiac ...
- -b maht (--byte-size=) - komponentide maht baitides (märgipealt => viimane rida enamasti poolik)
- -C maht (--line-bytes=) - maht ilma ridu poolitamata (kui aga rida on pikem kui etteantud suurus, poolitub ikkagi)
- -l maht (--lines=) - komponentide ridade arv
N: $ split -l 2 listing1.1.txt numbers (väljund: numbersaa,numbersab ... kahe rea kaupa)
tr - tähtede asendamine - esimesena toodud hulga tähed asendatakse teise omadega
N: $ tr BCJ bc < listing1.1.txt - sisendfailis asendatakse B b-ga, C c-ga ja J samuti c-ga (viimane saadaolev märk teises hulgas)
erikuju: tr -d HULK - hulga elemendid kustutatakse tekstist
(IDEE TULEVASE ÕPETAMISE JAOKS - TASUB TEHA N.Ö. TELEFONIMÄNGU - ÕPETAJA ANNAB ESIMESELE ÕPILASELE ÜLESANDE "LEIA KÄSK, MIS...", SEE LAHENDAB JA ANNAB OMAKORDA JÄRGMISELE ÜLESANDE)
uniq - eemaldab topeltread
N: $ sort shakespeare.txt | uniq
be
is
not
or
question
that
the
to
(eemaldati üks 'to' ja üks 'be')
Failiformaatimiskäsud:
fmt - silub tekstifaili. Eeldab, et lõigud on eraldatud vähemalt 2 tühja rea või siis tabuleeritud. Vaikimisi reapikkus 75 märki nl - ridade nummerdamine (nagu cat -b, aga võimsam). pr - trükkimiseks ettevalmistamine (näit. päiste ja jaluste lisamine; mitu veergu jne). Peamiselt kasutatakse kombineeritud käskudes: N: cat kiviajamull.txt | pr --columns=2 > blabla.txt
NB! pr on loodud eeskätt 80-ndate printereid silmas pidades. Ta on kasulik tänini, kuid uuemaid võimalusi (PostScript jpt) toetab paremini GNU Enscript
Failikuvamiskäsud:
cat - vt eespool head - kuvab stout-i faili alguse. Vaikimisi 10 esimest rida, saab määrata ka baitide (-c) või ridade (-n) arvu tail - sama, kuid lõpust. Kasulik logide jälgimisel (värskeimad sissekanded). Lisavõimalused:
* -f - jääb jälgima ja kuvab lisanduvad read * -pid=nr - lõpetab -f-iga alustatud jälgimise, kui protsess nr lõpetab töö
less - tõsisem failikuvaja. Enamasti ei kasutata käsuahelates (liiga interaktiivne), v.a. viimase käsuna
* /sõna - otsing ettepoole. ainult / annab interaktiivse. n edasi, N tagasi * ?sõna - sama tahapoole * gNR - reale minek. N: g65 * h - abiinfo * q - välja
Kokkuvõtvad käsud:
cut - võimaldab filtreerida failist infot mingite tingimuste (baitide, märkide, väljade) järgi:
- -b - baidid
- -c - märgid
- -f - väljad
Väärtused võivad olla konkreetsed (4), vahemikud (2-4) ja avatud vahemikud (-2, 4- - kuidas määratakse negatiivseid arve?)
N: $ ifconfig eth0 | grep HWaddr | cut -d “ “ -f 11 - kuvab MAC-aadressi
wc - sõnaloend. Võimaldab lugeda ka ridu (-l), sõnu (-w), baite (-b) ja märke (-c).
N: 65 372 2672 kiviajamull.txt - 65 rida, 372 sõna, 2672 baiti/märki.
Regulaaravaldised:
- Kantsulud - variandid. N: b[aeiou]g - bag, beg, big, bog, bug
- kriips - vahemik. N: a[2-4]z - a2z, a3z, a4z
- punkt - suvaline märk (peale reaalgussümboli). N: a.z - a2z, abz, aQz
- katus (karee) - reaalgus
- dollar - realõpp
- tärn - 0-n sümbolit
- pluss - 1-n sümbolit
- küsimärk - 0-1 sümbol
- kaigas - üks kahest. N: liha|kala
- tavasulud - alamavaldis nagu matemaatikas
- kurakaldkriips - paosümbol eelmiste sümbolite tavakasutuseks. N: kakupesa\.net
grep - paindlik otsinguvahend. Üldkuju: grep [valikud] regulaaravaldis [failid]
- -c - ridade lugemine kuvamise asemel
- -f failinimi - loeb regulaaravaldise failist
- -i - ei erista suur- ja väiketähti
- -r - rekursiivne otsing alamkataloogidest (võib aga ka rgrep-i kasutada)
- -E - kasutab laiendatud regulaaravaldist (vaikimisi on tavakujul; võib aga ka egrep'i kasutada)
N: grep -E “(twain\.example\.com|bronto\.pangaea\.edu).*127” /etc/* - otsib /etc-st ridu, kus on üks kahest domeeninimest ja seejärel number 127 NB! Siin ja mõnel muul juhul kasutatakse jutumärke, et kest ei tõlgendaks avaldise osi enda käskudena!
sed - käsurearedaktor. Muudab faili ja saadab selle stdout'i. Kaks põhikuju:
sed [valikud] -f skriptifail [sisendfail]
sed [valikud] skriptifail [sisendfail]
N: $ sed ‘s/2011/2012/‘ cal-2011.txt > cal-2012.txt - asendab aastanumbri ja teeb järgmise aasta kalendri
Esmane kontrolltulemus: 17 20-st.
==
2. PEATÜKK
==
Pakihaldurid:
RPM (RPM Package Manager, varem Redhat Package Manager)
Paki üldkuju: packagename-a.b.c-x.arch.rpm (a.b.c - versioon, x - build; arch - arhitektuur, v.a. lähtekoodipakil src)
Ideaalis peaks iga pakk töötama kõigil RPM-distrodel. Reaalselt ei pruugi, kuna
- iga distro paigaldab erinevad RPM-i utiliidid
- ühe versiooni pakil võivad olla sõltuvused, mida teises pole
- sõltuvused võivad olla distroti eri nimedega
- pakkides olevad failid võivad distroti veidi erineda
- pakkides olevad skriptid ei pruugi ühilduda
RPM üldine süntaks: rpm [operation][options] [package-files|package-names]
Põhioperatsioonid:
- -i - paigaldab paki, sama nimega pakki ei tohi varem olla
- -U - uuendab olemasolevat või paigaldab, kui veel pole
- -F - uuendab ainult siis, kui vanem versioon on olemas
- -q - päring paki kohta
- -V - paki kontroll
- -e - eemaldab paki
- -b - (vana) lähtekoodi ja konfi olemasolul ehitab binaarpaki; alates rpm 4.2-st teeb seda rpmbuild
- --rebuild - sama
- --rebuilddb - loob RPM-i andmebaasi uuesti, parandab vead
Põhivalikud: Valik Käsud Kirjeldus ..........................................................
--root dir Kõik Määrab konkreetse kataloogi juurkataloogiks --force -i, -U, -F Sundpaigaldus (ka ülekirjutamise korral) -h, --hash -i, -U, -F Näitab käsu täitmise edenemist #-sümbolite reaga -v -i, -U, -F Kasutatakse koos -h-ga näitamaks iga paki kohta ühtmoodi #-de rida (-Uvh) --nodeps -i, -U, -F, -e Eirab sõltuvusi (ohtlik!) --test -i, -U, -F Kontrollib kõike nagu päris paigalduses, aga reaalselt ei paigalda --prefix path -i, -U, -F Määrab paigalduskataloogi (toimib vaid osade pakkidega) -a, --all -q, -V Kontrollib kõiki pakke -f file, --file file -q, -V Kontrollib faili omanikuks olevat pakki -p package-file -q Päring eemaldatud faili kohta -i -q Kuvab paki info -R, --requires -q Kuvab sõltuvused (pakid ja failid) -l, --list -q Kuvab pakis olevad failid
NB! Osa operatsioone tahavad paki nime (lühem), teised aga paki täis-failinime (pikem)!
rpm -qi - põhjalikum info paki kohta.
Andmete eraldamine RPMist
RPM on muudetud cpio-fail (vt http://en.wikipedia.org/wiki/Cpio).
rpm2cpio -utiliit saadab väljundi stdout'i, seega tuleb suunata:
rpm2cpio samba-server-3.0.25b-4.5mdv2008.0.src.rpm > samba-server-3.0.25b-4.5mdv2008.0.cpio
seejärel cpio-fail lahti pakkida: $ cpio -i --make-directories < samba-server-3.0.25b-4.5mdv2008.0.cpio -i pakib lahti, --make-directories loob vajalikud alamkataloogid
Võib ka ühe käsuga: $ rpm2cpio samba-server-3.0.25b-4.5mdv2008.0.src.rpm | cpio -i --make-directories
NB! Mitte pakkida olemasoleva failisüsteemi selga! Alati peaks looma eraldi alamkataloogi - pakk võib sisaldada /etc, /usr jt hierarhiaid
Debiani alien suudab rpm-i teha lisaks deb-ile ka tarballiks!
Yum
Üldkuju: yum [valikud] [käsk] [pakid]
Põhikäsud:
- install - paigaldab pakid ja nende sõltuvused
- update - uuendab valitud pakid - ilma argumendita paneb paika kõik uuendused
- check-update - näitab võimalikke uuendusi
- erase, remove - eemaldab
- upgrade - sama mis update --obsoletes, sobib versiooniuuenduseks
- list - paki info
- provides, whatprovides - konkreetse teenuse pakid. N: yum whatprovides apache
- search - otsing
- info - paki info (vrdl info-käsk)
- clean - puhvri puhastamine, aeg-ajalt soovitatav
- resolvedep - etteantud sõltuvusega pakid
- localinstall - kohaliku rpm-i paigaldus, sõltuvused tulevad yum'i varamutest
- localupdate - vt eelmist
- deplist - sõltuvuste loend
- shell - yum'i käsukest
NB! yum'i kasutamine on lihtsam kui tavalise rpm'i puhul, kuid süsteemi haldamine antakse rohkem distro koostaja kätte!
yumdownloader - laeb soovitud paki alla aktiivsesse kataloogi
RPM'i ja yum'i konf
RPM-i põhikonf: /usr/lib/rpm/rpmrc (ei ole /etc all!). Seda ei tohiks muuta - tulekski luua kas globaalne /etc/rpmrc või kasutajapõhine ~/.rpmrc
Peamine point on lisada arhitektuurivõtmeid: optflags: athlon -O2 -g -march=i686
Yum: /etc/yum.conf + /etc/yum.repos.d/ -varamute konfid
Red Hati/Fedora põhilised lisavaramud:
- Livna (http://rpm.livna.org)
- FreshRPMs (http://freshrpms.net)
- Red Hat KDE (http://kde-redhat.sourceforge.net)
Asjalik teenus: http://rpmfind.net
Deb/dpkg
Debian, Ubuntu, Xandros, Mepis, Libranet...
Üldkuju: dpkg [options][action] [package-files|package-name]
Põhikäsud:
- -i, --install paigaldus
- --configure konfib paigaldatud paki
- -r, --remove eemaldab paki, jätab konfifailid alles
- -P, --purge eemaldab paki koos konfiga
- -p, --print-avail info paigaldatud paki kohta
- -I, --info info paigaldamata paki kohta
- -l <muster>, --list loetelu pakkidest, mille nimes esineb <muster>
- -L, --listfiles loetelu pakiga seotud paigaldatud failidest
- -S <muster>, --search otsing mustri järgi
- -C, --audit poolikute pakkide otsing, annab soovitusi
Võtmed:
- --root=dir Kõik Määrab juurkataloogi (kasulik erakorralise remondi puhul)
- -B, --auto-deconfigure -r Deaktiveerib pakid, mis sõltuvad eemaldatavast pakist
- --force-things Mõned Sunnib tegevusi
- --ignore-depends=package -i, -r Eirab sõltuvusi
- --no-act -i, -r Kontrollib sõltuvusi ilma reaalset operatsiooni sooritamata
- --recursive -i Rekursioon läbi alamkataloogide
- -G -i Ei paigalda pakki, mille uuem versioon on juba paigaldatud
- -E, --skip-same-version -i Ei paigalda pakki, mille sama versioon on juba paigaldatud
Mõnel juhul eeldatakse paki-, mõnel failinime. Install ja info tahavad faili, eemaldamine pakki.
apt-cache - mitmesugune info paki kohta:
- apt-cache showpkg pakinimi -
- apt-cache stats - pakistatistika.
Näide: kakk@aragorn:~$ sudo apt-cache stats [sudo] password for kakk: Pakettide nimesid kokku: 42027 (841k) Total package structures: 42027 (2 354k)
Tavapakette: 32271 Puhtalt virtuaalseid pakette: 530 Üksikuid virtuaalseid pakette: 3059 Kombineeritud virtuaalseid pakette: 293 Puudu: 5874
Kokku erinevaid versioone: 34394 (2 476k) Erinevaid kirjeldusi kokku: 34394 (825k) Sõltuvusi kokku: 222752 (6 237k) Versioonide/failide seoseid kokku: 38085 (914k) Kirjelduste/failide seoseid kokku: 34394 (825k) Total Provides mappings: 6341 (127k) Total globbed strings: 183 (2 517) Total dependency version space: 1 091k Lõtkukohti kokku: 53,4k Total space accounted for: 12,2M
- apt-cache unmet - puuduvad sõltuvused
- apt-cache depends pakinimi - konkreetse paki sõltuvused
- apt-cache pkgnames sa - sa-ga algavad pakinimed
Apt-get
Apti allikaid ei tasu suvaliselt lisada :)
Põhikäsud:
- update loeb sources.listi varamute uuendused
- upgrade uuendab
- dselect-upgrade uuendab dselecti järel tegemata jäänud asjad*
- dist-upgrade nagu upgrade, aga parema konfliktikontrolliga (distrouuendus)
- install paigaldab paki
- remove eemaldab
- source tõmbab lähtekoodipaki (failinime järgi!)
- check kontrollib pakiandmebaasi
- clean puhastab puhvri
- autoclean puhastab puhvri vaid vanadest failidest, mida enam kasutada ei saa
Valikud:
-d, --download-only upgrade, dselect-upgrade, Laeb pakid alla, kuid ei paigalda
install, source
-f, --fix-broken install, remove Üritab lahendada sõltuvused -m, --ignore-missing või upgrade, dselect-upgrade, Eirab pakke, mille lähtekood pole saadaval --fix-missing install, remove, source -q, --quiet Kõik Ei näita osasid väljundeid (-qq on veel vaiksem!) -s, --simulate, --just-print, Kõik Simuleerib tegevust (reaalselt ei tee) --dry-run, --recon või --no-act -y, --yes või --assume-yes Kõik Vastab küsimustele "jah" (skriptides kasutamiseks) -b, --compile või --build source Laeb lähtekoodipaki alla ja kompileerib selle --no-upgrade install Ei uuenda pakki, kui vanem versioon on juba olemas
Apt - sama jutt kui RPMiga: kontroll nihkub pakendaja kätte!
dselect, aptitude - pakibrauserid (aptitude töötab apt-geti analoogina, kui anda pakid ette, ilma parameetriteta läheb interaktiivsesse režiimi). Graafiline analoog on Synaptic.
aptitude - full-upgrade vs safe-upgrade, viimane on konservatiivsem
dpkg-reconfigure - paki ümberkonfimine
Debiani pakk koosneb eri failidest! lähtekoodi tarball, kontrollfail ja .dsc-signatuurifail (ehtsuse kontroll)
Pakihaldurite konfimine
dpkg konf: /etc/dpkg/dpkg.cfg või kohalik ~/.dpkg.cfg
apt: /etc/apt/sources.list (ja repod /etc/sources.list.d); apt'i enda konf: /etc/apt/apt.conf (Ubuntul /etc/apt/apt.conf.d/ all eri failid eri rakendustele)
Alien
Nõuab nii RPMi kui DPKG paigaldamist
Üldkuju: alien [options] file[...] Tähtsaimad valikud: --to-deb, --to-rpm, --to-slp ja --to-tgz (3. on Stampede Linuxi pakett, suht vananenud, 2002 lõpetas töö) Näited:
- alien --to-rpm someprogram-1.2.3-4_i386.deb - rpm-iks
- alien --install binary-tarball.tar.gz - installib ja lisab Debiani andmebaasi nagu .deb-i
Pakikonfliktid
Peamised põhjused:
- puuduvad teegid/utiliidid
- mitteühilduvad teegid/utiliidid
- topelt failid - mingi paki failid on teise pakiga juba paigaldatud ja ei ühildu
- mitteklappivad nimed
RPM-i puhul saab jõuga:
- rpm -i apackage.rpm --nodeps
- rpm -i apackage.rpm --force
DPKG puhul --ignore-depends=package, --force-depends või --force-conflicts -parameetrid
Vahel aitab sõltuvuspakkide uuendamine
Vahel võib paki ümber ehitada: # rpmbuild --rebuild packagename-version.src.rpm
Vahel saab leida paki alternatiivversiooni
Vahel (serveritarkvara puhul) on vaja muuta käivitusskripte: /etc/rc.d/rc.local või /etc/rc.d/boot.local
Jagatud teegid
näiteks libc/glibc, qt, gtk+
glibc põhifail on ajalooliselt jäänud /lib/libc.so.6, tänapäeval on enamasti sümlink (Ubuntu 10.10 puhul samasse libc-2.12.1.so peale)
Põhimõtteliselt saaks teeke ka staatiliselt linkida, aga tulemus oleks suur ja paindumatu (uuendamine eeldaks relinki). Linux kasutab dünaamilist teegisüsteemi sarnaselt Windowsi DLL-idega. Linuxis on vastavad laiendid:
- jagatud teek - .so või .so.versioon (n: .so.6)
- staatiline teek - .a
Jagatud teegi miinused:
- mõningane jõudluskadu, kui teine programm juba sama teeki kasutab
- teegi muutmine võib tekitada ühilduvusprobleeme seda kasutavate programmidega
- programm ei pruugi teeki leida
- sõltuvustepusa
- teegi probleem (N: kettaviga) tekitab kogu süsteemile hirmsa kolaka
Teekide leidmine - nime ja/või kataloogitee järgi
Põhiline konf: /etc/ld.so.conf . Ubuntul on seal rida "include /etc/ld.so.conf.d/*.conf" - kõik conf-failid seal laetakse, nagu nad oleks juba ld.so.conf'is sees
Gentoos tuleb redigeerida /etc/env.d/ kataloogis olevaid konfifaile ja seejärel anda käsk env-update.
Lisaks seal määratule on alati kättesaadavad ka /lib ja /usr/lib sisu
Teekide asukohti saab määrata ka LD_LIBRARY_PATH -keskkonnamuutujaga:
$ export LD_LIBRARY_PATH=/usr/local/testlib:/opt/newlib
Teekide nimekonflikti või asukohajama puhul võib aidata sümlink: # ln -s biglib.so.5.2 biglib.so.5 (vahel tuleb peale seda anda ldconfig-käsk)
ldd programminimi - kuvab kõik teegid, mida programm kasutab:
kakk@aragorn:~$ ldd /usr/bin/xbiff linux-vdso.so.1 => (0x00007fff3a7ff000) libXaw.so.7 => /usr/lib/libXaw.so.7 (0x00007f4941c22000) libXt.so.6 => /usr/lib/libXt.so.6 (0x00007f49419bd000) ...
ldconfig - laeb teekide puhvri uuesti (vajalik peale muutusi). Nii RPM kui DPKG teevad seda automaatselt. Saab ka eri parameetreid kasutada.
Protsessihaldus
Kerneliprotsess - uname:
Põhiparameetrid:
- -n, --nodename - hostinime kuvamine
- -s, --kernel-name - kerneli nimi (enamasti Linux)
- -v, --kernel-version - kerneli versioon (algselt kuvas kompileerimise aega)
- -r, --kernel-release - kerneli väljalase
- -m, --machine - arvuti info (enamasti arhitektuur: x86_64)
- -p, --processor - prose info (enamasti näitab paljudel juhtudel unknown)
- -i, --hardware-platform - riistvaraplatvorm (enamasti unknown)
- -o, --operating-system - OS (GNU/Linux)
- -a, --all - kogu saadaolev info (kõik kokku)
ps - protsessikäsk. Hirmus hulk parameetreid, kolm klassi:
- Unix98 valikud - ühetähelised, võib grupeerida, algavad ÜHE kriipsuga (-)
- BSD valikud - ühetähelised, võib grupeerida, algavad ILMA kriipsuta
- GNU pikad valikud - mitmetähelised, ei grupeerita, algavad KAHE kriipsuga (--)
PS_PERSONALITY keskkonnamuutuja määrab PS-i käitumise: posix, old, linux, bsd, sun, digital jt
Peamised Linuxi ps-käsud:
- ps - konkreetse terminali kõik protsessid
- abiinfo - ps --help
- kuva kõik protsessid - ps -A või ps -e
- kuva kõik aktiivse kasutaja protsessid - ps -x
- kuva kõik konkreetse kasutaja protsessid: ps -u kasutaja, ps U kasutaja või ps --user kasutaja (võib olla kasutajanimi või ID)
- täiendav info: -f, -l, j, l, u ja v võtmed
- protsesside hierarhia: -H, -f ja --forest -võtmed
- lai väljund (üle 80 märgi): -w ja w
Näidatav info:
- kasutajanimi
- protsessi ID
- ülemprotsessi (vanema) ID
- TTY (terminal)
- protsessori ajakasutus
- protsessori prioriteet
- mälukasutus
- käivituskäsk
NB! init "adopteerib" orbudeks jäänud (ülemprotsess lõppenud) protsessid!
top
ps-i dünaamiline variant. Tavaliselt kasutatakse interaktiivselt ilma argumentideta, aga saab ka anda parameetreid
Eriti kasulik on protsessoriaja jälgimine (load average)
jobs - jooksva sessiooniga seotud protsessid. Kasulik vahel PID leidmiseks
Tausta- ja esiplaaniprotsessid
Ctrl-Z peatab terminalis jooksva protsessi ja vabastab terminali fg jätkab uuesti (kui mitu on peatatud, siis fg number) bg jätkab taustal käsk & käivitab taustal
nice
Määrab protsessi prioriteetsuse: nice [argument] [command [command-arguments]]
Näide:
$ nice -12 number-crunch data.txt - käivitab number-crunch'i, andmed võetakse data.txt'ist
Tavaprioriteet on 0. vahemik on -20-st 19-ni, negatiivsed on kõrgema prioriteediga. Prioriteetseid protsesse (alla 0) saab käivitada vaid root, madalamaid prioriteete iga kasutaja (N: wine puhul oli -5). Kasutaja saab muuta vaid oma protsesside prioriteete ja ainult madalamaks!
Töö käigus saab prioriteeti muuta: renice priority [[-p] pids] [[-g] pgrps] [[-u] users] N: # renice 7 16580 -u pdavison tbaker - protsess 16580 ja kõik kahe kasutaja protsessid saavad prioriteedi 7.
Protsessi tapmine
kill - võib olla nii sise- kui väliskäsk, viimase jaoks tuleks anda koos teega /bin/kill
Üldkuju: kill -s signaal PID
Signaalide loetelu: kill -l
signaali võib anda nii nime kui numbri järgi. Enamlevinud:
- 1 - SIGHUP, tapab interaktiivsed programmid
- 9 - SIGKILL, räige kohene surm ilma shutdown'ita
- 15 - SIGTERM, pehmem, üritab failid sulgeda jne. Vaikimisi valik!
lühikuju: kill -signaalilõpp PID (ilma SIGita: HUP, KILL, TERM jne)
Root saab killida kõike, muud ainult omi protsesse
nohup programm [valikud] - käivitab nii, et SIGHUPiga tappa ei saa (eiratakse)
killall - nime järgi killimine. -i parameeter küsib: kakk@aragorn:~$ killall -i firefox-bin Kill firefox-bin(8074) ? (y/N) y kakk@aragorn:~$
NB!!! Mõnes muus Unixis tapab killall KÕIK SELLE KASUTAJA PROTSESSID!!! Ettevaatust...
Riistvara
BIOS - EEPROM ehk taaskasutatav püsimälu (flash memory)
POST - power-on self test
POST => riistvaratest => alglaaduri laadimine andmekandjalt => alglaaduri käivitus => OS käivitus
Apple'il on BIOSi asemel OpenFirmware (PowerPC) või EFI (Intel Macs)
BIOS setup - F1, F2, F10, Esc, Del vmm klahv
Arvuti käivitus ilma klaverita - kbd check BIOSist välja lülitada!
Katkestused (IRQ)
i386 puhul 0-15, x86_64 jt puhul on neid veel
0 System timer Reserved for internal use. 1 Keyboard Reserved for keyboard use only. 2 Cascade for IRQs 8–15 The original x86 IRQ-handling circuit can manage just 8 IRQs; 2 are tied together to handle 16 IRQs,
but IRQ 2 must be used to handle IRQs 8–15.
3 Second RS-232 serial port May also be shared by a fourth RS-232 serial port. ( COM2: in Windows) 4 First RS-232 serial port May also be shared by a third RS-232 serial port. ( COM1: in Windows) 5 Sound card or second paral
lel port (LPT2: in Windows)
6 Floppy disk controller Reserved for the first floppy disk controller. 7 First parallel port (LPT1: in Windows) 8 Real-time clock Reserved for system clock use only. 9 Open interrupt 10 Open interrupt 11 Open interrupt 12 PS/2 mouse 13 Math coprocessor Reserved for internal use. 14 Primary ATA controller The controller for ATA devices such as hard drives;
typically /dev/hda and /dev/hdb under Linux.
15 Secondary ATA controller The controller for more ATA devices; typically /dev/hdc and /dev/hdd under Linux.
Põhiline konfliktiallikas on 5 - helikaardid ja teine paralleelport!
Linuxis näitab cat /proc/interrupts
/proc - virtuaalne failisüsteem: mitte päris failid, vaid failisüsteemina esitatav kerneli info (riistvara, protsessid jne).
Paljud utiliidid kasutavad seda, kuid cat'iga vmm moel saab ka otse vaadata.
I/O aadressid:
Linux Device Windows Name Typical IRQ I/O Address
/dev/ttyS0 COM1 4 0x03f8
/dev/ttyS1 COM2 3 0x02f8
/dev/ttyS2 COM3 4 0x03e8
/dev/ttyS3 COM4 3 0x02e8
/dev/lp0 LPT1 7 0x0378-0x037f
/dev/lp1 LPT2 5 0x0278-0x027f
/dev/fd0 A: 6 0x03f0-0x03f7
/dev/fd1 B: 6 0x0370-0x0377
Vahel kasutatakse vananenud tähistust /dev/cuax - seega /dev/cua0 = /dev/ttyS0
cat /proc/ioports
DMA (Direct Memory Addressing)
cat /proc/dma
CHS geomeetria vs dünaamiline
cold vs hot plug
Hotplug-seadmed => /sys (sysfs)
HAL (Hardware Abstraction Layer) daemon - jooksev info saadaolevate välisseadmete kohta
D-Bus (Desktop Bus) daemon - ditto
udev - virtuaalne failisüsteem /dev all, mõeldud hotplug-seadmetele
NB! RS-232 (COM) ja paralleelpordi (LPT) seadmed on tegelikult coldplugged - tegelikult peaks reboodi tegema!
PCI konfiks: lspci ja setpci
-v Increases verbosity of output. This option may be doubled (-vv) or tripled (-vvv) to produce yet more output. -n Displays information in numeric codes rather than translating the codes to manufacturer and device names. -nn Displays both the manufacturer and device names and their associated numeric codes. -x Displays the PCI configuration space for each device as a hexa- decimal dump. This is an extremely advanced option. Tripling (-xxx) or quadrupling (-xxxx) this option displays information about more devices -b Shows IRQ numbers and other data as seen by devices rather than as seen by the kernel. -t Displays a tree view depicting the relationship between devices. -s [[[[domain]:] Displays only devices that match the listed specification. This bus]:][slot][.[func]] can be used to trim the results of the output. -d [vendor]:[device] Shows data on the specified device. -i file Uses the specified file to map vendor and device IDs to names.
(The default is /usr/share/misc/pci.ids.)
-m Dumps data in a machine-readable form, intended for use by scripts. A single -m uses a backward-compatible format, whereas doubling (-mm) uses a newer format. -D Displays PCI domain numbers. These numbers normally aren’t displayed. -M Performs a scan in bus-mapping mode, which can reveal devices hidden behind a misconfigured PCI bridge. This is an advanced option that can be used only by root. --version Displays version information.
Kerneli moodulid
lsmod - kuvab ainult moodulite info, mitte aga draivereid, mis on otse kernelisse kompileeritud!
- insmod /lib/modules/2.6.26/kernel/drivers/block/floppy.ko
NB! Täisnimi koos kataloogiteega!
modprobe - laeb mooduli koos sõltuvustega
- modprobe floppy
Põhivalikud:
- -v, --verbose - kuvab lisainfot
- -C failinimi - kohandatud konfifail (vaikimisi /etc/modprobe.conf)
- -n, --dry-run - simuleeritud moodulilisamine (reaalselt ei lisa)
- -r, --remove - eemaldab mooduli koos sõltuvustega (v.a. juhul, kui sõltuvused on teiste poolt kasutuses)
- -f, --force - jõuga lisamine
- --show-depends - näitab mooduli sõltuvusi
- -l, --list - näitab saadaolevaid mooduleid
rmmod - mooduli eemaldamine
Põhivalikud:
- -v, --verbose - kuvab lisainfot
- -f, --force - jõuga eemaldamine
- -w, --wait - kui moodul on kasutuses, ei anna veateadet, vaid ootab kasutuse lõppemist
USB
USB 1.0 ja 1.1 - kuni 127 seadet, 12Mbps USB 2.0 - kuni 480Mbps
lsusb
Uuemal ajal on USB seadmed ühendatud /proc/bus/usb/001, 002, 003 jne
Kõvakettad
(P)ATA - paralleelkaabel, 40 või 80 juhet SATA - jadakaabel, 7 juhet?
ATA puhul hda on 1. kontrolleri master, hdb 1. kontrolleri slave, hdc 2. kontrolleri master ja hdd 2. kontrolleri slave (vahepealt võib mõni puududa)
Uuemal ajal võidakse ka ATA kettaid tähistada nagu SCSI omi (sda)
Välised USB- ja Firewire (IEEE1394) kettad - nagu SCSI
Partitsioonid
NB! Enamikku andmekandjaid käsitletakse võrdväärselt kõvaketastega (USB ja ZIP kettad). Ei partitsioneerita plaate, MO-kettaid ja flopisid!
fdisk -l /dev/hdx (vastav nr) näitab reeglina, kas on partitsioneeritav või ei
Enamik PC-sid kasutab x86 partitsioneerimist, osa AMD64 ja Inteli Macid aga GUID GPT (Globally Unique Identifier Partition Table) süsteemi
GPT partitsioone on kindlam töödelda GNU Parted'iga, mitte fdiskiga
LVM - ei kuulu otseselt programmi. Aga konkreetne soovitus: kui kasutada, tuleb jätta /boot (või / koos buudiga) väljapoole LVM-i (nagu Kakupesas!)
Jaotisteskeem
Swap (not mounted) 1.5–2 times sys- Serves as an adjunct to system RAM; is
tem RAM size slow, but enables the computer to run more
or larger programs. /home 200MB–1000GB Holds users’ data files. Isolating it on a sepa- (or more) rate partition preserves user data during a system upgrade. Size depends on the num- ber of users and their data storage needs. /boot 20–200MB Holds critical boot files. Creating it as a sepa- rate partition lets you circumvent limitations of older BIOSs and boot loaders on hard disks over 8GB. /usr 500MB–10GB Holds most Linux program and data files;
this is sometimes the largest partition,
although /home is larger on systems with many users or if users store large data files. /usr/local 100MB–3GB Holds Linux program and data files that are unique to this installation, particularly those
that you compile yourself.
/opt 100MB–5GB Holds Linux program and data files that are associated with third-party packages, espe- cially commercial ones. /var 100MB–500GB Holds miscellaneous files associated with the day-to-day functioning of a computer. These files are often transient in nature. Most often split off as a separate partition when the system functions as a server that uses the /var directory for server-related files like mail queues. /tmp 100MB–20GB Holds temporary files created by ordinary users. /mnt N/A Not a separate partition; rather, it or its subdirectories are used as mount points for removable media like floppies or CD-ROMs. /media N/A Holds subdirectories that may be used as mount points for removable media, much like /mnt or its subdirectories
Failisüsteemi loomine kettale: # mkfs -t ext3 /dev/hda6
NB! mõnel juhul tasub reserveeritud ruum (žurnaali jaoks; ca 5% kettast) ära jätta - lisada -m 0 -võti.
Saaleala tegemine:
- mkswap /dev/hda7
- swapon /dev/hda7
Püsiva jaoks tuleb /etc/fstab'is ära kirjeldada!
Diagnostika
dumpe2fs -h <jaotis> N: dumpe2fs -h /dev/sda1 tune2fs debugfs
fsck / e2fsck
Põhivalikud:
- fsck -A - kõik /etc/fstab-is kirjas olevad failisüsteemid
- fsck -C - progressinäidik
- fsck -V - rohkem juttu
- fsck -N - simulatsioon (ilma reaalse tegevuseta)
Tavaliselt võib jooksutada lihtsalt fsck <failisüsteem>
df - ketta täituvus
hea võti - -h näitab kordseid ühikuid:
kakk@aragorn:~$ df -h Failisüsteem Size Used Avail Use% Haagitud /dev/sda2 16G 12G 3,1G 80% / none 2,0G 288K 2,0G 1% /dev none 2,0G 172K 2,0G 1% /dev/shm none 2,0G 308K 2,0G 1% /var/run none 2,0G 0 2,0G 0% /var/lock /dev/sda3 212G 118G 84G 59% /home //zerblat/kaido$/ 347G 324G 23G 94% /media/itk_kodu //zerblat/Avalik$/ 347G 324G 23G 94% /media/itk_avalik /home/kakk/.Private 212G 118G 84G 59% /home/kakk kakk@aragorn:~$
-a näitab kõiki (ka /proc jt) -T kuvab failisüsteemi tüübi
Võib anda ette ka failisüsteemi või konkreetse kataloogi
du - kettakasutus
Võtmed:
- -c - kogusumma
Failisüsteemide haakimine
mount
Võtmed:
- -a - kõik fstab'is kirjas olevad
- -r - ainult lugemiseks
- -w (või -o rw) - lugemiseks-kirjutamiseks
- -t tüüp - failisüsteemi tüüp
Lihtne kuju: # mount /dev/sdb7 /mnt/shared
Haakimise hetkeseis: /etc/mtab (erinevalt fstab'ist pole konfifail ja seda ei näpita!)
Parameetreid:
- loop - lubab faili haakida kui partitsiooni: mount -t vfat -o loop image.img /mnt/image
- auto vs noauto - kas haagitakse buudil või ei (eemaldatavaid kettaid ei tasu)
- user vs nouser - kas kõik kasutajad või vaid root
- ro vs rw - read-only vs read-write
- umask väärtus - failisüsteemidele, mis muidu ei toeta Unixi õigustesüsteemi. N: umask 027 => vaikimisi õigused 750, 022 => 755 jne.
user vs users vs owner:
- user - iga kasutaja võib külge haakida, lahti haakida võib vaid sama kasutaja
- users - igaüks võib kinni-lahti haakida
- owner - ainult omanik
umount
- -a kõik NB!!! mitte fstab'i, vaid mtab'i järgi!
- -f sunnib
- -r kui ei õnnestu, haagib uuesti read-only'na
NB! Andmete reaalne kettale kirjutamine võib puhvri tõttu toimuda viivitusega - alati tuleb kettad enne eemaldamist lahti ühendada!
fstab
kaks viimast veergu:
- dumpi lipp - tänapäeval pea alati 0 (dumpi enam ei kasutata, muidu oleks 1)
- fsck kontroll buudi ajal - 0-ei kontrollita, 1-esmane kontroll (root part), 2-teised kontrollitavad
CIFS-faili õigused: nagu läpakas EIK ketastega, fstab'is on parameeter credentials=/etc/creds (ja mitte otsene nimi/parool)!
/etc/creds sel juhul (root-readable only!): username=hschmidt password=yiW7t9Td
Failihaldus
Failiõigused: avabiti väärtused
- - tavafail
d - kataloog
l - sümlink
p - nimega toru
s - sokkel
b - blokiseade (ketas)
c - märgiseade (jada- või rööppordid)
loabitid (käivad kõige ees: ntx 0750; 4750; 6750 jne):
- SUID - set user ID: programm jookseb mitte käivitaja, vaid omaniku õigustes. N: käivitan tavakasutajana fdiski, kui seal on SUID peale pandud
N: rwsr-xr-x (s-täht sees). Väärtus: 4
- SGID - sama grupiga. N: wxr-sr-x. Väärtus: 2
- sticky - faile saab kustutada vaid nende omanik, kataloogi omanik või root. Kirjutatakse x-i kohale: rwxr-xr-t. Väärtus: 1
SUID ja SGID on suured turvariskid!
Sümbolkuju:
- ugoa - user, group, other, all
- + - = - add, remove, set
- rwxXstugo - read,write,execute,exec2,suid/sgid,sticky,user,group,other
Näide:
Command Initial Permissions End Permissions chmod a+x bigprogram rw-r--r-- rwxr-xr-x chmod ug=rw report.tex r-------- rw-rw---- chmod o-rwx bigprogram rwxrwxr-x rwxrwx--- chmod g=u report.tex rw-r--r-- rw-rw-r-- chmod g-w,o-rw report.tex rw-rw-rw- rw-r-----
Umask:
Kataloogid: 777 - mask = õigused (022 => 755) Failid: 666 - mask = õigused (022 => 644)
Tegelikult bitikaupa lahutamine, mitte tavaline: kataloogi puhul 027 => 640 ja 277 => 400)
umask ja newgrp -käsud
chattr - ainult Linuxi failisüsteemides, täiendavad õigused:
- -a - append, kirjutada saab ainult lisades (mitte üle)
- -c - compress, automaatne jooksev kinni-lahtipakkimine
- -i - immutable, ei saa muuta, ümber nimetada, kustutada, linkida (isegi root mitte - bitt tuleb enne maha võtta!)
- -j - journal (kui failisüstemem toetab) - faili žurnaalimine (kergem taastada, ent aeglane)
- -s - secure delete - püsikustutus (nullidega ülekirjutus)
- -t - no tail-merging - faili ei ümardata üle blokkide
- -A - no access time update - faili viimase vaatamise atribuuti ei uuendata
Kettakvoodid:
2.4 kernelid - v1 2.6 - v2
fstab'i rida:
/dev/hdc5 /home ext3 usrquota,grpquota 1 1
Sisselülitamine (RH): chkconfig quota on
Otsing
find
- name
- perm
- size
- gid
- uid
Peamiselt root-kasutaja tööriist - ei sõida üle failiõigustest!
locate kasutab andmebaasi (vt updatedb!), kiirem ja lihtsam slocate - turvalisem, ei näita tavakasutajale asju, mida ei peaks näitama
whereis - ainult kindlad süsteemsed kohad, mõeldud käskude leidmiseks:
$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.bz2
which - väga nõrk otsing ainult kasutaja kataloogitee raames, tagastab leitud faili kogu kataloogitee:
$ which xterm
/usr/bin/xterm
type - kas sise- või väliskäsk, alias vmms:
$ type type type is a shell builtin $ type cat cat is /bin/cat $ type ls ls is aliased to `ls --color’
tar - t-võti on --list!
kvootide nägemine: repquota -a
Buudiprotsess
LILO: /etc/lilo.conf (NB! peale muudatusi tuleb lilo-käsk anda)
Nii LILO kui GRUBi puhul: kui kernel tehakse ise, tuleb see konfi ise sisse kirjutada! Alati tasub vana image alles jätta, kuni pole selge, kas uus töötab
Single-user mode: linux 1, linux s, linux S või linux single
GRUB: /boot/grub/menu.lst või /boot/grub/grub.conf
buuditeated: dmesg (vt ka /var/log/dmesg)
buudiprotsessi etapid:
1. poweron, BIOS 2. BIOS kontrollib riistvara, otsib buutsektori 3. alglaadur 4. käivitub kernel 5. /sbin/init 6. muud käivitusprogrammid
Käivitustasemed:
0 - üleminekutase (sisuliselt shutdown)
1 - single user
2 - Debianil (Ubuntul ka!) full multiuser w/ X, graph login. teistel defineerimata
3 - enamasti full multi user text mode
4 - enamasti defineerimata
5 - enamasti 3 + graafiline keskkond
6 - reboot
Muidu on default level /etc/inittab-is. Ubuntul vaikimisi pole!
Runleveli sättimise vahendid: chkconfig, ntsysv, rc-update ja update-rc.d (Ubuntul on viimane!)
Check: runlevel-käsk : N näitab, et level pole viimase buudiga muutunud
Vahetamine: init level (N: init 3)
telinit - kindlam ja suuremate võimalustega
Shutdown
- shutdown now - otsekohe level 1 peale
- shutdown -h +15 “system going down for maintenance” 15 minuti pärast (saab ka kellaaja panna: 06:00)
katkestus: # shutdown -c “never mind”
-h - halt - peatab, ei lülita välja -H - Halt - peatab, enamasti lülitab välja -r - reboot -P - poweroff
reboot ja poweroff on tänapäeva halti sümlingid!
vi redaktor
Kolm režiimi:
- käsurežiim: ühetähelised käsud (N: a, i ja R viivad kõik sisestusrežiimi - R on overwrite!)
- failirežiim: koolon + kaks tähte
- sisestusrežiim: Esc viib tagasi käsurežiimi
Kui ei tea, kus oled, viib Esc alati tagasi käsurežiimi!
Salvestus: :w Salvesta ja välja: :wq Välja ilma salvestuseta: :q!
================================================================================================
LPI-102
================================================================================================
X
Kolm peamist varianti:
- XFree86 - 2004. aastani peamine Linuxi akenduskeskkond
- X.org - 2004. aastast Linuxi peamine keskkond (XFree86 litsentsimuudatuste tõttu)
- Accelerated-X - omandvaraline X versioon (http://www.xig.com)
XFree86 ja X.org'i erinevus - fontide asukoht ja konfifaili nimi...
XFree86 ja X.org-i konfivahendid:
X server ise - konfikäsud vastavalt:
- XFree86 -configure
- Xorg -configure
Selle tulemusena luuakse kas:
- /root/XF86Config.new või
- /root/xorg.conf.new
NB! X ei tohi töötada, vaja on tekstirežiimi!
Distrospetsiifilised vahendid:
- system-config-display (RH)
- yast, yast2 (Suse)
Vananenud:
- xf86cfg
- xorgcfg
Veel varasemaid (varem kui XFree86 v 3.3.6):
- xf86config, Xconfigurator, XF86Setup
Põhiline konf:
- X.org - fail xorg.conf; enamasti /etc/X11 all, aga võib olla ka /etc vmm kohas
- XFree86 v4 - XF86Config-4 või ka XF86Config, /etc/X11 või /etc
- XFree86 v3 - XF86Config, /etc/X11 või /etc
Konfifail on kõigil sama ülesehitusega ja koosneb sektsioonidest. N klaveri sektsioon: Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbModel" "pc105" Option "XkbLayout" "et" Option "AutoRepeat" "500 200" EndSection
Üldiselt suht sarnane kõigil. Erandina ei ole XFree86 3.3.6 ja vanemates:
- Option-klauslit - selle asemel on vastavad väärtused esimeses positsioonis (AutoRepeat "500 200")
- ServerLayout-sektsiooni
- Identifier- ja Driver- klausleid
X-i parandamistsükkel: 1. Reeglina ei saa torkida töötavat X-i. Aitab telinit 3 (RH) või /etc/init.d/gdm stop (Debian ja lapsed) 2. Teha muudatused 3. Lasta X prooviks käima startx-käsuga. Kui korras, siis telinit 5 või /etc/init.d/gdm start
Protsessi mahatapmine: Ctrl-Alt-Bksp või grep-kill:
- ps ax | grep X
1375 ? S 6:32 /etc/X11/X -auth /etc/X11/xdm/authdir/
- kill 1375
X-i torkimisel tasub fokuseerida tähelepanu ükshaaval eri seadmetele ja vastavatele konfi sektsioonidele.
NB! sektsioonide järjekord ei loe!!!
Tüüpilised sektsioonid XF4 ja Xo puhul:
- Module
- InputDevice
- Monitor
- Device
- Screen
- ServerLayout
NB! XF4 ja Xo kasutavad hiire ja klaveri jaoks kaht InputDevice-sektsiooni, XF3 kasutas hiire jaoks Pointer-sektsiooni
Module - riistvaradraiverid (kernelimoodulid):
Section “Module”
Load “dbe”
Load “extmod”
Load “fbdevhw”
Load “glx” # 3D
Load “record”
Load “freetype” # TrueType fonts
Load “type1” # Adobe Type 1 fonts
Load “dri” # 3D
EndSection
Üldiselt ei tasu mooduleid eriti torkida (ainus selge juhus on 3D töölesaamine!)
InputDevice 1 - klaver:
Section “InputDevice” Identifier “Keyboard0” # tegelikult ei oma identifikaatori kuju otsest tähendust - sisuliselt 1. klaviatuur Driver “kbd” Option “XkbModel” “pc105” Option “XkbLayout” “et” Option “AutoRepeat” “500 200” # klahvikordusmehhanism rakendub 500 ms (0,5sek) pärast ja järgnevad kordused 200ms intervalliga (5x sekundis) EndSection
NB! Kordustegurit tasub muuta siiski kasutajalähedasemate vahenditega (nagu Accessibility)
InputDevice 2 - hiir:
Section “InputDevice” Identifier “Mouse0” Driver “mouse” Option “Protocol” “IMPS/2” Option “Device” “/dev/input/mice” Option “Emulate3Buttons” “no” # kas keskmist hiirenuppu saab asendada kahe nupu koosklõpsuga Option “ZAxisMapping” “4 5” # 4. ja 5. nupp - sisuliselt tähendavad hiireratta kerimist üles ja alla! EndSection
Tähtis - Device võib olla:
- /dev/input/mice
- /dev/mouse # enamasti sümlink
- /dev/psaux # PS2 hiir
- /dev/usb/usbmouse # vanad USB hiired
- /dev/ttyS0 # vanaaegne jadapordihiir
- /dev/ttyS1 # sama teises pordis
Tähtis - Protocol võib olla:
- IMPS/2 # tänapäeval levinud - enamik rattaga hiiri
- ExplorerPS/2 # see ka - NB! PS/2 võib tähistada nii riist- kui tarkvaraprotokolli, viimast kasutavad ka paljud USB-hiired!)
- PS/2 # vanem PS/2
- Microsoft
- Logitech
- Auto # X üritab ise protokolli ära arvata, enamasti edukalt!
Monitor - nägu:
Section “Monitor” Identifier “Monitor0” ModelName “VisionMaster Pro 450” HorizSync 27.0-115.0 # kilohertsides! VertRefresh 50.0-160.0 # hertsides! # kohandatud graafikarežiim 1360x1024 Modeline “1360x1024” 197.8 1360 1370 1480 1752 1024 1031 1046 1072 -HSync -VSync EndSection
Identifier ja ModelName eriti ei loe - sync ja refresh on aga väga olulised, määrates reso ja refresh rate'i.
Mõned utiliidid võimaldavad valida väärtused (N: 1024x768@75) ja arvutavad siis vastavad väärtused, kuid käsitsi saab täpsemini (vaata manuaalist!).
Vanad monitorid võivad katki minna, uued suudavad liiga kõrgeid väärtusi eirata!
Modeline on keerukas väärtustekomplekt, niisama torkida ei maksa. XF3 ja varem pani igaks juhuks hirmsa hunniku monitore nõnda kirja
XF4 ja Xo kasutavad Data Display Channelit (DDC), mis võimaldavad -configure käsuga Modeline'i arvutada (monitor teatab ise vastavad väärtused). Seetõttu on konfifailid enamasti märksa lühemad.
Device - videokaart:
Section “Device” Identifier “Videocard0” Driver “nv” VendorName “nVidia” BoardName “GeForce 6100” VideoRam 131072 # kilobaitides => 128MB EndSection
Driver "nv" Draiverid asuvad kataloogis /usr/X11R6/lib/modules/drivers/ , enamikul on nime järel _drv.o (N: nv_drv.o). Identifier, VendorName ja BoardName on jällegi lugeja jaoks. VideoRam pole enamasti vajalik, harva peab määrama.
Screen - video lahutusvõime ja värvigamma
Section “Screen”
Identifier “Screen0”
Device “Videocard0”
Monitor “Monitor0”
DefaultDepth 24
SubSection “Display”
Depth 24
Modes “1024x768” “1024x600” “800x600” “640x480”
EndSubSection
SubSection “Display”
Depth 8
Modes “1024x768” “800x600” “640x480”
EndSubSection
EndSection
Kaks võimalikku komplekti, vaikimisi väärtuse määrab DefaultDepth (XF3-s oli DefaultColorDepth).
Vajatava põhimälu valem: R = xres × yres × bpp ÷ 8,388,608 N: R = 1280 × 1024 × 24 ÷ 8,388,608 = 3.75MB
ServerLayout - koondinfo:
Section “ServerLayout” Identifier “single head configuration” Screen “Screen0” 0 0 InputDevice “Mouse0” “CorePointer” InputDevice “Keyboard0” “CoreKeyboard” EndSection
xdpyinfo - pikk joru tehnilist infot monitor jõudluse kohta. Vaikimisi kuvab kõik laiendused, täpsustamiseks xdpyinfo -ext laiendus
xwininfo - info mingi akna kohta (tuleb klõpsata). Parameetrid:
- -id id, -name name - akna ID või nime järgi
- -root - juuraken (töölaud)
Kirjastiilid
Tuumstiilid saab kirjutada X-i konfi, vahepeal (XF3 aja lõpus) kasutati ka X-ist sõltumatut fondiserverit (tänaseks teeb jälle põhitöö ära X).
Põhiliigid:
- rasterkirjastiilid (bitmap) - hulk piksleid sees-väljas. Miinusena on vajadus optimeerida konkreetsele resole ja erinev suurus eri resodega (kuvar vs printer). Eri suuruste jaoks on eri failid (vältimaks skaleerimise vajadust)
- skaleeruvad (scalable) e. joonkirjastiilid (outline) - koosneb maatriksise paigutatud sirg- ja kõverjoontest. Parem skaleeruvus, aga mitte universaalne, samuti vajab rohkem prosejõudu
Joonkirjastiilide põhitüübid:
- Adobe Postscript Type 1 (harilikult lihtsalt Type 1)
- Apple TrueType - uuem, XF3 ei toetanud (sai lisada fondiserveri abil)
Tuumstiilid - need, mida haldab X ise. Asukohad:
- XFree86 (traditsiooniliselt) - /usr/X11R6/lib/X11/fonts/
- X.org-X11 - /usr/share/fonts või /usr/share/X11/fonts
Väliseid stiile võib panna ka mujale, näiteks /opt/fonts või /usr/local/fonts alla.
Installifailid:
- Type 1 - .pfa või .pfb
- TrueType - .ttf
Windowsi, OS2 ja paljude muude süsteemide stiile saab Linuxis otse kasutada, Maci "suitcase"-konteinereid ei saa. Teisendamiseks on rida utiliite (näiteks FontForge)
Peale fondifailide kopeerimist vastavasse kataloogi tuleb sinna luua paar vajalikku faili. Lihtsam on teha seda käskudega
- mkfontscale - loob fonts.scale faili, toetab mõlemat tüüpi (T1 jaoks on ka type1inst ja TTF jaoks ttmkfdir)
- mkfontdir - loob fonts.dir -faili
Seejärel tuleb luua X-i konfifaili vastav sektsioon:
Section “Files” FontPath “/usr/share/fonts/100dpi:unscaled” FontPath “/usr/share/fonts/Type1” FontPath “/usr/share/fonts/truetype” FontPath “/usr/share/fonts/URW” FontPath “/usr/share/fonts/Speedo” FontPath “/usr/share/fonts/100dpi” EndSection
NB! Järjekord loeb - kui sama stiil esineb mitmes kohas, kasutatakse eespool olevat!
- unscaled lubab rasterfonte kasutada vaid siis, kui nende suurus klapib
Testimiseks on lihtsaim võimalus X-i restart. Võib aga ka proovida: $ xset fp+ fondikataloog $ xset fp rehash
fp+ lisab nimekirja lõppu, +fp algusse!
Fondiserver - otseselt pole enam vajalik, aga sobib tsentraalseks kirjastiilijaotuseks paljudele masinatele:
Section “Files”
FontPath “unix:/7100” # kohalik fondiserver - võib olla ka kujul "unix:/~1"
FontPath “tcp/fount.pangaea.edu:7100” # eemalasuv fondiserver
EndSection
Fondifailid paigaldatakse samamoodi kui eespool, serveri konf asub /etc/X11/fs/config -failis.
catalogue = /usr/share/fonts/100dpi:unscaled, /usr/share/fonts/Type1, /usr/share/fonts/truetype, /usr/share/fonts/URW, /usr/share/fonts/Speedo, /usr/share/fonts/100dpi
NB! Eraldatakse komadega!!
Testimine: etc/init.d/xfs restart ja ka X-i taaskäivitus (või rehash, vt eespool).
Tänapäevane viis - Xft
X-i tuumfontidel ja fondiserveril on samad probleemid:
- raske ühildada kuvari- ja printerikuju
- serveripõhisus: failid võivad asuda füüsiliselt mujal (võib tekkida jama printimise korraldamisega)
- Vähe tuge uuematele tüpograafiavõtetele (eeskätt printimisprobleem)
- ei toeta silumist (antialiast) ehk hallide pikslite kasutamist lisaks valgetele ja mustadele
Xft põhineb FreeType -teegil ja on tänastes Linuxites teine kasutatav süsteem X-i tuumfontide kõrval.
Saab kasutada eelnevate süsteemide fondikatalooge - vt failis /etc/fonts/local.conf read <dir>/font/directory</dir>
Pärast muudatusi tuleb anda käsk fc-cache - idee poolest sarnane mkfontdir jms-ga
Graafiline sisselogimine
X Display Manager Control Protocol (XDMCP) - haldab nii eemalt kui kohalikke sisselogimisi
Kolm peamist XDMCP serverit: XDM, GDM, KDM
XDMCP serveri käivitab init-protsess, kas /etc/inittab'i või mõne selle alamfaili või siis SysV startup-skriptide abil
Enamasti ongi runlevel 3 ja 5 vahe ainult XDMCP serveri käivitamises
Vaikimisi runlevel inittab'is: rida id:5:initdefault:
Debiani perekond ja Gentoo aga ei kasuta runleveleid (kõigil tasemetel kas käivitatakse XDMCP või ei käivitata), vaid SysV skripte.
Ajutine käivitamine/peatamine - xdm/kdm/gdm start/stop. Püsivamalt aga tuleb redigeerida /etc/init.d/ all vastavaid skripte
XDM
kõige lihtsam, võimaldab sisse logida, kuid mitte keskkonda valida (seda tuleb teha login-failide abil)! konf /etc/X11/xdm/xdm-config. NB! Vaikimisi on remote login keelatud - DisplayManager.requestPort: 0 . Lubamiseks tuleb panna 0 asemele 177 (traditsioooniline XDMCP port).
Kui remote login on lubatud, tuleb konfida /etc/X11/xdm/Xaccess -fail. Vaikimisi on kõik lahti:
- && Igaüks võib ühenduda
- CHOOSER BROADCAST && igaüks võib valida kohaliku süsteemi, millega ühenduda
- .pangaea.edu && kogu domeen võib ühenduda
tux.example.com && võib ühenduda (aga mitte süsteemi valida, vt järgmist)
- .pangaea.edu CHOOSER BROADCAST && võib valida kohaliku süsteemi
Veel valikuid on failis /etc/X11/xdm/Xresources (näiteks saab määrata tervitusteksti)
KDM
Baseerub XDM-il, mitmed konfivariandid on samad. Probleem on konfifaili ebastabiilne asukoht eri süsteemides - /etc/X11/kdm, /etc/kde/kdm, /usr/share/kde4/config/kdm/kdmrc (otsinguvahendid abiks). Võimaldab valida ka sessiooni. Tihti ka täiendav konfifail kdmrc. Remote login tuleb eraldi lubada (enable=yes).
GDM
Sarnaneb XDM-iga vähem kui KDM, ei kasuta sama tüüpi konfi. Põhikonf enamasti /etc/X11/gdm -kataloogis, peamine fail gdm.conf. Nagu KDM-i puhul tuleb remote login eraldi lubada (enable=yes), Konfikäsk gdmconfig (root-tase). Võimaldab sessiooni valikut ja ka arvuti sulgemist. Erinevus: esmalt küsib kasutajanime ja alles siis parooli (XDM ja KDM näitavad mõlemat välja koos).
X-i kaugligipääs
X on klient-server süsteem - ekraanipilti võib saata teise arvutisse või jooksutada X-i rakendusi eemalt. Tavaolukorras töötavad X-i server ja klient samas masinas - klientideks on rakendused nagu Evolution, OO.o, gnome-terminal, Firefox jt. Kaugligipääsu korral töötab X-i server kasutaja arvutis, rakendused aga eemalolevas masinas. Mõnevõrra sobib paralleel veebilehitsejaga (tarkvara enda arvutis, veebilehed mujal - X-i server täidab siin veebiserveri rolli).
VEEBISERVER <=============> X-I KLIENT JA VEEBIKLIENT <==================> X-I SERVER
Majutab veebilehti Jooksutab kasutaja tarkvara Näitab pilti ja võtab vastu sisendit (klaver, hiir)
Harilikult vastab X vaikimisi ainult kohalikele pöördumistele (turvakaalutlus). Väljast ligipääs tuleb eraldi konfida, aga turvalisust tuleb jälgida.
Näide: karu on server, kass on klient (aga hea kuvari ja klaveriga, parem töökeskkond).
1. Logida kassi ja käivitada X (kui juba ei tööta) 2. Avada terminal 3. Terminalist käsk xhost +karu . Annab õiguse kasutada kassi karu terminalina, s.t. kass lubab kuvada karult tulevat infot ekraanil 4. logida kassist karusse (SSH, telnet) 5. karus anda käsk export DISPLAY=kass:0.0 (bashi puhul; tcsh puhul setenv export'i asemel). Karu saadab nüüd ekraanipildi kassi. 6. käivitada vajalik programm, nt Firefox. Firefox jookseb karus, aga pilt ja juhtimine toimub kassist. 7. Peale töö lõppu programmid kinni, karust logout ja kassi terminalis käsk xhost -karu.
Variant on kasutada kogu ühenduse jaoks SSH tunnelit - aeglasem, aga turvalisem. Tuleb kas
a) kasutada ssh-ga karusse logimisel -X võtit või
b) lisada kliendi faili /etc/ssh_config säte ForwardX11=yes
Lisaks peab olema serveri /etc/ssd_config -is X11Forwarding=yes !!
Enamasti on tänapäeva distrodes ka X-i konfist võrguühendused maha keeratud. Sisselülitamiseks:
- GDM vanemad versioonid: /etc/X11/gdm/gdm.conf, DisallowTCP false'iks
- GDM uuemad: /etc/gdm/gdm.schemas:
<schema> <key>security/DisallowTCP</key> <signature>b</signature> <default>true</default> && false'iks </schema>
XDM: /etc/X11/xdm/XServers: :0-ga algaval real võtta lõpust ära -nolisten tcp KDM: /etc/X11/kdm/XServers, sama
OpenSUSE on erijuht: failis /etc/sysconfig/displaymanager panna DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN väärtuseks "yes".
Kui X käivitatakse startx-iga tekstirežiimist, tuleks muuta startx-skripti (/usr/bin/ ja võtta -nolisten tcp maha
Peale seda kõike tuleb X taaskäivitada. Veel üks võimalus X-i rakendusi eemalt käivitada on VNC.
X-i ligipääsetavus
Mitmed asjad klaveri ja hiire sätete all. Debounce keys - väldib mitut tahtmatut vajutust järjest
GOK, fonts, kontrastse teema valimine, ekraaniluup (gnome-magnifier/Orca, KMag)
Kõne: Orca, Emacspeak
BRLTTY: tekstirežiimis töötab üsna otse. z
i18n
/etc/localtime - väga väheseid konfis kasutatavaid mitte-tekstifaile. Vahel on sümlink /usr/share/zoneinfo vastavale failile, vahel on see kopeeritud sealt ära.
date-käsk:
kakk@aragorn:~$ date E apr 18 01:09:49 EEST 2011
Ajavööndid vt http://www.timeanddate.com/library/abbreviations/timezones/
Muutmiseks tuleb linkida või kopeerida /etc/localtime asemele näiteks /usr/share/zoneinfo/Europe/Tallinn
Lisaks kasutatakse ka ajavööndifaili:
- /etc/timezone - Debian ja sugulased
- /etc/sysconfig/clock - Red Hat ja sugulased
Mõnes distros ka utiliidid nagu tzsetup, tzselect, tzconfig (Ubuntus on viimane ebasoovitav, teine võimaldab vööndit valida).
Locale ehk riigiinfo
Üldkuju: [language[_territory][.codeset][@modifier]]
Kodeeringud:
- ASCII 7bit (enamasti 8-bitiste baitidena)
- ISO 8859 (kasutab 8 bitti tähestiku laiendamiseks 128 märgini), regionaalsed alamtähestikud
- Unicode/UTF-8 - ASCII + 0-3 lisabaiti
locale-käsk:
kakk@aragorn:~$ locale LANG=et_EE.UTF-8 LANGUAGE=et_EE:en LC_CTYPE="et_EE.UTF-8" LC_NUMERIC="et_EE.UTF-8" LC_TIME="et_EE.UTF-8" LC_COLLATE="et_EE.UTF-8" LC_MONETARY="et_EE.UTF-8" LC_MESSAGES="et_EE.UTF-8" LC_PAPER="et_EE.UTF-8" LC_NAME="et_EE.UTF-8" LC_ADDRESS="et_EE.UTF-8" LC_TELEPHONE="et_EE.UTF-8" LC_MEASUREMENT="et_EE.UTF-8" LC_IDENTIFICATION="et_EE.UTF-8" LC_ALL= kakk@aragorn:~$
locale -a näitab kõiki süsteemis olemasolevaid
Ajutine muutmine: $ export LANG=en_GB.UTF-8 $ export LC_ALL=en_GB.UTF-8
Püsivalt tasub panna ~/.bashrc või /etc/profile -faili.
X-i konfis on XkbLayout-parameeter - sinna käib sisuliselt seesama locale
LANG=C - eirab locale'sid
iconv - tõlgib kooditabelite vahel: iconv -f encoding [-t encoding] [inputfile]... iconv --list näitab kõiki
N: $ iconv -f iso-8859-1 -t UTF-8 umlautfile.txt > umlautfile-utf8.txt
Printimine
Üldine süsteem: rakendus väljastab PostScripti, see saadetakse GhostScripti abil printerile. Printerijärjekorda haldab enamasti CUPS. Alternatiivid
- LPD
- LPRng
Käsud suht samad, printeri konfimine aga erinev
Üldine printerikäsk - lpr (võib kasutada ka rakendustes). Printerijärjekord asub tüüpiliselt kataloogis /var/spool/cups
Unixi/Linuxi printimine on võrgupõhine, printimistöid võib saata nii eemalt kui kohalikust masinast. CUPS on muidu serverirakendus, kuid printimistööde mujale saatmisel töötab ka kliendina.
Printeridraiverid kuuluvad GhostScripti koosseisu. Windowsis suhtleb rakendus otse draiveriga, Unixis tehakse PS ja saadetakse printerijärjekorda.
Kallimad printerid suudavad otse PSi vastu võtta, odavamatel on vaja GhostScripti tõlgiks vahele - võtab PS-i, interpreteerib seda ja väljastab tulemuse vastavale printerile sobiva bitmapina. GS peamine miinus on väljundfaili suur maht
Kiire printimise jaoks tuleb valida PS-i toetav printer (keeruline värviliste tindikate osas - mõnel on peal PSi Windowsi analoogid, mille tarkvaraga aga pole Linuxis midagi teha).
Ilma PS toeta printeri puhul saadetakse töö printerijärjekorda, kus tark filter (smart filter) näeb seda ja laseb enne printerisse saatmist läbi GS-i.
Printeriprotsessid käivitatakse reeglina buudiprotsessis (/etc/rc.d, /etc/init.d või /etc/rc?.d kaudu - ? on vastav runlevel).
CUPSi konf
etc/cups/printers.conf - printerite fail:
- Printer configuration file for CUPS v1.4.4
- Written by cupsd
- DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
<DefaultPrinter HP-LaserJet-1320> Info ITK printer Location 221 koridoris MakeModel HP LaserJet 1320 series Postscript (recommended) DeviceURI hp:/net/hp_LaserJet_1320_series?ip=192.168.2.63 State Idle StateTime 1301394578 Type 8425540 Filter application/vnd.cups-raw 0 - Filter application/vnd.cups-command 0 commandtops Filter application/vnd.cups-postscript 0 - Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy retry-job </Printer>
Täiendavad printeridefinitsioonidega failid asuvad /etc/cups/ppd -kataloogis!
CUPSi võrguprintimise protokoll: IPP (Internet Printing Protocol)
CUPSi enda konf: /etc/cups/cupsd.conf. Sarnaneb ülesehituselt Apache'i konfiga:
<Location /printers> Order Deny,Allow && vaikimisi keelatud, ekstra lubamine Deny from All && vaikimisi kõik kinni BrowseAllow from 127.0.0.1 && lubame konkreetseid asju... BrowseAllow from 192.168.1.0/24 BrowseAllow from @LOCAL Allow from 127.0.0.1 Allow from 192.168.1.0/24 Allow from @LOCAL </Location>
Browsing On - printerite autdetect võrgus, kasulik suurte, kiirelt muutuvate printeritega võrgu korral
Printeridefinitsioone saab distrost endast, Foomaticust, Gutenprintist, CUPSi DDK-st ja vahel ka printeritootjatelt
CUPSi IPP-protokoll on nii sarnane HTTP-ga, et sinna saab ligi veebilehitsejaga: http://localhost:631
CUPSi häälestamisel peavad USB printerid olema ühendatud ja töötama! Kui ei, tuleb panna tööle ja CUPS taaskäivitada
Võrguprinteri korral võib minna vaja asukohta: lpd://printserv/brother (protokoll, arvuti, printer)
CUPSi ei tohiks üle võrgu häälestada - ühendus on krüptimata!!
Võrguprinterid
Samba:
Üldkuju: smb://username:password@SERVER/SHARE
vrdl EIK ketaste ühendamisega:
zerblat/Avalik$ /media/itk_avalik cifs credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0 //zerblat/kaido$ /media/itk_kodu cifs credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
LPD: lpd://hostname/queue IPP: ipp://hostname/queue
Võimaluse korral protokollide eelistusjärjekord: IPP, LPD, SMB/CIFS
Printerijärjekorra haldamine
Käsud: lpr, lpq, lprm ja lpc. Kõigile saab lisada -P parameetri konkreetse järjekorra määramiseks (kui on mitu)
lpr:
-Pqueue (NB! vanades süsteemides ei tohi tühikut vahel olla!) - järjekord
-r - kustutab algse faili peale printimist
-h - ei lisa trükipäist
-j, -C, -T jobname - konkreetse töö valimine printerijärjekorrast
-m username - saadab peale printimist kasutajale e-kirja
-# nr - koopiate arv
N: $ lpr -Plexmark -m ljones report.txt && report läheb lexmarki järjekorda, peale printimist saab ljones meili.
mpage - mitu lehte vähendatuna samale paberile. N: $ mpage -Plexmark report.ps. Võib määrata ka lehtede arvu, -1, -2, -4, -8
lpq - järjekorra vaatamine
$ lpq -Php4000 hp4000 is ready and printing Rank Owner Job File(s) active rodsmit 1630 file:/// Total Size 90112 bytes
lprm - töö eemaldamine:
- lprm nr - vastava numbriga (vt eelmist!) töö eemaldamine
- lprm - - kõik selle kasutaja tööd
lpc - juhtimiskäsk, kuid selle asemel soovitatakse kasutada CUPSi veebiliidest
ADMINISTREERIMINE
Kasutajahaldus
Kasutajanimed - suhteliselt vaba märgivalik. Tühik võib probleeme tekitada, punkt ja allkriips üldiselt OK. Nimi peab algama tähega! Max pikkus 32 märki, aga paljud utiliidid lõikavad üle 8 märgi puhul saba maha - tihti ei soovitata üle selle panna. Tõstutundlikkus. Grupid - peamiselt õiguste baasil loodud kasutajarühmad. /etc/group, /etc/passwd. Grupi vahetamine - newgrp -käsk (failidel ka chown ja chgrp)
UID ja GID . 0-99 reserveeritakse süsteemile, 0 on root. Mõni distro alustab 500-st, mõni 1000-st. Reeglina vabanenud ID-sid ei taaskasutata.
GID 100 on tihti users-grupp, vaikimisi grupp.
UID 0 mõnel teisel kontol on selge sissetungi märk (root-õigused).
Kasutaja lisamine:
useradd [-c comment] [-d home-dir] [-e expire-date] [-f inactive-days]➦ [-g default-group] [-G group[,...]] [-m [-k skeleton-dir] | -M]➦ [-p password] [-s shell] [-u UID [-o]] [-r] [-n] username
Expire-date - alati YYYY-MM-DD, vahel ka muud variandid lisaks -f loob konto, mis pika kasutamatuse korral kinni läheb (päevades; vaikimisi -1 ehk mitte kunagi)
Kontoinfo läheb /etc/login.defs-i
passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]
-k - korjab ära aegunud kontod -l - lukustab konto (kirjutab krüpteeritud parooli ette hüüumärgi) -u - lukust lahti (lisades -f eemaldab parooli) -d - eemaldab parooli -S - parooli info (kas on, krüpteeringu tüüp)
usermod - suht sarnane useradd'iga. Erisused:
-m (koos -d-ga) - tõstab kasutaja failid uude kodukataloogi
-l - kasutaja ringinimetamine: usermod kakk -l puravik
-L, -U - nagu -l ja -u passwd'is
Faile ei tohiks liigutada, kui nende omanik on sisse logitud!!
Konto aegumise muutmine:
chage [-l] [-m mindays] [-M maxdays] [-d lastday] [-I inactivedays] [-E expiredate] [-W warndays] username
-l - seisu kuvamine
-m - paroolivahetuse min. periood (tihedamini ei saa)
-M - max (harvemini ei saa)
-d - viimase paroolivahetuse päeva seadmine
-I - passiivsusperiood päevades kuni lukustumiseni
-E - aegumise kuupäev
-W - hoiatuse kestus päevades enne aegumist
/etc/passwd
sally:x:529:100:Sally Jones:/home/sally:/bin/bash
kasutaja, parool (x märgib variparoole /etc/shadow's), UID, peamine GID, kommentaar (siin täisnimi), kodukataloog, kest
kestaks võib panna /bin/false - ei saa sisse logida, kuid võivad näiteks meili lugeda (POP, IMAP). Võib ka sürri teha - nt /bin/shutdown ...
/etc/shadow
sally:E/moFkeT5UnTQ:14069:0:-1:7:-1:-1:
kasutaja, krüpteeritud parool, viimane paroolivahetus (14069 - Unixi päeva number), päevi võimaliku paroolivahetuseni, päevi kohustusliku paroolivahetuseni, hoiatusega päevade arv, aegumise ja kustumise vahe päevades, aegumistähtaeg (Unixi päeva number), reservlipp
Võimalik rootkräki viis, kui admini parool on kadunud: recoveryga üles, kopeerida ruudu parooliväljale mõne teise kasutaja paroolihash, kelle parool on teada, tavaline boot ja selle parooliga sisse. Võib ka hashi kustutada, aga paroolita root on väga ohtlik asi...
/etc/shadow on harilikult root ja 600 -õigustega, /etc/passwd aga root ja 644.
Võrgulogimissüsteemid nagu LDAP on omaette teema, aga nad kasutavad /etc/nsswitch.conf'i ja /etc/pam.d/ -kataloogi.
userdel
-r kustutab koos failidega
-f kustutab ka sisselogitud kasutaja
-h help
Kasutaja kustutamisel tuleks otsida ka mujal olevaid faile (# find / -uid 529).
groupadd
groupadd [-g GID [-o]] [-r] [-f] groupname -g - etteantud GID -r - alla 500 numbriga grupp -f - jõuga (ka eksisteeriva korral)
enamasti piisab groupadd kasutaja -st
groupmod:
groupmod [-g GID [-o]] [-n newgroupname] oldgroupname
gpasswd:
gpasswd [-a user] [-d user] [-R] [-r] [-A user[,...]] [-M user[,...]] group -a - lisab gruppi -d - eemaldab -R - keelab newgrp'i -A - määrab kasutaja grupi adminiks
/etc/group:
project1:x:501:sally,sam,ellen,george
parool on krüptitud (/etc/gshadow)
groupdel - vt userdel
Keskkonnakohandused
/etc/profile, /etc/bash.bashrc, ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.profile
vt keskkonnainfot env | less
/etc/skel - vaikimisi kodukataloogi jupid
Logimine
syslogd - üldine logideemon klogd - kerneli logideemon
Võivad olla ka muud - syslog-ng, rsyslogd, metalog - Ubuntul on rsyslog!
konf /etc/syslog.conf
Üldkuju: facility.priority action
Facility: auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, syslog, user, uucp, local0-local7.
Priority: debug, info, notice, warning (varem warn), err (varem error), crit, alert, emerg (varem panic)
alert - alert või tõsisem =alert - ainult alert !alert - alla selle
- - kõik
action - enamasti failinimi, tüüpiliselt /var/log all - väga tihti kas messages, syslog või secure
Näide:
kern.* /var/log/kernel && kogu kerneli jutt logisse
kern.crit @logger.pangaea.edu && crit teise masinasse
kern.crit /dev/console && crit kohalikule peamonitorile
kern.info;kern.!err /var/log/kernel-info && infost err-ini logisse
Käsitsi logimine
Vahel on vaja ise teha või skripti panna
logger [-isd] [-f file] [-p pri] [-t tag] [-u socket] [message ...] -i - logib ka loggeri enda PID -s - saadab väljundi stderr'i -d - logib datagrammidena (profifeatuur) -f fail - logifail (ettevaatust mahuga!) -p prioriteet - prioriteedi määramine (vt eespool) -t tag - logi märgendamine nimega (vaikimisi 'logger') -u sokkel - kindla võrgusokli määramine (profifeatuur) sõnum (Ctrl-D lõpetab) - jooksva sisendi logimine
N:
$ logger shutting down for system maintenance Tulemus (ilmselt /var/log/messages): Jul 29 14:09:50 nessus logger: shutting down for system maintenance
Logide rotatsioon
logrotate , /etc/logrotate.conf, /etc/logrotate.d/
Konfinäide:
- Rotate logs weekly
weekly
- Keep 4 weeks of old logs
rotate 4
- Create new log files after rotation
create
- Compress old log files
compress
- Refer to files for individual packages
include /etc/logrotate.d
- Set miscellaneous options
notifempty nomail noolddir
- Rotate wtmp, which isn’t handled by a specific program
/var/log/wtmp { monthly create 0664 root utmp rotate 1 }
/etc/logrotate.d/ - iga logitava programmi konfid. Valikuid: - dateext - vaikimisi on messages.1, messages.2 jne. Saab panna kujule messages-20091005 (05.10.09) - compresscmd - vaikimisi gzip, võib panna näiteks bzip2. Täiendavad parameetrid võib lisada compressoption'iga - create vs copytruncate - viimane kopeerib vana logi ja siis teeb vana faili tühjaks (töötab mõne tarkvaraga paremini) - daily, weekly, monthly - intervallid - size - lubatud suurus. N: size 100k - kui logi saab 100k suuruseks, toimub rotatsioon - rotate number - mitu koopiat säilitatakse. N: rotate 2 - algne tühjaks, senine .1-ks, senine .1 .2-ks, .2 kustutatakse. - mail aadr - meilib kustutatava (väljaroteeruva) logi sellele aadressile. Vastand: nomail - prerotate, postrotate - skriptid, mis täidetakse vahetult enne ja peale rotatsiooni
Logide lugemine
- otse - less
- otsing - grep
- algus/lõpp - head/tail
- monitoorimine - tail -f /var/log/messages
Ajahaldus
Enamasti UTC
Käsitsi seadmine: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Riistvarakella sättimine: hwclock . Valikud: -r, --show - näitab aega : E 18 apr 2011 11:37:29 EEST -0.437870 sekundit --set ja --date=newdate - aja seadmine --systohc - riistvara sätitakse tarkvara järgi --hctosys - vastupidi --utc, --localtime - vastavalt kumbki
NTP
stratum - erinevad kihid kellaajaedastamise hierarhias /var/lib/ntp/ntp.drift (vahel /etc all)
NTP serveri leidmine:
- ISP
- distro
- avalik NTP-de list
- pool.ntp.org
masinas deemonipõhine, distropõhine paigaldatakse kohe automaatselt käivituvana. /etc/ntp.conf:
server clock.example.com server ntp.pangaea.edu server time.luna.edu
Ühekordne sünkimine: # ntpdate clock.example.com
Cron
Kataloogid /var/spool/cron /etc/cron.d, fail /etc/crontab
system jobs user jobs
System:
02 4 * * * root run-parts /etc/cron.daily && jooksutab kõiki /etc/cron.daily skripte iga päev kell 4.02
- minutid (0–59) - tunnid (0–23) - kuupäev (1–31) - kuu (1–12) - nädalapäev (0–7; pühapäev on nii 0 kui 7) - konto (root) - käsk (run-parts /etc/cron.daily)
- tärn on kõik
- list (0,5,10) - iga väärtus
- vahemik (5-10)
- samm */10 minutite kohal: iga 10 minuti tagant
A slash, when used in conjunction with some other multi-value option, specifies stepped
values—a range in which some members are skipped. For instance, */10 in the minute
field indicates a job that’s run every 10 minutes.
Intervallid on enamasti määratud /etc/cron.interval (Ubuntul; cron.hourly, cron.weekly jne) või /etc/cron.d/interval -kataloogis
Cron'iga käitamiseks mõeldud skripte tuleb põhjalikult testida - seal esinev puuk võib jama põhjustada
Kataloogid peavad kindlasti olema root only, muidu võetakse õigused üle
Kasutaja cron:
crontab [-u user] [-l | -e | -r] [file]
-l - kuvab -e - muudab && vaikimisi vi, saab muuta EDITOR või VISUAL -keskkonnamuutujaga -r - kustutab
Crontabi failist lugemine: crontab -u tbaker my-cron && kasutaja tbaker crontab loetakse failist my-cron
Failinäide:
SHELL=/bin/bash MAILTO=tbaker HOME=/home/tbaker 0,30 * * * * /usr/bin/fetchmail -s 0 2 * * mon /usr/local/bin/clean-adouble $HOME
Peale faili loomist tuleb anda näiteks eespooltoodud failikäsk (lihtsaim kuju: crontab failinimi)
Kasutajate cron'id asuvad kas /var/spool/cron, /var/spool/cron/tabs või /var/spool/cron/crontabs - kasutajanimega failid (/var/spool/cron/edgar)
Ligipääs Cron'ile:
- tavaline õigustesüsteem
- /etc/cron.allow ja/või /etc/cron.deny
anacron - vajalik süsteemides, mis pole 24/7 üleval. Käivitudes kontrollib, kas määratud tegevuste tähtaeg on üle - kui jah, käivitab
/etc/anacrontab:
SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
- These replace cron's entries
1 5 cron.daily nice run-parts --report /etc/cron.daily 7 10 cron.weekly nice run-parts --report /etc/cron.weekly @monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly
1 - periood päevades käsu käivitamiseks (iga päev, teisel kord nädalas) 5 - paus minutites anacroni käivituse ja käsu käivituse vahel (vältimaks hunniku käskudega ülelaadimist)
Käitamine:
- alguses skriptiga
- cronjob - võib anda vajaliku viivituse ja tõsta koormavamad tegevused töövälisesse aega
at - lihtne viivitusega käivitus:
- kellaaeg - HH:MM
- noon, midnight, teatime (viimane on 16:00)
- MMDDYY, MM/DD/YY või DD.MM.YY, month-name day või month-name day year
- now + ajavahemik (5 minutes, 3 hours jne)
peale käsu andmist ja aja määramist tuleb sisestada käsud, lõppu Ctrl-D (at> -käsukest)
-f -parameeter - käsud loetakse failist: at -f kasud.sh noon
Eeldab atd deemoni töötamist (saab käivitada alguses skriptiga)
atq - näitab töösolevaid at-e atrm - eemaldab töönumbri järgi (< atq)
batch - nagu at, aga käivitab protsessid siis, kui süsteemi üldkoormus langeb alla 0,8
/etc/at.allow ja /etc/at.deny - nagu cron, AGA:
- kui MÕLEMAD puuduvad, saab ainult root kasutada (croni puhul saavad kõik)
VÕRGUNDUSE ALUSED
NB! Vahel on piir võrgu ja muude seadmete vahel udune. N: rööpliides + PLIP või jadaliides/USB + PPP
Ethernet - keerupaari mõte on segamise minimeerimine. 10Base-T, 100Base-T (mbps, twisted pair)
Tänapäeval Gbit ehk 1000Base-T
Vanemad: Token Ring (IBM), LocalTalk (Apple), FDDI, HIPPI, Fibre Channel
WiFi: 11Mbps (802.11b), 54Mbps (802.11a ja 802.11g), 300Mbps (802.11n). NB! WEP/WPA/WPA2
Hub: pooldupleksside (kordamööda)
Switch: täisdupleks (korraga)
Linux toetab TCP/IP-le lisaks ka IPX/SPXi (Novell) ja AppleTalki, kuid mitte NetBEUId (MS)
Asjakohased TCP kihid (ülalt alla) - application, transport, Internet, link
MAC-aadress - ifconfig eth0 vmm
IPv6 - 8 x 4 hex-numbrit. 0000 võib ära jätta, asendades ::-ga
netmask: 192.168.29.39/24 = 192.168.29.39 maskiga 255.255.255.0
Ta b l e 8 .1 IPv4 Network Classes and Private Network Ranges
Class Address Range Reserved Private Addresses A 1.0.0.0–127.255.255.255 10.0.0.0–10.255.255.255 üldvõrgud B 128.0.0.0–191.255.255.255 172.16.0.0–172.31.255.255 üldvõrgud C 192.0.0.0–223.255.255.255 192.168.0.0–192.168.255.255 üldvõrgud D 224.0.0.0–239.255.255.255 none multicasting E 240.0.0.0–255.255.255.255 none reserveeritud
IPv6 kohalikud aadressid algavad fec, fed, fee või fef-ga.
Broadcast:
- IP 72.24.21.201
- Mask 255.255.0.0
- BC 172.24.255.255
Kui mask sisaldab muud peale 0 ja 255, on keerukam, teisendatakse läbi kahendsüsteemi
IP 172.24.21.201, Mask 255.255.128.0 . Kahendkujul: 10101100 00011000 00010101 11001001 11111111 11111111 10000000 00000000
Kohtades, kus all (maskis) on 0, tuleb üles 1. Tulemus: 10101100 00011000 01111111 11111111 ehk 72.24.127.255
Hostid
Kasulik tarkvara:
- nslookup - otsib nimeserverist. Vananenud
- host - lihtne DNS-otsing (pmst IP)
- dig - keerukas DNS-otsing (pikem inf)
- whois
Kohaliku võrgu jaoks piisab /etc/hosts'ist: 127.0.0.1 localhost 192.168.7.23 apollo.luna.edu apollo
Vaikimisi otsitakse /etc/hosts'ist enne DNS'i. Vajadusel saab muuta seda /etc/nsswitch.conf'ist: keerata "hosts: files dns" paar ringi
Levinumad pordid
Ta b l e 8 . 2 Port Numbers, Their Purposes, and Typical Linux Servers
Port Number TCP or UDP Purpose Example Linux Servers
20 TCP File Transfer Protocol ProFTPd, vsftpd (FTP) data 21 TCP FTP ProFTPd, vsftpd 22 TCP Secure Shell (SSH) OpenSSH, Dropbear 23 TCP Telnet in.telnetd 25 TCP Simple Mail Transfer Sendmail, Postfix,
Protocol (SMTP) Exim, qmail
53 TCP and UDP Domain Name System (DNS) Berkeley Internet Name
Domain (BIND; a.k.a.
named), djbdns 67 UDP Dynamic Host Configuration Internet Software Consor-
Protocol (DHCP) tium (ISC) DHCP (dhcpd)
80 TCP Hypertext Transfer Apache, Roxen, thttpd Protocol (HTTP) 110 TCP Post Office Protocol Dovecot, Qpopper, popa3d
version 3 (POP-3)
111 TCP and UDP Portmapper NFS, NIS, other RPC-based
services
113 TCP auth/ident identd 119 TCP Network News Transfer InterNetNews (INN), Protocol (NTTP) Diablo, Leafnode 139 TCP NetBIOS Session (Windows Samba file sharing) 143 TCP Internet Mail Access Dovecot, Cyrus IMAP, Protocol (IMAP) UW-IMAP 161 UDP Simple Network Management Net-SNMP Protocol (SNMP) 177 UDP XDMCP XDM, KDM, GDM 389 TCP LDAP OpenLDAP 443 TCP HTTP over SSL (HTTPS) Apache, Roxen 445 TCP Microsoft Directory Samba Services (DS) 465 TCP SMTP over SSL; or URL Ren- Sendmail, Postfix, Exim, dezvous Directory (URD) 1 qmail; or network routers 631 TCP Internet Printing Protocol Common Unix Printing System (CUPS) 993 TCP IMAP over SSL Dovecot, Cyrus IMAP, UW-IMAP 995 TCP POP-3 over SSL Dovecot, Qpopper, popa3d 5900+ TCP Remote Framebuffer (RFB) Virtual Network Computing
(VNC): OpenVNC, TightVNC
6000–6007 TCP The X Window System (X) X.org-X11, XFree86
Alla 1024 - privilegeeritud pordid (root)
/etc/services:
ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp # SSH Remote Login Protocol telnet 23/tcp smtp 25/tcp
Võrgukonf:
kaardi draiveri laadimine modprobe'iga (tuleb teada mooduli nime; N: modprobe realtek)
DHCP
BOOTPROTO=dhcp
Ubuntus määratakse /etc/network/interfaces -failis: iface eth0 inet dhcp
Staatiline konf:
DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.29.39 NETMASK=255.255.255.0 NETWORK=192.168.29.0 BROADCAST=192.168.29.255 GATEWAY=192.168.29.1 ONBOOT=yes
Nimeserver(id) - /etc/resolv.conf:
nameserver IPnr
ifconfig N: # ifconfig eth0 up 192.168.29.39 netmask 255.255.255.0
Kui käsitsi, vajab ka ruutimist läbi lüüsi: # route add default gw 192.168.29.1
Veel üks näide ruutimisest:
- route add -net 172.20.0.0 netmask 255.255.0.0 gw 172.21.1.1
ruutimisinfo: route -n
ifup ja ifdown
/etc/hostname või /etc/HOSTNAME Fedoras /etc/sysconfig/network
ping -c nr masin - nr korda
traceroute - näitab teekonda masinates -n näitab IP-d hostname'i asemel
Diagnostika netstat'iga:
- liides: netstat -i
- ruutimine: netstat -r
- NAT: netstat -M
- programmide netikasutus: netstat -p
- pordid: netstat
- kõik ühendused: netstat -a
Toorpaketid: tcpdump
SKRIPTID, E-POST JA SQL
env ja export
keskkonnamuutujad
aliased
BASHi skriptid algavad #!/bin/sh -reaga (shebang)
chmod
skriptinäide:
- !/bin/sh
echo -n “Enter a username: “ read name useradd -m $name passwd $name mkdir -p /shared/$name chown $name.users /shared/$name chmod 775 /shared/$name ln -s /shared/$name /home/$name/shared chown $name.users /home/$name/shared
if-lause:
if [ -s /tmp/tempstuff ] then echo “/tmp/tempstuff found; aborting!” exit fi
if-else:
if [ conditional-expression ] then commands else other-commands fi
case:
case word in pattern1) command(s) ;; pattern2) command(s) ;; ... esac
for:
- !/bin/bash
for d in `ls *.wav` ; do aplay $d done
while:
while [ condition ] do commands done
funktsioonid:
- /bin/bash
doit() { cp $1 $2 } function check() { if [ -s $2 ] then echo “Target file exists! Exiting!” exit fi }
E-post
Sendmail, Postfix, Exim, qmail
Pull mail - POP/IMAP
Fetchmail (toob ära)
meiliklient
mail [-v] [-s subject] [-c cc-addr] [-b bcc-addr] to-addr
mõnes distros on edasijõudnum klient - nail
mailq - postijärjekord
Redirect: /etc/aliases või /etc/mail/aliases
.forward -fail
SQL
Superserver: inetd, xinetd
/etc/inetd.conf rida:
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd -l
teenus, sokkel, prot,
võivad ka olla /etc/inetd.conf.d/ kataloogis
turvapoint: kõik, mida vaja pole, kinni!
TCP wrappers: tcpd-käsk ning /etc/hosts.allow ja /etc/hosts.deny
/etc/xinet.conf - jällegi kõik mittevajalik: disable!
Tulemüürivärk
Ebavajalikud serverid kinni - kontrolli netstat -ap
lsof - avatud failid
lsof -i
nmap -sT süsteem - avatud pordid
sudo, /etc/sudoers
/etc/security/limits.conf
ulimit-käsk