Linux Quest. Prosit lir-rebbieħa u għidilna dwar is-soluzzjonijiet għall-kompiti

Linux Quest. Prosit lir-rebbieħa u għidilna dwar is-soluzzjonijiet għall-kompiti

Fil-25 ta’ Marzu ftaħna r-reġistrazzjoni għal Linux Quest, Din hija Logħba għal min iħobb u esperti tas-sistema operattiva Linux. Xi statistika: 1117 persuna rreġistrati għal-logħba, 317 minnhom sabu mill-inqas ċavetta waħda, 241 temmew b'suċċess il-kompitu tal-ewwel stadju, 123 - it-tieni u 70 għaddew mit-tielet stadju. Illum il-logħba tagħna waslet fi tmiemha u nifirħu lir-rebbieħa tagħna!

  • Alexander Teldekov ħa l-ewwel post.
    Alexander qal bejnu u bejn ruħu li huwa l-aktar amministratur tas-sistema tipika. Jgħix f'Volgograd, ilu jamministra diversi sistemi simili għal Unix għal madwar għoxrin sena. Irnexxieli naħdem f'fornituri tal-Internet, bank, u integratur tas-sistema. Issa jaħdem mill-bogħod f'kumpanija żgħira, jaħdem fuq infrastruttura tal-cloud għal klijent barrani kbir. Iħobb jaqra u jisma' l-mużika. Dwar il-Logħba, Alexander qal li għoġob il-logħba kollha kemm hi, iħobb kompiti bħal dawn. Waqt intervista f'waħda mill-kumpaniji għamilt xi ħaġa simili għal Hackerrank, kien interessanti.
  • It-tieni post - Roman Suslov.
    Rumanz minn Moska. Huwa għandu 37 sena. Jaħdem bħala inġinier Linux/Unix f'Jet Infosystems. Fuq ix-xogħol, għandi namministra u nsolvi l-problemi tas-sistemi Linux/Unix + SAN. L-interessi huma varjati: sistemi Linux, programmar, reverse engineering, sigurtà tal-informazzjoni, Arduino. Dwar il-Logħba Roman innota li huwa għoġob il-logħba b'mod ġenerali. “Frejdt imħuħ ftit u ħadt pawża mill-ħajja griża ta’ kuljum tax-xogħol ta’ kuljum. 🙂 Nixtieq li jkolli aktar kompiti, inkella qabel ma kelli l-ħin biex nieħu togħma minnha, il-logħba kienet diġà spiċċat.”
  • It-tielet - alex3d.
    Alex jgħix f'Moska u jaħdem fl-iżvilupp tas-softwer. "Grazzi għall-konkors, kien interessanti li nittestja l-ħiliet tiegħi ta' google-fu."

Ukoll fil-klassifika tal-aqwa 10 plejers:

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

Aħna nifhmu li hemm ħafna għażliet biex insolvu l-problemi kollha tagħna; xi wħud mis-soluzzjonijiet possibbli huma deskritti hawn taħt.

1. L-ewwel stadju

Aħna sejjaħnieha "Int verament amministratur?", peress li l-kompitu kien pjuttost sempliċi - li tiffissa servizz ta 'lampa sħuna.

1.1. Fatti interessanti:

Żewġ plejers sabu l-ewwel ċavetta fl-ewwel 15-il minuta tal-logħba, u fl-ewwel siegħa kellna tliet leaders li lestew il-kompitu.

1.2. Eżerċizzju

Int mort taħdem f'kumpanija fejn għal żmien twil ma kienx hemm speċjalista kompetenti tat-teknoloġija tal-informatika. Qabel ma tibda tpoġġi l-affarijiet fl-ordni, għandek bżonn issolvi l-problema tal-ħruq li qed timblokka x-xogħol tal-uffiċċju.

Il-mara tat-tindif qabdet il-kejbil tad-dawl tal-kabinett tas-server b'mopp. L-enerġija ġiet restawrata, iżda websajt importanti ħafna għadha ma taħdimx. Il-websajt hija importanti għaliex il-kumpanija mhix imħassba ħafna dwar is-sigurtà tal-informazzjoni, u fuq il-paġna ewlenija ta 'dan tista' ssib f'test ċar il-password tal-amministratur għall-kompjuter tal-CEO.

