Linux Quest. Zorionak irabazleei eta konta iezaguzu zereginen irtenbideak

Linux Quest. Zorionak irabazleei eta konta iezaguzu zereginen irtenbideak

Martxoaren 25ean ireki genuen izena emateko Linux Quest, Linux sistema eragilearen maitale eta adituentzako Jokoa da hau. Estatistika batzuk: 1117 lagunek izena eman zuten jokoan, horietako 317k gutxienez gako bat aurkitu zuten, 241ek arrakastaz burutu zuten lehen faseko zeregina, 123k - bigarrenak eta 70ek hirugarren etapa gainditu zuten. Gaur gure jokoa amaitu da eta gure irabazleak zoriontzen ditugu!

  • Alexander Teldekovek lortu zuen lehen postua.
    Alexanderk bere artean esan zuen sistemaren administratzaile tipikoena dela. Volgograden bizi da, hogei urte inguru daramatza Unix antzeko sistemak administratzen. Internet hornitzaileetan, banku batean eta sistema integratzaile batean lan egitea lortu nuen. Orain urrunetik lan egiten du enpresa txiki batean, atzerriko bezero handi baten hodeiko azpiegituretan lanean. Irakurtzea eta musika entzutea gustatzen zaio. Jokoari buruz, Alexander-k esan zuen jokoa bere osotasunean gustatzen zitzaiola, horrelako zereginak maite dituela. Hackerrank-en antzeko zerbait egin nuen enpresetako batean egindako elkarrizketa batean, interesgarria izan zen.
  • Bigarren postua - Roman Suslov.
    Moskuko eleberria. 37 urte ditu. Linux/Unix ingeniari gisa lan egiten du Jet Infosystems-en. Lanean, Linux/Unix sistemak + SAN administratu eta konpondu behar ditut. Interesak askotarikoak dira: Linux sistemak, programazioa, alderantzizko ingeniaritza, informazioaren segurtasuna, Arduino. Jokoari buruz Romanek adierazi zuen joko orokorrean gustatu zitzaiola. Β«Burua pixka bat luzatu eta eguneroko lanaren eguneroko grisetik atseden hartu nuen. πŸ™‚ Zeregin gehiago edukitzea gustatuko litzaidake, bestela probatzeko astirik izan baino lehen, partida amaituta zegoenΒ».
  • Hirugarren - alex3d.
    Alex Moskun bizi da eta software garapenean lan egiten du. "Eskerrik asko lehiaketagatik, interesgarria izan zen nire google-fu gaitasunak probatzea".

Baita 10 jokalari onenen sailkapenean ere:

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

Gure arazo guztiak konpontzeko aukera asko daudela ulertzen dugu; jarraian deskribatzen dira irtenbide posible batzuk.

1. Lehen etapa

"Benetan administratzailea al zara?" deitu genion, zeregina nahiko erraza zenez: lanpara beroko zerbitzu bat konpontzea.

1.1. Datu interesgarriak:

Partidako lehen 15 minutuetan bi jokalarik aurkitu zuten lehen giltza, eta lehen orduan hiru lider izan genituen lana bete zutenak.

1.2. Ariketa

Denbora luzez informazio teknologien aditurik ez zegoen enpresa batera joan zinen lanera. Gauzak ordenatzen hasi baino lehen, bulegoko lana blokeatzen ari den erretzearen arazoa konpondu behar duzu.

Garbiketa andreak fregonarekin harrapatu zuen zerbitzariaren armairuko elikatze-kablea. Energia berreskuratu da, baina webgune oso garrantzitsu bat oraindik ez da funtzionatzen. Webgunea garrantzitsua da, enpresa ez delako oso arduratzen informazioaren segurtasunarekin, eta honen orrialde nagusian testu garbian aurki dezakezu CEOren ordenagailuaren administratzailearen pasahitza.

