Linux Quest. Urime për fituesit dhe na tregoni për zgjidhjet e detyrave

Linux Quest. Urime për fituesit dhe na tregoni për zgjidhjet e detyrave

Më 25 Mars hapëm regjistrimin për Linux Quest, kjo është një lojë për dashamirët dhe ekspertët e sistemit operativ Linux. Disa statistika: 1117 persona u regjistruan në lojë, 317 prej tyre gjetën të paktën një çelës, 241 përfunduan me sukses detyrën e fazës së parë, 123 përfunduan fazën e dytë dhe 70 kaluan fazën e tretë. Sot loja jonë ka marrë fund dhe ne i urojmë fituesit tanë!

  • Alexander Teldekov zuri vendin e parë.
    Aleksandri tha me vete se ai është administratori më tipik i sistemit. Jeton në Volgograd, ka administruar sisteme të ndryshme të ngjashme me Unix për rreth njëzet vjet. Kam arritur të punoj në ofrues të internetit, një bankë dhe një integrues sistemi. Tani ai punon nga distanca në një kompani të vogël, duke punuar në infrastrukturën cloud për një klient të madh të huaj. I pëlqen të lexojë dhe të dëgjojë muzikë. Rreth lojës, Aleksandri tha se i pëlqente loja në tërësi, i pëlqen detyra të tilla. Gjatë një interviste në një nga kompanitë që bëra diçka të ngjashme me Hackerrank, ishte interesante.
  • Vendi i dytë - Roman Suslov.
    Një roman nga Moska. Ai është 37 vjeç. Punon si inxhinier Linux/Unix në Jet Infosystems. Në punë, më duhet të administroj dhe zgjidh problemet e sistemeve Linux/Unix + SAN. Interesat janë të ndryshme: sistemet Linux, programimi, inxhinieria e kundërt, siguria e informacionit, Arduino. Rreth lojës, Roman vuri në dukje se i pëlqeu loja në përgjithësi. “Zgjata pak trurin dhe u shkëputa nga përditshmëria gri e punës së përditshme. 🙂 Do të doja të kisha më shumë detyra, përndryshe, përpara se të kisha kohë ta shijoja, loja kishte përfunduar tashmë.”
  • Së treti - alex3d.
    Alex jeton në Moskë dhe punon në zhvillimin e softuerit. "Faleminderit për konkursin, ishte interesante të testoja aftësitë e mia në google-fu."

Gjithashtu në renditjen e 10 lojtarëve më të mirë:

  • Yevgeniy Saldayev
  • Markel Mokhnachevsky
  • Konstantin Konosov
  • Pavel Sergeev
  • Vladimir Bovaev
  • Ivan Bubnov
  • Pavlo Klets

Ne e kuptojmë se ka shumë opsione për zgjidhjen e të gjitha problemeve tona; disa nga zgjidhjet e mundshme janë përshkruar më poshtë.

1. Faza e parë

Ne e quajtëm atë "A je vërtet një administrator?", pasi detyra ishte mjaft e thjeshtë - të rregulloje një shërbim llambë të ngrohtë.

1.1. Fakte interesante:

Dy lojtarë gjetën çelësin e parë në 15 minutat e para të lojës dhe në orën e parë patëm tre drejtues që përfunduan detyrën.

1.2. Ushtrimi

Ju shkuat për të punuar në një kompani ku për një kohë të gjatë nuk kishte një specialist kompetent të teknologjisë së informacionit. Përpara se të filloni të rregulloni gjërat, duhet të zgjidhni problemin e ndezur që po bllokon punën e zyrës.

Pastruesja kapi me leckë kabllon e rrymës së kabinetit të serverit. Energjia është rivendosur, por një faqe interneti shumë e rëndësishme nuk po funksionon ende. Faqja e internetit është e rëndësishme sepse kompania nuk është shumë e shqetësuar për sigurinë e informacionit, dhe në faqen kryesore të saj mund të gjeni me tekst të qartë fjalëkalimin e administratorit për kompjuterin e CEO.

