Практические задания по линуксу

Отчёт с Олимпиады по Linux + задания с ответами

7 декабря прошел финальный тур Олимпиады по GNU/Linux среди студентов и молодых специалистов. Вот топик с анонсом: первый тур проводился дистанционно, второй — очно в Москве. Ниже отчёт и примеры заданий заочного и очного туров.


Геннадий Мазуров занял первое место.

Победители:

  • I место — Геннадий Мазуров
  • II место — Бова Боваев
  • III место — Вячеслав Карпухин

Отчёт

Мы уже далеко не первый год проводим Олимпиады по системному администрированию, но в этот раз события развивались несколько стремительнее, чем обычно. После топика с анонсом мы поймали хабраэффект, который, в частности, выразился в том, что формат из межвузовского очень быстро перерос в международный. Часть претендентов просилась участвовать вне конкурса – из интереса. Мы решили никого не ограничивать, и допустили к участию в первом туре всех желающих. По нашим подсчетам примерно 60% участников пришло с Хабра, остальные узнавали про олимпиаду в социальных сетях, а также из объявлений в университетах. Многие звали друзей.

Из-за того, что было много участников не из Москвы, нам пришлось на ходу менять даты второго тура (не все успевали приехать) и некоторые правила. Возникли также разночтения в трактовке, кто такие “молодые специалисты”. Мы ориентировались на людей, закончивших ВУЗы 1-3 года назад (то есть примерно до 25 лет), но нечетко это проговорили. Я прошу прощения у всех участников, которые из-за этого могли ощутить некоторую скомканность организации. Второй раз на эти грабли не наступим.

Мы намерено упростили задания первого тура, чтобы не возник отпугивающий эффект, как это было год назад, когда до финала добрались только 12 человек. В этом году на второй тур мы отобрали 30 лучших участников, из них к нам 7 декабря смогли приехать 22 человека. Зато, по мнению нашего победителя, Геннадия Мазурова, который уже принимал участие в нашей олимпиаде 2 года назад, на этот раз во втором туре задания были существенно сложнее, чем ранее.

Геннадий вышел вперёд с большим отрывом. В первом туре можно было набрать максимум 30 баллов, во втором – 70. Победитель набрал по итогам двух туров 80 баллов (в среднем у участников было по 45 баллов). Геннадий живет в Москве, он закончил МГТУ им Баумана и уже работает. Второе место завоевал Бова Боваев (66 баллов), который, можно сказать, пробился к нам на финал: его допустили участвовать в первом туре вне конкурса, а потом уже разобрались с наличием-отсутствием у него высшего образования. Бова родом из Элисты (Калмыкии), заканчивает университет и сейчас также живет в Москве. Третье место занял Вячеслав Карпухин из Уфы (63 балла).

О формате проведения второго тура участники могли догадаться: мы всячески давали понять, что наш финал будет похож на экзамены RedHat. Готовиться можно было по Exam Objectives на сайте RedHat. Но в отличие от экзаменов RedHat мы разрешали пользоваться интернетом. Во втором туре было 20 заданий с разными баллами, которые нужно было выполнить за 4 с половиной часа. После подведения итогов мы разослали всем финалистам правильные варианты решения для заданий второго тура.

Всех приехавших к нам в гости во время проверки работ развлекли экскурсией по офису и одному из наших дата-центров. После олимпиады несколько участников выразили желание у нас работать, и сейчас мы рассматриваем их резюме. Но появления большого количества новых сотрудников после Олимпиады мы не ждем — высокие результаты, как правило, показывают те, кто уже где-то работает: понятно, что наличие практического опыта дает большое преимущество. Наша Олимпиада, скорее, ориентирована на других людей: на тех, кто пришел, попробовал и понял, что есть ещё чему учиться — и решил совершенствоваться. На одной из прошлых Олимпиад у нас был участник, студент Бауманки, занявший далеко не призовое место. Но в очередной год он снова участвовал и завоевал первое место – хорошо прокачался.

Кстати, всех, кто в первом туре набрал более 60%, мы готовы рассматривать как соискателей без входного технического собеседования.

Задания первого тура с ответами

Выборочные задания второго тура, вызвавшие наибольшие затруднения

Исходная ситуация: в вашем распоряжении находятся 2 виртуальные машины с установленной CentOS 6.3 x64, расположенные в одном VLAN. Имена машин — node1 и node2. SELinux на момент проверки выполнения заданий должен работать в режиме targeted enforcing. Перед проверкой заданий машины будут перезагружены.

Читайте также:  Принтер hp deskjet 5150 драйвер windows 10