Il-ġurnata l-oħra nbidlet il-password, iżda kulħadd nesa l-ġdida, id-direttur ma jistax jaħdem. Hemm xnigħat li kien hemm aktar ċwievet fuq din il-magna li jistgħu jgħinuna niddeċifraw il-kopja backup tad-dokumenti tal-kontabilità.

Kulħadd jistenna soluzzjoni fil-pront tal-kwistjoni!

1.3. Soluzzjoni

1. L-ewwelnett, għandek bżonn tibdel il-password tal-għeruq fuq il-magna virtwali sabiex tikseb aċċess għaliha. Meta nibdew, ninnutaw li dan huwa Ubuntu 16.04 Server.

Biex tirrisettja l-password ta 'l-għerq, aħna nibdew mill-ġdid il-magna, meta tagħbija, fil-mument li jintwera l-menu tal-grub, mur teditja l-oġġett Ubuntu bil-buttuna "e". Editja l-linja linux, żidha fl-aħħar init=/bin/bash. Aħna tagħbija permezz Ctrl + x, aħna tikseb bash. Erġa' munta l-għerq b'rw, ibdel il-password:

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

Tinsiex dwar is-sinkronizzazzjoni, reboot.

2. Il-kundizzjoni tgħid li s-server tal-web tagħna mhux qed jaħdem, ara:

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

Jiġifieri, fil-fatt, Apache qed jaħdem, iżda jirrispondi bil-kodiċi 404. Ejja nħarsu lejn il-konfigurazzjoni:

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

Hemm ukoll ċavetta hawn - StevenPaulSteveJobs.

Iċċekkja t-triq /usr/share/WordPress - m'hemm l-ebda ħaġa bħal din, iżda hemm /usr/share/wordpress. Editja l-konfigurazzjoni u erġa ibda Apache.

$ systemctl restart apache2

3. Erġa' pprova, niksbu l-iżball:

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

Id-database mhix qed taħdem?

$ systemctl status mysql
Active: active (running)

X'ġara? Għandna bżonn insemmu. Biex tagħmel dan, għandek bżonn tikseb aċċess għal MySQL, kif deskritt f' dokumentazzjoni. Wieħed mill-punti tad-dokumentazzjoni jirrakkomanda li nirreġistraw l-għażla skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. Hemm ukoll ċavetta hawn - AugustaAdaKingByron.

Korrezzjoni tad-drittijiet tal-utent 'wp'@'localhost'. Inniedu MySQL, nagħmluha aċċessibbli fuq in-netwerk, billi nikkummentaw l-għażla fil-konfigurazzjoni skip-networking.

4. Wara dawn il-passi, is-server tal-web jibda, iżda s-sit għadu ma jaħdimx għaliex

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

Aħna neditjaw id-drittijiet għall-fajl.

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

Aħna jġedded il-paġna, immorru fis-sit u nsibu ċ-ċavetta - BjarneStroustrup! Sibna t-tliet ċwievet, id-direttur tagħna jista 'jaħdem, aħna decrypted il-fajls tal-kontabilità. Kulħadd huwa kuntent, u għandek ħafna xogħol quddiemek biex twaqqaf infrastruttura, backups u sigurtà fil-kumpanija.

2. It-tieni stadju

Kien meħtieġ li tissolva l-problema tal-ġbir tal-analiżi. Kulħadd iħobb l-analitika - min jużaha, fejn u f'liema kwantitajiet. Ħriġna b’każ li l-inġiniera kollha jistgħu jiltaqgħu magħhom f’xi forma jew oħra fil-ħajja.

2.1. Fatti interessanti

Wieħed mill-plejers tagħna daħal iċ-ċavetta t-tajba fl-ewwel 10 minuti tal-logħba, u fl-ewwel siegħa kellna mexxej li lesta l-kompitu.

2.2. Eżerċizzju

Int mort taħdem fil-kumpanija, ġew għandkom maniġers u talbuk issib lil min intbagħtu ittri mill-Afrika. Irridu nibnu l-aqwa 21 indirizz tar-riċevitur ibbażati fuqhom. L-ewwel ittri tal-indirizzi tar-riċevituri huma ċ-ċavetta. Ħaġa waħda: is-server tal-posta li permezz tiegħu intbagħtu l-ittri ma jgħabbix. Kulħadd jistenna soluzzjoni fil-pront tal-kwistjoni!

