Pencarian Linux. Tahniah kepada para pemenang dan mari kita bincangkan tentang penyelesaian tugas

Pencarian Linux. Tahniah kepada para pemenang dan mari kita bincangkan tentang penyelesaian tugas

Pada 25 Mac kami membuka pendaftaran untuk Pencarian Linux, ini adalah Permainan untuk pencinta dan pakar sistem pengendalian Linux. Beberapa statistik: 1117 orang mendaftar untuk permainan, 317 daripada mereka menemui sekurang-kurangnya satu kunci, 241 berjaya menyelesaikan tugas peringkat pertama, 123 - yang kedua dan 70 melepasi peringkat ketiga. Hari ini permainan kami telah berakhir dan kami mengucapkan tahniah kepada pemenang kami!

  • Alexander Teldekov mendapat tempat pertama.
    Alexander berkata kepada dirinya sendiri bahawa dia adalah pentadbir sistem yang paling tipikal. Tinggal di Volgograd, telah mentadbir pelbagai sistem seperti Unix selama kira-kira dua puluh tahun. Saya berjaya bekerja dalam penyedia Internet, bank dan penyepadu sistem. Kini dia bekerja dari jauh di sebuah syarikat kecil, bekerja pada infrastruktur awan untuk pelanggan asing yang besar. Suka membaca dan mendengar muzik. Mengenai Permainan, Alexander berkata bahawa dia menyukai permainan secara keseluruhan, dia suka tugas sedemikian. Semasa temu bual di salah satu syarikat saya melakukan sesuatu yang serupa dengan Hackerrank, ia menarik.
  • Tempat kedua - Roman Suslov.
    Novel dari Moscow. Dia berumur 37 tahun. Bekerja sebagai jurutera Linux/Unix di Jet Infosystems. Di tempat kerja, saya perlu mentadbir dan menyelesaikan masalah sistem Linux/Unix + SAN. Minat adalah pelbagai: sistem Linux, pengaturcaraan, kejuruteraan terbalik, keselamatan maklumat, Arduino. Mengenai Permainan Roman menyatakan bahawa dia menyukai permainan ini secara keseluruhan. β€œSaya meregangkan otak saya sedikit dan berehat dari kehidupan seharian kelabu dalam kerja seharian. πŸ™‚ Saya ingin mempunyai lebih banyak tugasan, jika tidak, sebelum saya sempat merasainya, permainan sudah pun tamat.”
  • Ketiga - alex3d.
    Alex tinggal di Moscow dan bekerja dalam pembangunan perisian. β€œTerima kasih atas peraduan, adalah menarik untuk menguji kemahiran google-fu saya.”

Juga dalam ranking 10 pemain terbaik:

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

Kami memahami bahawa terdapat banyak pilihan untuk menyelesaikan semua masalah kami; beberapa penyelesaian yang mungkin diterangkan di bawah.

1. Peringkat pertama

Kami memanggilnya "Adakah anda benar-benar pentadbir?", memandangkan tugasnya agak mudah - untuk membaiki perkhidmatan lampu hangat.

1.1. Fakta menarik:

Dua pemain menemui kunci pertama dalam 15 minit pertama permainan, dan pada jam pertama kami mempunyai tiga pendahulu yang menyelesaikan tugas itu.

1.2. Senaman

Anda pergi bekerja di sebuah syarikat di mana untuk masa yang lama tidak ada pakar teknologi maklumat yang kompeten. Sebelum anda mula menyusun perkara, anda perlu menyelesaikan masalah pembakaran yang menghalang kerja pejabat.

Wanita pembersihan menangkap kabel kuasa kabinet pelayan dengan mop. Kuasa telah dipulihkan, tetapi tapak web yang sangat penting masih tidak berfungsi. Laman web ini penting kerana syarikat tidak begitu mengambil berat tentang keselamatan maklumat, dan pada halaman utama ini anda boleh mencari dalam teks yang jelas kata laluan pentadbir untuk komputer CEO.

Pada hari yang lain kata laluan telah ditukar, tetapi semua orang lupa yang baru, pengarah tidak boleh berfungsi. Terdapat khabar angin bahawa terdapat lebih banyak kunci pada mesin ini yang boleh membantu kami menguraikan salinan sandaran dokumen perakaunan.

Semua orang mengharapkan penyelesaian segera bagi isu ini!

1.3. Penyelesaian

1. Pertama sekali, anda perlu menukar kata laluan root pada mesin maya untuk mendapatkan akses kepadanya. Apabila bermula, kami dapati bahawa ini adalah Pelayan Ubuntu 16.04.

Untuk menetapkan semula kata laluan root, kami memulakan semula mesin, apabila memuatkan, pada masa menu grub dipaparkan, pergi ke mengedit item Ubuntu dengan butang "e". Edit baris linux, tambahkannya ke penghujung init=/bin/bash. Kami memuatkan melalui Ctrl+x, kami mendapat bash. Pasang semula akar dengan rw, tukar kata laluan:

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