Herenegun pasahitza aldatu zuten, baina denek ahaztu zuten berria, zuzendariak ezin du lanik egin. Zurrumurruak daude makina honetan gako gehiago zeudela, kontabilitate dokumentuen babeskopia deszifratzen lagun gintezkeenak.

Guztiek arazoa berehala konpontzea espero dute!

1.3. Irtenbidea

1. Lehenik eta behin, makina birtualean erro pasahitza aldatu behar duzu bertara sartzeko. Hasten denean, hau Ubuntu 16.04 zerbitzaria dela ohartzen gara.

Erroko pasahitza berrezartzeko, makina berrabiaraziko dugu, kargatzean, grub menua bistaratzen den unean, joan Ubuntu elementua editatzera "e" botoiarekin. Editatu linux lerroa, gehitu amaierara init=/bin/bash. Ctrl+x bidez kargatzen dugu, bash bat lortzen dugu. Berriz muntatu erroa rw-rekin, aldatu pasahitza:

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

Ez ahaztu sinkronizazioaz, berrabiarazi.

2. Baldintzak dio gure web zerbitzariak ez duela funtzionatzen, begiratu:

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

Hau da, hain zuzen ere, Apache exekutatzen ari da, baina 404 kodearekin erantzuten du. Ikus dezagun konfigurazioa:

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

Hemen ere gako bat dago - StevenPaulSteveJobs.

Bidea egiaztatzea /usr/share/WordPress - ez dago horrelakorik, baina badago /usr/share/wordpress. Editatu konfigurazioa eta berrabiarazi Apache.

$ systemctl restart apache2

3. Saiatu berriro, errorea jasoko dugu:

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

Datu-basea ez al dago martxan?

$ systemctl status mysql
Active: active (running)

Zein da ba arazoa? Asmatu behar dugu. Horretarako, MySQL-ra sarbidea lortu behar duzu, atalean deskribatzen den moduan dokumentazioa. Dokumentazio puntuetako batek aukera erregistratzea gomendatzen du skip-grant-tables Π² /etc/mysql/mysql.conf.d/mysqld.cnf. Hemen ere gako bat dago - AugustaAdaKingByron.

Erabiltzaileen eskubideak zuzentzea 'wp'@'localhost'. MySQL abiarazten dugu, sarean eskuragarri jartzen dugu, konfigurazioko aukera komentatuz skip-networking.

4. Urrats hauen ondoren, web zerbitzaria abiarazten da, baina guneak oraindik ez du funtzionatzen

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

Fitxategiaren eskubideak editatzen ditugu.

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

Orria freskatzen dugu, webgunera joan eta gakoa aurkitzen dugu - BjarneStroustrup! Hiru gakoak aurkitu ditugu, gure zuzendariak lan egin dezake, kontabilitate fitxategiak deszifratu ditugu. Denak pozik daude, eta lan handia duzu aurretik azpiegiturak, babeskopiak eta segurtasuna konfiguratzeko enpresan.

2. Bigarren etapa

Analitikak biltzearen arazoa konpondu behar zen. Denek maite dute analitika: nork erabiltzen duen, non eta zer kantitatetan. Ingeniari guztiek bizitzan modu batean edo bestean topa dezaketen kasu bat bururatu zitzaigun.

2.1. Datu interesgarriak

Gure jokalari batek gako zuzena sartu zuen partidako lehen 10 minutuetan, eta lehen orduan zeregina bete zuen lider bat genuen.

2.2. Ariketa

Enpresan lanera joan zinen, zuzendariak etorri zitzaizkizu eta Afrikatik nori bidalitako gutunak aurkitzeko eskatu zizun. Horietan oinarrituta eraiki behar ditugu 21 hartzaile nagusien helbideak. Hartzaileen helbideen lehen letrak dira gakoa. Gauza bat: gutunak bidali ziren posta zerbitzaria ez da kargatzen. Guztiek arazoa berehala konpontzea espero dute!

