LPIC-1 - Kaku konspekt 2016, 2. osa: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
No edit summary
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
JÄTKUU....
JÄTKUU....


[[LPIC-1 - Kaku konspekt 2016, 1. osa]]
[[LPIC-1 - Kaku konspekt 2016 1. osa]]
 
<nowiki>


=== Käsukestad ===
=== Käsukestad ===
Line 290: Line 288:
uuemad bashi versioonid toetavad ka topelt-kantsulgu:
uuemad bashi versioonid toetavad ka topelt-kantsulgu:


if [[ -x /usr/bin/nginx ]]; then
if <nowiki> [[ -x /usr/bin/nginx ]]; </nowiki> then
echo nginx is executable
echo nginx is executable
fi
fi
Line 298: Line 296:


Input:
Input:
 
<code>
echo -n "Say something: "
echo -n "Say something: "
read STRING
read STRING
if [[ -z $STRING ]]; then
<nowiki>if [[ -z $STRING ]]; then</nowiki>
echo "You didn't say anything"
echo "You didn't say anything"
else
else
echo Thanks for that
echo Thanks for that
fi
fi
 
</code>
-z - nullstring
-z - nullstring
-n - pole nullstring
-n - pole nullstring
Line 358: Line 356:
while:
while:


while [[ -f /var/lock/script1 ]] ; do
while <nowiki>[[ -f /var/lock/script1 ]] ;</nowiki> do
echo waiting
echo waiting
sleep 10
sleep 10
Line 388: Line 386:
exit - skriptist väljumine ilma veata
exit - skriptist väljumine ilma veata
exit 1 - veaga
exit 1 - veaga


=== SQL ===
=== SQL ===
Line 785: Line 781:
Käivitatav võib olla mistahes programm või ka kohalik skriptijupp:
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
0 0 * * * if <nowiki> [[ ! -f /var/lock/maintenance ]];</nowiki> 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!
NB! cron ei arvesta .bashrc-d ega teisi, seetõttu seal defineeritud kataloogiteed ei kehti!
Line 860: Line 856:


atrun -l 1.6 (käivitub, kui töökoormus langeb alla 1.6 - vt w-käsuga)
atrun -l 1.6 (käivitub, kui töökoormus langeb alla 1.6 - vt w-käsuga)


=== Printimine ===
=== Printimine ===
Line 1,349: Line 1,344:


scp -r root@remote1:/data root@remote2:/data
scp -r root@remote1:/data root@remote2:/data


KOGU LUGU!
KOGU LUGU!
</nowiki>
[[Category:LPI]]
[[Category:LPI]]
[[Category:Linux]]
[[Category:Linux]]

Latest revision as of 13:41, 26 April 2016

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

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

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

  1. 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!)

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

  1. /etc/network/interfaces -- configuration file for

ifup(8), ifdown(8)

  1. The loopback interface
  2. 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!