Linux Quest. Qalibləri təbrik edirik və tapşırıqların həlli yolları haqqında bizə məlumat verin

Linux Quest. Qalibləri təbrik edirik və tapşırıqların həlli yolları haqqında bizə məlumat verin

Martın 25-də qeydiyyata başladıq Linux Quest, bu Linux əməliyyat sisteminin həvəskarları və mütəxəssisləri üçün oyundur. Bəzi statistikalar: 1117 nəfər oyun üçün qeydiyyatdan keçib, onlardan 317-si ən azı bir açar tapıb, 241-i birinci mərhələnin tapşırığını uğurla yerinə yetirib, 123-ü ikinci, 70-i isə üçüncü mərhələni keçib. Bu gün oyunumuz sona çatdı və qaliblərimizi təbrik edirik!

  • Birinci yeri Aleksandr Teldekov tutub.
    İskəndər öz-özünə dedi ki, o, ən tipik sistem administratorudur. Volqoqradda yaşayır, təxminən iyirmi ildir müxtəlif Unix-ə bənzər sistemləri idarə edir. İnternet provayderlərində, bankda və sistem inteqratorunda işləməyi bacardım. İndi o, kiçik bir şirkətdə uzaqdan işləyir, böyük bir xarici müştəri üçün bulud infrastrukturu üzərində işləyir. Oxumağı və musiqi dinləməyi sevir. Oyun haqqında Alexander, bütövlükdə oyunu bəyəndiyini, belə tapşırıqları sevdiyini söylədi. Şirkətlərdən birində müsahibə zamanı Hackerrank-a bənzər bir şey etdim, maraqlı idi.
  • İkinci yer - Roman Suslov.
    Moskvadan bir roman. Onun 37 yaşı var. Jet Infosystems-də Linux/Unix mühəndisi kimi işləyir. İşdə mən Linux/Unix sistemləri + SAN-ı idarə etməli və problemləri həll etməliyəm. Maraqlar müxtəlifdir: Linux sistemləri, proqramlaşdırma, tərs mühəndislik, informasiya təhlükəsizliyi, Arduino. Oyun haqqında Roman ümumi olaraq oyunu bəyəndiyini qeyd etdi. “Beynimi bir az uzatdım və gündəlik işin boz gündəlik həyatına fasilə verdim. 🙂 Daha çox tapşırığım olmasını istərdim, əks halda onun dadına baxmağa vaxtım olmadı, oyun artıq bitmişdi.”
  • Üçüncü - alex3d.
    Aleks Moskvada yaşayır və proqram təminatı sahəsində işləyir. “Müsabiqə üçün təşəkkür edirik, google-fu bacarıqlarımı yoxlamaq maraqlı idi.”

Həmçinin 10 ən yaxşı oyunçunun reytinqində:

  • Yevgeni Saldayev
  • Markel Moxnaçevski
  • Konstantin Konosov
  • Pavel Sergeev
  • Vladimir Bovaev
  • İvan Bubnov
  • Pavlo Klets

Biz başa düşürük ki, bütün problemlərimizi həll etmək üçün bir çox variant var, mümkün həll yollarından bəziləri aşağıda təsvir edilmişdir.

1. Birinci mərhələ

Tapşırıq olduqca sadə olduğundan - isti lampa xidmətini düzəltmək üçün "Siz həqiqətən idarəçisiniz?" dedik.

1.1. Maraqlı Faktlar:

İki oyunçu oyunun ilk 15 dəqiqəsində ilk açarı tapdı və ilk saatda tapşırığı yerinə yetirən üç liderimiz oldu.

1.2. Məşq edin

Siz uzun müddət informasiya texnologiyaları üzrə savadlı mütəxəssisin olmadığı bir şirkətdə işləməyə getdiniz. İşləri qaydasına salmağa başlamazdan əvvəl, ofisin işinə mane olan yanan problemi həll etməlisiniz.

