Linux 2 этапИнструкция доступа к виртуальной машине: 10 марта, на указанную Вами во время регистрации на сайте world-it-planet.org электронную почту, были высланы идентификатор участника типа "a100" и пароль. Для решения заданий конкурса созданы виртуальные машины для каждого участника отдельно. Вы сможете получить доступ к своей виртуальной машине по протоколу ssh, используя такую информацию: имя сервера: olimp-gate.gnulinuxcenter.ru имя пользователя: ubuntu пароль: тот, что Вы получили по почте порт: вычисляется на основе идентификатора Для вычисления номера порта замените букву "a" в идентификаторе участника на цифру "20". Например: если идентификатор "a100", то номер порта — "20100". Внутри виртуальной машины Вам будут доступны административные полномочия посредством программы sudo (без пароля). Вы можете устанавливать любые необходимые пакеты с помощью стандартной программы управления пакетами apt-get. Текст заданий будет доступен из виртуальной машины по адресу http://172.31.50.223 (для их просмотра можно воспользоваться, например, программой w3m). Если у Вас возникнут технические проблемы во время выполнения заданий, или Вы не получили идентификатор участника и пароль, обращайтесь по адресу olimp@gnulinuxcenter.ru В поле ниже по желанию Вы можете оставить свой комментарий к выполненной Вами работе: Предварительная информация Ваш компьютер имеет ip-адрес 172.31.50.137. Не меняйте сетевых настроек, чтобы у вас не возникло проблем ни с доступом к виртуальной машине, ни с выполнением/проверкой заданий! С помощью стандартного менеджера пакетов (apt-get) вы можете устанавливать любые необходимые для выполнения заданий пакеты. После выполнения очередного задания нажмите ссылку ниже текста задания для его проверки. Если проверка пройдёт успешно, при следующей загрузке этой страницы вместо ссылки будет сообщение о том, что задание выполнено, и появится текст следующего задания (если выполненное задание не было последним). Между проверками одного и того же задания должен быть двухминутный таймаут. Если вы попытаетесь начать проверку до его истечения, проверка будет отложена ещё на две минуты. Вы можете перезагружать вашу виртуальную машину. Если у вас возникнут проблемы с доступом к виртуальной машине — пишите на адрес olimp@gnulinuxcenter.ru, обязательно указав выданный вам идентификатор участника (вида 'a100') — мы сможем принудительно перезагрузить вирт. машину. Задания 1. Создайте на своей машине пустой git-репозиторий, так, чтобы его можно было клонировать командой 'git clone git@172.31.50.137:repo', аутентифицировавшись по ключу. Ключ можно скачать по ссылке. У пользователя с этим ключом должна быть возможность делать 'push' в этот репозиторий. Поздравляем! Это задание выполнено. 2. Для того же самого репозитория добавьте доступ для ещё одного ключа. Ключ можно скачать по ссылке. У пользователя с этим ключом НЕ должно быть возможности делать 'push' в этот репозиторий (доступ «read-only»). Поздравляем! Это задание выполнено. 3. Настройте ldap-аутентификацию. Данные для настройки: uri: ldap://172.31.50.223 search base: dc=olimp У ldap-пользователей должна быть возможность подключиться к вашей виртуальной машине по протоколу ssh, используя свои ldap-пароли. Поздравляем! Это задание выполнено. 4. Создайте каталог '/share/in' так, чтобы он был доступен для записи lpap-пользователям, и каталог '/ share/out' так, чтобы он был доступен только для чтения ldap-пользователям. Поздравляем! Это задание выполнено. 5. Настройте систему так, чтобы при создании файла с произвольным именем в каталоге '/share/in', этот файл копировался в каталог '/share/out' с добавлением суффикса '.out'. К примеру: 1. создан файл '/share/in/12345', 2. его содержимое тут же копируется системой в файл '/ share/out/12345.out'. При проверке будет делаться пауза в одну секунду между созданием и чтением файлов. Поздравляем! Это задание выполнено. Это было последнее задание. Вы выполнили все задания на сегодня. Результаты будут подведены после 18:00 (мск), с ними можно будет ознакомиться на сайте организатора Олимпиады. ==== 1) sudo bash adduser git cd ~git mkdir repo.git cd repo.git git init --bare cd ~git mkdir .ssh cat ~ubuntu/key1.pub > .ssh/authorized_keys chown -Rh git:git . можно пробовать со своего компа - добавим свой ключ cat ~ubuntu/mykey.pub > .ssh/authorized_keys - попробуем шелл -bash-4.3$ ssh git@olimp-gate.gnulinuxcenter.ru -p 20152 ls -la total 32 drwxr-xr-x 5 git git 4096 Mar 11 12:16 . drwxr-xr-x 4 root root 4096 Mar 11 10:46 .. -rw-r--r-- 1 git git 220 Mar 11 10:46 .bash_logout -rw-r--r-- 1 git git 3771 Mar 11 10:46 .bashrc drwx------ 2 git git 4096 Mar 11 12:16 .cache -rw-r--r-- 1 git git 655 Mar 11 10:46 .profile drwxr-xr-x 7 git git 4096 Mar 11 12:12 repo.git drwxr-xr-x 2 git git 4096 Mar 11 12:58 .ssh - поробуем клонировать -bash-4.3$ git clone ssh://git@olimp-gate.gnulinuxcenter.ru:20152/~/repo.git/ Клонирование в «repo»… remote: Counting objects: 6, done. remote: Compressing objects: 100% (3/3), done. remote: Total 6 (delta 0), reused 0 (delta 0) Получение объектов: 100% (6/6), 485 bytes | 0 bytes/s, готово. Проверка соединения… готово. - пробуем push -bash-4.3$ cd repo/ -bash-4.3$ date > test1.txt -bash-4.3$ git add test1.txt -bash-4.3$ git commit -m test1 [master 561dfba] test1 Committer: Sasha Frik Ваше имя или электронная почта настроены автоматически на основании вашего имени пользователя и имени машины. Пожалуйста, проверьте, что они определены правильно. Вы можете отключить это уведомление установив их напрямую. Запустите следующую команду и следуйте инструкциям вашего текстового редактора, для редактирования вашего файла конфигурации: git config --global --edit После этого, изменить авторство этой коммита можно будет с помощью команды: git commit --amend --reset-author 1 file changed, 1 insertion(+), 1 deletion(-) -bash-4.3$ git push Подсчет объектов: 3, готово. Delta compression using up to 2 threads. Сжатие объектов: 100% (2/2), готово. Запись объектов: 100% (3/3), 298 bytes | 0 bytes/s, готово. Total 3 (delta 0), reused 0 (delta 0) To ssh://olimp-gate.gnulinuxcenter.ru:20152/~/repo.git/ 06fd1e4..561dfba master -> master === 2) root@lc2017-152:~# nano ~git/.ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDjheGPw18pl5tVmJJxSelEL1F9IE0TJA61N5vo5scn7qXV8XluOMtiLoGIo4rCKTsOQSVoH8pU/pWhKNnsO+WpFUJAQNYV2JRTO96s5rpRrQJi2Bkzb9kiH8O4fD9KHJU/v8jsOtLdbtagGqK8WTGiOI//VKvE4MFh0oEWEnmk3TWDQrMYB6KKfjG6qSRpnjKi4ZvsqoWoyDG9xFFeGt884Zz+1H8YBCUSGYf3Q61zOsYXL/L+vrLJ9WIzYjseXFUGh+er9DL6dRCZx/L2KrXpsW3w3Bi2Xg/IQZfsk4pbtXUC9qzryUeoVrfHIFluIc1+Hgh38luGakxgz2wGUD6f al@teta ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCw2t4b6E8jvRbXdLZkhJknKYec9TRj/mFTEB8d1WonQT1ikjsJL7M7s0t4m4C14aQawhhrE86wAp/uGCgwYwV+p37q6ITmvKWSEMx+BP2+K1Tl2SzfCs27Z5o6amp2AXxo2YNjIEvfCFKGRk0fYY4OnfYHu7nTepcX+gRRdBHSKwmJDNTWPchF7RuWDRuFgFh59K+vQcITyiwJBYdiuQdjgsHgjHa2eKB1GzlYvD+I776BQHCZbKJLW6w0k9P2oBsbC8fk70PEWRjNsslwNfxIzqpjAfI+Noe86AP7++kvB5v7qA9fu8wqUUffHRYbgeX0WAJ2z2Bwvkdm6KH7K7Sv command="[ \"${SSH_ORIGINAL_COMMAND:0:16}\" = git-receive-pack ] || sh -c \"$SSH_ORIGINAL_COMMAND\"" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4jreEzTq3b5kmhzTgDWsgKo3UOxbLqlKnlvPap4tKbsjz94o0ak2JEK5PFheUIT2na95We5WzF2nQwzAM+1dR/vUbYO1tCEG9RlIYDsm79NLwmDXB7Y6YoZ3BT6+Iz8rtbNXvjgcaJB9ZpUWe/8MH1Owf3F61zA8axg4gaLVpcuS42pyJkhEgq1jTjokNaMaTDadWf9ZUuO2ffVpeDXQK/ALxR3VmMgwoSrR2HjscA9cPK4pHmIuvHlubusTxf2cN5Ez5Fev+UGA+RdJ5H2COTtaqUJhuxuDTpg5+oErSeqfD0jOrh3e3CTvslZLtTWI3WoeUtnA9HSlHGB4gIggB al@teta root@lc2017-152:~# === 3) apt-get install ldap-auth-client при установке конфигуратор спрашивает параметры uri и base но потом - облом выявилось 3 бага в существующих конфигах: *** 3.1) /etc/nsswitch.conf - добавать ldap root@lc2017-152:~# cat /etc/nsswitch.conf # /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat ldap group: compat ldap shadow: compat ldap gshadow: files hosts: files dns ldap networks: files ldap protocols: db files services: db files ethers: db files rpc: db files netgroup: nis *** 3.2) /etc/hosts - добавить имя локального хоста, иначе ldap виснет пытаясь узнать у гугла, кто он такой root@lc2017-152:~# cat /etc/hosts 127.0.0.1 localhost lc2017-152 lc2017-152.openstacklocal *** 3.3) /etc/ssh/sshd_config - там была запрещена аутентификация по паролю, нужно поставить PasswordAuthentication yes === 4) root@lc2017-152:~# mkdir -p /share/in root@lc2017-152:~# mkdir -p /share/out root@lc2017-152:~# chgrp /share/out root@lc2017-152:~# chgrp 1000 /share/out root@lc2017-152:~# chgrp 1000 /share/in root@lc2017-152:~# chmod 770 /share/in root@lc2017-152:~# chmod 750 /share/out === 5) запустить команду, которая будет раз в секунду все это делать и оставить ее работать на время проверки задания: root@lc2017-152:~# cd /share/in root@lc2017-152:/share/in# while sleep 1; do for i in *; do [ "$i" = "*" ] && break; [ ! -e "/share/out/$i.out" ] && cp "$i" "/share/out/$i.out"; done; done