7. Создайте на node1 каталог /pub. Корневая файловая система, которой принадлежит каталог /pub, должна быть смонтирована с опциями по умолчанию. Каталог /pub предназначен для совместной работы пользователей user1 и user2. Необходимо, чтобы каждый из них мог создавать в /pub файлы, а другой пользователь мог их редактировать. Остальные пользователи не должны иметь доступа в данный каталог.

Это задание про SETGID directory, которые используются для организации совместной работы пользователей. Правильно это задание выполнили только 2 участника.

mkdir /pub
chown root:grp1 /pub
chmod u=rwx,g=rws,o= /pub

SETGID (s) обеспечивает, что все файлы и каталоги, которые создаются внутри /pub, имеют ту же группу, что и /pub, т.е. grp1.
Далее надо было удостовериться, что для пользователей grp1 параметр umask=0002, чтобы по умолчанию вновь создаваемые объекты разрешали группе писать g=rwx.

11. На node1 предоставьте каталог /d01 и его подкаталоги в общий доступ по NFS только на чтение для всех адресов сети. Убедитесь, что содержимое всех каталогов доступно с узла node2.

С этим заданием никто из участников на 100% не справился.

Первая хитрость заключалась в том, что /d01 содержит точки монтирования других файловых систем, которые по умолчанию не экспортируются. Поэтому предпочтительный вариант решения – добавить в /etc/exports отдельные записи для /d01, /d01/public и /d01/private.

Еще один вариант – использовать при экспорте /d01 опцию nohide, однако в реальной жизни ее следует использовать с осторожностью (man 5 exports)

Вторая хитрость, которая поджидала на пути, это запись:

Также надо было не забыть включить автозапуск служб:

и открыть порты NFS в файрволле. В принципе, достаточно было разрешить все подключения, т.к. в других заданиях ограничения не накладываются:

iptables -A INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state —state NEW -j ACCEPT

15. На node2 используйте часть неразмеченного пространства диска размером 2ГБ и подключите его по протоколу iSCSI к node1. На узле node1 это пространство должно быть доступно в виде блочного устройства.

С этим заданием справился только один участник.

Перезапустить службу tgtd и активировать ее автозагрузку:

service tgtd restart
chkconfig tgtd on

Открыть порт iscsi-target 3260/tcp с помощью iptables.
На node1 убедиться, что установлен пакет iscsi-initiator-utils, обнаружить target:

iscsiadm -m discovery -t st -p 10.1.x.2:3260
Starting iscsid: [ OK ]
10.1.x.2:3260,1 iqn.2012-12.com.example:server.target0

Проверить, что доступен новый диск:

17. На node2 установите и настройте web-сервер с двумя виртуальными сайтами — www.example.com и www.test.net. Сайт www.example.com должен быть доступен при обращении к серверу по 8088 порту, а www.test.net — по 8088 и 443. web-сервер должен автоматически запускаться при старте системы.

Это задание вызвало много затруднений, видимо, из-за зависимости от настроек SELinux. Про SSL в задании прямо не оговаривалось, но мы заложились на очевидность такого требования.

Конфигурация virtual hosts в минималистичном варианте может быть такой (можно там же в httpd.conf):

По SSL-части нужно было изменить в /etc/httpd/conf.d/ssl.conf:

Остальное по умолчанию.
Поскольку SELinux работает в режиме targeted enforcing, apache не может использовать порт 8088, этого порта нет среди разрешенных для него политикой:

semanage port -l | grep -w http_port_t
http_port_t tcp 8080, 80, 443, 488, 8008, 8009, 8443

добавляем для контекста http_port_t еще один разрешенный порт (утилита semanage входит в пакет policycoreutils-python, его нужно было установить):

semanage port -a -t http_port_t -p tcp 8088

После этих действий можно запустить apache и установить автозагрузку:

service httpd start
chkconfig httpd on

Также необходимо было открыть порты 8088 и 443 с помощью iptables.

Источник

Осваиваем Linux за три недели

Идея вводного курса по работе с Linux возникла у нас с коллегами довольно давно. Я с 2011 года занимаюсь биоинформатикой в Лаборатории алгоритмической биологии СПбАУ РАН (тут и тут мой напарник писал про то, чем мы занимаемся). Сразу нужно сказать, что работа биоинформатика без Linux практически невозможна, поскольку большинство биоинформатических программ созданы именно под эту операционную систему и работают только на ней.

