{"id":31240,"date":"2019-10-31T21:40:13","date_gmt":"2019-10-31T18:40:13","guid":{"rendered":"https:\/\/prohoster.info\/blog\/linux-quest-pozdravlyaem-pobeditelej-i-rasskazyvaem-pro-resheniya-zadanij\/"},"modified":"2019-10-31T21:40:13","modified_gmt":"2019-10-31T18:40:13","slug":"linux-quest-pozdravlyaem-pobeditelej-i-rasskazyvaem-pro-resheniya-zadanij","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/linux-quest-pozdravlyaem-pobeditelej-i-rasskazyvaem-pro-resheniya-zadanij","title":{"rendered":"Linux Quest. Congratulations to the winners and let's discuss the solutions to the tasks","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Linux Quest. Congratulations to the winners and let&#039;s discuss the solutions to the tasks\" src=\"\/wp-content\/uploads\/2019\/04\/a8c28d0ba562680119475609a56136d6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOn March 25, we opened registration for <noindex><a rel=\"nofollow\" href=\"https:\/\/linux.mail.ru\">Linux Quest<\/a><\/noindex>, a game for fans and experts of the Linux operating system. Some statistics: 1,117 people registered for the game, of which 317 found at least one key, 241 successfully completed the first stage task, 123 completed the second, and 70 passed the third stage. Today our game has come to an end, and we congratulate our winners! <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li><b>The first place was taken by Alexander Teldekov.<\/b><br \/>\nAlexander described himself as a typical system administrator. He lives in Volgograd and has been administering various Unix-like systems for about twenty years. He has worked at Internet service providers, a bank, and a system integrator. Currently, he works remotely at a small company, focusing on cloud infrastructure for a major foreign client. He enjoys reading and listening to music. Regarding the game, Alexander said he generally liked it and enjoys such challenges. He encountered something similar to Hackerrank during an interview at one of the companies, which was interesting.<\/li>\n<li><b>Second place \u2014 Roman Suslov.<\/b><br \/>\nRoman is from Moscow. He is 37 years old. He works as a Linux\/Unix engineer at 'Infosystems Jet.' His job involves administering and troubleshooting Linux\/Unix systems + SAN. He has diverse interests: Linux systems, programming, reverse engineering, information security, Arduino. About the game, Roman noted that he generally enjoyed it. \"I stretched my brain a bit and took a break from the gray everyday work routine. \ud83d\ude42 I would have liked more tasks because just as I started to get into it, the game was already over.\"<\/li>\n<li><b>Third place \u2014 alex3d.<\/b><br \/>\nAlex lives in Moscow and works in software development. \"Thanks for the contest, it was interesting to test my google-fu skill.\"<\/li>\n<\/ul>\n<p>\nAlso in the ranking of the top 10 players:<\/p>\n<ul>\n<li>Yevgeniy Saldayev<\/li>\n<li>Markel Mokhnachevskiy<\/li>\n<li>Konstantin Konosov<\/li>\n<li>Pavel Sergeev<\/li>\n<li>Vladimir Bovaev<\/li>\n<li>Ivan Bubnov<\/li>\n<li>Pavlo Klets<\/li>\n<\/ul>\n<p>\nWe understand that there are many ways to solve all our tasks; below are some possible solutions described. <\/p>\n<h3>1. First stage <\/h3>\n<p>\nWe called it 'Are you really an admin?' since the task was quite simple \u2014 to fix a warm, cozy service.<\/p>\n<h4>1.1. Interesting facts:<\/h4>\n<p>\nTwo players found the first key within the first 15 minutes of the game, and within the first hour, we had three leaders who completed the task. <\/p>\n<h4>1.2. Task<\/h4>\n<p>\nYou started working at a company where there hasn't been a qualified IT specialist for a long time. Before you can restore order, you need to resolve a pressing issue that is blocking the office's operations.<\/p>\n<p>The cleaner accidentally knocked the power cable of the server cabinet with a mop. Power has been restored, but a very important website still isn\u2019t working. The website is crucial because the company isn't very concerned with information security, and the administrator password for the CEO's computer can be found openly on the homepage.<\/p>\n<p>Recently, the password was changed, and everyone forgot the new one, which is preventing the director from working. Rumors are circulating that there were also keys on this machine that could help us decrypt the backup of the accounting documents.<\/p>\n<p>Everyone is waiting for a quick resolution of the issue!<\/p>\n<h4>1.3. Solution<\/h4>\n<p>\n1. First, we need to change the root password on the virtual machine to gain access to it. Upon startup, we notice that this is Ubuntu 16.04 Server.<\/p>\n<p>To reset the root password, we restart the machine. During boot, when the grub menu appears, we switch to editing the Ubuntu entry by pressing the 'e' key. We edit the linux line, adding at the end <code>init=\/bin\/bash<\/code>. We load using Ctrl+x, getting to the bash. We remount the root with rw and change the password:<\/p>\n<pre><code class=\"bash\">$ mount -o remount,rw \/dev\/mapper\/ubuntu--vg-root\n$ passwd<\/code><\/pre>\n<p>\nDon't forget about sync, then reboot.<\/p>\n<p>2. The condition states that our web server is not working; let's check:<\/p>\n<pre><code class=\"bash\">$ curl localhost\nNot Found\nThe requested URL \/ was not found on this server.\nApache\/2.4.18 <\/code><\/pre>\n<p>\nSo, in fact, Apache is running, but it responds with a 404 code. Let's check the config:<\/p>\n<pre><code class=\"bash\">$ vim \/etc\/apache2\/sites-enabled\/000-default.conf<\/code><\/pre>\n<p>\nHere we find the key \u2014 StevenPaulSteveJobs.<\/p>\n<p>Let's check the path <code>\/usr\/share\/WordPress<\/code> \u2014 it doesn't exist, but there is <code>\/usr\/share\/wordpress<\/code>. We edit the config and restart Apache.<\/p>\n<pre><code class=\"bash\">$ systemctl restart apache2<\/code><\/pre>\n<p>\n3. Let's try again; we get an error:<\/p>\n<pre><code class=\"bash\">Warning: mysqli_real_connect(): (HY000\/2002): Connection refused in \/usr\/share\/wordpress\/wp-includes\/wp-db.php on line 1488<\/code><\/pre>\n<p>\nIs the database not running?<\/p>\n<pre><code class=\"bash\">$ systemctl status mysql\nActive: active (running)<\/code><\/pre>\n<p>\nWhat's the issue then? We need to investigate. To do this, we need to access MySQL, as described in <noindex><a rel=\"nofollow\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/resetting-permissions.html\">the documentation<\/a><\/noindex>. One of the documentation points recommends that we specify the option <code>skip-grant-tables<\/code> downward API support (simultaneously with this in <code>\/etc\/mysql\/mysql.conf.d\/mysqld.cnf<\/code>. Here too, we find the key \u2014 AugustaAdaKingByron.<\/p>\n<p>We adjust the permissions for the user <code>'wp'@'localhost'<\/code>. We start MySQL, making it accessible over the network by commenting out the option in the config <code>skip-networking<\/code>.<\/p>\n<p>4. After the steps taken, the web server starts, but the site still isn't working, as <\/p>\n<pre><code class=\"bash\">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<\/code><\/pre>\n<p>\nLet's change the file permissions.<\/p>\n<pre><code class=\"bash\">$ chmod 644 \/usr\/share\/wordpress\/wp-content\/themes\/twentysixteen\/footer.php\n<\/code><\/pre>\n<p>\nWe refresh the page, go to the site, and find the key \u2014 BjarneStroustrup! We have found all three keys, our director can work, we decrypted the accounting files. Everyone is happy, but you have a lot of work ahead in setting up infrastructure, backups, and security in the company. <\/p>\n<h3>2. Second Stage<\/h3>\n<p>\nWe needed to solve the task of gathering analytics. Everyone loves analytics \u2014 who is coming from where and in what quantities. We devised a case that every engineer may encounter in one form or another in their life.<\/p>\n<h4>2.1. Interesting Facts<\/h4>\n<p>\nOne of our players entered the correct key within the first 10 minutes of the game, and within the first hour, we had a leader who completed the task.<\/p>\n<h4>2.2. Task<\/h4>\n<p>\nYou started working at the company, managers came to you and asked to find out who the emails from Africa were sent to. You need to create a top-21 list of recipient addresses from them. The first letters of the recipient addresses are the key. One caveat: the mail server that the emails were sent through won\u2019t boot. Everyone is waiting for an operational solution to this issue!<\/p>\n<h4>2.3. Solution<\/h4>\n<p>\n1. The server won\u2019t boot due to a non-existent swap partition in fstab; during boot, the system tries to mount it and crashes. How to boot?<\/p>\n<p>We download the image, we downloaded CentOS 7, boot from Live CD\/DVD (Troubleshooting -&gt; Rescue), mount the system, make changes. <code>\/etc\/fstab<\/code>Right here we find the first key \u2014 GottfriedWilhelm11646Leibniz!<\/p>\n<p>Create swap:<\/p>\n<pre><code class=\"bash\">$ lvcreate -n swap centos -L 256M\n$ sync &amp;&amp; reboot<\/code><\/pre>\n<p>\n2. As always, there is no password, we need to change the root password on the virtual machine. We have done this in the first task. We change it and successfully log into the server, but it immediately reboots. The server is rebooting so fast that we can\u2019t even carefully look at all the logs. How to understand what is happening?<\/p>\n<p>Again, we boot from livecd, carefully examine the system logs, and as a precaution, check the cron since it has such periodicity. There we find the problem and the second key \u2014 Alan1912MathisonTuring!<\/p>\n<p>We need to <code>\/etc\/crontab<\/code> delete or comment out the line <code>echo b &gt; \/proc\/sysrq-trigger<\/code>.<\/p>\n<p>3. After the server has booted, you can carry out the task set by the managers: 'What are the IP addresses of Africa?' This information is generally publicly available. You can find it online using phrases like 'ip address africa', 'geoip database'. To solve this task, you can use freely available IP distribution databases (geoip). We used a database as a reference. <noindex><a rel=\"nofollow\" href=\"https:\/\/dev.maxmind.com\/geoip\/geoip2\/geolite2\/\">MaxMind GeoLite2<\/a><\/noindex>, available under the Creative Commons Attribution-ShareAlike 4.0 license.<\/p>\n<p>Let's try to solve our task using only Linux system utilities, but it can actually be addressed in a multitude of ways: through text filtering utilities and scripts in various programming languages.<\/p>\n<p>To start, we'll simply obtain pairs of 'sender IP \u2014 recipient' from the mail log <code>\/var\/log\/maillog<\/code> (we'll construct a table of email recipients \u2014 sender IP). This can be done with the following command:<\/p>\n<pre><code class=\"bash\">$ cat \/var\/log\/maillog | fgrep -e ' connect from' -e 'status=sent' | sed 's\/[][]\/ \/g' | awk '\/connect from\/ {ip=$11} \/status=sent\/ {print $10\" \"ip}' &gt; log1.txt<\/code><\/pre>\n<p>\nAnd before we continue with compiling the database of African addresses, let's take a look at the top sender IP addresses.<\/p>\n<pre><code class=\"bash\">$ cat log1.txt | cut -d' ' -f1 | sort | uniq -c | sort -r | head -n 40\n5206 L2JhbjAbM67GA99jg@mail.ru\n4165 iHKTBkegOQa6fIALq@mail.ru\n3739 nHkcBl7BdgXxijSYD7@mail.ru\n3405 SMAzPJAzbl9vp4hAXo@mail.ru\n3346 xILz6d7P@mail.ru\n<\/code><\/pre>\n<p>\nAmong all, the first three recipients in the top stand out significantly in terms of the number of emails received. If we grep the sender IP addresses that sent to the addresses from this top-3, we can notice a clear predominance of certain networks:<\/p>\n<pre><code class=\"bash\">$ cat log1.txt | fgrep 'L2JhbjAbM67GA99jg@mail.ru' | cut -d' ' -f2 | sort | cut -d'.' -f1 | uniq -c | sort -r | head\n831 105\n806 41\n782 197\n664 196\n542 154\n503 102\n266 156\n165 45\n150 160\n108 165<\/code><\/pre>\n<p>\nThe majority of the networks 105\/8, 41\/8, 196\/8, 197\/8 are allocated by AFRINIC \u2014 one of the five regional internet registrars responsible for the distribution of internet resources. AFRINIC distributes the address space in Africa. Moreover, 41\/8 fully belongs to AFRINIC.<\/p>\n<pre><code class=\"bash\">https:\/\/www.nic.ru\/whois\/?searchWord=105.0.0.0\nhttps:\/\/www.nic.ru\/whois\/?searchWord=41.0.0.0\n<\/code><\/pre>\n<p>\nThus, the answer to the task can actually be found in the log itself.<\/p>\n<pre><code class=\"bash\">$ 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\n4209 L2JhbjAbM67GA99jg@mail.ru\n3313 iHKTBkegOQa6fIALq@mail.ru\n2704 nHkcBl7BdgXxijSYD7@mail.ru\n2215 uvRbp1O@mail.ru\n1774 sPmMsmmFiV@mail.ru\n1448 BtG3aHgQgCKuze2AKuRH@mail.ru\n1233 eQpuuQ2uQdbwRL3@mail.ru\n958 nJT5dpaBZ@mail.ru\n862 ef4WbQiB@mail.ru\n762 dQCqKL6eVminFfH7wLA@mail.ru\n632 ifq6Rd1HxuCQOdO9@mail.ru\n539 cFwm2ssypMmx1sA7@mail.ru\n531 twtTnr4G@mail.ru\n431 TSrczgYASrR11Hs3qCi@mail.ru\n380 o3r3exc3OL@mail.ru\n357 rzmjr2VAHK@mail.ru\n348 vnPr6YjJ3ndw@mail.ru\n312 anOjFXrwOtLP2Rl1Vcz6@mail.ru\n289 dvny5zHmRW8fiT@mail.ru\n282 sgg9jPxFDYvzw8Kr@mail.ru\n274 tKSevzA7GntJ@mail.ru<\/code><\/pre>\n<p>\nAt this stage, we obtain the string 'LinuxBenedictTorvadst'.<\/p>\n<p>Correct key: 'LinusBenedictTorvalds'.<\/p>\n<p>The obtained string contains a typo compared to the correct key in the last 3 characters. This is due to the fact that the networks we chose are not fully allocated to the countries of Africa and how emails are distributed across IP addresses in our log.<\/p>\n<p>With sufficient clarification of the largest networks allocated to the countries of Africa, an accurate answer can be obtained.:<\/p>\n<pre><code class=\"bash\">$ 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\n3350 L2JhbjAbM67GA99jg@mail.ru\n2662 iHKTBkegOQa6fIALq@mail.ru\n2105 nHkcBl7BdgXxijSYD7@mail.ru\n1724 uvRbp1O@mail.ru\n1376 sPmMsmmFiV@mail.ru\n1092 BtG3aHgQgCKuze2AKuRH@mail.ru\n849 eQpuuQ2uQdbwRL3@mail.ru\n712 nJT5dpaBZ@mail.ru\n584 ef4WbQiB@mail.ru\n463 dQCqKL6eVminFfH7wLA@mail.ru\n365 ifq6Rd1HxuCQOdO9@mail.ru\n269 cFwm2ssypMmx1sA7@mail.ru\n225 twtTnr4G@mail.ru\n168 TSrczgYASrR11Hs3qCi@mail.ru\n142 o3r3exc3OL@mail.ru\n111 rzmjr2VAHK@mail.ru\n 96 vnPr6YjJ3ndw@mail.ru\n 78 anOjFXrwOtLP2Rl1Vcz6@mail.ru\n 56 lHzWiB7ExvRtSbAcU9@mail.ru\n 56 dvny5zHmRW8fiT@mail.ru\n 40 sgg9jPxFDYvzw8Kr@mail.ru<\/code><\/pre>\n<p>\nThe task can also be solved in another way.<br \/>\nWe download MaxMind, unpack it, and the following three commands also solve our task.<\/p>\n<pre><code class=\"bash\">$ cat GeoLite2-Country-Locations-ru.csv | grep \"Africa\" | cut -d',' -f1 &gt; africaIds.txt\n$ grep -Ff africaIds.txt GeoLite2-Country-Blocks-IPv4.csv | cut -d',' -f1 &gt; africaNetworks.txt\n$ grepcidr -f africaNetworks.txt log1.txt | cut -d' ' -f1 | sort | uniq -c | sort -r | head -n21\n<\/code><\/pre>\n<p>\nIn one way or another, we ultimately calculated the statistics, and the managers received the necessary data for their work! <\/p>\n<h3>3. Third Stage<\/h3>\n<p>\nThe third stage is somewhat similar to the first \u2014 we also need to fix the warm lamp service, but it is more complex than in the first task.<\/p>\n<h4>3.1. Interesting Facts<\/h4>\n<p>\nIn the first 15 minutes, three players found the first key, and 2 hours and 20 minutes after the start of the stage, our winner completed the task.<\/p>\n<h4>3.2. Assignment<\/h4>\n<p>\nYou started working for a company where all company documents are stored on an internal Wiki server. Last year, an engineer ordered three new disks for the server in addition to one existing one, arguing that for system redundancy, disks need to be set up in certain arrays. Unfortunately, a few weeks after their installation, the engineer went on vacation to India and did not return.<\/p>\n<p>For several years, the server operated without failures, but a couple of days ago, the company's network was hacked. According to instructions, the security staff extracted the disks from the server and sent them to you. During transport, one disk was irretrievably lost.<\/p>\n<p>It is necessary to restore the functionality of the Wiki, primarily concerning the content of the wiki pages. A certain piece of text that was on one of the pages of this wiki is the password for the 1C server, which is urgently needed for its unlocking.<\/p>\n<p>Additionally, somewhere on the wiki pages or elsewhere, there were passwords for the log server and the video surveillance server, which also need to be restored, as without them, the investigation of the incident is impossible. As always, we expect a prompt resolution to this issue!<\/p>\n<h4>3.3. Solution<\/h4>\n<p>\n1. We attempt to boot in sequence from the disks we have and receive the same message everywhere:<\/p>\n<pre><code class=\"bash\">No bootable medium found! System halted \n<\/code><\/pre>\n<p>\nWe need to boot from something. Once again, we are saved by booting from Live CD\/DVD (Troubleshooting -&gt; Rescue). Upon booting, we try to find the boot partition, do not find it, and end up in the shell. We try to study what and how with the disks. It is known that there are three. There are more tools for this in the 7th version of CentOS, where there are commands <code>blkid<\/code> or <code>lsblk<\/code>, which show us all the information about the disks. <\/p>\n<p>What we do:<\/p>\n<pre><code class=\"bash\">$ ls \/dev\/sd*<\/code><\/pre>\n<p>\nIt's immediately clear that <\/p>\n<pre><code class=\"bash\">\/dev\/sdb1 - ext4\n\/dev\/sdb2 - \u0447\u0430\u0441\u0442\u044c lvm\n\/dev\/sda1 \u0438 \/dev\/sdc1 - \u0447\u0430\u0441\u0442\u0438 \u0440\u0435\u0439\u0434\u0430\n\/dev\/sda2 \u0438 \/dev\/sdc2 - \u043f\u0440\u043e \u043d\u0438\u0445 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442<\/code><\/pre>\n<p>\nWe mount sdb1, and it is clear that this is the boot partition of CentOS 6.<\/p>\n<pre><code class=\"bash\">$ mkdir \/mnt\/sdb1 &amp;&amp; mount \/dev\/sdb1 \/mnt\/sdb1<\/code><\/pre>\n<p>\nObviously, we go to the grub partition and find the first key\u2014James191955Gosling in an unusual file.<\/p>\n<p>2. We examine pvs and lvs since we are working with LVM. We see that there should be 2 physical volumes, one of which is not found and complains about a lost uid. We see that there should be 2 logical volumes: root and swap, with the root partially lost (attribute P for the volume). It cannot be mounted, which is a shame! We really need it.<\/p>\n<p>There are also 2 more disks, we look at them, assemble and mount:<\/p>\n<pre><code class=\"bash\">$ mdadm --examine --verbose --scan\n$ mdadm --assemble --verbose --scan\n$ mkdir \/mnt\/md127 &amp;&amp; mount \/dev\/md127 \/mnt\/md127 <\/code><\/pre>\n<p>\nWe see that this is the boot partition of CentOS 6 and a duplicate of what is already on <code>\/dev\/sdb1<\/code>, and here again is the same key\u2014DennisBMacAlistairCRitchie!<br \/>\nWe look at how it is assembled <code>\/dev\/md127<\/code>.<\/p>\n<pre><code class=\"bash\">$ mdadm --detail \/dev\/md127\n<\/code><\/pre>\n<p>\nWe see that it should have been assembled from 4 disks, but was assembled from two <code>\/dev\/sda1<\/code> and <code>\/dev\/sdc1<\/code>, which should have been numbers 2 and 4 in the system. We assume that it should also be possible to assemble the array from <code>\/dev\/sda2<\/code> and <code>\/dev\/sdc2<\/code> . It is unclear why there is no metadata on them, but that is the responsibility of the admin who is somewhere in Goa. We assume there should be RAID10 here, although there are options. We assemble: <\/p>\n<pre><code class=\"bash\">$ mdadm --create --verbose \/dev\/md0 --assume-clean --level=10 --raid-devices=4 missing \/dev\/sda2 missing \/dev\/sdc2\n<\/code><\/pre>\n<p>\nWe check blkid, pvs, lvs. We discover that we have assembled the physical volume that we were previously missing.<\/p>\n<p>The lvroot has been repaired, we are mounting it, but first we activate VG:<\/p>\n<pre><code class=\"bash\">$ vgchange -a y\n$ mkdir \/mnt\/lvroot &amp;&amp; mount \/dev\/mapper\/vg_c6m1-lv_root \/mnt\/lvroot \n<\/code><\/pre>\n<p>\nAnd everything is there, including the key in the root home directory \u2014 \/root\/sweet.<\/p>\n<p>3. We are trying to revive our server so it can boot normally. We move all logical volumes from our <code>\/dev\/md0<\/code> (where we found everything) to <code>\/dev\/sdb2<\/code>, where the entire server originally operated.<\/p>\n<pre><code class=\"bash\">$ pvmove \/dev\/md0 \/dev\/sdb2\n$ vgreduce vg_c6m1 \/dev\/md0<\/code><\/pre>\n<p>\nWe power down the server, remove disks 1 and 3, leave the second, and boot from the Live CD\/DVD in Rescue. We locate the boot partition and restore the bootloader in grub:<\/p>\n<pre><code class=\"bash\">root (hd0,0)\nsetup (hd0)\n<\/code><\/pre>\n<p>\nWe remove the boot disk and successfully boot, but the site does not work.<\/p>\n<p>4. There are two options to start the site: set up Apache from scratch or use a pre-configured nginx with php-fpm:<\/p>\n<pre><code class=\"bash\">$ \/etc\/init.d\/nginx start\n$ \/etc\/init.d\/php-fpm start\n<\/code><\/pre>\n<p>\nFinally, we need to start MySQL:<\/p>\n<pre><code class=\"bash\">$ \/etc\/init.d\/mysqld start<\/code><\/pre>\n<p>\nIt does not start, and the clue lies in <code>\/var\/log\/mysql<\/code>. Once you resolve the issue with MySQL, the site will work, and on the main page, there will be the key \u2014 RichardGCCMatthewGNUStallman! Now we have access to 1C, and employees will be able to receive their salaries. And you still have a lot of work ahead in setting up the infrastructure and security in the company.<\/p>\n<p>We can also share once again the list of books that helped us and our participants prepare for the game: <noindex><a rel=\"nofollow\" href=\"https:\/\/linux.mail.ru\/books\">linux.mail.ru\/books<\/a><\/noindex>.<\/p>\n<p>Thank you for being with us! Stay tuned for announcements of upcoming games!<br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/447222\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>25 \u043c\u0430\u0440\u0442\u0430 \u043c\u044b \u043e\u0442\u043a\u0440\u044b\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u043d\u0430 Linux Quest, \u044d\u0442\u043e \u0418\u0433\u0440\u0430 \u0434\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0438 \u0437\u043d\u0430\u0442\u043e\u043a\u043e\u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Linux. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438: \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043d\u0430 \u0438\u0433\u0440\u0443 1117 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u0438\u0437 \u043d\u0438\u0445 317 \u2014 \u043d\u0430\u0448\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u043a\u043b\u044e\u0447, 241 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u0441 \u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430, 123 \u2014 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0438 70 \u043f\u0440\u043e\u0448\u043b\u0438 \u0442\u0440\u0435\u0442\u0438\u0439 \u044d\u0442\u0430\u043f. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430\u0448\u0430 \u0438\u0433\u0440\u0430 \u043f\u043e\u0434\u043e\u0448\u043b\u0430 \u043a \u043a\u043e\u043d\u0446\u0443, \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23206,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31240","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/linux-quest-pozdravlyaem-pobeditelej-i-rasskazyvaem-pro-resheniya-zadanij\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Linux Quest. \u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u0439 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/linux-quest-pozdravlyaem-pobeditelej-i-rasskazyvaem-pro-resheniya-zadanij\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:40:13+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:40:13+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Linux Quest. Congratulations to the winners and we discuss the solutions to the tasks | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/linux-quest-pozdravlyaem-pobeditelej-i-rasskazyvaem-pro-resheniya-zadanij","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Linux Quest. \u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u0439 | ProHoster","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/linux-quest-pozdravlyaem-pobeditelej-i-rasskazyvaem-pro-resheniya-zadanij","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:40:13+00:00","article:modified_time":"2019-10-31T18:40:13+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31240","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 05:12:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:20:31","updated":"2026-01-21 05:12:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/31240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=31240"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/31240\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/23206"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=31240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=31240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=31240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}