2.3. Irtenbidea

1. Zerbitzaria ez da abiarazten fstab-en ez dagoen swap partizio bat dela eta, kargatzean, sistema muntatzen saiatzen da eta huts egiten du. Nola abiarazi?

Deskargatu irudia, CentOS 7 deskargatu dugu, Live CD/DVD-tik abiarazi (Arazoak -> Erreskate), sistema muntatu, editatu /etc/fstab. Berehala aurkitzen dugu lehen giltza - GottfriedWilhelm11646Leibniz!

Sortu trukea:

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

2. Beti bezala, ez dago pasahitzik, erroko pasahitza aldatu behar duzu makina birtualean. Lehen zereginean hori egin genuen jada. Zerbitzarian aldatzen eta saioa egiten dugu, baina berehala berrabiarazi egiten da. Zerbitzaria gehiegi kargatuta dago, erregistro guztiak arretaz begiratzeko astirik ere ez duzulako abiaduran. Nola ulertu gertatzen ari dena?

Berriz ere livecd-tik abiarazten dugu, sistemaren erregistroak arretaz aztertu eta, badaezpada, cron-a aztertzen dugu, halako aldizkakotasuna baita. Bertan aurkitzen dugu arazoa eta bigarren gakoa - Alan1912MathisonTuring!

Beharrezkoa /etc/crontab ezabatu edo iruzkin lerroa echo b > /proc/sysrq-trigger.

3. Ondoren zerbitzaria kargatu da, eta kudeatzaileen zeregina bete dezakezu: "Zeintzuk dira Afrikako helbideak?" Informazio hori, oro har, publikoaren eskura dago. Informazio hau Interneten aurki dezakezu β€œip helbidea africa”, β€œgeoip datu-basea” esaldiak erabiliz. Arazoa konpontzeko, doan erabil daitezkeen helbideak banatzeko datu-baseak (geoip) erabil ditzakezu. Datu-basea estandar gisa erabili dugu MaxMind GeoLite2, Creative Commons Aitortu-PartekatuBerdin 4.0 lizentziapean eskuragarri.

Saia gaitezen gure arazoa Linux sistemaren utilitateak soilik erabiliz konpontzen, baina orokorrean modu askotara konpondu daiteke: testuak iragazteko utilitateak erabiliz eta hainbat programazio-lengoaiatako script-ak erabiliz.

Hasteko, "igorle-hartzaile IP" bikoteak jasoko ditugu posta-erregistrotik /var/log/maillog (eraiki dezagun posta elektronikoko hartzaileen taula - igorlearen IP). Hau komando honekin egin daiteke:

$ 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

Eta Afrikako helbideen datu-base bat osatzen jarraitu aurretik, ikus ditzagun bidaltzaileen IP helbide nagusiei.

$ 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]

Horien guztien artean, goitik datozen lehen hiru hartzaileak argi eta garbi nabarmentzen dira letra kopuruari dagokionez. Goiko 3 honetatik helbideetara bidali duten igorleen IP helbideak txertatzen badituzu, sare jakin batzuen nagusitasun argia nabarituko duzu:

$ 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

105/8, 41/8, 196/8,197/8 sare gehienak AFRINIC-i esleitzen zaizkio - Interneteko baliabideak banatzen dituzten eskualdeko bost Internet erregistratzaileetako bati. AFRINIC helbide-espazioa Afrikan zehar banatzen du. Eta 41/8 AFRINIC-i egiten dio erreferentzia erabat.

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

Horrela, arazoaren erantzuna, hain zuzen ere, erregistroan bertan dago.

$ 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]

Etapa honetan β€œLinuxBenedictTorvadst” katea lortuko dugu.

Gako zuzena: "LinusBenedictTorvalds".