Jangan lupa tentang penyegerakan, but semula.

2. Syarat mengatakan bahawa pelayan web kami tidak berfungsi, lihat:

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

Iaitu, sebenarnya, Apache sedang berjalan, tetapi bertindak balas dengan kod 404. Mari lihat konfigurasi:

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

Terdapat juga kunci di sini - StevenPaulSteveJobs.

Menyemak laluan /usr/share/WordPress - tidak ada perkara seperti itu, tetapi ada /usr/share/wordpress. Edit konfigurasi dan mulakan semula Apache.

$ systemctl restart apache2

3. Cuba lagi, kami mendapat ralat:

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

Pangkalan data tidak berjalan?

$ systemctl status mysql
Active: active (running)

Apa masalahnya? Kita perlu memikirkannya. Untuk melakukan ini, anda perlu mendapatkan akses kepada MySQL, seperti yang diterangkan dalam dokumentasi. Salah satu titik dokumentasi mengesyorkan agar kami mendaftarkan pilihan skip-grant-tables Π² /etc/mysql/mysql.conf.d/mysqld.cnf. Terdapat juga kunci di sini - AugustaAdaKingByron.

Membetulkan hak pengguna 'wp'@'localhost'. Kami melancarkan MySQL, menjadikannya boleh diakses melalui rangkaian, mengulas pilihan dalam konfigurasi skip-networking.

4. Selepas langkah ini, pelayan web bermula, tetapi tapak masih tidak berfungsi kerana

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

Kami mengedit hak ke atas fail.

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

Kami memuat semula halaman, pergi ke tapak dan cari kunci - BjarneStroustrup! Kami mendapati ketiga-tiga kunci, pengarah kami boleh berfungsi, kami menyahsulit fail perakaunan. Semua orang gembira, dan anda mempunyai banyak kerja di hadapan anda untuk menyediakan infrastruktur, sandaran dan keselamatan dalam syarikat.

2. Peringkat kedua

Ia adalah perlu untuk menyelesaikan masalah pengumpulan analisis. Semua orang suka analisis - siapa yang menggunakannya, di mana dan dalam kuantiti apa. Kami datang dengan kes yang mungkin dihadapi oleh semua jurutera dalam satu bentuk atau yang lain dalam kehidupan.

2.1. Fakta menarik

Salah seorang pemain kami memasukkan kunci yang betul dalam 10 minit pertama permainan, dan dalam sejam pertama kami mempunyai seorang ketua yang menyelesaikan tugas itu.

2.2. Senaman

Anda pergi bekerja di syarikat itu, pengurus datang kepada anda dan meminta anda mencari kepada siapa surat dihantar dari Afrika. Kita perlu membina 21 alamat penerima teratas berdasarkan mereka. Huruf pertama alamat penerima adalah kuncinya. Satu perkara: pelayan mel yang melaluinya surat dihantar tidak dimuatkan. Semua orang mengharapkan penyelesaian segera bagi isu ini!

2.3. Penyelesaian

1. Pelayan tidak but disebabkan oleh partition swap yang tidak wujud dalam fstab; apabila memuatkan, sistem cuba untuk melekapkannya dan ranap. Bagaimana untuk boot?

Muat turun imej, kami memuat turun CentOS 7, but dari Live CD/DVD (Penyelesaian Masalah -> Rescue), pasang sistem, edit /etc/fstab. Kami segera mencari kunci pertama - GottfriedWilhelm11646Leibniz!

Buat pertukaran:

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

2. Seperti biasa, tiada kata laluan, anda perlu menukar kata laluan root pada mesin maya. Kami sudah melakukan ini dalam tugasan pertama. Kami menukar dan berjaya log masuk ke pelayan, tetapi ia segera masuk ke but semula. Pelayan dibebankan pada kelajuan sedemikian sehingga anda tidak mempunyai masa untuk melihat semua log dengan teliti. Bagaimana untuk memahami apa yang berlaku?

Sekali lagi kita boot dari livecd, teliti log sistem dan, untuk berjaga-jaga, lihat ke dalam cron, kerana keteraturan sedemikian. Di sana kita dapati masalah dan kunci kedua - Alan1912MathisonTuring!

Diperlukan dalam /etc/crontab memadam atau mengulas baris echo b > /proc/sysrq-trigger.

3. Selepas itu pelayan telah dimuatkan, dan anda boleh menyelesaikan tugas pengurus: "Apakah alamat di Afrika?" Maklumat ini secara amnya tersedia kepada orang ramai. Anda boleh mencari maklumat ini di Internet menggunakan frasa "alamat ip africa", "pangkalan data geoip". Untuk menyelesaikan masalah, anda boleh menggunakan pangkalan data pengedaran alamat yang tersedia secara percuma (geoip). Kami menggunakan pangkalan data sebagai standard MaxMind GeoLite2, tersedia di bawah lesen Creative Commons Attribution-ShareAlike 4.0.