Një ditë më parë u ndryshua fjalëkalimi, por të gjithë harruan të riun, drejtori nuk mund të punojë. Ka zëra se kishte më shumë çelësa në këtë makinë që mund të na ndihmonin të deshifrojmë kopjen rezervë të dokumenteve të kontabilitetit.

Të gjithë presin një zgjidhje të shpejtë të çështjes!

1.3. Zgjidhje

1. Para së gjithash, ju duhet të ndryshoni fjalëkalimin rrënjë në makinën virtuale në mënyrë që të keni akses në të. Kur nisim, vërejmë se ky është Serveri Ubuntu 16.04.

Për të rivendosur fjalëkalimin rrënjë, ne rindizni makinën, kur ngarkoni, në momentin që shfaqet menyja grub, shkoni për të modifikuar artikullin Ubuntu me butonin "e". Redaktoni linjën linux, shtoni atë në fund init=/bin/bash. Ne ngarkojmë me Ctrl+x, marrim një bash. Rimontoni rrënjën me rw, ndryshoni fjalëkalimin:

$ mount -o remount,rw /dev/mapper/ubuntu--vg-root
$ passwd

Mos harroni për sinkronizimin, rindizni.

2. Kushti thotë që serveri ynë në internet nuk funksionon, shikoni:

$ curl localhost
Not Found
The requested URL / was not found on this server.
Apache/2.4.18 

Kjo është, në fakt, Apache po funksionon, por përgjigjet me kodin 404. Le të shohim konfigurimin:

$ vim /etc/apache2/sites-enabled/000-default.conf

Ekziston edhe një çelës këtu - StevenPaulSteveJobs.

Kontrollimi i rrugës /usr/share/WordPress - nuk ka një gjë të tillë, por ka /usr/share/wordpress. Ndryshoni konfigurimin dhe rinisni Apache.

$ systemctl restart apache2

3. Provoni përsëri, marrim gabimin:

Warning: mysqli_real_connect(): (HY000/2002): Connection refused in /usr/share/wordpress/wp-includes/wp-db.php on line 1488

Baza e të dhënave nuk po funksionon?

$ systemctl status mysql
Active: active (running)

Per Cfarë bëhet fjalë? Duhet ta kuptojmë. Për ta bërë këtë, ju duhet të keni akses në MySQL, siç përshkruhet në dokumentacionin. Një nga pikat e dokumentacionit rekomandon që të regjistrojmë opsionin skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. Ekziston edhe një çelës këtu - AugustaAdaKingByron.

Korrigjimi i të drejtave të përdoruesit 'wp'@'localhost'. Ne lëshojmë MySQL, e bëjmë atë të aksesueshëm përmes rrjetit, duke komentuar opsionin në konfigurim skip-networking.

4. Pas këtyre hapave, serveri i uebit fillon, por faqja ende nuk funksionon sepse

Warning: require_once(/usr/share/wordpress/wp-content/themes/twentysixteen/footer.php): failed to open stream: Permission denied in /usr/share/wordpress/wp-includes/template.php on line 562

Ne redaktojmë të drejtat e skedarit.

$ chmod 644 /usr/share/wordpress/wp-content/themes/twentysixteen/footer.php

Ne rifreskojmë faqen, shkojmë në sit dhe gjejmë çelësin - BjarneStroustrup! I gjetëm të tre çelësat, drejtori ynë mund të punojë, deshifruam dosjet e kontabilitetit. Të gjithë janë të lumtur dhe ju keni shumë punë përpara për të ngritur infrastrukturën, kopjet rezervë dhe sigurinë në kompani.

2. Faza e dytë

Ishte e nevojshme të zgjidhej problemi i mbledhjes së analitikës. Të gjithë e duan analitikën - kush e përdor atë, ku dhe në çfarë sasie. Ne dolëm me një rast që të gjithë inxhinierët mund të hasin në një formë ose në një tjetër në jetë.