Təmizlikçi xanım şvabra ilə server şkafının elektrik kabelini tutdu. Elektrik enerjisi bərpa edildi, lakin çox vacib veb sayt hələ də işləmir. Veb sayt vacibdir, çünki şirkət informasiya təhlükəsizliyi ilə çox maraqlanmır və bunun əsas səhifəsində siz CEO-nun kompüteri üçün inzibatçı parolunu aydın mətnlə tapa bilərsiniz.

Keçən gün parol dəyişdi, amma hamı yenisini unutdu, direktor işləyə bilmir. Bu maşında mühasibat sənədlərinin ehtiyat nüsxəsini deşifrə etməyə kömək edə biləcək daha çox açar olduğuna dair şayiələr var.

Hər kəs problemin tezliklə həllini gözləyir!

1.3. Həll

1. Virtual maşına giriş əldə etmək üçün ilk növbədə onun kök parolunu dəyişdirməlisiniz. Başlayanda bunun Ubuntu 16.04 Server olduğunu görürük.

Kök parolunu sıfırlamaq üçün maşını yenidən işə salırıq, yüklədikdə, qrup menyusu görünən anda "e" düyməsi ilə Ubuntu elementini redaktə etməyə gedin. Linux xəttini redaktə edin, sonuna əlavə edin init=/bin/bash. Ctrl+x vasitəsilə yükləyirik, bash alırıq. Kökü rw ilə yenidən quraşdırın, parolu dəyişdirin:

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

Sinxronizasiyanı unutma, yenidən başladın.

2. Şərt veb serverimizin işləmədiyini deyir, baxın:

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

Yəni, əslində Apache işləyir, lakin 404 kodu ilə cavab verir. Konfiqurasiyaya baxaq:

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

Burada bir açar da var - StevenPaulSteveCobs.

Yolu yoxlayır /usr/share/WordPress - belə bir şey yoxdur, amma var /usr/share/wordpress. Konfiqurasiyanı redaktə edin və Apache-ni yenidən başladın.

$ systemctl restart apache2

3. Yenidən cəhd edin, xətanı alırıq:

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

Verilənlər bazası işləmir?

$ systemctl status mysql
Active: active (running)

Nə məsələdir? Biz bunu başa düşməliyik. Bunu etmək üçün aşağıda təsvir olunduğu kimi MySQL-ə giriş əldə etməlisiniz sənədləşdirmə. Sənədləşdirmə nöqtələrindən biri seçimi qeydiyyatdan keçirməyimizi tövsiyə edir skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf. Burada bir açar da var - AugustaAdaKingByron.

İstifadəçi hüquqlarının korreksiyası 'wp'@'localhost'. MySQL-i işə salırıq, onu şəbəkə üzərindən əlçatan edirik, konfiqurasiyadakı seçimi şərh edirik skip-networking.

4. Bu addımlardan sonra veb server işə düşür, lakin sayt hələ də işləmir, çünki

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

Faylın hüquqlarını redaktə edirik.

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

Səhifəni yeniləyirik, sayta daxil oluruq və açarı tapırıq - BjarneStroustrup! Hər üç açarı tapdıq, direktorumuz işləyə bilər, mühasibat fayllarının şifrəsini açdıq. Hər kəs xoşbəxtdir və sizi şirkətdə infrastruktur, ehtiyat nüsxələri və təhlükəsizliyi qurmaq üçün çox iş gözləyir.

2. İkinci mərhələ

Analitiklərin toplanması problemini həll etmək lazım idi. Hər kəs analitikanı sevir - kim, harada və hansı miqdarda istifadə edir. Bütün mühəndislərin həyatda bu və ya digər formada qarşılaşa biləcəyi bir hadisə ilə çıxış etdik.

2.1. Maraqlı faktlar

Oyunçularımızdan biri oyunun ilk 10 dəqiqəsində düzgün düyməni daxil etdi və ilk saat ərzində tapşırığı yerinə yetirən liderimiz oldu.

2.2. Məşq edin