Mari cuba selesaikan masalah kami hanya menggunakan utiliti sistem Linux, tetapi secara amnya ia boleh diselesaikan dengan banyak cara: menggunakan utiliti penapisan teks dan menggunakan skrip dalam pelbagai bahasa pengaturcaraan.

Sebagai permulaan, kami hanya akan mendapatkan pasangan "IP pengirim-penerima" daripada log mel /var/log/maillog (mari bina jadual penerima e-mel - IP penghantar). Ini boleh dilakukan dengan arahan berikut:

$ 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

Dan sebelum kita meneruskan penyusunan pangkalan data alamat Afrika, mari kita lihat alamat IP teratas pengirim.

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

Di antara mereka semua, tiga penerima pertama dari atas jelas menonjol dari segi bilangan surat. Jika anda melihat alamat IP pengirim yang dihantar ke alamat dari 3 teratas ini, anda akan melihat penguasaan yang jelas bagi rangkaian tertentu:

$ 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

Kebanyakan rangkaian 105/8, 41/8, 196/8,197/8 diperuntukkan kepada AFRINIC - salah satu daripada lima pendaftar Internet serantau yang mengedarkan sumber Internet. AFRINIC mengedarkan ruang alamat ke seluruh Afrika. Dan 41/8 merujuk kepada AFRINIC sepenuhnya.

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

Oleh itu, jawapan kepada masalah itu, sebenarnya, dalam log itu sendiri.

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

Pada peringkat ini kita mendapat rentetan "LinuxBenedictTorvadst".

Kekunci betul: "LinusBenedictTorvalds".

Rentetan yang terhasil mengandungi kesilapan menaip berhubung dengan kekunci yang betul dalam 3 aksara terakhir. Ini disebabkan oleh fakta bahawa rangkaian yang kami pilih tidak didedikasikan sepenuhnya untuk negara Afrika dan cara e-mel diedarkan oleh alamat IP dalam log kami.

Dengan spesifikasi yang mencukupi bagi rangkaian terbesar yang diperuntukkan kepada negara-negara Afrika, jawapan yang tepat boleh diperolehi:

$ 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 juga boleh diselesaikan dengan cara lain.
Muat turun MaxMind, buka bungkusannya, dan tiga arahan seterusnya juga menyelesaikan masalah kami.

$ 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

Satu cara atau yang lain, kami akhirnya mengira statistik, dan pengurus menerima data yang mereka perlukan untuk berfungsi!

3. Peringkat ketiga

Peringkat ketiga agak serupa dengan yang pertama - anda juga perlu membetulkan perkhidmatan lampu hangat, tetapi semuanya lebih rumit daripada tugas pertama.

3.1. Fakta menarik

Dalam 15 minit pertama, tiga pemain menemui kunci pertama; 2 jam dan 20 minit selepas permulaan pentas, pemenang kami menyelesaikan tugasan itu.

3.2. Senaman

Anda pergi bekerja untuk sebuah syarikat di mana semua dokumen syarikat disimpan pada pelayan Wiki dalaman. Tahun lepas, seorang jurutera telah memesan 3 cakera baharu untuk pelayan sebagai tambahan kepada satu cakera sedia ada, dengan alasan bahawa untuk sistem itu tahan terhadap kesalahan, cakera itu perlu diletakkan dalam beberapa jenis tatasusunan. Malangnya, beberapa minggu selepas pemasangan mereka, jurutera itu pergi bercuti ke India dan tidak kembali.

Pelayan berfungsi tanpa kegagalan selama beberapa tahun, tetapi beberapa hari lalu rangkaian syarikat telah digodam. Mengikut arahan, kakitangan keselamatan mengeluarkan cakera daripada pelayan dan menghantarnya kepada anda. Semasa pengangkutan, satu cakera telah hilang tanpa dapat dipulihkan.

Kami perlu memulihkan fungsi Wiki; pertama sekali, kami berminat dengan kandungan halaman wiki. Sekeping teks tertentu yang terdapat pada salah satu halaman wiki ini ialah kata laluan untuk pelayan 1C dan diperlukan segera untuk membuka kuncinya.

Di samping itu, di suatu tempat di halaman wiki atau di tempat lain terdapat kata laluan untuk pelayan log dan pelayan pengawasan video, yang juga wajar untuk dipulihkan; tanpa mereka, penyiasatan kejadian adalah mustahil. Seperti biasa, kami menjangkakan penyelesaian segera bagi isu tersebut!

3.3. Penyelesaian