В силу того, что это область на стыке наук, мы постоянно общаемся с биологами. Биологам же сейчас приходится работать с очень большими объемами данных, поэтому умение использовать Linux, оптимальную для подобных задач операционную систему, становится необходимым навыком. На самом деле, речь не только об умении обращаться с Linux, а в целом о компьютерной грамотности: какие существуют правила работы на сервере, как загружать и эффективно хранить файлы с данными, какие программы запускать для их обработки и как это сделать и т.д. — все те вещи, которые как упрощают и ускоряют вашу работу, так и значительно облегчают совместную деятельность с коллегам. Несмотря на то, что разобраться с Linux можно и самостоятельно, почитав умные книжки и сайты, для людей из не технической среды это часто вызывает определенные сложности и многие сдаются на начальных этапах освоения этой ОС (например, на знакомстве с командной строкой).

Читайте также:  Linux get system name

На основе нашего опыта я и мой коллега Андрей Пржибельский (@andrewprzh) изначально собирались провести несколько занятий для биологов по компьютерной грамотности. А потом эта идея выросла в трехнедельный открытый онлайн-курс (MOOC) Института биоинформатики на русском языке, который позже был сужен до именно введения в Linux, как отправной точки, — поскольку вместить все в три недели оказалось очень и очень трудно. Курс уже начался и оказался достаточно популярен (на данный момент на него записалось более пяти тысяч человек), но первый дедлайн по заданиям — 24 ноября, поэтому еще можно присоединиться без потери баллов или просто изучать курс в свободном режиме (все материалы останутся открытыми).

Про саму подготовку первого в нашей жизни онлайн-курса, если сообществу интересно, мы напишем отдельный пост — это совсем не так просто и быстро, как может показаться на первый взгляд.

Но сначала хотелось бы остановиться на ответах на вопросы, которые нам задавали чаще всего. При подготовке курса мы общались с самыми разными людьми и столкнулись с тем, что многие совсем не понимают, где используется Linux, и не догадывались, что система может быть им полезна. Итак:

Зачем сейчас нужно уметь обращаться с Linux?

Многие не замечают, но Linux уже вокруг нас. Все Android устройства работают на Linux, большинства серверов в Интернете также используют эту операционную систему и есть множество других примеров. Конечно, можно продолжать пользоваться всеми этими вещами и не зная Linux, но освоив основы этой системы, можно лучше понять поведение окружающих вас вещей. Кроме того, при работе с большим объемом данных, Linux просто необходим, ведь большинство сложных вычислений над огромными массивами данных выполняются именно на компьютерах под управлением Linux. И это не случайный выбор: большинство вычислительных задач выполняются на Linux гораздо быстрее, чем на Windows или Mac OS X.

Как Linux связан с освоением других дисциплин?

Огромная доля научного ПО, особенно программ для обработки больших данных (например, в области биоинформатики) разработана специально под Linux. Это значит, что эти приложения просто не могут быть запущены под Windows или Mac OS X. Так что если вы не умеете работать в Linux, то автоматически лишаетесь возможности использовать самые современные научные наработки. Кроме того, изучая Linux, вы лучше понимаете как работает компьютер, ведь вы сможете отдавать ему команды практически напрямую.

Почему для этого нужен отдельный курс?

У Linux очень много возможностей, которые полезно знать и, конечно же, уметь ими воспользоваться в нужный момент. К счастью, современные версии Linux гораздо более дружелюбны к пользователям, чем их собратья еще 5-6 лет назад. Сейчас можно не мучиться часами и даже днями ночами после установки системы, чтобы настроить себе выход в Интернет, печать на принтере, раскладки клавиатуры и так далее. Любой желающий сможет начать использовать Linux так же, как он использовал Windows или Mac OS X уже после минимального знакомства с этой системой, которое будет исчисляться минутами. Однако возможности Linux гораздо шире «повседневного» использования. Рассказать обо всей функциональности Linux просто невозможно даже за трехнедельный курс. Однако мы стараемся научить слушателей использовать большинство базовых возможностей Linux, а самое главное, надеемся, что прошедшие курс смогут успешно продолжить освоение Linux самостоятельно.

Что в Linux интересного?

Для нас Linux похож на очень интересную книгу, которую вы прочитали и с удовольствием рекомендуете своим друзьям и даже чувствуете зависть от того, что у них знакомство с этим произведением еще впереди. Единственная разница в том, что хоть мы и знакомы с Linux уже почти по 10 лет, не можем сказать, что «прочитали» его целиком. В нем постоянно можно найти что-то новое для себя, узнать что многие вещи, которые ты привык делать одним способом, можно сделать совершенно по-другому — гораздо проще и быстрее.

Чем больше знакомишься с Linux, тем он становится интереснее. И от первоначального желания «поскорее бы выключить и перезагрузиться в родную и знакомую Windows (Mac OS X)» вы вскоре переходите в состояние «хм, а тут не так и плохо» и еще немного позже в «как я вообще мог работать в этой Windows?!». А еще изучая Linux вы порою можете почувствовать себя немного хакером или героем фильма про программистов =)