2.3. Soluzzjoni

1. Is-server ma jibbutjax minħabba partizzjoni ta 'skambju ineżistenti f'fstab, meta tgħabbi, is-sistema tipprova twaħħalha u tiġġarraf. Kif boot?

Niżżel l-immaġni, niżżilna CentOS 7, ibbutja minn Live CD/DVD (Issolvi l-problemi -> Salvataġġ), mmunta s-sistema, editja /etc/fstab. Mill-ewwel insibu l-ewwel ċavetta - GottfriedWilhelm11646Leibniz!

Oħloq tpartit:

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

2. Bħal dejjem, m'hemm l-ebda password, għandek bżonn tibdel il-password ta 'l-għeruq fuq il-magna virtwali. Dan diġà għamilna fl-ewwel biċċa xogħol. Aħna nibdlu u nilloggjaw b'suċċess fis-server, iżda immedjatament tidħol f'reboot. Is-server huwa mgħobbi żżejjed b'tali veloċità li lanqas ikollok ħin biex tħares lejn ir-zkuk kollha bir-reqqa. Kif tifhem dak li qed jiġri?

Għal darb'oħra nibdew mill-livecd, nistudjaw bir-reqqa r-reġistri tas-sistema u, fil-każ, inħarsu lejn il-cron, peress li tali perjodiċità. Hemm insibu l-problema u t-tieni ċavetta - Alan1912MathisonTuring!

Meħtieġa fi /etc/crontab ħassar jew ikkummenta l-linja echo b > /proc/sysrq-trigger.

3. Wara dan tagħbija s-server, u tista 'tlesti l-kompitu tal-maniġers: "X'inhuma l-indirizzi fl-Afrika?" Din l-informazzjoni hija ġeneralment disponibbli għall-pubbliku. Tista’ ssib din l-informazzjoni fuq l-Internet billi tuża l-frażijiet “ip address africa”, “geoip database”. Biex issolvi l-problema, tista 'tuża databases ta' distribuzzjoni ta 'indirizzi disponibbli liberament (geoip). Aħna użajna d-database bħala standard MaxMind GeoLite2, disponibbli taħt liċenzja Creative Commons Attribution-ShareAlike 4.0.

Ejja nippruvaw insolvu l-problema tagħna billi tuża biss utilitajiet tas-sistema Linux, iżda b'mod ġenerali tista 'tiġi solvuta f'numru kbir ta' modi: bl-użu ta 'utilitajiet ta' filtrazzjoni tat-test u bl-użu ta 'skripts f'diversi lingwi ta' programmar.

Biex tibda, aħna sempliċiment nieħdu l-pari "IP mittent-riċevitur" mir-reġistru tal-posta /var/log/maillog (ejja nibnu tabella tar-riċevituri tal-email - sender IP). Dan jista 'jsir bil-kmand li ġej:

$ 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

U qabel ma nkomplu niġbru database ta 'indirizzi Afrikani, ejja nagħtu ħarsa lejn l-indirizzi IP ta' fuq tal-mittenti.

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

Fosthom kollha, l-ewwel tliet riċevituri minn fuq jispikkaw b’mod ċar f’termini tan-numru ta’ ittri. Jekk tgħaqqad l-indirizzi IP tal-mittenti li bagħtu lil indirizzi minn dawn it-3 top, tinnota predominanza ċara ta 'ċerti netwerks:

$ 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

Ħafna min-netwerks 105/8, 41/8, 196/8,197/8 huma allokati lil AFRINIC - wieħed mill-ħames reġistraturi reġjonali tal-Internet li jqassmu r-riżorsi tal-Internet. AFRINIC iqassam spazju għall-indirizzi madwar l-Afrika. U 41/8 jirreferi għal AFRINIC kompletament.

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

Għalhekk, it-tweġiba għall-problema hija, fil-fatt, fil-ġurnal innifsu.

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

F'dan l-istadju nikseb is-sekwenza "LinuxBenedictTorvadst".

