Praktikum 15 - Teenused ja optimeerimine
Enne tänase praktikumi juurde asumist lahendage kindlasti ära Praktikum 14.
Viimases praktikumis puudutame teemat, kuidas oma arvutit (operatsioonisüsteemi) optimeerida ja teha ka turvalisemaks. Operatsioonisüsteemid kipuvad sisaldama palju tarkvara, mida reaalsuses ei vajata, ja jooksvaid teenuseid, mille järgi puudub vajadus (võivad olla isegi turvanõrkusteks). Kahjuks pole enam Windowsi operatsioonisüsteemi installeerides valikuvõimalust paigaldatavate komponentide kohta (nt Windows 9x puhul oli). Samamoodi on kahjuks mitmetes Linuxi distributsioonides detailsemaid paigaldusvõimalusi kärbitud või kaotatud (sh Ubuntu's). Näiteks Arch Linux pakub veel detailsemat paigalduskogemust.
Käesolevat praktikumi soovitame lahendada Praktikumis 14 loodud Azure pilvemasinas (Windows 10), kus Linuxi osa saab teha WSL funktsionaalsust (käsurida) kasutades.
Käsitleme teemasid alguses Linux keskkonna kohta ja seejärel Windows keskkonnas. Soovi korral võite käesolevat praktikumi alustada Windowsi osaga.
Linux
Keskkonnamuutujad on tekstilised väärtused, mis võimaldavad lihtsasti kohandada programmide jaoks keskkonda, see tähendab, et mingi fikseeritud nimetuse taga on vastavalt kontekstile (nt operatsioonisüsteemi versiooni/distributsiooni või kasutaja) vastav väärtus.
Keskkonnamuutujad
Linuxis on näiteks järgmised keskkonnamuutujad:
- $HOME: Kasutaja kodukataloog (näiteks "/home/erkki").
- $PATH: Kui käivitate näiteks programmi "ls" (tahate näha jooksva kausta sisu), siis otsitakse "ls" nimelist programmi siin keskkonnamuutujas defineeritud kaustadest (kaustade järjekord nimekirjas on oluline). Kui on vaja kiiresti leida käivitatava programmi asukoht, siis selleks kasutatav käsk nt "ls" programmi kohta:
which ls
(saame ka ise käsitsi kõik kaustad läbi käia, aga which teeb selle töö meie eest ära). - $SHELL: Milline käsurea intepretaator on vaikimisi kasutusel (nt "bash").
- $USER: Sisse loginud kasutaja kasutajanimi (näiteks "erkki")
Keskkonnamuutuja väärtust on võimalik näha näiteks käsuga echo $USER
. NB! tõstutundlikkus on siinkohal oluline. Vaata järgi kõigi ülaltoodud keskkonnamuutujate väärtused. Keskkonnamuutujaid saab lihtsalt kasutada, kirjutades keskkonnamuutuja oma käsu sisse. Näiteks andke käsk cd /etc
. Anna käsk pwd
, millega näed, et oled kaustas "/etc". Nüüd anna käsk cd $HOME
ja vaata uuesti kus oled.
Samamoodi võid anda käsu mkdir $USER
. Vaata, kas jooksvasse kausta tekkis kasutajanimeline kaust. Samuti saad kombineerida keskkonnamuutujaid, nt kui soovite luua kausta kasutaja kodukataloogi, mille nime alguses on "TMP" ja lõpus "OK" ja nende vahel kasutaja kasutatav keel: mkdir "$HOME/TMP${LANGUAGE}OK"
(antud juhul on vaja lisada loogelised sulud, et eraldada keskkonnamuutuja nimi muust sisust, muidu käsu intepretaator hakkaks otsima keskkonnamuutujat "LANGUAGEOK", mida eeldatavasti ei eksisteeri ja tulemuseks oleks tühisõne).
Kõikide keskkonnamuutujate nägemiseks anna käsk env
.
Linuxi keskkonnamuutujad saab jagada ajutisteks (eksisteerivad ainult antud seansi ajal, seansi sulgedes kaovad keskkonnamuutujad (nt avate terminaliakna või logite masinasse sisse üle SSH)) ja püsivad keskkonnamuutujad. Ajutise keskkonnamuutuja $ENV_ABIKAUST saab defineerida käsuga export ENV_ABIKAUST="$HOME/projekt/abi/"
(saame kasutada ka olemasolevaid keskkonnamuutujaid). Kui akna sulgeme, siis kaovad need ajutised keskkonnamuutujad. Suuremat skripti tehes on hea kasutada keskkonnamuutujaid, kuna saate ühe korra leida vajalikud väärtused (mis võivad sisaldada kohati palju erinevaid tingimusi, mida korduvalt teha oleks tülikas ning ebapraktiline) ja seejärel sobilikus kohas korduvalt rakendada. Üle defineerida saab ka olemasolevaid keskkonnamuutujaid, nt: export PATH="$PATH:/tmp/abi/tegevus/"
(lisab olemasolevale $PATH keskkonnamuutujale juurde lõppu ":/tmp/abi/tegevus/". Keskkonnamuutujate ajutiseks kaotamiseks käsk, näiteks keskkonnamuutuja "SSH_AUTH_SOCK" eemaldamiseks: unset SSH_AUTH_SOCK
.
Püsivate keskkonnamuutujate jaoks on vaja muuta Linuxi seadistusi, kasutajaspetsiifiliste jaoks Bash intepretaatorit, kasutades faili "$HOME/.bashrc" (muude intepretaatoritega seadistusfail erinev). Need muudatused on kasutajaspetiifilised. Süntaks on sama, mis ülal. Muudatuste rakendamiseks anna käsk source ~/.bashrc
(mis käivitab skriptifaili). Kui uue terminali akna avame, siis selle skriptiga seadistatakse terminali keskkond, sh keskkonnamuutujad. Süsteemiüleste keskkonnamuutujate (kasutajateüleste) muutmiseks on vajalik muuta faili /etc/environment
.
Pikkasid käskusid (sh parameetritega) võib olla tülikas sisestada ja ajaloos võivad need olla ka üpris taha vajunud, kuid neid võib siiski olla mingi aeg vaja kasutada. Linuxis on heaks abimeheks säärastes olukordades käskude aliased. Näiteks tahame kiiresti käsureal näha, mis päev täna on ja täpne kellaaeg. Selleks saame kasutada käsku date +"%d.%m.%Y %H:%M:%S"
, aga seda käsku iga kord käsitsi sisestada võib olla tülikas. Seetõttu võime teha sellele käsule lihtsalt aliase "aeg": alias aeg='date +"%d.%m.%Y %H:%M:%S"'
. Nüüd, kui anname käsu aeg
, siis näeme, mis aeg hetkel on täpselt sellisel kujul, nagu eelnevalt seadistasime. Defineeritud aliasete nägemiseks saame anda käsu alias
. Nagu näeme, peaks siin olema ka käsk ll
, mis on alias käsule ls -alF
, mida kasutades saame kiiremini väga tihti vaja minevat käsku koos parameetritega sisestada.
Defineerime nüüd veel vähemalt 2 aliast, mis annaks meile kiiresti vajaliku info, ilma lipukesi ja töötlusi seadistamata:
alias inf_cpu="ps auxf | sort -nr -k 3 | head -10"
alias inf_memory='free -m -l -t'
Nüüd trüki käsurealt "inf_" ja vajuta 2 korda tabulaatorit. Peaksite saama nimekirja värskelt defineeritud aliastest. Saate siia aliaseid sama prefiksiga juurde lisada, mis vähendab võimalust mingi olulise käsu unustamiseks (vaja meeles pidada ainult prefiksit).
daemonid/teenused ja paigaldatud tarkvara
Olulise osa operatsioonisüsteemidest moodustavad erinevad daemonid/teenused (Linuxi all nimetatakse "daemon" ja Windowsi all "service"). Edaspidi nimetame neid lihtsuse huvides mõlemal juhul üldnimetusega "teenus".
Teenused on programmid, mis töötavad taustaprotsessina, millel puudub visuaalne liidestus ehk pole kasutajaga otse suhtlemist. Teenused käivituvad üldjuhul operatsioonisüsteemi käivitumisega. Teenused täidavad mitmeid süsteemi-taseme funktsioone nagu näiteks erinevad serverid (nt HTTP, SSH, ...), logimised, perioodilised tegevused (nt varukoopiate tegemise käivitamine), kella sünkroniseerija, prindispooler (print spooler) jne. Teenused on spetsiaalsed programmid, mis peavad rakendama spetsiaalset API't (application programming interface), millega saab teenuse tööd juhtida, nt staatust küsida, käivitada või peatada.
Linux daemon'd/teenused
Linuxi all teenuste (ehk daemon) nimetuses on tihti suffiks "d" (näiteks sshd, httpd, ...). Linuxi teenuste haldamise programmiks systemd
põhistes süsteemides on systemctl
(init
(SysVinit) põhistes enamasti service
ja chkconfig
, OpenRC
põhistes rc-service
).
Vaatame Linuxi all olevaid teenuseid ja nende seisundeid käsurealt systemctl list-units --type=service --all
Väljundis on järgmised veerud:
- UNIT: Teenuse nimi.
- LOAD: Kas teenuse seadistuste fail on laetud.
- ACTIVE: Kas teenus hetkel töötab.
- SUB: Täiendab info teenuse hetkeseisundi kohta.
- DESCRIPTION: Teenuse lühikirjeldus.
Nägemaks ainult jooksvaid teenuseid: systemctl list-units --type=service --state=running
Nagu näeme, on teenuste nimes suffiks ".service". Kui me opereerime teenustega siis võime ".service" nimetusest ära jätta.
Näiteks systemctl cat cups
(kuvatakse teenuse "cups" seadistuste fail, mille asukoht on näha väljundi esimesel real).
Näiteks, kui soovime saada infot teenuse omaduste kohta siis saame anda käsu: systemctl show cups.service
või systemctl show cups
(nagu näeme, on võimalikke omadusi päris palju).
Infot omaduste kohta võid saada näiteks siit: https://www.man7.org/linux/man-pages/man5/org.freedesktop.systemd1.5.html
NB!: Järgnevat on soovitatav teha oma virtuaalmasinas (hostmasinas ainult omal vastutusel). Paigaldame arvutisse Apache2 veebiserveri (mis paigaldab ka samanimelise teenuse):
sudo apt update
sudo apt install apache2
Vaatame, mis seisus Apache hetkel on:
sudo systemctl status apache2
Me paigaldasime teenuse Apache2, mis kuulab nüüd porti 80 (443 pordi ehk HTTPS kuulamiseks peaksime täiendavalt seadistama, mille järgi hetkel vajadust pole). Vaatame seda, avades brauseris aadressi http://localhost
. Peaks avanema mingi vaikimisi leht.
Kui me kasutame veebiserverit ainult oma tarbeks, siis ei pruugi me tahta, et Apache2 automaatselt käivituks arvuti alglaadimisega, võttes nii ressursse, sh akut ja aega. Apache2 avas vaikimisi ka pordi 80, mistõttu arvuti võib olla Internetti ühendudes ka teistele kättesaadav — see avas ka võimaliku ründevektori. Turvalisuse huvides soovime minimeerida ründevektoreid oma arvutile. Seadistame, et Apache2 ei käivituks arvuti käivitudes automaatselt:
sudo systemctl disable apache2
Vaatame nüüd uuesti Apache2 seisundit. Võrdle varasemaga — mis erinevusi märkad?:
sudo systemctl status apache2
Samuti külasta uuesti http://localhost
(võid kindluse mõttes ka F5 vajutada). Peaks töötama.
Me oleme oma tööd ära teinud (nt tegime mingit Ülikooli kursuse projekti) ja tahaksime Apache2 kinni panna, et ta ei võtaks ressursse ja tõsta turvalisust (masin ei kuulaks enam pordil 80). Paneme Apache2 teenuse käsitsi kinni:
sudo systemctl stop apache2
Pöördume uuesti http://localhost
poole brauseriga. Ühendumine peaks nüüd ebaõnnestuma. Samuti vaatame teenuse seisundit:
sudo systemctl status apache2
Teeme nüüd arvutile restardi, näiteks käsuga reboot
(nii on kiirem, ei pea hiirega otsima õiget kohta).
Kui taaskäivitus on tehtud, siis vaatame uuesti brauseris http://localhost
(pöördumine peaks ebaõnnestuma). Vaatame ka teenuse seisundit:
sudo systemctl status apache2
Nüüd soovime panna uuesti Apache2 käsitsi tööle:
sudo systemctl start apache2
Nüüd külastame uuesti meie veebilehte http://localhost
ja see peaks õnnestuma.
Vaatame samuti teenuse seisundit:
sudo systemctl status apache2
Kui teeme teenuse (nt Apache2) seadistustes muudatusi, siis seadistuste laadimiseks on 3 varianti:
- Saame teenuse peatada ja käivitada (mida ülal tegime juba).
- Saame teenusele saata korralduse "restart", näiteks:
sudo systemctl restart apache2
, mis taaskäivitab teenuse. - Saame teenusele öelda, et ta oma seadistuse uuesti laadiks (vastavas teenuses peab olema vastav AÜI käsklus implementeeritud, mida alati ei pruugi olla). Apache2 puhul töötab ja saame peale seadistuse muutmist anda käsu:
sudo systemctl reload apache2
(see on kiirem, kui mõlemad ülal toodud variandid).
Vaata teenuste nimekirja, eelkõige neid, mis töötavad. Otsi Internetist, mis on selle teenuse funktsioon. Teiseks, ürita selgeks teha, kas antud teenus on vajalik oma (virtuaal)masinas töötama (ja miks)? Võibolla ei ole antud teenust vaja ning seetõttu võtab ülemääraselt ressursse. Nii saate parema ülevaate oma masinast.
Linuxi tarkvara haldus
Me oleme varemasemates praktikumides paigaldanud uut tarkvara ning ka ülal paigaldasime Apache2 nimelise veebiserveri. Osa tarkvarast võib muutuda ebavajalikuks, mistõttu oleks mõistlik see eemaldada. Mõningail juhul võib see tõsta turvalisust, eriti tarkvara, mis avab mõne pordi ning seetõttu võib Interneti kaudu kättesaadavaks osutuda (igas tarkvaras või seadistuses võib esineda turvanõrkusi).
Nägemaks, mis tarkvara on installeeritud, anna käsk dpkg -l
. Nimekiri on pikk, seetõttu mingi konkreetse tarkvara, nt "ssh" kohta saab küsida käsuga dpkg -l | grep ssh
.
Soovides eemaldada näiteks "openssh-server" saame seda teha järgnevalt:
- Eemaldame installeeritud paketi "openssh-server":
sudo apt remove openssh-server
.
- Eemaldame konfiguratsioonifailid (kui on tehtud seadistusi, siis on mõistlik neist eelnevalt varukoopia teha):
sudo apt purge openssh-server
.
- Võimalik, et paketiga on seotud mingeid sõltuvusi, mis jäävad kasutuseta. Kui "apt" paigaldas paketi, siis ta paigaldas ka kõik puudu olevad sõltuvused (paketid, mille kasutaja on ise otse paigaldanud on ei eemaldata). Nende eemaldamiseks:
sudo apt autoremove
.
NB!: Kindluse mõttes on järgnevat ülesannet soovitav teha virtuaalmasinas (host-masinas ainult omal vastutusel)!
- Ülesanne 1: Vaata paigaldatud tarkvara nimekirja ja leia midagi, mis tundub üleliigne olema. Otsi selle kohta lisainfot, et mis on antud tarkvara funktsioon ja teiseks miks ta ebavajalik (vajadused võivad olla inimestel erinevad). Esitada ekraanipilt, et olete eemaldanud enda valitud tarkvara (näha eemaldamise käsk ja vahetult kohe käsk
dpkg -l | grep minuValitudEemaldatudTarkvara
(vastus peaks tühi olema)).
Windows
Järgnevalt vaatame üldjoontes samasid teemasid Windows keskkonnas. Windows on üldiselt mitmeid lähenemisi üle võtnud Linuxilt.
Järgnevaid tegevusi on soovitatav sooritada praktikum14 loodud Azure Windows 10 pilvemasinas
.
Keskkonnamuutujad
Ava Explorer ja kirjuta aadressiribale %SystemRoot%
ja vajuta Enter. Peaksite jõudma "C:\Windows\" vmt kausta. Ava nüüd käsurida ja anna käsk cd %SystemRoot%
. Peaksite samuti jõudma kausta "C:\Windows\" vmt. Anna käsurealt käsk %SystemRoot%\notepad.exe
. Peaks avanema Notepad. Tegemist on keskkonnamuutujaga, mille nime ümber on eristamiseks spetsiaaltähenduslik märk %
. Selliseid keskkonnamuutujaid on veelgi, mida vahel võib olla vaja kasutada käsureal või üldiste skriptide tegemisel. Keskkonnamuutujatest nimekirja saamiseks anna käsk "set".
Üks olulisemaid keskkonnamuutujaid on "Path". Siin on kaustade nimed, mis eraldatud ";" abil. Otsi siit nimekirjast mingi MITTE "C:\Windows" kaust ja vaata, kas seal sees on mingi EXE-fail. Kui leidsid, siis mine käsureal kausta, kus pole ühtegi faili (vajadusel loo kaust). Anna nüüd käsk "dir" (kaust peaks tühi olema) ja seejärel valitud EXE-faili nimi. Nüüd peaks saama mingi tulemuse, mis näitab, et programm käivitus olles kaustas, milles ei olnud ühtegi faili. Siit näete, et kui Windows ei leia jooksvalt kaustast vastavat käivitatavat faili, siis vaatab keskkonnamuutujat %Path%
ja üritab sealt kaudu leida. Kusjuures loendi järjekord on oluline — kui sama EXE-fail on mitmes kaustas, siis kasutatakse eespool olevat kausta.
- Ülesanne 2: Tehke kuvatõmmis "dir" käsust ja oma valitud EXE-faili käivitamisest, et oleks näha programmi käivitumine (sh ei ole järgmisel real veateadet vmt).
Kontrollimaks, et kataloogis olev EXE-fail on prioriteetsem, kopeerige nüüd siia tühja kausta mingi iseseisev EXE-fail (nt putty.exe vmt omal valikul, kuid olgu programm erinev eelnevalt käivitatud programmist) ja nimetage antud fail ümber eelnevalt käivitatud faili nime järgi. Seejärel käivitage uuesti ülal %Path%
kaustadest leitud programm. Nüüd peaks käivituma kaustas olev programm. See näitab otsimise prioriteeti. Kuidas Linuxi keskkonnas toimiti analoogses situatsioonis? Kumb lähenemistee on turvalisem ja miks?
Kui %Path%
muutub liiga pikaks, siis võiks seda jõudluse, turvalisuse ja korrastatuse huvides üle vaadata. Kui olete kindel, et mingi kaust on üleliigne, siis eemaldage sealt ebavajalikud elemendid (nt mitte enam eksisteeriv kaust või topelt kaustad või programmid, mis pole süsteemsed ega vajalikud). Olge siiski ettevaatlikud ja tehke eelnevalt igaks juhuks varukoopia (kopeeri lihtsalt sõne kuskile hoiule). NB!: Tehke järgnevat virtuaalmasinas (host-masinas ainult omal vastutusel)!
Muutmaks %Path%
, liikuge "Juhtpaneel (Control Panel)" => "Süsteem (System)" => "Täpsemad süsteemisätted (Advanced system settings)" (paremal) => "Täpsemalt (Advanced)" => "Keskkonnamuutujad (Environment Variables)". Siin üleval on jooksva kasutaja keskkonnamuutujad ja all süsteemi omad (üldiselt kasutaja keskkonnamuutujad katavad üle süsteemi keskkonnamuutujad ja kui kasutaja all pole defineeritud, siis rakendatakse süsteemi oma).
Mis juhtub siis, kui mingi EXE-fail on nii kasutaja kui ka süsteemi %Path%
keskkonnamuutujas sees? Vastuse saame leida käsurealt andes käsu echo %Path%
. Võrdle tulemusi ja kirjuta kumb %Path%
keskkonnamuutujas olev EXE käivitatakse, kui see on mõlemas olemas.
- Ülesanne 3: Kui käivitatav fail leidub nii kasutaja kui ka süsteemi "
%Path%
" märgitud kaustades ja need kaustad on erinevad, siis kummas kataloogis olev fail käivitatakse?
Windows teenused
Alates Windwows NT'st tuli mõiste teenused (ehk Windows service), mis töötavad taustaprogrammina (ehk ei oma visuaalset liidestust ega kasutajaga otse suhtlemist). Võetud on eeskuju Unix/Linux daemon süsteemist. Teenused peavad järgima kindlaks määratud API-t (application programming interface), disainitud teenusena töötama (nt teenusehalduri teateid töötlema ja ei tohi oodata kasutajalt mingit sisendit, väljastada graafilisele kasutajaliidesele omaseid aknaid, sh veateateid (veateated logitakse EventLogi või logifaili) ja nad peavad olema eelnevalt registreeritud operatsioonisüsteemis. Teenustega tegeleb "%SystemRoot%\System32\services.exe
".
Windowsi teenuste ülevaate saamiseks saab käivitada käsurealt "services.msc" (või Explorer'st arvuti hüpikmenüüst "Manage" valides avaneb aken, kus vasakul otsige puust üles "Services", mille järel ilmub teenuste nimekiri). Nimekirjas on veergudeks teenuse nimi, kirjeldus, staatus (kui "Running", siis teenus töötab, kui tühi siis teenus ei tööta (muud seisud on üldiselt ajutised (nt Stopping) või harva kasutatavad (nt Paused)), "Startup Type" (Automatic - pannakse kohe arvuti käivitamisel tööle; "Automatic (Delayed start)" - käivitatakse viitajaga peale arvuti käivitamist, et arvuti saaks kiiremini käivituda; "Manual" - teenust ei käivitata teenus-halduri poolt arvuti käivitamisel, aga kui mingi muu teenus, programm või kasutaja käivitab, siis läheb tööle; "Disabled" - teenuse käivitamine on ära keelatud ja teenuse käivitamine ebaõnnestub) ja "Log On As" (mis kasutaja õigustes teenus käivitatakse, tavaliselt spetsiaalsed 3 erinevat süsteemikasutajat, aga on võimalik käivitada ka konkreetse kasutaja õigustes, kui peaks olema vajadust).
Nagu näete, on töötavaid teenuseid üpris palju. Paljud neist teenustest pole reaalselt vajalikud ning võivad olla ka haavatavad, eriti nt juhul, kui sülearvutiga ühenduda suvaliste Wi-Fi-võrkudega. Näiteks failijagamisteenus (SMB (Server Message Block)) on üpris ebaturvaline (vt nt WannaCry rünnet), kui arvuti on Interneti kaudu otse kättesaadav (seetõttu on tihti ISP blokeerinud porte, et tavalisi kliente kaitsta). Iga protsess, mis töötab, vajab ressursse, töötava teenuse taga on samuti protsess, mis vajab ressursse (mälu, CPU, kirjutab kettale, kasutab võrku jne).
Üritame järgnevalt saada ülevaate oma arvutis olevatest teenustest ja seejärel üritame optimeerida arvutit, vähendades töötavaid teenuseid (optimeerige virtuaalmasinas, enda masinas ainult omal vastutusel). Enne muutma asumist on tark salvestada praegune seis. Teenuste haldamise aknas vali ikoon "Export List" ja faili tüübiks vali "Unicode text (*.csv)". Ava salvestatud fail (nt LibreOffice Calc'ga). Kui märkad, et osade teenuste tulbad on paigast ära, siis võib olla probleemiks, et Windowsi ekspordi funktsioon ei oska komasid varjestada CSV-s, kuid komasid võib leiduda kirjeldustes. Seega ava "View" menüüst "Add/Remove Columns" ja eemalda "Description" veerg, salvesta ja ekspordi uuesti ja ava CSV-fail. Nüüd võiks olla seis parem. Kahjuks väljundis kuvatakse ainult "Display name", mitte "Service name", mida meil järgnevalt vaja läheb.
Nüüd on aeg mittevajalike teenuseid kinni panema hakata. Selleks saate kasutada teenuste halduse graafilist kasutajaliidest, kuid on võimalik kasutada ka käsurida. Teenusel on kaks nime, üks neist on kuvatav ja teine süsteemne nimi. Ava mingi teenus topelt-klikiga ning avanevas aknas on "Service name" ja "Display name". Järgnevalt läheb meil vaja "Service name" väärtust.
Teenuse käivitamise keelamine:
sc config "<teenuse nimi>" start= disabled
"disabled" asemel võib vaja minna kasutada ka nt "auto" või "demand" (ehk manual)
Teenused võivad ka üksteisest sõltuda. Sõltuvuste nägemiseks ava mingi teenus ja ava sakk "Dependencies" ja järgnevalt on näha, mis teenustest antud teenus sõltub ja allpool teenused, mis sõltuvad antud teenusest (mõlemad nimekirjad võivad ka tühjad olla, sel juhul pole sõltuvusi). Kui teenuse, millest sõltutakse, käivitustüübiks on "Disabled", siis ka sõltuva teenuse käivitumine ebaõnnestub (selle kohta tekib veateade Event Log vaates). Kui avada "Remote Procedure Call (RPC)" sõltuvuste ülevaade, siis näeme, et sellest teenusest sõltuvad väga paljud teised teenused. Windowsi puhul on uuemates versioonides osadel teenustel blokeeritud nende peatamine ja käivitustüübi muutmine (sh viimati vaadatud teenus).
Teenuse käivitamiseks:
NET START <teenuse nimi ehk "Service name" väärtus>
Teenuse peatamiseks:
NET STOP <teenuse nimi ehk "Service name" väärtus>
Teeme oma arvuti teenustest ülevaate. Tahame teada mitu teenust on registreeritud. Ava PowerShell ja anna käsk:
(Get-Service | Measure-Object).Count
(sama saab ka graafilisest kasutaja liidesest, aga nende kokku lugemine oleks vast üpris tülikas).
Üritame teada saada, mitu teenust on hetkel töötamas: Get-Service | Where-Object {$_.Status -eq "running" } | Measure-Object | Select-Object Count
Üritame teada saada, mitu teenust käivitub automaatselt algkäivitamisega: (Get-WmiObject Win32_Service | Where-Object { $_.StartMode -eq "Auto" }).Count
(siin on ka viivitusega käivituvad teenused)
Võta nüüd lahti SysInternals tööriist ProcessExplorer. Järjesta teenused nt mälu või CPU kasutuse järgi järjekorda ja liigu mõne protsessi peale, mille puhul ilmub sildil tekst "Services: " ja teenus või teenuste nimed (kindlasti leiate mitu "svchost.exe" nimelisi protsesse, millel on teenuseid). Kas leidsite mingeid teenuseid, mis märgatavalt rohkem ressursse võtavad? Kui jah, siis tasuks uurida, millega on tegemist. Uurimiseks kasutage Interneti abi.
- Ülesanne 4: Võta teenuste loendist teenus, mille teenuse nimi algab oma perenime esitähega (ÕÄÖÜ puhul võta teenused algustähega C, Q, W, X, Y) (teenuste nimedes jäta "Windows" ja "Microsoft" eest ära ehk "Windows Time" loeme "Time" oma nimede esitähtede järgi teenuseid valides). Kirjuta eelnevalt valitud teenuse kohta otstarve. Teiseks, kas teenuse töötamine on vajalik oma masinas (ja miks) (kas võib teenuse "disabled" määrata)?
Windows optimeerimine
Ajapikku võib masinasse koguneda installeeritud tarkvara, mida mingi aeg enam ei vajata. Tavaline moodus neist ülevaate saamiseks ning eemaldamiseks on Windows "Juhtpaneeli (Control Panel)" kaudu ("Programmid (Programs)" alamosa), kuhu installeeritud programmid lisavad viite endast. Võite vaadata seda nimekirja üle ja eemaldada ebavajalikuks osutunud programme ja ka Windowsi komponente.
Windows 8 lisas AppX ja Windows 10 lisas MSIX tarkvarapakkide halduse (midagi sarnast nagu Linuxis ja Androidis), mida kasutatakse peamiselt Microsoft Store vahendusel. Siit kaudu võib olla arvutisse installeeritud päris palju tarkvara ja võtta päris palju ruumi kettal. Mõned neist võivad ka taustas töötada ning võtta jooksvalt mälu, protsessorit jne.
Paigaldatud tarkvarapakkide nägemiseks anna PowerShelli käsurealt käsk: Get-AppxPackage -AllUsers
. Nähtavasti on palju väljundit. Vaatame, mitu paketti leiti: (Get-AppxPackage -AllUsers).Count
. Lühema ülevaate saamiseks täiendame käsku: Get-AppxPackage -AllUsers | Select-Object Name, PackageFullName, InstallLocation
. Me saame nüüd ülevaate, kui palju mingi tarkvarapakett ruumi võtab, vaadates kausta mahtu (nt Explorer's). Samas võime seda küsida ka käsurealt (antud juhul nt tarkvarapaketi "Microsoft.People" kohta): Get-ChildItem -Recurse (Get-AppxPackage -Name "Microsoft.People").InstallLocation | Measure-Object -Property Length -Sum | select Count, Sum
.
Otsi nüüd tarkvarapakettidest midagi, mis tundub olema ebavajalik. Otsimiseks saad näiteks anda käsu get-appxpackage *One*
(otsib tarkvarapakette, mille nimi sisaldab "one"). Tarkvarapakkidega, millel "IsFramework" = True või "NonRemovable" = True tasuks olla rohkem ettevaatlikum. Kui oled midagi välja valinud, siis on vaja saada lisainfot. Anna käsk (nt "Microsoft.People" kohta, aga vali midagi muud): Get-AppxPackage -Name "Microsoft.People" | Format-List *
. Enne eemaldamist vaata, kui suure mahuga on vastav tarkvarapakk jms info.
- Ülesanne 5: Anna käsk (asenda "Microsoft.People" oma välja valitud tarkvarapakiga)
Get-AppxPackage -Name "Microsoft.People" | select packageFullName
. Seejärel anna eemaldamise käsk ja kohe peale eemaldamist uuesti eelpool toodud käsk (Get-AppxPackage ...).
Eemaldamiseks saab anda käsu (asenda <PackageFullName> oma valitud tarkvarapaki vastava väärtusega) Remove-AppxPackage -Package <PackageFullName>
. Näiteks "Microsoft.XboxGamingOverlay" puhul: Remove-AppxPackage -Package "Microsoft.XboxGamingOverlay_7.224.10282.0_x64__8wekyb3d8bbwe"
Ava nüüd Explorer, "See arvuti (This PC)" peal ava hüpikmenüü, kus vali "Atribuudid (Properties)", paremalt poolt vali "Täpsemad süsteemisätted (Advanced system settings)", vali "Täpsemalt (Advanced)" sakk, "Jõudlus (Performance)" all vajuta nuppu "Sätted (Settings)". Vali siin "Kohanda parima jõudluse saamiseks (Adjust for best performance)" (soovi korral võid ise valida allpool, mis kellasid ja vilesid soovid sisse-välja lülitada).
Pilvetehnoloogia kulude analüüs
Azure ja teised pilveteenused peavad väga täpset kasutuse ja kulude arvestust kasutatud ressurside üle. Leidke Azure keskkonnast üles, kui palju raha (EUR
, USD
) millisele ressursile kulus praktikumide 14 ja 15 sooritamisel. IT professionaalil on vaja tihti hinnata hinnata pilvelahenduse kasutamise kulu võrreldes kohaliku lahendusega.
Ülesanne 6: Uurige Azure keskkonnast, kus on näha palju eurosid ja millistele alamressurssidele kulus Azure teenuste kasutamiseks praktikumide 14 ja 15 sooritamiseks. Esitage ekraanivaade (vajadusel mitu) Praktikum14 ja Praktikum15 sooritamiseks kulunud rahalisest ressursist (kulust) Azure pilvekeskkonnas.
Lets have some FUN!
Kui varasemad ja käesoleva nädala praktikumid on tehtud, siis rohkem ei ole meil vaja Azure virtuaalmasinat. Kes soovib, võib lõbu pärast proovida ainult Azure virtuaalmasina WSLis, mis juhtub, kui pimesi anda suvalisest Interneti foorumist leitud Linuxi käsk, mis kirjelduse järgi küsitud probleemi lahendab: sudo rm -fr /*
(ei pea seda käsku andma, kui ei soovi). Mis juhtus peale käsu andmist?
Peaksite avastama, et WSL käsk rikkus ära ka osa Windows operatsioonisüsteemist, sest WSLi on ka Windows operatsioonisüsteemi kaustad haagitud. Kuna Azure Windows 10 operatsioonisüsteem endiselt töötab (küll vigaselt) siis katsetame ka seda kahjustada, proovides käske rd /s /q C:\
ja del /s /f /q C:\*
. Teil on selleks hetkeks PowerShell juba kahjustatud, aga töökorras PowerShellis aitab probleeme lahendada ka käsk Remove-Item -Path C:\* -Recurse -Force
. Loomulikult need on ainult üksikud näited, kui kerge on ühe käsu/tegevusega kogu enda Windows/Linux/MacOS operatsioonisüsteem püsivalt kahjustada ning seeläbi suure tõenäosusega ka andmeid kaotada.
Ressurside vabastamine
- Kui teil on praktikumid 14 ja 15 edukalt lahendatud, siis vabastage ka kõik ressursid.
- Minge nüüd https://portal.azure.com. Otsige oma resource grupid üles ja eemaldage kõik loodud ressursid.
- Valige kõik ressursid. Ning eemaldage need.
- Vajutage mõlema resource groupi puhul
Delete Resource Group
. - Soovitatav on ka jaanuaris pärast aine eksamit
Virtualbox
virtuaalmasinad eemalda, et vabastaksite enda arvutis aine jaoks kasutusel olnud kohaliku andmemahu. - Aine õppejõud soovitavad kõigile
operatsioonisüsteemid
aine kuulajaile osaleda jätkukursusena kevadsemestril ainesLTAT.06.002 Andmeturve
, millel on erinev loengupidajaTarmo Oja
, kuid praktikume koostan ja ainet korraldan peamiselt minaAlo Peets
.- Kui operatsioonisüsteemid kursusel õppisime peamiselt kuidas arvutis X tegevusi teha, siis andmeturve keskendub erinevate IT süsteemide tegevuste Y turvalise kasutuse õpetamisele ja küberturvalisuse nüansside tutvustamisele. Ehk jätkame sealt, kus operatsioonisüsteemid kursusega oskustega lõpetasime nii, et kindlasti aitab andmeturve kursus veelgi teie arvutikasutuse oskusi kinnistada ja parandada.
- Hajussüsteemide õppetoolist soovitaksin bakalaureusele veel:
LTAT.06.008 Pilvetehnoloogia
,LTAT.06.018 Veebiteenuste ja hajussüsteemide arendus
kursusi ja pärast andmeturve läbimist kaLTAT.06.003 Süsteemihaldus
- Küberturvalisuse ainetest soovitame tutvuda ka Tartu Ülikooli ainetega
LTAT.04.020 Krüptograafia
MTAT.07.017 Rakenduslik krüptograafia
,LTAT.04.009 Juhtmevabad tehnoloogiad ja turvalisus
Tulemus
GitHubis või GitLab leheküljel peaks olema vastused järgmistele küsimustele/ülesannetele (ja alguse osasse võid kirjutada, kui palju üleliigset tarkvara eemaldasid, palju teenuseid ära keelasid jms):
- Üleanne 1: Vaata paigaldatud tarkvara nimekirja ja leia midagi, mis tundub üleliigne olema. Otsi selle kohta lisainfot, et mis on antud tarkvara funktsioon ja teiseks miks ta ebavajalik (vajadused võivad olla inimestel erinevad). Esitada ekraanipilt, et olete eemaldanud enda valitud tarkvara (näha eemaldamise käsk ja vahetult kohe käsk
dpkg -l | grep minuValitudEemaldatudTarkvara
(vastus peaks tühi olema)). - Üleanne 2: Tehke kuvatõmmis "dir" käsust ja oma valitud EXE-faili käivitamisest, et oleks näha programmi käivitumine (sh ei ole järgmisel real veateadet vmt). (teema Windows keskkonnamuutujad)
- Üleanne 3: Kui käivitatav fail leidub nii kasutaja kui ka süsteemi "
%Path%
" märgitud kaustades ja need kaustad on erinevad, siis kummas kataloogis olev fail käivitatakse? - Üleanne 4: Võta teenuste loendist teenus, mille teenuse nimi algab oma perenime esitähega (ÕÄÖÜ puhul võta teenused algustähega C, Q, W, X, Y) (teenuste nimedes jäta "Windows" eest ära ehk "Windows Time" loeme "Time" oma nimede esitähtede järgi teenuseid valides). Kirjuta eelnevalt valitud teenuse kohta otstarve. Teiseks, kas teenuse töötamine on vajalik oma masinas (ja miks) (kas võib teenuse "disabled" määrata)?
- Üleanne 5: Anna käsk (asenda "Microsoft.People" oma välja valitud tarkvarapakiga)
Get-AppxPackage -Name "Microsoft.People" | select packageFullName
. Seejärel anna eemaldamise käsk ja kohe peale eemaldamist uuesti eelpool toodud käsk (Get-AppxPackage ...). Esita sellest kuvatõmmis. - Üleanne 6: Uurige Azure keskkonnast, kus on näha palju eurosid ja millistele alamressurssidele kulus Azure teenuste kasutamiseks praktikumide 14 ja 15 sooritamiseks. Esitage ekraanivaade (vajadusel mitu) Praktikum14 ja Praktikum15 sooritamiseks kulunud rahalisest ressursist (kulust) Azure pilvekeskkonnas.
Kui teil on GitHub/GitLab valmis, siis lisage link esitusele moodle keskkonda, kust me teie lahenduse leiame. Moodle esitamise otselink: https://moodle.ut.ee/mod/assign/view.php?id=1230396
(Tähtaeg 2 nädalat)