Siz şirkətdə işləməyə getdiniz, menecerlər sizə gəldi və Afrikadan kimə məktublar göndərildiyini tapmağınızı xahiş etdiniz. Biz onların əsasında ilk 21 alıcı ünvanını qurmalıyıq. Qəbul edənlərin ünvanlarının ilk hərfləri əsasdır. Bir şey: məktubların göndərildiyi poçt serveri yüklənmir. Hər kəs problemin tezliklə həllini gözləyir!

2.3. Həll

1. Server fstab-da mövcud olmayan dəyişdirmə bölməsi səbəbindən yüklənmir, yükləyərkən sistem onu ​​quraşdırmağa çalışır və çökür. Necə yükləmək olar?

Şəkli endirin, biz CentOS 7 yüklədik, Live CD/DVD-dən yükləyin (Problemlərin aradan qaldırılması -> Xilasetmə), sistemi quraşdırın, redaktə edin /etc/fstab. Dərhal ilk açarı tapırıq - GottfriedWilhelm11646Leibniz!

Mübadilə yaradın:

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

2. Həmişə olduğu kimi, parol yoxdur, virtual maşında kök parolunu dəyişmək lazımdır. Biz bunu artıq birinci tapşırığı yerinə yetirmişik. Dəyişdiririk və uğurla serverə daxil oluruq, lakin o, dərhal yenidən işə düşür. Server elə bir sürətlə yüklənib ki, bütün qeydlərə diqqətlə baxmağa belə vaxtınız yoxdur. Nə baş verdiyini necə başa düşmək olar?

Yenə də livecd-dən yükləyirik, sistem qeydlərini diqqətlə öyrənirik və hər ehtimala qarşı crona baxırıq, çünki belə bir dövrilik var. Orada problemi və ikinci açarı tapırıq - Alan1912MathisonTuring!

Lazımdır /etc/crontab silmək və ya şərh çıxmaq xətti echo b > /proc/sysrq-trigger.

3. Bundan sonra server yükləndi və siz menecerlərin tapşırığını yerinə yetirə bilərsiniz: “Afrikada ünvanlar hansılardır?” Bu məlumat ümumiyyətlə ictimaiyyət üçün açıqdır. Bu məlumatı İnternetdə “ip address africa”, “geoip verilənlər bazası” ifadələrindən istifadə etməklə tapa bilərsiniz. Problemi həll etmək üçün sərbəst mövcud olan ünvan paylama verilənlər bazalarından (geoip) istifadə edə bilərsiniz. Biz verilənlər bazasından standart olaraq istifadə etdik MaxMind GeoLite2, Creative Commons Attribution-ShareAlike 4.0 lisenziyası altında mövcuddur.

Problemimizi yalnız Linux sistem yardım proqramlarından istifadə edərək həll etməyə çalışaq, lakin ümumiyyətlə, bu, çox sayda yolla həll edilə bilər: mətn filtrləmə yardım proqramlarından istifadə etmək və müxtəlif proqramlaşdırma dillərində skriptlərdən istifadə etməklə.

Başlamaq üçün biz sadəcə olaraq poçt jurnalından “göndərən-qəbuledici IP” cütlərini alacağıq. /var/log/maillog (e-poçt alıcılarının cədvəlini yaradaq - göndərən IP). Bu, aşağıdakı əmrlə edilə bilər:

$ 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

Afrika ünvanlarının məlumat bazasını tərtib etməyə davam etməzdən əvvəl, göndərənlərin ən yaxşı IP ünvanlarına nəzər salaq.

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

Onların hamısı arasında yuxarıdan gələn ilk üç alıcı hərflərin sayına görə açıq şəkildə seçilir. Bu ilk 3-dən olan ünvanlara göndərilən göndəricilərin IP ünvanlarını nəzərdən keçirsəniz, müəyyən şəbəkələrin açıq üstünlüyünü görəcəksiniz:

$ 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 şəbəkələrinin əksəriyyəti İnternet resurslarını paylayan beş regional İnternet registratorundan biri olan AFRINIC-ə ayrılmışdır. AFRINIC bütün Afrikada ünvan sahəsini paylayır. Və 41/8 tamamilə AFRİNİK-ə aiddir.

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