Ċavetta korretta: "LinusBenedictTorvalds".

Is-sekwenza li tirriżulta fiha typo fir-rigward taċ-ċavetta korretta fl-aħħar 3 karattri. Dan minħabba l-fatt li n-netwerks li għażilna mhumiex iddedikati għal kollox għall-pajjiżi Afrikani u għall-mod kif l-emails huma mqassma mill-indirizzi IP fil-log tagħna.

Bi speċifikazzjoni suffiċjenti tal-akbar netwerks allokati lill-pajjiżi Afrikani, tista’ tinkiseb tweġiba preċiża:

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

Il-problema tista’ tissolva wkoll b’mod ieħor.
Niżżel MaxMind, spakkjah, u t-tliet kmandi li jmiss issolvi wkoll il-problema tagħna.

$ 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

B'xi mod jew ieħor, aħna eventwalment ikkalkula l-istatistika, u l-maniġers irċevew id-dejta li kellhom bżonn biex jaħdmu!

3. It-tielet stadju

It-tielet stadju huwa kemmxejn simili għall-ewwel - għandek bżonn ukoll li tiffissa s-servizz tal-lampa sħuna, iżda kollox huwa aktar ikkumplikat milli fl-ewwel kompitu.

3.1. Fatti interessanti

Fl-ewwel 15-il minuta, tliet plejers sabu l-ewwel ċavetta; sagħtejn u 2 minuta wara l-bidu tal-istadju, ir-rebbieħ tagħna temm il-kompitu.

3.2. Eżerċizzju

Int mort taħdem għal kumpanija fejn id-dokumenti kollha tal-kumpanija huma maħżuna fuq server intern tal-Wiki. Is-sena li għaddiet, inġinier ordna 3 diski ġodda għas-server minbarra wieħed eżistenti, u argumenta li biex is-sistema tkun tolleranti għall-ħsarat, id-diski kellhom bżonn jitqiegħdu f'xi tip ta 'arrays. Sfortunatament, ftit ġimgħat wara l-installazzjoni tagħhom, l-inġinier mar vaganza l-Indja u ma rritornax.

Is-server ħadem mingħajr fallimenti għal diversi snin, iżda ftit tal-jiem ilu n-netwerk tal-kumpanija ġie hacked. Skont l-istruzzjonijiet, il-persunal tas-sigurtà neħħa d-diski mis-server u bagħtulek. Waqt it-trasport, diska waħda ntilfet b'mod irrimedjabbli.

Irridu nirrestawraw il-funzjonalità tal-Wiki; l-ewwelnett, aħna interessati fil-kontenut tal-paġni tal-wiki. Ċerta biċċa test li kienet fuq waħda mill-paġni ta' din il-wiki hija l-password għas-server 1C u hija meħtieġa b'mod urġenti biex tinfetaħ.

Barra minn hekk, x'imkien fuq il-paġni tal-wiki jew f'post ieħor kien hemm passwords għas-server tal-ġurnal u s-server tas-sorveljanza bil-vidjo, li jkunu wkoll mixtieqa li jiġu rkuprati; mingħajrhom, l-investigazzjoni tal-inċident hija impossibbli. Bħal dejjem, nistennew riżoluzzjoni fil-pront tal-kwistjoni!

3.3. Soluzzjoni

1. Nippruvaw nibdew wieħed wieħed mid-diski li għandna u kullimkien nirċievu l-istess messaġġ:

No bootable medium found! System halted 

Ikollok bżonn li boot minn xi ħaġa. Ibbutjar minn Live CD/DVD (Troubleshooting -> Rescue) jgħin mill-ġdid. Meta tagħbija, nippruvaw insibu l-partizzjoni tal-but, ma nistgħux insibuha, nispiċċaw fil-qoxra. Qed nippruvaw nistudjaw x'u kif nagħmlu bid-diski. Huwa magħruf li hemm tlieta minnhom. Hemm aktar għodod għal dan fis-7 verżjoni ta 'CentOS, fejn hemm kmandi blkid jew lsblk, li juruna l-informazzjoni kollha dwar id-diski.

Kif u x'nagħmlu:

$ ls /dev/sd*