Наш курс состоит из краткого обзора основных возможностей Linux, однако для начинающих пользователей этого должно быть вполне достаточно, чтобы заинтересоваться Linux и немного погрузиться в его философию. Например, большую часть курса мы будем проводить за работой в терминале, так что у новичков должно возникнуть и привыкание и понимание преимуществ такого подхода к управлению компьютером. Для более продвинутых пользователей могут представлять интерес отдельные занятия курса — например, про работу с удаленным сервером или программирование на языке bash. Полная программа онлайн-курса доступна здесь.

Читайте также:  Не удается сохранить документ word mac os

Как проверять решение задач на курсе по Linux? Это вообще возможно?

Ответ на этот вопрос был нетривиальным — мы долго думали, как проверять задания (например, что пользователь установил Linux себе на компьютер или отредактировал файл в определенном редакторе) и как придумать интересные задачи, чтобы действительно показать реальную работу с Linux. Для каких-то тем получились довольно любопытные подходы. Например, специально для курса был добавлен новый тип задач на платформе Stepic — подключение к удалённому серверу (и открытие «терминала») прямо в окне браузера — по отзывам первых пользователей, им понравилось. Конечно, в первый раз не обошлось без шероховатостей, но, в целом, всё работает довольно хорошо. Про техническую сторону этого вопроса скоро появится отдельный пост от разработчиков. Пример такого задания (для просмотра вживую можно записаться на курс):

Нужно сказать, что не все пользователи воспринимали задачи с юмором. Например, мы проверяли навык установки программ на Linux на примере программы VLC. Нужно было установить ее в свою систему одним из рассказанных способов, потом открыть справку о программе, найти фамилию первого автора и ввести ее в форму для проверки. Каких только комментариев мы не наслушались про это задание 🙂 А ошибались люди в основном в том, что вводили имя и фамилию, или только имя, или часть фамилии (а она там двойная, через дефис!). В общем, если решитесь проходить курс, то читайте условия задач внимательнее и это сэкономит много времени и нервов! Правда с тем же автором было замечание и по делу, оказалось что в старых версиях VLC он идет аж на 14 месте, так что добавили в проверку еще одного автора, который первый среди «старого» списка (и, кстати, третий в «новом»).

А почему всё-таки Linux так хорош?

Вопрос, конечно, неоднозначный. На мой взгляд одним из ключевых преимуществ Linux перед Windows или Mac OS X является то, что эта операционная система разрабатывается огромным сообществом программистов по всему миру, а не в двух, пусть и очень больших компаниях (Microsoft и Apple). Исходный код этой системы открыт, и каждый может познакомится с внутренним устройством Linux или поучаствовать в его развитии. Разработчики развивают его не только для пользователей-покупателей, но и для самих себя, с чем и связан такой большой прогресс в развитии и многие другие его преимущества. В качестве «бонусов» для обычных пользователей: Linux бесплатный, на Linux практически нет вирусов (а сами разработчики вирусов зачастую сидят под Linux!), существую огромное число версий этой системы и каждый может выбрать понравившуюся именно ему!

И напоследок хотелось бы рассказать о своем первом знакомстве с Linux именно в рабочем процессе (до этого был еще отдельный курс по учебе, но из него я не очень много вынес, к сожалению). Этот случай меня так впечатлил, что помню его до сих пор. Когда я работал на кафедре в Политехе на 3-ем курсе мне понадобилось запускать одну программу для обработки данных. Программа была написана на С++, а работали мы тогда в Windows XP. Запусков нужно было сделать много, были они довольно однотипные и занимали обычно пару минут. За это время ничего другого сделать на компьютере было нельзя — он полностью «подвисал», так что можно было поболтать с другими сотрудниками или просто прогуляться по кабинету. Примерно через пару недель таких запусков, мой научный руководитель посоветовал попробовать мне сделать всё тоже самое, но не в Windows, а в Linux. Я тогда подумал «ну какая разница», но так руководителя уважал, то программу перекомпилировал и его совет исполнил. Какового же было моё удивление, когда я запустил ту же самую программу на тех же самых данных и получил результат (естественно, точно такой же) за несколько секунд! Я даже со стула встать не успел, не то что прогуляться…

Кстати, помимо нашего русскоязычного онлайн-курса по Linux, существует хороший англоязычный вводный курс от Linux Foundation, про который уже писали на хабре. Судя по сайту, он снова начнется 5 января 2015.

Если вы знаете ещё интересные онлайн-курсы или обучающие материалы по азам Linux, будем рады увидеть ссылки на них в комментариях.

Источник

Оцените статью