2.1. Fakte interesante

Një nga lojtarët tanë futi çelësin e duhur në 10 minutat e para të lojës dhe brenda orës së parë patëm një lider që përfundoi detyrën.

2.2. Ushtrimi

Ju shkuat për të punuar në kompani, menaxherët erdhën tek ju dhe ju kërkuan të gjeni se kujt i dërgoheshin letra nga Afrika. Ne duhet të ndërtojmë 21 adresat kryesore të marrësve bazuar në to. Shkronjat e para të adresave të marrësve janë çelësi. Një gjë: serveri i postës përmes të cilit janë dërguar letrat nuk ngarkohet. Të gjithë presin një zgjidhje të shpejtë të çështjes!

2.3. Zgjidhje

1. Serveri nuk nis për shkak të një ndarjeje swap që nuk ekziston në fstab; kur ngarkohet, sistemi përpiqet ta montojë dhe rrëzohet. Si të nisni?

Shkarkoni imazhin, kemi shkarkuar CentOS 7, boot nga Live CD/DVD (Zgjidhja e problemeve -> Shpëtim), montoni sistemin, modifikoni /etc/fstab. Ne gjejmë menjëherë çelësin e parë - GottfriedWilhelm11646Leibniz!

Krijo shkëmbim:

$ lvcreate -n swap centos -L 256M
$ sync && reboot

2. Si gjithmonë, nuk ka fjalëkalim, duhet të ndryshoni fjalëkalimin rrënjë në makinën virtuale. Ne e bëmë këtë tashmë në detyrën e parë. Ne ndryshojmë dhe hyjmë me sukses në server, por ai menjëherë shkon në rindezje. Serveri është i mbingarkuar me një shpejtësi të tillë që nuk keni kohë të shikoni me kujdes të gjitha regjistrat. Si të kuptoni se çfarë po ndodh?

Përsëri ne nisim nga livecd, studiojmë me kujdes regjistrat e sistemit dhe, për çdo rast, shikojmë në cron, pasi një periodicitet i tillë. Aty gjejmë problemin dhe çelësin e dytë - Alan1912MathisonTuring!

Nevojë në /etc/crontab fshini ose komentoni linjën echo b > /proc/sysrq-trigger.

3. Pas së cilës serveri është ngarkuar dhe ju mund të përfundoni detyrën e menaxherëve: "Cilat janë adresat në Afrikë?" Ky informacion është përgjithësisht i disponueshëm për publikun. Ju mund ta gjeni këtë informacion në internet duke përdorur frazat "ip address africa", "geoip database". Për të zgjidhur problemin, mund të përdorni bazat e të dhënave të shpërndarjes së adresave të disponueshme lirisht (geoip). Ne përdorëm bazën e të dhënave si standard MaxMind GeoLite2, i disponueshëm nën një licencë Creative Commons Attribution-ShareAlike 4.0.

Le të përpiqemi ta zgjidhim problemin tonë duke përdorur vetëm shërbimet e sistemit Linux, por në përgjithësi ai mund të zgjidhet në një numër të madh mënyrash: duke përdorur mjete për filtrimin e tekstit dhe duke përdorur skriptet në gjuhë të ndryshme programimi.

Për të filluar, ne thjesht do të marrim çiftet "IP dërgues-marrës" nga regjistri i postës. /var/log/maillog (le të ndërtojmë një tabelë të marrësve të postës elektronike - IP e dërguesit). Kjo mund të bëhet me komandën e mëposhtme:

$ cat /var/log/maillog | fgrep -e ' connect from' -e 'status=sent' | sed 's/[]<>[]/ /g' | awk '/connect from/ {ip=$11} /status=sent/ {print $10" "ip}' > log1.txt

Dhe përpara se të vazhdojmë me përpilimin e një baze të dhënash të adresave afrikane, le të hedhim një vështrim në adresat IP kryesore të dërguesve.