Beləliklə, problemin cavabı, əslində, jurnalın özündədir.

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

Bu mərhələdə "LinuxBenedictTorvadst" sətirini alırıq.

Düzgün açar: "LinusBenedictTorvalds".

Nəticə sətirdə son 3 simvolda düzgün düymə ilə bağlı yazı səhvi var. Bu, seçdiyimiz şəbəkələrin tamamilə Afrika ölkələrinə həsr edilməməsi və e-poçtların jurnalımızdakı IP ünvanları ilə paylanması ilə bağlıdır.

Afrika ölkələrinə ayrılmış ən böyük şəbəkələrin kifayət qədər spesifikasiyası ilə dəqiq cavab almaq olar:

$ 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 başqa yolla da həll etmək olar.
MaxMind-i yükləyin, paketdən çıxarın və növbəti üç əmr də problemimizi həll edir.

$ 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

Bu və ya digər şəkildə biz sonda statistikanı hesabladıq və menecerlər işləmək üçün lazım olan məlumatları aldılar!

3. Üçüncü mərhələ

Üçüncü mərhələ birinciyə bir qədər bənzəyir - isti lampa xidmətini də düzəltmək lazımdır, lakin hər şey birinci vəzifədən daha mürəkkəbdir.

3.1. Maraqlı faktlar

İlk 15 dəqiqədə üç oyunçu ilk açarı tapdı, mərhələnin başlamasından 2 saat 20 dəqiqə sonra qalibimiz tapşırığı yerinə yetirdi.

3.2. Məşq edin

Siz bütün şirkət sənədlərinin daxili Wiki serverində saxlandığı şirkətdə işləməyə getdiniz. Keçən il bir mühəndis mövcud bir diskə əlavə olaraq server üçün 3 yeni disk sifariş etdi və sistemin nasazlığa dözümlü olması üçün disklərin bir növ massivlərdə yerləşdirilməsinin lazım olduğunu iddia etdi. Təəssüf ki, onların quraşdırılmasından bir neçə həftə sonra mühəndis Hindistana tətilə getdi və geri qayıtmadı.

Server bir neçə il uğursuz işləyirdi, lakin bir neçə gün əvvəl şirkətin şəbəkəsi sındırıldı. Təlimatlara əsasən, təhlükəsizlik işçiləri diskləri serverdən çıxararaq sizə göndəriblər. Daşınma zamanı bir disk geri qaytarılmayacaq şəkildə itirildi.

Biz Viki-nin funksionallığını bərpa etməliyik, ilk növbədə, bizi viki-səhifələrin məzmunu maraqlandırır. Bu vikinin səhifələrindən birində olan müəyyən mətn parçası 1C serverinin paroludur və onun kilidini açmaq üçün təcili olaraq lazımdır.

Bundan əlavə, wiki səhifələrində və ya başqa yerdə log server və videomüşahidə serveri üçün parollar var idi ki, onların da bərpası arzu edilir, onlarsız hadisənin araşdırılması mümkün deyil. Həmişə olduğu kimi, problemin operativ həllini gözləyirik!

3.3. Həll

1. Əlimizdə olan disklərdən bir-bir yükləməyə çalışırıq və hər yerdə eyni mesajı alırıq:

No bootable medium found! System halted 

Bir şeydən yükləmək lazımdır. Canlı CD/DVD-dən yükləmə (Problemlərin aradan qaldırılması -> Xilasetmə) yenidən kömək edir. Yükləyərkən yükləmə bölməsini tapmağa çalışırıq, tapa bilmirik, qabığa giririk. Disklərlə nəyi və necə edəcəyimizi öyrənməyə çalışırıq. Onların üçü olduğu məlumdur. Bunun üçün əmrlərin olduğu CentOS-un 7-ci versiyasında daha çox alət var blkid və ya lsblk, bizə disklər haqqında bütün məlumatları göstərən.

Necə və nə edirik:

$ ls /dev/sd*

