Linux Quest. Sugeng para pemenang lan ngandhani babagan solusi kanggo tugas kasebut

Linux Quest. Sugeng para pemenang lan ngandhani babagan solusi kanggo tugas kasebut

Tanggal 25 Maret kita mbukak pendaftaran kanggo Linux Quest, iki Game kanggo penyayang lan ahli saka sistem operasi Linux. Sawetara statistik: 1117 wong ndhaptar game kasebut, 317 saka wong-wong mau nemokake paling ora siji tombol, 241 kasil ngrampungake tugas ing tahap pertama, 123 - sing kapindho lan 70 ngliwati tahap katelu. Dina iki game kita wis rampung lan kita ngucapake selamat marang para pemenang!

  • Alexander Teldekov njupuk Panggonan pisanan.
    Alexander ngandika kanggo awake dhewe sing iku administrator sistem paling khas. Manggon ing Volgograd, wis ngatur macem-macem sistem kaya Unix kanggo rong puluh taun. Aku bisa kerja ing panyedhiya Internet, bank, lan integrator sistem. Saiki dheweke kerja adoh ing perusahaan cilik, nggarap infrastruktur awan kanggo pelanggan asing sing gedhe. Tresna maca lan ngrungokake musik. Babagan Game, Alexander ujar manawa dheweke seneng karo game kasebut, dheweke seneng karo tugas kasebut. Sajrone wawancara ing salah sawijining perusahaan aku nindakake sing padha karo Hackerrank, iku menarik.
  • Panggonan kapindho - Romawi Suslov.
    Novel saka Moskow. Dheweke umur 37 taun. Makarya minangka insinyur Linux/Unix ing Jet Infosystems. Ing karya, aku kudu ngatur lan ngatasi masalah sistem Linux/Unix + SAN. Minat macem-macem: sistem Linux, pemrograman, reverse engineering, keamanan informasi, Arduino. Babagan Game Roman nyathet yen dheweke seneng karo game kasebut. "Aku rada nggedhekake otakku lan ngaso saka saben dinane abu-abu ing saben dinane. πŸ™‚ Aku pengin duwe tugas liyane, yen ora, sadurunge aku duwe wektu kanggo ngrasakake, game wis rampung.
  • Katelu - alex3d.
    Alex manggon ing Moskow lan kerja ing pangembangan piranti lunak. "Matur nuwun kanggo kontes, menarik kanggo nyoba katrampilan google-fuku."

Uga ana ing peringkat 10 pemain paling apik:

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

Kita ngerti manawa ana akeh pilihan kanggo ngrampungake kabeh masalah; sawetara solusi sing bisa diterangake ing ngisor iki.

1. Tahap pisanan

Kita diarani "Apa sampeyan pancene dadi admin?", Amarga tugas kasebut cukup prasaja - kanggo ndandani layanan lampu anget.

1.1. Fakta Menarik:

Loro pemain nemokake tombol pisanan ing 15 menit pisanan game, lan ing jam pisanan kita duwe telung pimpinan sing ngrampungake tugas kasebut.

1.2. olah raga

Sampeyan lunga kerja ing perusahaan sing wis suwe ora ana spesialis teknologi informasi sing kompeten. Sadurunge miwiti ngatur, sampeyan kudu ngatasi masalah kobong sing ngalangi karya kantor.

Wanita reresik nyekel kabel listrik kabinet server nganggo pel. Daya wis dipulihake, nanging situs web sing penting banget isih ora bisa digunakake. Situs web kasebut penting amarga perusahaan ora prihatin banget babagan keamanan informasi, lan ing kaca utama sampeyan bisa nemokake tembung sandhi administrator kanggo komputer CEO ing teks sing jelas.

Ing dina liyane sandi diganti, nanging kabeh lali sing anyar, direktur ora bisa. Ana gosip sing ana tombol liyane ing mesin iki sing bisa bantuan kita decipher salinan serep saka dokumen accounting.

Saben uwong ngarepake resolusi sing cepet babagan masalah kasebut!

1.3. Solusi

1. Kaping pisanan, sampeyan kudu ngganti tembung sandhi ROOT ing mesin virtual supaya entuk akses menyang. Nalika miwiti, kita sok dong mirsani manawa iki Ubuntu 16.04 Server.

Kanggo ngreset sandhi ROOT, kita miwiti maneh mesin, nalika mbukak, ing wayahe menu grub ditampilake, pindhah menyang ngowahi item Ubuntu kanthi tombol "e". Sunting linux baris, tambahake menyang mburi init=/bin/bash. Kita mbukak liwat Ctrl + x, kita entuk bash. Pasang maneh root nganggo rw, ganti sandhi:

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