Huwa immedjatament ovvju li

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

Aħna mmuntaw sdb1, huwa ċar li din hija l-partizzjoni tal-but ta 'CentOS 6.

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

Ovvjament, immorru fit-taqsima tal-grub u nsibu l-ewwel ċavetta hemmhekk - James191955Gosling f'fajl mhux tas-soltu.

2. Aħna nistudjaw pvs u lvs, peress li naħdmu ma 'LVM. Naraw li għandu jkun hemm 2 volumi fiżiċi, wieħed ma jinsabx u jilmenta dwar uid mitluf. Naraw li għandu jkun hemm 2 volumi loġiċi: għerq u tpartit, filwaqt li għerq jintilef parzjalment (l-attribut P tal-volum). Mhuwiex possibbli li jintramaw, li hija ħasra! Għandna bżonnu tassew.

Hemm 2 diski oħra, aħna nħarsu lejhom, narmawhom u narmawhom:

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

Aħna nħarsu, nistgħu naraw li din hija l-partizzjoni tal-but ta 'CentOS 6 u duplikat ta' dak li diġà jinsab fuq /dev/sdb1, u hawn għal darb'oħra l-istess ċavetta - DennisBMacAlistairCRitchie!
Ejja naraw kif huwa mmuntat /dev/md127.

$ mdadm --detail /dev/md127

Naraw li kellu jiġi mmuntat minn 4 diski, iżda ġie mmuntat minn tnejn /dev/sda1 и /dev/sdc1, kellhom ikunu n-numri 2 u 4 fis-sistema. Nassumu li minn /dev/sda2 и /dev/sdc2 Tista 'wkoll tiġbor firxa. Mhuwiex ċar għaliex m'hemm l-ebda metadata fuqhom, iżda dan huwa fuq il-kuxjenza ta 'l-admin, li huwa x'imkien f'Goa. Nassumu li għandu jkun hemm RAID10, għalkemm hemm għażliet. Aħna niġbru:

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

Inħarsu lejn blkid, pvs, lvs. Niskopru li ġbarna volum fiżiku li qabel ma kellniex.

lvroot ġie msewwija immedjatament, aħna narmawh, iżda l-ewwel nattiva VG:

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

U kollox qiegħed hemm, inkluż iċ-ċavetta fid-direttorju tad-dar tal-għeruq - /root/sweet.

3. Għadna qed nippruvaw inqajmu s-server tagħna sabiex jibda b'mod normali. Il-volumi loġiċi kollha minn tagħna /dev/md0 (fejn sibna kollox) drag it to /dev/sdb2, fejn is-server kollu inizjalment ħadem.

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

Aħna itfi s-server, neħħi d-diski 1 u 3, inħallu t-tieni waħda, ibbutja mis-CD/DVD Live fis-Salvataġġ. Sib il-partizzjoni tal-boot u restawra l-bootloader f'grub:

root (hd0,0)
setup (hd0)

Aħna nqatgħu l-boot disk u tagħbija b'suċċess, iżda s-sit ma jaħdimx.

4. Hemm żewġ għażliet biex tniedi websajt: kkonfigurat Apache mill-bidu jew uża nginx b'php-fpm diġà kkonfigurat minn qabel:

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

Fl-aħħarnett, trid tibda MySQL:

$ /etc/init.d/mysqld start

Mhux se jibda, u t-tweġiba tinsab fiha /var/log/mysql. Hekk kif issolvi l-problema bil-MySQL, is-sit se jaħdem, fuq il-paġna ewlenija se jkun hemm ċavetta - RichardGCCMatthewGNUStallman! Issa għandna aċċess għal 1C, u l-impjegati se jkunu jistgħu jirċievu s-salarji tagħhom. U bħal dejjem, għandek ħafna xogħol quddiem biex tistabbilixxi l-infrastruttura u s-sigurtà fil-kumpanija.

Nistgħu wkoll għal darb'oħra naqsmu lista ta' kotba li għenu lilna u lill-parteċipanti tagħna jippreparaw għal-logħba: linux.mail.ru/books.

Grazzi talli kont magħna! Oqgħod attent għal avviżi tal-logħob li jmiss!

Sors: www.habr.com

Żid kumment