Bu dərhal aydın olur

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

Sdb1-ni quraşdırırıq, bunun CentOS 6-nın açılış bölməsi olduğu aydındır.

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

Aydındır ki, biz grub bölməsinə gedirik və orada ilk açarı tapırıq - James191955Gosling qeyri-adi bir faylda.

2. LVM ilə işlədiyimiz üçün pvs və lvs öyrənirik. Görürük ki, 2 fiziki cild olmalıdır, biri yerləşmir və itirilmiş uiddən şikayətlənir. Görürük ki, 2 məntiqi cild olmalıdır: kök və dəyişdirmə, kök qismən itirildiyi halda (həcmin P atributu). Çəkmək mümkün deyil, təəssüf ki! Ona həqiqətən ehtiyacımız var.

Daha 2 disk var, onlara baxırıq, yığırıq və quraşdırırıq:

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

Baxırıq, görə bilərik ki, bu, CentOS 6-nın yükləmə bölməsidir və artıq mövcud olanın dublikatıdır. /dev/sdb1, və burada yenə eyni açar - DennisBMacAlistairCRitchie!
Onun necə yığıldığını görək /dev/md127.

$ mdadm --detail /dev/md127

Görürük ki, 4 diskdən yığılmalı idi, amma ikidən yığılıb /dev/sda1 и /dev/sdc1, onlar sistemdə 2 və 4 rəqəmləri olmalı idi. Biz bunu güman edirik /dev/sda2 и /dev/sdc2 Siz həmçinin bir sıra toplaya bilərsiniz. Niyə onlar haqqında heç bir metadata olmadığı aydın deyil, amma bu, Goa'nın bir yerində olan adminin vicdanındadır. Seçimlər olsa da, RAID10-un olması lazım olduğunu düşünürük. Biz toplayırıq:

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

Biz blkid, pvs, lvs-ə baxırıq. Biz əvvəllər çatışmayan fiziki bir həcm topladığımızı aşkar edirik.

lvroot dərhal təmir edildi, biz onu quraşdırırıq, lakin əvvəlcə VG-ni aktivləşdirin:

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

Və hər şey var, o cümlədən kök ev kataloqunda açar - /root/sweet.

3. Biz hələ də serverimizi normal işə salmaq üçün canlandırmağa çalışırıq. Bütün məntiqi cildlər bizim /dev/md0 (hər şeyi tapdığımız yer) onu sürükləyin /dev/sdb2, bütün serverin əvvəlcə işlədiyi yer.

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

Serveri söndürürük, 1 və 3-cü diskləri çıxarırıq, ikincisini buraxırıq, Canlı CD/DVD-dən Rescue-ə yükləyirik. Yükləmə bölməsini tapın və yükləyicini qrupda bərpa edin:

root (hd0,0)
setup (hd0)

Yükləmə diskini cırırıq və uğurla yükləyirik, lakin sayt işləmir.

4. Veb saytı işə salmaq üçün iki seçim var: Apache-ni sıfırdan konfiqurasiya edin və ya əvvəlcədən konfiqurasiya edilmiş php-fpm ilə nginx-dən istifadə edin:

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

Nəhayət, MySQL-ə başlamalısınız:

$ /etc/init.d/mysqld start

Başlamayacaq və cavab ondadır /var/log/mysql. MySQL ilə problemi həll edən kimi sayt işləyəcək, əsas səhifədə açar olacaq - RichardGCCMatthewGNUStallman! İndi 1C-yə çıxışımız var və işçilər maaşlarını ala biləcəklər. Həmişə olduğu kimi, şirkətdə infrastruktur və təhlükəsizlik yaratmaq üçün qarşıda çox iş var.

Bizə və iştirakçılarımıza oyuna hazırlaşmağa kömək edən kitabların siyahısını bir daha paylaşa bilərik: linux.mail.ru/books.

Bizimlə olduğunuz üçün təşəkkür edirik! Növbəti oyunların elanları üçün bizi izləyin!

Mənbə: www.habr.com

Добавить комментарий