Aja lali babagan sinkronisasi, urip maneh.

2. Kahanan kasebut nyatakake yen server web kita ora bisa digunakake, deleng:

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

Sing, nyatane, Apache mlaku, nanging nanggapi nganggo kode 404. Ayo ndeleng konfigurasi:

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

Ana uga kunci ing kene - StevenPaulSteveJobs.

Priksa dalan /usr/share/WordPress - ora ana, nanging ana /usr/share/wordpress. Owahi konfigurasi lan miwiti maneh Apache.

$ systemctl restart apache2

3. Coba maneh, kita entuk kesalahan:

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

Database ora mlaku?

$ systemctl status mysql
Active: active (running)

Ana apa? We kudu tokoh metu. Kanggo nindakake iki, sampeyan kudu entuk akses menyang MySQL, kaya sing diterangake ing dokumentasi. Salah sawijining titik dokumentasi nyaranake supaya ndhaptar opsi kasebut skip-grant-tables Π² /etc/mysql/mysql.conf.d/mysqld.cnf. Ana uga kunci ing kene - AugustaAdaKingByron.

Mbenerake hak pangguna 'wp'@'localhost'. Kita miwiti MySQL, supaya bisa diakses liwat jaringan, menehi komentar pilihan ing konfigurasi skip-networking.

4. Sawise langkah kasebut, server web diwiwiti, nanging situs kasebut isih ora bisa digunakake amarga

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

We ngowahi hak kanggo file.

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

Kita refresh kaca, pindhah menyang situs lan golek tombol - BjarneStroustrup! Kita nemokake kabeh telung kunci, direktur bisa kerja, dekripsi file akuntansi. Kabeh wong seneng, lan sampeyan duwe akeh karya ing ngarep kanggo nyiyapake infrastruktur, serep lan keamanan ing perusahaan.

2. Tahap kapindho

Sampeyan perlu kanggo ngatasi masalah ngumpulake analytics. Saben uwong seneng analytics - sing nggunakake, ing ngendi lan ing jumlah apa. We teka munggah karo cilik sing kabeh engineers bisa nemokke ing siji wangun utawa liyane ing gesang.

2.1. Fakta Menarik

Salah siji pemain kita ngetik tombol sing bener ing 10 menit pisanan game, lan ing jam pisanan kita duwe pimpinan sing ngrampungake tugas kasebut.

2.2. olah raga

Sampeyan lunga kerja ing perusahaan, manajer nemoni sampeyan lan njaluk sampeyan nemokake sapa sing dikirim layang saka Afrika. Kita kudu mbangun 21 alamat panampa paling dhuwur adhedhasar kasebut. Huruf pisanan saka alamat panampa minangka kunci. Siji-sijine: server surat sing dikirimake surat ora dimuat. Saben uwong ngarepake resolusi sing cepet babagan masalah kasebut!

2.3. Solusi

1. Server ora boot amarga partisi swap sing ora ana ing fstab, nalika loading, sistem nyoba dipasang lan nabrak. Carane boot?

Download gambar, kita ndownload CentOS 7, boot saka Live CD / DVD (Troubleshooting -> Rescue), pasang sistem, sunting /etc/fstab. Kita langsung nemokake kunci pisanan - GottfriedWilhelm11646Leibniz!

Nggawe swap:

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

2. Minangka tansah, ora ana sandhi, sampeyan kudu ngganti tembung sandhi ROOT ing mesin virtual. Kita wis nindakake iki ing tugas pisanan. Kita ngganti lan kasil mlebu menyang server, nanging langsung dadi urip maneh. Server overloaded ing kacepetan kuwi sing malah ora duwe wektu kanggo dipikir ing kabeh log kasebut kanthi teliti,. Kepiye carane ngerti apa sing kedadeyan?

Maneh kita boot saka livecd, kasebut kanthi teliti, sinau log sistem lan, mung ing kasus, katon menyang cron, wiwit periodicity kuwi. Ing kana kita nemokake masalah lan kunci nomer loro - Alan1912MathisonTuring!

Perlu ing /etc/crontab mbusak utawa komentar metu baris echo b > /proc/sysrq-trigger.