$ cat log1.txt | cut -d' ' -f1 | sort | uniq -c | sort -r | head -n 40
5206 [email protected]
4165 [email protected]
3739 [email protected]
3405 [email protected]
3346 [email protected]

Mes të gjithëve, dallohen qartë për nga numri i shkronjave tre marrësit e parë nga lart. Nëse kapni adresat IP të dërguesve që dërguan në adresat nga kjo 3 top, do të vini re një mbizotërim të qartë të rrjeteve të caktuara:

$ cat log1.txt | fgrep '[email protected]' | cut -d' ' -f2 | sort | cut -d'.' -f1 | uniq -c | sort -r | head
831 105
806 41
782 197
664 196
542 154
503 102
266 156
165 45
150 160
108 165

Shumica e rrjeteve 105/8, 41/8, 196/8,197/8 i janë caktuar AFRINIC - një nga pesë regjistruesit rajonalë të internetit që shpërndajnë burime të internetit. AFRINIC shpërndan hapësirën e adresave në të gjithë Afrikën. Dhe 41/8 i referohet Afrikës plotësisht.

https://www.nic.ru/whois/?searchWord=105.0.0.0 
https://www.nic.ru/whois/?searchWord=41.0.0.0

Kështu, përgjigja e problemit është, në fakt, në vetë regjistrin.

$ cat log1.txt | fgrep -e '105.' -e '41.' -e '196.' -e '197.' -e '154.' -e '102.' | awk '{print $1}' | sort | uniq -c | sort -r | head -n 21
4209 [email protected]
3313 [email protected]
2704 [email protected]
2215 [email protected]
1774 [email protected]
1448 [email protected]
1233 [email protected]
958 [email protected]
862 [email protected]
762 [email protected]
632 [email protected]
539 [email protected]
531 [email protected]
431 [email protected]
380 [email protected]
357 [email protected]
348 [email protected]
312 [email protected]
289 [email protected]
282 [email protected]
274 [email protected]

Në këtë fazë marrim vargun "LinuxBenedictTorvadst".

Çelësi i saktë: "LinusBenedictTorvalds".

Vargu që rezulton përmban një gabim shtypi në lidhje me çelësin e saktë në 3 karakteret e fundit. Kjo për faktin se rrjetet që kemi zgjedhur nuk janë tërësisht të dedikuara për vendet afrikane dhe për mënyrën se si postat elektronike shpërndahen nga adresat IP në regjistrin tonë.

Me specifikime të mjaftueshme të rrjeteve më të mëdha të alokuara për vendet afrikane, mund të merret një përgjigje e saktë:

$ cat log1.txt | fgrep -e' '105.{30..255}. -e' '41. -e' '196.{64..47}. -e' '196.{248..132}. -e' '197.{160..31}. -e' '154.{127..255}. -e' '102.{70..255}. -e' '156.{155..255}. | awk '{print $1}' | sort | uniq -c | sort -r | head -n 21
3350 [email protected]
2662 [email protected]
2105 [email protected]
1724 [email protected]
1376 [email protected]
1092 [email protected]
849 [email protected]
712 [email protected]
584 [email protected]
463 [email protected]
365 [email protected]
269 [email protected]
225 [email protected]
168 [email protected]
142 [email protected]
111 [email protected]
 96 [email protected]
 78 [email protected]
 56 [email protected]
 56 [email protected]
 40 [email protected]

Problemi mund të zgjidhet edhe në një mënyrë tjetër.
Shkarkoni MaxMind, shpaketoni atë dhe tre komandat e ardhshme zgjidhin gjithashtu problemin tonë.

$ cat GeoLite2-Country-Locations-ru.csv | grep "Африка" | cut -d',' -f1 > africaIds.txt
$ grep -Ff africaIds.txt GeoLite2-Country-Blocks-IPv4.csv | cut -d',' -f1 > africaNetworks.txt
$ grepcidr -f africaNetworks.txt log1.txt | cut -d' ' -f1 | sort | uniq -c | sort -r | head -n21