1. Kami cuba but satu demi satu daripada cakera yang kami ada dan di mana-mana sahaja kami menerima mesej yang sama:

No bootable medium found! System halted 

Anda perlu boot dari sesuatu. But daripada CD/DVD Langsung (Penyelesaian Masalah -> Penyelamat) membantu sekali lagi. Apabila memuatkan, kami cuba mencari partition but, kami tidak dapat menemuinya, kami berakhir di shell. Kami cuba mengkaji apa dan bagaimana untuk dilakukan dengan cakera. Adalah diketahui bahawa terdapat tiga daripada mereka. Terdapat lebih banyak alat untuk ini dalam versi ke-7 CentOS, di mana terdapat arahan blkid atau lsblk, yang menunjukkan kepada kita semua maklumat tentang cakera.

Bagaimana dan apa yang kami lakukan:

$ ls /dev/sd*

Ia serta-merta jelas bahawa

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

Kami memasang sdb1, jelas bahawa ini adalah partition boot CentOS 6.

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

Jelas sekali, kami pergi ke bahagian grub dan mencari kunci pertama di sana - James191955Gosling dalam fail luar biasa.

2. Kami belajar pvs dan lvs, kerana kami bekerja dengan LVM. Kami melihat bahawa perlu ada 2 jilid fizikal, satu tidak terletak dan mengadu tentang kehilangan uid. Kami melihat bahawa perlu ada 2 volum logik: akar dan swap, manakala akar hilang sebahagiannya (atribut P volum). Ia tidak mungkin untuk dipasang, yang sangat disayangkan! Kami sangat memerlukan dia.

Terdapat 2 lagi cakera, kami melihatnya, memasang dan memasangnya:

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

Kami melihat, kami dapat melihat bahawa ini adalah partition but CentOS 6 dan pendua daripada apa yang sudah ada. /dev/sdb1, dan di sini sekali lagi kunci yang sama - DennisBMacAlistairCRitchie!
Mari lihat bagaimana ia dipasang /dev/md127.

$ mdadm --detail /dev/md127

Kami melihat bahawa ia sepatutnya dipasang dari 4 cakera, tetapi ia dipasang dari dua /dev/sda1 ΠΈ /dev/sdc1, mereka sepatutnya nombor 2 dan 4 dalam sistem. Kami menganggap bahawa dari /dev/sda2 ΠΈ /dev/sdc2 Anda juga boleh mengumpul tatasusunan. Tidak jelas mengapa tiada metadata pada mereka, tetapi ini berdasarkan hati nurani pentadbir, yang berada di suatu tempat di Goa. Kami menganggap bahawa perlu ada RAID10, walaupun terdapat pilihan. Kami mengumpul:

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

Kami melihat blkid, pvs, lvs. Kami mendapati bahawa kami telah mengumpul jumlah fizikal yang kami kekurangan sebelum ini.

lvroot segera dibaiki, kami memasangnya, tetapi mula-mula aktifkan VG:

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

Dan semuanya ada di sana, termasuk kunci dalam direktori rumah akar - /root/sweet.

3. Kami masih cuba menghidupkan semula pelayan kami supaya ia bermula seperti biasa. Semua jilid logik dari kami /dev/md0 (di mana kami menemui segala-galanya) seret ke /dev/sdb2, di mana keseluruhan pelayan pada mulanya berfungsi.

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

Kami mematikan pelayan, keluarkan cakera 1 dan 3, biarkan yang kedua, but dari Live CD/DVD ke Rescue. Cari partition but dan pulihkan pemuat but dalam grub:

root (hd0,0)
setup (hd0)

Kami merobek cakera but dan memuatkan dengan jayanya, tetapi tapak itu tidak berfungsi.

4. Terdapat dua pilihan untuk melancarkan tapak web: konfigurasi Apache dari awal atau gunakan nginx dengan php-fpm yang telah dikonfigurasikan terlebih dahulu:

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

Akhirnya, anda perlu memulakan MySQL:

$ /etc/init.d/mysqld start

Ia tidak akan bermula, dan jawapannya terletak pada /var/log/mysql. Sebaik sahaja anda menyelesaikan masalah dengan MySQL, tapak akan berfungsi, pada halaman utama akan ada kunci - RichardGCCMatthewGNUStallman! Kini kami mempunyai akses kepada 1C, dan pekerja akan dapat menerima gaji mereka. Dan seperti biasa, anda mempunyai banyak kerja di hadapan untuk mewujudkan infrastruktur dan keselamatan dalam syarikat.

Kami juga boleh sekali lagi berkongsi senarai buku yang membantu kami dan peserta kami bersedia untuk permainan: linux.mail.ru/books.

Terima kasih kerana bersama kami! Nantikan pengumuman perlawanan seterusnya!

Sumber: www.habr.com

Tambah komen