3. Sawise server dimuat, lan sampeyan bisa ngrampungake tugas manajer: "Apa alamat ing Afrika?" Informasi iki umume kasedhiya kanggo umum. Sampeyan bisa nemokake informasi iki ing Internet nggunakake frase "alamat ip afrika", "database geoip". Kanggo ngatasi masalah kasebut, sampeyan bisa nggunakake database distribusi alamat sing kasedhiya (geoip). Kita nggunakake database minangka standar MaxMind GeoLite 2, kasedhiya ing lisensi Creative Commons Attribution-ShareAlike 4.0.

Ayo nyoba ngatasi masalah kita mung nggunakake utilitas sistem Linux, nanging umume bisa ditanggulangi kanthi pirang-pirang cara: nggunakake utilitas panyaring teks lan nggunakake skrip ing macem-macem basa pamrograman.

Kanggo miwiti, kita mung bakal entuk pasangan "IP pangirim-panampa" saka log mail /var/log/maillog (ayo nggawe tabel panampa email - IP pangirim). Iki bisa ditindakake kanthi printah ing ngisor iki:

$ 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

Lan sadurunge nerusake ngumpulake database alamat Afrika, ayo goleki alamat IP paling dhuwur saka pangirim.

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

Ing antarane kabeh, telung panampa pisanan saka ndhuwur katon jelas babagan jumlah huruf. Yen sampeyan nemokake alamat IP saka pangirim sing dikirim menyang alamat saka 3 ndhuwur iki, sampeyan bakal weruh predominance sing jelas ing jaringan tartamtu:

$ 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

Umume jaringan 105/8, 41/8, 196/8,197/8 dialokasikan kanggo AFRINIC - salah siji saka limang registrar Internet regional sing nyebarake sumber daya Internet. AFRINIC nyebarake papan alamat ing saindenging Afrika. Lan 41/8 nuduhake AFRINIC rampung.

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

Mangkono, jawaban kanggo masalah kasebut, nyatane, ing log dhewe.

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

Ing tahap iki, kita entuk senar "LinuxBenedictTorvadst".

Tombol sing bener: "LinusBenedictTorvalds".

String sing diasilake ngemot kesalahan ketik ing hubungane karo tombol sing bener ing 3 karakter pungkasan. Iki amarga kasunyatan manawa jaringan sing dipilih ora dikhususake kanggo negara-negara Afrika lan cara email disebarake dening alamat IP ing log kita.

Kanthi spesifikasi sing cukup saka jaringan paling gedhe sing dialokasikan kanggo negara-negara Afrika, jawaban sing tepat bisa dipikolehi:

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

Masalah kasebut uga bisa ditanggulangi kanthi cara liya.
Download MaxMind, unpack, lan telung printah sabanjure uga ngrampungake masalah kita.

$ 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

Siji cara utawa liyane, pungkasane kita ngitung statistik, lan manajer nampa data sing dibutuhake kanggo bisa digunakake!

3. Tahap katelu

Tahap katelu meh padha karo sing pisanan - sampeyan uga kudu ndandani layanan lampu anget, nanging kabeh luwih rumit tinimbang ing tugas pisanan.

3.1. Fakta Menarik

Ing 15 menit pisanan, telung pemain nemokake kunci pisanan; 2 jam lan 20 menit sawise wiwitan panggung, juara kita ngrampungake tugas kasebut.

3.2. olah raga

Sampeyan lunga kerja ing perusahaan sing kabeh dokumen perusahaan disimpen ing server Wiki internal. Paling taun, engineer dhawuh 3 disk anyar kanggo server saliyane siji sing wis ana, arguing sing kanggo sistem dadi fault-tolerant, disk kudu diselehake ing sawetara jinis susunan. Sayange, sawetara minggu sawise instalasi, engineer tindak vacation kanggo India lan ora bali.

Server makarya tanpa gagal nganti pirang-pirang taun, nanging sawetara dina kepungkur jaringan perusahaan disusupi. Miturut pandhuane, staf keamanan mbusak disk saka server lan dikirim menyang sampeyan. Sajrone transportasi, siji disk wis ilang.

Kita kudu mulihake fungsionalitas Wiki; pisanan, kita kepengin weruh isi kaca wiki. Sawijining teks tartamtu sing ana ing salah sawijining kaca wiki iki yaiku tembung sandhi kanggo server 1C lan perlu banget kanggo mbukak kunci.

Kajaba iku, ing endi wae ing kaca wiki utawa ing papan liya, ana tembung sandhi kanggo server log lan server pengawasan video, sing uga pengin dipulihake; tanpa ana, penyelidikan babagan kedadeyan kasebut ora mungkin. Kaya biasane, kita ngarepake resolusi sing cepet babagan masalah kasebut!