Në një mënyrë apo tjetër, ne përfundimisht llogaritëm statistikat dhe menaxherët morën të dhënat që u duheshin për të punuar!

3. Faza e tretë

Faza e tretë është disi e ngjashme me të parën - gjithashtu duhet të rregulloni shërbimin e llambës së ngrohtë, por gjithçka është më e ndërlikuar sesa në detyrën e parë.

3.1. Fakte interesante

Në 15 minutat e para, tre lojtarë gjetën çelësin e parë; 2 orë e 20 minuta pas fillimit të fazës, fituesi ynë përfundoi detyrën.

3.2. Ushtrimi

Ju shkuat të punoni për një kompani ku të gjitha dokumentet e kompanisë ruhen në një server të brendshëm Wiki. Vitin e kaluar, një inxhinier porositi 3 disqe të rinj për serverin, përveç një ekzistues, duke argumentuar se që sistemi të ishte tolerant ndaj gabimeve, disqet duhej të vendoseshin në një lloj grupi. Fatkeqësisht, disa javë pas instalimit të tyre, inxhinieri shkoi me pushime në Indi dhe nuk u kthye.

Serveri funksionoi pa dështime për disa vite, por disa ditë më parë rrjeti i kompanisë u hakerua. Sipas udhëzimeve, stafi i sigurisë hoqi disqet nga serveri dhe ua dërgoi. Gjatë transportit, një disk humbi në mënyrë të pakthyeshme.

Ne duhet të rivendosim funksionalitetin e Wiki-t; para së gjithash, ne jemi të interesuar për përmbajtjen e faqeve wiki. Një pjesë e caktuar e tekstit që ishte në një nga faqet e kësaj wiki është fjalëkalimi për serverin 1C dhe nevojitet urgjentisht për ta zhbllokuar atë.

Për më tepër, diku në faqet wiki ose në një vend tjetër kishte fjalëkalime për serverin e regjistrit dhe serverin e mbikëqyrjes video, të cilat gjithashtu do të ishin të dëshirueshme të rikuperoheshin; pa to, hetimi i incidentit është i pamundur. Si gjithmonë, ne presim një zgjidhje të shpejtë të çështjes!

3.3. Zgjidhje

1. Mundohemi të nisim një nga një nga disqet që kemi dhe kudo marrim të njëjtin mesazh:

No bootable medium found! System halted 

Duhet të nisesh nga diçka. Nisja nga një CD/DVD Live (Zgjidhja e problemeve -> Shpëtim) ​​ndihmon përsëri. Kur ngarkojmë, përpiqemi të gjejmë ndarjen e nisjes, nuk mund ta gjejmë, përfundojmë në guaskë. Ne po përpiqemi të studiojmë se çfarë dhe si të bëjmë me disqet. Dihet se janë tre të tillë. Ka më shumë mjete për këtë në versionin e 7-të të CentOS, ku ka komanda blkid ose lsblk, të cilat na tregojnë të gjithë informacionin rreth disqeve.

Si dhe çfarë bëjmë:

$ ls /dev/sd*

Është menjëherë e qartë se

/dev/sdb1 - ext4
/dev/sdb2 - часть lvm
/dev/sda1 и /dev/sdc1 - части рейда
/dev/sda2 и /dev/sdc2 - про них ничего не известно на текущий момент

Ne montojmë sdb1, është e qartë se kjo është ndarja e nisjes së CentOS 6.

$ mkdir /mnt/sdb1 && mount /dev/sdb1 /mnt/sdb1

Natyrisht, ne shkojmë në seksionin grub dhe gjejmë çelësin e parë atje - James191955Gosling në një skedar të pazakontë.

2. Ne studiojmë pvs dhe lvs, pasi punojmë me LVM. Ne shohim që duhet të ketë 2 vëllime fizike, njëri nuk ndodhet dhe ankohet për një uid të humbur. Ne shohim se duhet të ketë 2 vëllime logjike: rrënjë dhe shkëmbim, ndërsa rrënja është pjesërisht e humbur (atributi P i vëllimit). Nuk është e mundur të montohet, gjë që është për të ardhur keq! Ne kemi vërtet nevojë për të.