Sortzen den kateak idazketa bat dauka gako zuzenari dagokionez azken 3 karaktereetan. Hau da, hautatu ditugun sareak ez daudelako guztiz Afrikako herrialdeetara dedikatuta eta mezu elektronikoak gure erregistroko IP helbideen arabera banatzeko moduari zor zaio.

Afrikako herrialdeei esleitutako sare handienen zehaztapen nahikoarekin, erantzun zehatza lor daiteke:

$ 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]

Arazoa beste modu batera ere konpondu daiteke.
Deskargatu MaxMind, deskonprimitu eta hurrengo hiru komandoek ere gure arazoa konpontzen dute.

$ 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

Era batera edo bestera, azkenean estatistikak kalkulatu genituen, eta arduradunek lan egiteko behar zituzten datuak jaso zituzten!

3. Hirugarren etapa

Hirugarren etapa lehenengoaren antzekoa da - lanpara epeleko zerbitzua ere konpondu behar duzu, baina dena lehen zereginean baino konplikatuagoa da.

3.1. Datu interesgarriak

Lehenengo 15 minutuetan, hiru jokalarik aurkitu zuten lehen giltza; etapa hasi eta 2 ordu eta 20 minutura, gure irabazleak bete zuen lana.

3.2. Ariketa

Enpresaren dokumentu guztiak barneko Wiki zerbitzari batean gordeta dauden enpresa batera joan zinen lanera. Iaz, ingeniari batek zerbitzarirako 3 disko berri agindu zituen lehendik zegoen batez gain, sistema akatsak jasan ahal izateko, diskoak nolabaiteko array batean jarri behar zirela argudiatuta. Zoritxarrez, instalatu eta aste batzuetara, ingeniaria Indiara oporretan joan zen eta ez zen itzuli.

Zerbitzariak hutsegiterik gabe funtzionatu zuen hainbat urtez, baina duela egun pare bat konpainiaren sarea hackeatu zuten. Argibideen arabera, segurtasun langileek zerbitzaritik diskoak kendu eta zuri bidali zizkioten. Garraioan zehar, disko bat ezinbestean galdu zen.

Wikiaren funtzionaltasuna berreskuratu behar dugu; lehenik eta behin, wiki orrien edukia interesatzen zaigu. Wiki honen orrietako batean zegoen testu zati jakin bat 1C zerbitzariaren pasahitza da eta premiazkoa da hura desblokeatzeko.

Horrez gain, nonbait wiki orrietan edo beste leku batean erregistro zerbitzariaren eta bideo-zaintza zerbitzariaren pasahitzak zeuden, eta horiek ere berreskuratzea komenigarria litzateke; haiek gabe ezinezkoa da gertakaria ikertzea. Beti bezala, arazoa berehala konpontzea espero dugu!

3.3. Irtenbidea

1. Dauzkagun diskoetatik banan-banan abiarazten saiatzen gara eta nonahi mezu bera jasotzen dugu:

No bootable medium found! System halted 

Zerbaitetik abiarazi behar duzu. Zuzeneko CD/DVD batetik abiatzeak (Arazoak -> Erreskate) berriro laguntzen du. Kargatzean, abioko partizioa aurkitzen saiatzen gara, ezin dugu aurkitu, shellean bukatzen dugu. Diskoekin zer eta nola egin aztertzen saiatzen ari gara. Jakina da hiru direla. Horretarako tresna gehiago daude CentOS-en 7. bertsioan, non komandoak dauden blkid edo lsblk, diskoei buruzko informazio guztia erakusten diguna.

Nola eta zer egiten dugu:

$ ls /dev/sd*

Berehala nabari da hori

/dev/sdb1 - ext4
/dev/sdb2 - Ρ‡Π°ΡΡ‚ΡŒ lvm
/dev/sda1 ΠΈ /dev/sdc1 - части Ρ€Π΅ΠΉΠ΄Π°
/dev/sda2 ΠΈ /dev/sdc2 - ΠΏΡ€ΠΎ Π½ΠΈΡ… Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ извСстно Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚

Sdb1 muntatzen dugu, argi dago hau CentOS 6-ren abiarazte partizioa dela.

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

Jakina, grub atalera joan eta bertan aurkitzen dugu lehen gakoa - James191955Gosling ezohiko fitxategi batean.

2. Pvs eta lvs aztertzen ditugu, LVMrekin lan egiten baitugu. Ikusten dugu 2 bolumen fisiko egon behar direla, bat ez dago kokatuta eta uid galdu batengatik kexatzen da. Ikusten dugu 2 bolumen logiko egon behar direla: root eta swap, root partzialki galtzen den bitartean (bolumenaren P atributua). Ezin da muntatu, pena! Benetan behar dugu.

2 disko gehiago daude, begiratu, muntatu eta muntatu egiten ditugu:

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

Begiratzen dugu, hau CentOS 6-ren abiarazte partizioa dela eta dagoeneko martxan dagoenaren bikoiztua dela ikus dezakegu /dev/sdb1, eta hemen berriro gako bera - DennisBMacAlistairCRitchie!
Ea nola muntatzen den /dev/md127.

$ mdadm --detail /dev/md127

Ikusten dugu 4 diskotatik muntatu behar zela, baina bitik muntatu zen /dev/sda1 ΠΈ /dev/sdc1, sistemako 2 eta 4 zenbakiak izan behar zuten. Hori suposatzen dugu /dev/sda2 ΠΈ /dev/sdc2 Array bat ere bildu dezakezu. Ez dago argi zergatik ez dagoen horien metadaturik, baina hori administratzailearen kontzientzian dago, Goa-n nonbait dagoen. RAID10 egon behar dela suposatzen dugu, nahiz eta aukerak egon. Guk biltzen dugu:

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

Blkid, pvs, lvs aztertzen ditugu. Lehen falta zitzaigun bolumen fisiko bat bildu dugula deskubritzen dugu.

lvroot berehala konpondu zen, muntatzen dugu, baina lehenik VG aktibatu:

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

Eta dena hor dago, root etxeko direktorioko gakoa barne - /root/sweet.

3. Oraindik gure zerbitzaria berpizten saiatzen ari gara, normal abiarazteko. Gure liburuki logiko guztiak /dev/md0 (dena aurkitu dugun tokira) arrastatu /dev/sdb2, non zerbitzari osoak lan egiten zuen hasieran.

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

Zerbitzaria itzaltzen dugu, 1 eta 3 diskoak kendu, bigarrena utzi, Live CD/DVD-tik Rescue-n abiarazi. Aurkitu abio-partizioa eta berrezarri abio-kargatzailea grub-en:

root (hd0,0)
setup (hd0)

Abiatzeko diskoa erauzi eta behar bezala kargatzen dugu, baina guneak ez du funtzionatzen.

4. Webgune bat abiarazteko bi aukera daude: konfiguratu Apache hutsetik edo erabili nginx aldez aurretik konfiguratuta dagoen php-fpm-rekin:

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

Azkenik, MySQL abiarazi behar duzu:

$ /etc/init.d/mysqld start

Ez da hasiko, eta erantzuna bertan dago /var/log/mysql. MySQL-rekin arazoa konpondu bezain laster, guneak funtzionatuko du, orrialde nagusian gako bat egongo da - RichardGCCMatthewGNUStallman! Orain 1C sarbidea dugu, eta langileek soldata jaso ahal izango dute. Eta beti bezala, lan handia duzu aurretik enpresan azpiegiturak eta segurtasuna ezartzeko.

Guri eta gure parte-hartzaileek jokoa prestatzen lagundu diguten liburuen zerrenda ere parteka dezakegu berriro ere: linux.mail.ru/books.

Eskerrik asko gurekin egoteagatik! Egon adi hurrengo partiden iragarpenei!

Iturria: www.habr.com

Gehitu iruzkin berria