LPIC-1 - Kaku konspekt 2016, 2. osa

From ICO wiki
Revision as of 13:28, 26 April 2016 by Kaido (talk | contribs)
Jump to navigationJump to search

JÄTKUU....

LPIC-1 - Kaku konspekt 2016, 1. osa

=== Käsukestad === Peamiselt siin bash. Kest pannakse kirja /etc/passwd-i (kui ei ole, tuleb bash). Sisselogimise blokeerimine: panna shelliks /bin/false või /sbin/nologin (viimane annab vastava teate). tühikutega teksti võib panna jutumärkidesse või panna tühiku ette \ TERVITUS="Tere tere!" on sama mis TERVITUS=Tere\ Tere! vaikimisi defineeritakse vaid samale kestale, mitte tuletistele - seetõttu ./programm -käivitamisel need edasi ei lähe (avatakse uus kest)! lahendus on muutuja eksport - siis antakse edasi "lastele". Vastassuunalise protsessi jaoks ("lapse" defineeritud muutuja kasutamine "vanemas") tuleb "laps" käivitada mitte täitmise, vaid pöördumisega (source - sarnaselt kesta häälestusfailidega): source ./skript või . ./skript muutujate väärtustamine ja nullimine lihtsal tasemel set ja unset - NB! unset ilma dollarimärgita! set ilma parameetriteta näitab kõiki muutujaid. set +/- omadus - kesta omaduste seadmine. - on seadmine, + on tühistamine! Näiteks: set -x või set -o xtrace - käskude kuvamine ekraanil (kasulik skriptide silumisel) set -C või set -o noclobber - ei luba suunamistel olemasolevaid faile üle kirjutada saab määrata ka positsioonilisi parameetreid. Näiteks set a b c d e f echo $1 // väljastab a echo {4} // väljastab d Alamkesta kasutamine Alamkesta avamiseks tuleb vastavad käsud panna sulgudesse, käskude vahele semikoolonid. Näide: echo "Algne kest: tase $BASH_SUBSHELL, kesta PID $$" FOO=bar echo "Muutuja väärtus $FOO" (FOO=boo; echo -n "Alamkest: tase $BASH_SUBSHELL."; echo "Muutuja väärtus $FOO"; echo "PID: $$") echo "Uuesti algne kest, muutuja väärtus $FOO" NB! PID jääb samaks! BASH_SUBSHELL - bashi muutuja, näitab alamkesta taset $$ - jooksva protsessi PID env kasutamine skriptides (vaikimisi kuvab kõik muutujad) shebang ehk #!/interpretaator - määrab, millega tuleb skript käivitada (N: /usr/bin/ruby, /usr/bin/python, /bin/bash) kui aga interpretaatori asukoht ei ole täpselt teada, saab seda env-iga PATH-ist otsida: #!/bin/env ruby env -i - keskkonnamuutujate algväärtustus Sisselogimise häälestusfailide poole pöördumine 1. /etc/profile (ja kui on, siis /etc/profile.d/ sisu) 2. ~/.bash_profile - kui ei ole, otsitakse .bash_login või .profile -faile 3. ~/.bashrc - pöördutakse .bash_profile-ist 4 ~/.bash_logout - väljalogimisel viimasena. Peamine mõte on clear-käsk ehk ekraani puhastamine Muu kestakasutus (ilma sisselogimata) - ainult ~/.bashrc (Red Hatil kutsub see omakorda välja /etc/bashrc) PATH vaikimisi otsitavate kataloogide kogum. Muutuja PATH, eri kataloogid eraldatud koolonitega Näide: /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin; /home/sean/bin:/home/sean/cxoffice/bin:/opt/IBMJava2-142/jre/bin/ Enamasti lisatakse kasutaja kodukataloog olemasolevale PATH-ile: export PATH=$HOME/bin:$PATH. Jooksva kataloogi lisamine: export PATH=$PATH: Turvarisk! Võimaldab luua kurja programmi, nimetada see näiteks ls-iks ja käitada prioriteediga päris ls-i ees! aliased - käskude lühikujud. Alias on suurema prioriteediga kui PATH-i käsud! Aliasest möödapääsus tuleb kas anda käsk koos täis-kataloogiteega (bin/rm) või panna ette paosümbol \ (\rm). funktsioonid - üldkuju: function nimi(){ käsud } . Näide: function dircp () { tar -cf - * | ( cd $1 && tar -xf - ) } Parameetrid $1, $2 jne. Kõik parameetrid korraga - $* PS1 - prompti muutmine $ PS1="\h:\w\$ " bob:~/tmp$ h - hostname w - jooksev kataloog $ - dollar (tavaprompt) NB! Makrod algavad \ -ga! PS2 - lisaprompt, mida näidatakse rohkem kui 1-realiste käskude puhul (vaikimisi on see >) uue kasutaja loomise vaikimisi info useradd kasutab vaikimisi /etc/skel väärtusi muudetav failist /etc/default/useradd . Minu Minti läpaka /etc/skel: kakk@aragorn:~$ ls -la /etc/skel/ kokku 32 drwxr-xr-x 4 root root 4096 okt 9 2014 . drwxr-xr-x 177 root root 12288 märts 30 10:54 .. -rw-r--r-- 1 root root 220 märts 30 2013 .bash_logout drwxr-xr-x 5 root root 4096 dets 9 23:25 .config drwxr-xr-x 3 root root 4096 dets 6 14:51 .mozilla -rw-r--r-- 1 root root 675 märts 30 2013 .profile kakk@aragorn:~$ === I18n ja l10n === Tsitaat: ---> Internationalization is the feature that allows a system to display information in different ways. Localization is the process that bundles up all the regional changes for a single location into a locale. <--- Unixi ajatempel - sekundite arv epohhi algusest (01.01.1970) GMT/UTC aja järgi Aega näitab date (kuupäev + kellaaeg) Saab määrata eri vorminguid: $ date +"%Y-%m-%dT%H:%M:%z" 2015-03-08T21:19:-0500 z - Zulu time (ehk GMT lennunduses ja sõjanduses) Ajavööndi sätted asuvad /usr/share/zoneinfo alamkataloogides ja failides (N: /usr/share/zoneinfo/Europe/Tallinn) NB! Binaarid!!! Süsteemi kellaaeg: /etc/localtime - enamasti sümlink vastavale zoneinfo-failile või selle koopia (vt eelmine) Kasutajad saavad seda muuta TZ-keskkonnamuutuja määramisega tzselect - aitab leida ajavööndi tzconfig ja dpkg-reconfigure tzdata (debianlastel) väärtustavad /etc/localtime-i. Lisaks salvestatakse ajavöönd veel failidesse /etc/timezone (debianlased) või /etc/sysconfig/clock (redhatlased) Märgikodeeringud ASCII - 7 bitti laiendatud - 8 bitti, eri koodilehed Üks levinud standard - ISO-8859 ja selle alamstandardid (eesti keelel ISO-8859-15). Unicode, algselt 2 baiti, esimesed 127 väärtust kattuvad ASCIIga. Hiljem 4-baidine (UTF-16) ja varieeruvalt 1-6 baidine (UTF-8) Locale: Keelekood Riigikood Kodeering (kui vaja) Näide: et_EE.utf8 Fallback-lokaat: C ehk POSIX, standardne 8-bitine ASCII kui pole paigaldatud, saab luua locale-gen -käsuga (locale-gen et_EE.utf8) paigaldatud lokaate näitab locale -a i18n - GNU gettext -teek Muutujad: LANGUAGE - ainult printimisel LC_ALL - lokaadi sundimiseks - NB! sõidab teistest üle, kui ka need on määratud muudmoodi! LC_xxx - lokaadi elemendid (näiteks rahaühik LC_MONETARY) LANG - keele põhimuutuja Failide tõlkimine kodeeringute vahel - iconv N: iconv -c -f ASCII -t UTF-8 datafile.txt > datafile.utf8.txt -c - kustutab tundmatud sümbolid -f - from -t - to -l - list, kõik kasutatavad kodeeringud (suur hulk) === Skriptimine === Käivitamine: a) ./skript - eeldab käivitusõigust ja shebang-rida alguses b) sh skript või bash skript - sel juhul tõlgendatakse shebang-i kommentaarina! Kui shebangi pole, üritatakse käivitada vaikimisi kestaga (üldiselt bash)! Hea skriptimise põhimõtted: 1. tee ühte asja korralikult 2. anna selgitusi nii õnnestumise kui ebaõnnestumise puhul 3. selge stiil, piisavalt kommentaare 4. selge ja ühemõtteline nimi 5. laiend näitab, millega seda käitada: kopeeri.sh, arvuta.pl, leiamaksimum.py Asukoht: eraviisilised $HOME/bin, teistega jagatavad /usr/local/bin (või leida turvaline viis anda ligipääs kodukataloogi) NB! SetUID - kernel eirab seda skriptide puhul! Tuleb sudo kasutada Saab kasutada kõiki käsureakäske, toru, suunamisi, backticki... Väärtuse arvutamine: $(()) N: PROCS=$(($PROCS-1)) (ühekordsete puhul on tegu muutujanime asendusega) N: PROCS=$(( `ps -ef | wc -l` - 1 )) bc - minikeel reaalarvude töötlemiseks (bash toetab vaikimisi vaid täisarve!) N: RADIUS=3 echo "3.14 * $RADIUS ^ 2" | bc Tingimuslause: if ps -ef | grep -q [n]agios; then echo Nagios is running fi Märkus: grep -q on vait (ei väljasta tulemusi) - meid huvitab vaid lõppväärtus (0 või mitte)! regulaaravaldis [n]agios aitab välistada "iseenda nägemist" grepi poolt (grep nagios) NB! Enamasti on programmeerimises 0 väär ja 1 tõene. Bashis on sisuliselt vastupidi - 0 tähendab jah/tõene/veatu, 1 ja rohkem vastupidist. Täielik if: if ps -ef | grep -q [n]agios; then echo Nagios is running elseecho Nagios is not running. Starting service nagios start fi else if: if ps -ef | grep -q [h]ttpd; then echo Apache is running elif ps -ef | grep -q [n]ginx; then echo Nginx is running else echo No web servers are running fi faili olemasolu kontroll - test -f if test -f /etc/passwd; then echo "password file exists" fi test on paljude võimalustega! Teine variant - kantsulud loetakse test-iks: if [ -x /usr/bin/nginx ]; then echo nginx is executable fi uuemad bashi versioonid toetavad ka topelt-kantsulgu: if [[ -x /usr/bin/nginx ]]; then echo nginx is executable fi NB! Tühik kantsulgude ees ja järel on oluline! Input: echo -n "Say something: " read STRING if [[ -z $STRING ]]; then echo "You didn't say anything" else echo Thanks for that fi -z - nullstring -n - pole nullstring stringivõrdlus: = ja != Täisarvuvõrdlused: X -eq Y -võrdub X -ne Y - ei võrdu X -gt Y - X > Y X -ge Y - X >= Y X -lt Y - X < Y X -le Y - X <= Y ja/või: ühekordsete kantsulgude puhul -a ja -o kahekordsetel && ja || case: case $1 in start) echo "Starting the process" ;; stop) echo "Stopping the process" ;; *) echo "I need to hear start or stop" esac ;; case-bloki lõpp *) default/else for: for variable in collection; do # Do something on $variable done seq - loeb numbreid: - seq 1 5 1,2,3,4,5 (algus, lõpp - seq 1 2 5 1 3 5 (algus, samm, lõpp) - seq -w 8 10 08 09 10 (-w lisab ette nulli) while: while [[ -f /var/lock/script1 ]] ; do echo waiting sleep 10 until: until [ -f /var/tmp/report.done ]; do # Waiting until the report is done sleep 10 done rm /var/tmp/report.done stdin-ist lugemine: while read LINE; do echo $LINE done $? - töö tulemus (0 või rohkem) $# - argumentide arv $0 - skripti enda nimi shift - argumentide nihutamine ühe võrra ettepoole: $5 saab $4-ks, $4 $3-ks jne exec - asendab kestas jooksva programmi uuega exit - skriptist väljumine ilma veata exit 1 - veaga === SQL === Andmebaaside tüübid: 1. võti-väärtus (sõnastik) - RPM, BerkeleyDB, otsing kiire, täiendamine aeglane (indeksite ringiarvutamine) 2. relatsioonilised (kirje-tabel-baas) - mitu-ühele ja mitu-mitmele suhted. MySQL, Oracle, PostgreSQL 3. schemaless (??) - NoSQL (MongoDB, ElasticSearch, Couchbase). Ei sobi transaktsioonidele, sobivad väga suurtele võrguamdmebaasidele SQL sqlite3 või mysql semikoolon lõpetab kommentaar: -- rea alguses Andmed ja tabelinimed on tõstutundlikud, muu tõstutundetu SELECTi võib kasutada ka printi rollis: SELECT "teretere"; SELECT 1 + 1; Tabeleid on kombeks nimetada ainsuses (raamat ja isik, mitte raamatud ja isikud)! WHERE =, >, <, <> BETWEEN - NB! Kaasa arvatud piirväärtused IN (väärtus1, väärtus2, ..., väärtusN). LIKE: _ - üks märk (nagu ? mujal) % - 0 või enam märki (nagu * mujal) SELECT title FROM book WHERE title LIKE '%Exam Cram 2'; -- kõik, mille pealkiri lõpeb selle tekstiga Järjestamine: SELECT * FROM book ORDER BY written, year; -- võib ka mitu kriteeriumit panna järjest SELECT title from book ORDER by title DESC; -- kahanevalt SELECT title from book ORDER by 2 DESC; -- järjestuse võib määrata ka veerunumbri järgi Piiramine: LIMIT SELECT title, year from book DESC LIMIT 2; -- kaks viimasena ilmunud raamatut SELECT title, year from book DESC LIMIT 2, 2; -- jäta kaks vahele, näita kahte järgmist SELECT title, year from book DESC LIMIT 2 OFFSET 2; -- sama Normaliseerimine - tabelite jagamine eraldi tabeliteks andmete dubleerimise vähendamiseks (lingitakse kokku) Ühendamine: JOIN N: SELECT * FROM author JOIN book ON book.author_id = author.id; Tabelialiased: AS N: SELECT * FROM author AS a JOIN book AS b ON b.author_id = a.id; AS-sõna ei ole kohustuslik - sama on SELECT * FROM author a JOIN book b ON b.author_id = a.id; Sisemine vs vasak vs parem JOIN Sisemine: ühisosa; SELECT * FROM vasak JOIN parem ON vasak.id = parem.id vasak: ühisosa + kogu vasak; SELECT * FROM vasak LEFT JOIN parem ON vasak.id = parem.id parem: ühisosa + kogu parem; SELECT * FROM vasak RIGHT JOIN parem ON vasak.id = parem.id NULL - tühi väärtus; IS NULL, IS NOT NULL Alamvalik (subselect): SELECT title FROM book WHERE author_id IN (SELECT id FROM author WHERE first_name = "Sean"); Enamasti WHERE...IN -konstruktsioonis Grupeerimine: SELECT first_name, last_name, COUNT(title) AS books FROM author LEFT JOIN book ON author_id=author.id GROUP BY first_name, last_name; Veel funktsioone: AVG, MIN, MAX, SUM Lisamine: INSERT INTO book (title, year, author_id) VALUES ('Sketch of the Analytical Engine', 1842, 3); Võtmeväli suureneb automaatselt! Osa väärtusi võib panna NULLiks või jätta lisamata (paneb ise) Uuendamine: UPDATE book SET year=2015 WHERE id=6; Kustutamine: DELETE FROM book WHERE author_id IS NULL; Loomine: CREATE TABLE book (id integer primary key, title varchar(255), year integer, author_id integer, written integer); === Kasutajaliidesed === X tegeleb * baastaseme akendega * riistvaraga suhtlemisega X ei tegele * sisselogimisega (seda teeb DM) * töölauaga (taust, menüüd, tööriistariba - seda teeb töölauasüsteem) * akende detailidega (seda teeb aknahaldur ehk WM) klient-server süsteem - klient võib asuda nii samas kui teises masinas Aknahaldur varustab X-i akna "tooriku" elementidega nagu nupud, päis, menüüd jne Töölauasüsteemis võib olla * failihaldur * juhtpaneel * aknahaldur * meediamängija * ühtne kujundus * erinevad rakendused (K*) /etc/X11/xorg.conf * Files - moodulid, kirjastiilid * Module - glx (sarnane draiverite laadimisele mujal) * InputDevice - klaver ja hiir * Monitor - kuvar (seadmena - mudel ja tüüp) * Screen - kuvasätted Konfi pole alati vaja, osa distrosid tuvastab automaatselt. xorg.conf'i uuesti genereerimiseks: X -configure või Xorg –configure uuemates süsteemides võib kirjastiilide jaoks olla üldasukoht /etc/X11/fontpath.d/, kus on sümlingid edasi Osa süsteeme kasutab kirjastiiliserverit xfs - sel juhul peab olema konfis rida: FontPath "unix/:7100" [või "unix/:-1") X-i seadistus xvidtune - ainult CRT monitoridele, LCD või LED-iga ei tööta õieti. NB! Suudab kineskoobi õhku lasta! xwininfo - akna geomeetriainfo, värvipalett jne. sisselogimishaldurid * XDM - /etc/X11/xdm * KDM - /etc/kde/kdm * GDM - /etc/gdm * LightDM - /etc/lightdm, näidis-konfifaili leiab /usr/share/doc/lightdm alt Võimaldavad ristkasutust - gdm->KDE, lightdm->GNOME jne konsoolid: reeglina Ctrl-Alt-F1 kuni F6 (/dev/ttyX), Ctrl-Alt-F7 on GUI, Red Hatil on F1 GUI ja järgmised tekstikonsoolid tekstikonsoolilt tagasi ka Alt-F7 Ctrl-Alt-Bksp (tänapäeval tihti ei toimi!) === Ligipääsetavus === Sticky (klahvid "jäävad sisse", aitab sisestada kombinatsioone ükshaaval vajutustena) Repeat (klahvikorduse rakendumise aja muutmiseks) Slow (klahvi reaktsiooniaja muutmiseks) Bounce (väldib topeltvajutusi) Toggle (annab märku juhtklahvide vajutamisest) Mouse (numpad) kontrastsed teemad (High Contrast) Ekraanilugejad: Orca, emacspeak, espeak, festival Luup: KMagnifier virtuaalklaviatuur: GOK === Kaugligipääs === xhost Ligipääsu lisamine xhost +host1 host2 Seejärel võivad lubatud masinad tulla telneti või ssh-ga külge ja käivitada kliendi Võimalik, et klient peab andma lisaks käsu: setenv HOST "server1:0.0" xhost + lubab kõiki ligi - turvarisk! Ligipääsu keelamine: xhost -host3 host4 ssh-ga ühendumise võtmed: -Y (ilma turvakontrollita) ja -X (arvestab X-i turvaseadeid) === Kasutajahaldus === UID ja GID, omavahel seostab /etc/passwd UID 0 - root UID 1 - bin (mõne süsteemse tegevuse juures) UID 48 - apache UID 99 - nobody (kasutaja on olemas, kuid ei saa sisse logida) Tavakasutajad tüüpiliselt 500 ja edasi Soovitus: kohalikud kasutajad 500-9999, võrgukasutajad 10000 ja edasi Üle 100 kasutaja korral tasub LDAPi kasutada /etc/passwd: ross:x:500:100:Ross Brunson:/home/ross:/bin/bash kasutaja vanasti parool, nüüd näitab /etc/shadow kasutamist UID primaarne GID kirjeldus - tänapäeval enamasti nimi, vanasti oli rohkem infot (vrdl. finger) kodukataloog kest kest /bin/false - ei saa sisse logida kest /etc/nologin - sama, aga annab teate ja veakoodi; kui leidub /etc/nologin.txt, kuvatakse see teatena peale sisselogimist kuvatakse /etc/motd sisu .hushlogin-fail kodukataloogis - ei tee tavapäraseid sisselogimistegevusi (meilikontroll, lastlogin, MOTD) /etc/login.defs - vaikimisi sätted kasutaja loomisel useradd-iga (UID vahemik, paroolipiirangud...) /etc/securetty - määrab, kust root võib sisse logida. Kui puudub, võib kõikjalt /etc/usertty - slsselogimispiirangud (ainult siis, kui ei kasutata PAM-i) Grupid - ei saa asuda üksteise sees. a) primaarne - kirjas /etc/passwd-is, ei pea olema /etc/group-is b) sekundaarne - kirjas /etc/group-is, määrab täiendavad ligipääsuõigused 0 - root (ligipääs kõigele, millele root-kasutaja ligi saab) 1 - bin (sarnane bin-kasutajaga) 100 - tavakasutajate täiendav ligipääs objektidele BSD-s on grupp wheel, mille liikmed saavad ainsatena anda su-käsku Red Hat jm kasutavad UPG-d (user private group) - kasutajale tehakse samanimeline grupp Debian paneb vaikimisi tavakasutajad gruppi users (GID 100) /etc/group: users:x:100:ross,snuffy grupp, shadow, GID, liikmed (komadega eraldatud) chgrp newgrp - ajutine uus kest teise grupiga (saavad vahetada gruppi, mille sekundaarliikmed nad on) gpasswd - grupi ühisparool, sel juhul küsib newgrp ka seda useradd nimi * loob uue kasutaja järgmise vaba UID-ga (tüüpiliselt üle 500) * loob samanimelise grupi (GID=UID) ja määrab selle kasutaja primaargrupiks * loob kodukataloogi (reeglina samanimelise) * kopeerib /etc/skel uude kodukataloogi ja annab kasutajale sinna õigused Debian loob vaikimisi kasutaja esimese vaba UID-ga, grupiks paneb users (100) ja kodukataloogi ei tee - kodukataloog tuleb luua useradd -m -d -ga, skel-i lisamiseks -k /etc/skel ja uue primaargrupi jaoks -g. Red Hat paneb kestaks vaikimisi /bin/bash, Debian jätab tühjaks ja eeldatakse /bin/sh (see on aga bashi sümlink) useradd -d - määrab kodukataloogi -D - kuvab vaikimisi sätted failist /etc/default/useradd -e - lisab konto aegumistähtaja -f - päevade arv, mille järel saab veel aegunud parooliga sisse -g - primaargrupp -G - sekundaargrupp -k - skeletifailid -m - loob kodukataloogi, kui seda pole -o - lubab dubleerida UID-i (MITTESOOVITAV) -s - kesta asukoht täisteena Red Hat lubab useradd -D -ga ka sätteid muuta. Näiteks kest: useradd -D -s /bin/bash groupadd usermod -c - muudab kirjelduse/nime välja -d - muudab kodukataloogi -e - muudab aegumistähtaega -f - muudab parooliaegumissätteid (kui kaua veel sisse saab) -g - muudab primaargruppi (nime või GID järgi) -G - muudab sekundaargruppi -s - muudab kesta -u - muudab UID-i (ohtlik) -L - lukustab konto (kirjutab /etc/shadow krüpteeritud paroolile hüüumärgi ette) . Sama teeb passwd -l -U - võtab lukust lahti (hüüumärk maha). Sama teeb passwd -u groupmod - peamiselt nime ja GID-i muutmiseks Linux võimaldab kustutada kasutaja (ilma kodukataloogi kustutamata), luua hiljem uue samanimelise ja võtta kodukataloog jälle kasutusse! userdel - kustutab ainult kasutaja userdel -r - kustutab kodukataloogi ja meilifaili, ei kustuta aga kasutaja faile mujal süsteemis Kasutaja jõhker väljaviskamine: leia ps-iga login shell, usermod -L, kill -9 shell_PID, userdel -r kasutaja groupdel - enne kustutamist tuleks otsida find-iga kõik sinna kuuluvad failid ja omistada ringi /etc/shadow * kasutaja * krüpteeritud parool * viimati muudetud (Unix days) * järgmine lubatud muutmine päevades (0 lubab kohe) * järgmine kohustuslik muuutmine (99999 sisuliselt lülitab välja - 273 aastat) * mitu päeva enne kohustuslikku hoiatatakse * mitu päeva peale kohustusliku saab veel sisse * aegumiskuupäev (Unix days) Eraldajad on koolonid Mõni väli võib olla tühi (::), väljadega on võimalik tekitada vastuolu ja paras jama Failiõigused: * /etc/passwd - Red Hat ja Debian 644 * /etc/shadow - Red Hat 400, Debian 640 passwd - enda parool passwd kasutaja - teise parool chage chage -option value username - mõjutab /etc/shadow -faili Valikud (EI KÜSITA) -m miinimum (lubatud) -M maksimum (kohustuslik) -d lastchange -E aegumine -I armuaeg -W hoiatus chage kasutaja - küsib ise interaktiivselt chage -l endakasutaja - info enda kohta passwd -d - eemaldab parooli ja lukustab konto -m - miinimum -x - maksimum -w - hoiatus -i - armuaeg -S - info (N: kakk P 12/24/2013 0 99999 7 -1) ulimit - kasutaja piirangud -c - core dump failid -d - protsessiandmete maht -f - kestas loodud failide suurus -n - avatud failide arv -t - protsessoriaeg -u - protsesside arv -v - virtuaalmälu maht ulimit -a näitab kõike pannakse kas kasutaja .bashrc-sse või .profile-sse, või samadesse süsteemifailidesse /etc all /ETC/SHADOW VÄLJADE JÄRJEKORD PEAB PEAS OLEMA! kui ls -l näitab kasutajanime asemel UID-i, siis on kasutaja kustutatud! uute failide loomisel ei võeta vanu UID-sid kasutusele (loodi 501-510, siis kustutati 501 ja 504, viimaks loodi veel üks - see saab 511) === Töödehaldus === cron crond crontab Vaatamine: crontab -l muutmine: crontab -e Üldine rida: minutid tunnid kuupäev kuu nädalapäev täidetav_käsk Redigeerimiseks kasutatav redaktor sõltub EDITOR-süsteemimuutujast - .bash_profile-s export EDITOR=/bin/nano. Vaikimisi on vi Teiste crontabi saab vaadata ja muuta vaid root: crontab -l (või -e) -u kasutaja Tunnid on 24-sed, nädalapäev 0-7, 0 ja 7 on pühapäev Kõik positsioonid tuleb täita, tühja asemel on tärn (*). N: 30 5 * * 1 - iga esmaspäev kell 5.30 Üldiselt peavad kõik tingimused olema täidetud - erandiks on olukord, kui täidetud on nii kuupäev kui nädalapäev, sel juhul emb-kumb. N: 30 5 3 * 1 - iga kuu 3. päeval JA igal esmaspäeval kell 5.30 Kuu ja nädalapäeva võib anda nii numbrina kui kolmetähelise lühendina - jan,feb,mar ning sun,mon,tue Klassikaline variant ei luba sündmuse kordamist. Kui seda on vaja, siis a) kirjutada komadega eraldatult mitu väärtust: 0 15 25 apr,sep,dec * igal 25. aprillil, septembril ja detsembril b) anda vahemik: 0 15 * * mon-fri - igal tööpäeval kell 15.00 Perioodiliselt - võib lugeda kõik ajad komadega ette, aga lihtsam on kaldkriipsuga: 0 */2 * * * iga kahe tunni takka 0 1-23/2 * * * paaritud tunnid Käivitatav võib olla mistahes programm või ka kohalik skriptijupp: 0 0 * * * if [[ ! -f /var/lock/maintenance ]]; then /usr/local/bin/backup.sh; fi käivitab backupi, kui maintenance-faili pole olemas NB! cron ei arvesta .bashrc-d ega teisi, seetõttu seal defineeritud kataloogiteed ei kehti! crontabis võib määrata omaenda keskkonnamuutujad (nagu mujal skriptides): PATH - kataloogitee MAILTO - kõik ekraanile minev saadtakse ka sellele e-postiaadressile jpt Mõned "jutukad" tööd võib saata kommentaaridega pikalt: 25 * * * * /usr/bin/php /home/sean/fof/update-quiet.php > /dev/null 2>&1 Paljudes distrodes saab kasutada aliasi: @reboot - peale iga taaskäivitust @yearly - iga aasta 1. jaanuari keskööl @annually - sama mis @yearly @monthly - iga kuu esimesel keskööl @weekly - iga pühapäeva keskööl @daily - igal keskööl @hourly - igal täistunnil N: 0 0 * * * /usr/local/bin/backup.sh on sama kui @daily /usr/local/bin/backup.sh crontab-iga redigeeritud failid asuvad füüsiliselt /var/spool/cron-is (root only). Saab redigeerida ka muuga, soovitav on aga läbi crontabi Lisaks kasutajate crontab-ile on ka süsteemi oma: sätted /etc/crontab ja /etc/cron.d/ Erinevus - kuues veerg nädalapäeva ja käsu vahel - kasutaja, kellena käsk täidetakse Veel üks lihtne variant: paigutada käitatav skript vastavasse kataloogi: /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly N: cron.daily all on apache2, apt, dpkg, locate, spamassassin... On ka valge ja must nimekiri: /etc/cron.allow ja /etc/cron.deny kasutajanimedega (root on erand ja ei kuulu süsteemi). Vrdl host.allow/host.deny Anacron - harvemate ja mitte väga täpsete tööde jaoks (max täpsus 1 päev) /etc/anacrontab. Kõik root-kasutajana Mintil: SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin HOME=/root LOGNAME=root # These replace cron's entries 1 5 cron.daily run-parts --report /etc/cron.daily 7 10 cron.weekly run-parts --report /etc/cron.weekly @monthly 15 cron.monthly run-parts --report /etc/cron.monthly ühekordsete tööde jaoks: at - nii interaktiivne kui skriptina: midnight - kesköö noon - keskpäev teatime - kell 16 pärast lõunat kellaaeg - 5:00 a.m. kuupäev/kellaaeg - 2pm jul 23, 4am 121504. now + kellaaeg - mingi aja pärast: now + 30 minutes atq või at -l - ootel tööde loend atrm või at -d - töö kustutamine numbri järgi /etc/at.allow ja /etc/at.deny batch - sarnaneb eelmisega, kuid ei käivita tööd kella järgi, vaid kui süsteemi koormus langeb piisavalt madalale atrun -l 1.6 (käivitub, kui töökoormus langeb alla 1.6 - vt w-käsuga) === Printimine === cupsenable spooler - trükijärjekorra haldur; /var/spool/cups Algne Unixi daemon: lpr (BSD oma; SysV-l oli lp) LPRng IPP - HTTP-põhine võrguprintimisprotokoll CUPS - kasutab IPP-d, LPR tõlgitakse IPP-ks - /etc/cups pildid jäetakse rastergraafikaks, muud failid tõlgitaks PostScripti draiveriprojektid Foomatic ja Gutenprint CUPS haldusliides: http://localhost:631 PPD-fail - Postscript Printer Definition, printeri tuvastamiseks testimiseks võltsprinteri loomine: lpadmin –p FakePrinter –E –v /dev/null –m raw lp ja lpr mõlemad töötavad käsurealt suunamine mujale kui vaikimisi printer: lp -d Hewlett-Packard_HP_LaserJet_Pro_MFP_M127fn või lpr -P Hewlett-Packard_HP_LaserJet_Pro_MFP_M127fn kaks koopiat: lp -n 2 või lpr -#2 lpstat -a - trükijärjekorra listing veel: lpstat -d—Displays the name of the default printer lpstat -r—Indicates whether CUPS is running lpstat -s—Provides a status summary of how the system is configured lpstat -t—Provides a more detailed summary of how the system is configured lpq - trükijärjekorra päring (staatus ja tööd) lprm töönumber - töö kustutamine (võib ka cancel töönumber) Mujalt kui vaikimisi printerist kustutamine: cancel Hewlett-Packard_HP_LaserJet_Pro_MFP_M127fn-9 (printerinimi-töönumber) cupsreject ja cupsaccept - järjekorra välja-sisse lülitamine cupsdisable ja cupsenable - printeri välja-sisse lülitamine (võimaldab koguda töid endiselt trükijärjekorda) cupsctl /etc/cups (tsitaat): ---> classes.conf - Contains the classes, which can also be created in the web interface. A class is a group of printers, and printing to a class queues the job to the first available printer. cupsd.conf - The main configuration file, which can also be edited in the web interface. This contains default settings such as timeouts, rules about what can be done by different people, and logging settings. cupsd.conf.default - A default configuration file that you can use if you really break your production cupsd.conf. Editing the configuration file on the Web also gives you an option to revert to the default file. printers.conf - Configuration for each printer that you configured on the system. ppd - A directory containing the PPD files for each configured printer. <--- === E-post === MUA (Mail User Agent) - sisuliselt klienttarkvara (T-bird, Evolution) MTA (Mail Transfer Agent) - Postfix, Qmail, Exim, Sendmail. NB! Sendmail ja Qmail on monoliidid, Postfix ja Exim komponentidega (vrdl kernel) MDA (Mail Delivery Agent) - võtab vastu ja viskab kasutaja postkasti SMTP POP IMAP DNS päring MX (mail exchange) kirje saamiseks /etc/aliases ja newaliases alias võib olla ka mõne teise serveri meiliaadress või ka kohalik fail ~/.forward kui tahta jätta nii kohalikku kui saata edasi, tuleb kurakaldkriips panna: \isaac i.smith@example.com mailq - MTA järjekord; /var/spool/mqueue /var/log/maillog === Logimine === Kaks kella - riistvara (reaalajakell) - tarkvara (süsteemikell, juhib kernel) Võivad aeg-ajalt erineda date - kuupäev ja kellaaeg: P apr 3 11:19:15 EEST 2016 (kasutab lokaati!), Wed Apr 15 14:36:05 CDT 2015 -u - näitab UTC-d +%s - näitab Unixi aega saab ka muuta: üldkuju date [MMDDhhmm[[CC]YY][.ss]] (mida ei sisestata, jäetakse muutmata) date +formaat - saab väljastada eri komponente - NB! siin M on minut ja m kuu! A on nädalapäev Saab kasutada failinimede koostamisel: $ date +/var/backup/website.%Y%m%d%H%M%S /var/backup/website.20150418112516 Saab ka lisada teksti: kakk@aragorn:~$ date +"Täna on %A" Täna on pühapäev hwclock - adminikäsk riistvarakella jaoks. Sarnaneb date-iga, aga annab ka sekundid /etc/adjtime näitab, kas riistvarakell on seatud kohaliku või UTC aja järgi - seal on kas LOCAL või UTC Kui fail puudub või näitab nulle, on süsteem UTC peal ja hwclock ning hwclock -u näitavad sama aega Sünkimine: - hwclock -w või --systohc - riistvarakell häälestatakse süsteemi järgi - hwclock -s või --hctosys - süsteemikell häälestatakse riistvara järgi NTP 1 ringi kellad GPS järgi (reference clock), reeglina kasutatakse süsteemide häälestamiseks 3. või 4. ringi kelli NTP-ga sünkimine (admin): ntpdate kellaserver pool.ntp.org - üldkasutatavad ajaserverid Aliased 0.pool.ntp.org - 3.pool.ntp.org viitavad vabatahtlike käitatavatele kellaserveritele ntpd - hoiab perioodiliselt sünkroonis (ntpdate on ühekordne). /etc/ntp.conf (Mintil pole, Ubuntu serveril ka mitte!) Sätib riistvarakella iga 11 minuti järel ntpq - interaktiivne päringukäsk - peers - näitab ühendatud kellaservereid - associations - näitab nende ühendust Logimine - tänapäeval kaks kõrvuti asja - syslog ja SystemD journal Syslogi logimine: - rakendusest - käsurealt logger-käsuga - üle võrgu, ühendudes logiserveriga Logimistasemed (NEID KÜSITAKSE!): 0 - emerg 1 - alert 2 - crit 3 - err 4 - warn/ing 5 - notice 6 - info 7 - debug Tüübid: - kern - user - mail - daemon - auth - syslog - lpr - cron - authpriv - local0-7 mailiteated alates info tasemest /var/log/maillog, kõik muu /var/log/messages logger - aitab panna logisse vahepealkirju näiteks enne skripti testimist -i lisab ka protsessiinfo -p võimaldab logida etteantud tasemel ja tüübiga. N: logger -i -p mail.info Proovime meili ksyslogd- või sysklogd-pakk - syslogd + klogd (viimast eriti ei konfita) /etc/syslog.conf (mul ei ole!) # This is a comment authpriv.* *.info;mail.none;authpriv.none;cron.none mail.* /var/log/maillog cron.* *.emerg local7.* local4.* Üldised logid:N /var/log/messages /var/log/secure /var/log/maillog /var/log/cron /var/log/xferlog - FTP Lisaks on veel olema rsyslogd (kiire ja laiendatav) ja syslog-ng (uuem variant) SystemD journal Systemd logifailid /var/log/journal journalctl -e logi lõppu -r pööratud järjestus -f (follow) - jälgimine -o valikud - valikud, ntx -o verbose -u teenus - teenuse järgi? Mingi teenuse logid: journalctl /usr/sbin/sshd /etc/systemd/journald.conf Rotatsioon logrotate, /etc/logrotate.conf ja /etc/logrotate.d weekly - kord nädalas rotate 4 - neli rotatsiooni enne kustutamist (säilitab 4 nädala logid) missingok - ei anna viga, kui logi puudub notifempty - kui logi on tühi, ei roteerita sharedscripts - käivitab skriptid kõigile valitud failidele delaycompress - ei paki logi enne roteerimist postrotate - käivitab peale roteerimist vastavad käsud Käivitatakse cronist või anacronist igapäevaselt === Võrk === subnet - loogiline grupp (sarnased aadressid) segment - füüsiline grupp (sarnane asukoht, sama kaabel või kommutaatot) IP - staatiline või dünaamiline mask - loogilise grupi (alamvõrgu) piire märkiv kombinatsioon lüüs - alamvõrgu värav (marsruuter) IPv4 - 4 oktetti okteti positsioonid sees või väljas, seesolevad summeeruvad 128 64 32 16 8 4 2 1 Võrgu aadressiklassid: A - 1 kuni 126, seega max 126 võrku, üle 16M aadressi B - 128 kuni 191, max 16 382 võrku, igas 65 536 aadressi C - 192 kuni 223, max üle 2M võrgu, igas 254 aadressi D - 224 kuni 239, reserveeritud multicastile E - 240 kuni 254, reserveeritud tulevikuks 127 - loopback A - okteti 1. bitt alati 0 B - okteti kaks esimest bitti alati 10 C - okteti kaks esimest bitti alati 11 IP koosneb võrgu- ja hostiosast A - mask 255.0.0.0 ehk /8 - hostiosa kolm viimast oktetti B - mask 255.255.0.0 ehk /16 - hostiosa kaks viimast oktetti C - mask 255.255.255.0 ehk /24 - hostiosa viimane oktett Protokollid IP - adresseerimine ja kommunikatsioon seadmete vahel TCP - paketitransport - kindlam kui UDP oma veakontrollisüsteemi tõttu UDP - sama, kuid ei kontrolli vigu, ühenduse infot paketiga kaasa ei panda ICMP - veateadete ja päringute (ping) saatmiseks Pordid üldnimekiri: /etc/services Põhipordid 0-1023, tcp ja udp Reserveeritud pordid 1024-49151 Dünaamilised ehk privaatpordid 49152-65535 20 & 21—FTP 22—SSH 23—Telnet 25—SMTP 53—DNS 80—HTTP 110—POP3 123—NTP 139—NETBIOS 143—IMAP 161 and 162—SNMP 389—LDAP 443—HTTPS 465—SMTPS 514—SYSLOG 636—LDAPS 993—IMAPS 995—POP3S IPv6 alates 90-ndate keskelt, aga 2015. aastaks kasutas seda ikka vaid 7% võrkudest 8 neljakohalist 16-ndnumbrit, koolonid vahel NAT on aeglustanud v6 levikut, võimaldades alamvõrkudes privaataadresse dubleerida Väljapakutud eelised: - ruutimine olevat parem kui v4-s - turvalisus sisse ehitatud - automaatkonfimine (jama staatilise vs dünaamilisega jääb ära) - paremad paketipäised lo (loopback) ifconfig - ether/HWaddr - MAC - inet - IP - broadcast - netmask uuem käsk sama asja vaatamiseks on ip - vähem ülevaatlik, aga rohkem võimalusi Võrguliidesed Red Hatis utiliit system-config-network, konf /etc/sysconfig/network-scripts, näiteks /etc/sysconfig/network-scripts/ifcfg-eth0 RH konfinäide: DEVICE=eth0 ONBOOT=yes BOOTPROTO=static # DHCP puhul on siin dhcp IPADDR=192.168.1.73 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 taaskäivitus: service network restart Võrguliidesed Debianis utiliit system-config-networking või netcardconfig, konf /etc/network/interfaces Debiani konfinäide: # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # The loopback interface # automatically added when upgrading auto lo eth0 iface lo inet loopback iface eth0 inet static # või dhcp address 192.168.15.5 netmask 255.255.255.0 network 192.168.15.0 broadcast 192.168.15.255 gateway 192.168.15.2 taaskäivitus: /etc/init.d/networking restart Lüüsi näitab route või netstat -r (sama pilt!) Lüüsi lisamine käsitsi: route add default gw 10.0.0.1 - PEAB TEADMA! /etc/nsswitch.conf - kust otsitakse nime ja mis järjekorras - files - kohalik fail - dns - nimeserver - nis - kohtvõrgust N: hosts: files dns networks: files /etc/hosts - mis IP-d on selles masinas konfitud ja mis nimele vastavad 127.0.0.1 localhost.localdomain localhost /etc/resolv.conf - nimeserverid nameserver 194.126.101.34 nameserver 194.126.115.18 Tavaline järjekord - nsswitch, hosts, resolv /etc/hostname - täielik hostinimi Utiliidid: - ifconfig - IP ja mask - ifup ja ifdown - ip - peaks tulevikus asendama pea kõiki teisi siinseid - route - ruuting ja lüüs - dhcpcd, dhclient ja pump - DHCP klienttarkvara - host, nslookup, dig - nimeserveriga suhtlemine - hostname - netstat - erinev võrguinfo - ping - traceroute - tcpdump - paketisalvestus ifconfig kasutamine seadmiseks: ifconfig eth0 192.168.33.2 netmask 255.255.255.0 up ifconfig -a näitab ka neid liideseid, mis ei tööta DOS-ründe tõrjumine route-iga - route add 10.1.1.69 lo - suunab pahalase liikluse loopbacki, pahalane näeb timeouti dhcpcd /sbin/dhcpcd, client daemon dhcpcd -k - pehme restart (SIGHUP) dhclient ja pump - DHCP-aadressi saamiseks getent: kakk@aragorn:~$ getent hosts 127.0.0.1 localhost 127.0.1.1 aragorn 127.0.0.1 ip6-localhost ip6-loopback kakk@aragorn:~$ getent hosts kakupesa.net 80.235.40.79 kakupesa.net kakk@aragorn:~$ netstat (tsitaat): ---> -t—Shows TCP statistics -r—Shows the routing table -a—Shows all the sockets on all functioning interfaces -c—Shows a refreshing (every 1 second) view of statistics for usage -p—Shows the name and PID of the program related to each socket (very useful!) <--- -s - statistika ping6 - ping IPv6 jaoks traceroute6 === Turvalisus === su - või -l - avab uue kesta (kui kasutajat ei määrata, eeldatakse root-i) Susel on sux-käsk - graafiline su sudo, /etc/sudoers ja /etc/sudoers.d/ , visudo redigeerib sudoers-i (täiendav veakontroll võrreldes tavaredaktoriga) sudoers täisõigused: kasutajanimi ALL=(ALL) ALL Käitatavad teenused - alati töötavad - nõudmisel - välja lülitatud (ISDN või modem) Nõudmisel teenused - inetd, xinetd /etc/inetd.conf, /etc/xinetd.conf => /etc/xinetd.d/ teenuste näited: finger, imap, *talk, rlogin, telnet TCP wrappers: hosts.allow, hosts.deny ALL service daemon, daemon except on ka lubatud SUID, SGID - omaniku/omanikugrupi õigustes Sticky - ei luba mitteomanikel kataloogist faile kustutada Eribittide otsimine find-iga: find / -user root -perm +7000 GPG gpg --gen-key gpg --list-keys uue võtmepaari loomine: ssh-keygen -b 1024 -t rsa ssh sshd scp ssh-agent - programm, mis annab võtmetega ligipääsu (ilma paroolita) ssh-add /etc/ssh/ssh_knowh_hosts ja ~/.ssh/known_hosts scp -r root@remote1:/data root@remote2:/data KOGU LUGU!