3.3. Solusi

1. Kita nyoba kanggo boot siji-siji saka disk sing kita duwe lan nang endi wae kita nampa pesen sing padha:

No bootable medium found! System halted 

Sampeyan kudu boot saka soko. Booting saka Live CD/DVD (Troubleshooting -> Rescue) mbantu maneh. Nalika loading, kita nyoba nemokake partisi boot, kita ora bisa nemokake, kita mungkasi ing cangkang. Kita nyoba kanggo sinau apa lan carane nindakake karo disk. Dikenal yen ana telu. Ana liyane alat kanggo iki ing 7th versi CentOS, ngendi ana printah blkid utawa lsblk, sing nuduhake kabeh informasi babagan disk.

Kepiye lan apa sing kita lakoni:

$ ls /dev/sd*

Iku langsung ketok sing

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

Kita masang sdb1, jelas yen iki partisi boot CentOS 6.

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

Temenan, kita pindhah menyang bagean grub lan nemokake kunci pisanan ing kana - James191955Gosling ing file sing ora biasa.

2. Kita sinau pvs lan lvs, awit kita bisa karo LVM. We ndeleng sing kudu ana 2 volume fisik, siji ora dumunung lan complains babagan uid ilang. Kita weruh yen kudu ana 2 volume logis: root lan swap, dene ROOT ilang sebagian (atribut P volume). Iku ora bisa kanggo Gunung, kang tega! Kita pancen butuh dheweke.

Ana 2 disk liyane, kita ndeleng, ngumpul lan dipasang:

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

Kita ndeleng, kita bisa ndeleng manawa iki partisi boot CentOS 6 lan duplikat saka apa sing wis ana. /dev/sdb1, lan kene maneh tombol padha - DennisBMacAlistairCRitchie!
Ayo ndeleng carane ngrakit /dev/md127.

$ mdadm --detail /dev/md127

Kita waca sing kudu wis nglumpuk saka 4 disk, nanging iki nglumpuk saka loro /dev/sda1 ΠΈ /dev/sdc1, padha kudu wis nomer 2 lan 4 ing sistem. Kita nganggep sing saka /dev/sda2 ΠΈ /dev/sdc2 Sampeyan uga bisa ngumpulake array. Ora jelas kenapa ora ana metadata, nanging iki ana ing kalbu admin, sing ana ing ngendi wae ing Goa. Kita nganggep yen kudu ana RAID10, sanajan ana pilihan. Kita ngumpulake:

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

Kita katon ing blkid, pvs, lvs. Kita nemokake manawa kita wis nglumpukake volume fisik sing sadurunge ora ana.

lvroot langsung didandani, kita pasang, nanging ngaktifake VG dhisik:

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

Lan kabeh ana, kalebu tombol ing direktori ngarep root - /root/sweet.

3. Kita isih nyoba kanggo revive server kita supaya wiwit normal. Kabeh volume logis saka kita /dev/md0 (ngendi kita ketemu kabeh) seret menyang /dev/sdb2, ing ngendi kabeh server wiwitane makarya.

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

Kita mateni server, mbusak disk 1 lan 3, ninggalake sing kapindho, boot saka Live CD / DVD menyang Rescue. Temokake partisi boot lan pulihake bootloader ing grub:

root (hd0,0)
setup (hd0)

Kita nyuwek disk boot lan mbukak kanthi sukses, nanging situs kasebut ora bisa digunakake.

4. Ana rong pilihan kanggo mbukak situs web: konfigurasi Apache saka awal utawa nggunakake nginx karo php-fpm wis dikonfigurasi luwih dhisik:

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

Pungkasan, sampeyan kudu miwiti MySQL:

$ /etc/init.d/mysqld start

Ora bakal diwiwiti, lan jawabane ana /var/log/mysql. Sanalika sampeyan ngatasi masalah karo MySQL, situs kasebut bakal bisa digunakake, ing kaca utama bakal ana kunci - RichardGCCMatthewGNUStallman! Saiki kita duwe akses menyang 1C, lan karyawan bakal bisa nampa gaji. Lan kaya biasane, sampeyan duwe akeh karya ing ngarep kanggo nggawe infrastruktur lan keamanan ing perusahaan.

Kita uga bisa maneh nuduhake dhaptar buku sing mbantu kita lan peserta nyiapake game kasebut: linux.mail.ru/books.

Matur nuwun wis karo kita! Tetep dirungokake kanggo woro-woro game sabanjure!

Source: www.habr.com

Add a comment