Ka edhe 2 disqe të tjera, ne i shikojmë, i montojmë dhe i montojmë:

$ mdadm --examine --verbose --scan
$ mdadm --assemble --verbose --scan
$ mkdir /mnt/md127 && mount /dev/md127  /mnt/md127 

Ne shikojmë, mund të shohim që kjo është ndarja e nisjes së CentOS 6 dhe një dublikatë e asaj që është tashmë në /dev/sdb1, dhe këtu përsëri i njëjti çelës - DennisBMacAlistairCRitchie!
Le të shohim se si është montuar /dev/md127.

$ mdadm --detail /dev/md127

Shohim që duhet të ishte montuar nga 4 disqe, por u montua nga dy /dev/sda1 и /dev/sdc1, duhet të ishin numrat 2 dhe 4 në sistem. Supozojmë se nga /dev/sda2 и /dev/sdc2 Ju gjithashtu mund të mbledhni një grup. Nuk është e qartë pse nuk ka meta të dhëna për to, por kjo është në ndërgjegjen e administratorit, i cili është diku në Goa. Ne supozojmë se duhet të ketë RAID10, megjithëse ka opsione. Ne mbledhim:

$ mdadm --create --verbose /dev/md0 --assume-clean --level=10 --raid-devices=4 missing /dev/sda2 missing /dev/sdc2

Ne shikojmë blkid, pvs, lvs. Zbulojmë se kemi mbledhur një vëllim fizik që na mungonte më parë.

lvroot u riparua menjëherë, ne e montojmë atë, por fillimisht aktivizoni VG:

$ vgchange -a y
$ mkdir /mnt/lvroot && mount /dev/mapper/vg_c6m1-lv_root /mnt/lvroot 

Dhe gjithçka është atje, duke përfshirë çelësin në direktorinë kryesore kryesore - /root/sweet.

3. Ne jemi ende duke u përpjekur për të ringjallur serverin tonë në mënyrë që ai të fillojë normalisht. Të gjitha vëllimet logjike nga tonat /dev/md0 (ku gjetëm gjithçka) tërhiqeni atë /dev/sdb2, ku fillimisht funksionoi i gjithë serveri.

$ pvmove /dev/md0 /dev/sdb2
$ vgreduce vg_c6m1 /dev/md0

Fikim serverin, heqim disqet 1 dhe 3, lëmë të dytin, nisim nga Live CD/DVD në Rescue. Gjeni ndarjen e nisjes dhe rivendosni ngarkuesin në grub:

root (hd0,0)
setup (hd0)

Ne heqim diskun e nisjes dhe ngarkojmë me sukses, por faqja nuk funksionon.

4. Ekzistojnë dy mundësi për të hapur një faqe interneti: konfiguroni Apache nga e para ose përdorni nginx me php-fpm të konfiguruar tashmë paraprakisht:

$ /etc/init.d/nginx start
$ /etc/init.d/php-fpm start

Më në fund, duhet të nisni MySQL:

$ /etc/init.d/mysqld start

Nuk do të fillojë, dhe përgjigja qëndron në /var/log/mysql. Sapo të zgjidhni problemin me MySQL, faqja do të funksionojë, në faqen kryesore do të ketë një çelës - RichardGCCMatthewGNUStallman! Tani kemi akses në 1C dhe punonjësit do të mund të marrin pagat e tyre. Dhe si gjithmonë, keni shumë punë përpara për të vendosur infrastrukturën dhe sigurinë në kompani.

Ne gjithashtu mund të ndajmë edhe një herë një listë të librave që na ndihmuan ne dhe pjesëmarrësit tanë të përgatitemi për lojën: linux.mail.ru/books.

Faleminderit që jeni me ne! Qëndroni të pritshëm për njoftimet e ndeshjeve të radhës!

Burimi: www.habr.com

Shto një koment