Разбор вопросов олимпиады root.yandex Тур1-Игра1-В1-В20 (up)

Yulka-MOl

Всем привет.
Есть предложение совместно разобрать вопросы yandex.root прошлого года.
В слое normal публикуем вопросы (по 10 в неделю).
В слое invisible оставляем ответы (кто хочет).
В слое garbage публикуем ответы Яндекса.
Поехали...

Yulka-MOl

1. У вас есть Linux-машина с адресами $A и $B. В сети $B есть маршрутизатор с адресом $C. Добавьте на машину маршрут по умолчанию через $C, но так, чтобы в качестве адреса источника использовался $A.
Ответ:
2. Какая утилита позволяет узнать названия библиотечных функций, используемых программой в процессе исполнения?
Ответ:
3. Какая команда покажет в том числе количество байт, отправленных в swap и полученных оттуда?
Ответ:
4. Какую строку необходимо добавить в '/etc/pam.d/ssh', чтобы при первом входе в систему пользователю автоматически создавался домашний каталог из '/etc/user_template' ?
Ответ:
5. Какой параметр файла dhcpd.conf указывает, с какого сервера надо начинать PXE загрузку?
Ответ:
6. Какой утилитой можно посмотреть Kerberos ключи для текущего пользователя?
Ответ:
7. Значение MTU на интерфейсе eth0 равно 700. Сколько IP-пакетов будет отправлено с данного интерфейса после выполнения команды ping -s7000 -c1 -Ieth0 10.0.0.1?
Ответ:
8. Каким образом в ext3 всем пользователям, включая root, запретить модификацию файла /tmp/file и создание на него жестких ссылок?
Ответ:
9. Локальная папка /var/www/html открыта для записи всем пользователям. Пользователь vasily хочет постоянно создавать в ней файлы, которые бы мог удалять только он сам и root. Какую команду должен выполнить root, чтобы исполнить желание пользователя vasily?
Ответ:
10. Вы только что дали файлу права на выполнение:
chmod +x /usr/local/bin/script.pl
Как теперь запустить его, введя всего 2 символа с клавиатуры (и нажав Enter)?
Ответ:

bestpilot8

Лучше пиши ответы в теге color=confluent.

Yulka-MOl

Буду по 2 вопроса в день разбирать. Гуру меня поправят.
А может быть завтра вечером кто-нибудь другой разберет следующие 2 вопроса.

Yulka-MOl

Вопрос 1.
У вас есть Linux-машина с адресами $A и $B. В сети $B есть маршрутизатор с адресом $C. Добавьте на машину маршрут по умолчанию через $C, но так, чтобы в качестве адреса источника использовался $A.
Мой ответ:
На OpenNET есть 2 коротких статьи о настройках маршрутизации.
Одна по теме. http://www.opennet.ru/base/net/iproute2.txt.html
Другая альтернативная (через iptables). http://www.opennet.ru/base/net/ubuntu_route.txt.html
ip route -управление таблицей машрутизации.
Сокращения:
route, ro, r.
ip route add - добавить новый маршрут
ip route change - изменить маршрут
ip route replace - заменить маршрут
Сокращения:
add, a; change, chg; replace, repl.
Аргументы:
to - назначение маршрута.
metric Число - задание метрики маршрута.
table Идентификатор таблицы - таблица связанная с маршрутом. Идентификатором
таблицы может быть номер или строка из файла /etc/iproute2/rt_tables
dev Имя - имя устройства.
via Адрес - адрес перехода к следующему маршрутизатору
src Адрес - адрес источника
nexthop NEXTHOP - следующий переход в случае если используется многоканальная
маршрутизация.
via Адрес
dev Имя - имя устройства.
weight Число - вес маршрута, определяющийся шириной канала или качеством .
Примеры:
Добавляем маршрут к сети 10.0.0/24 через 193.233.7.65
ip route add 10.0.0/24 via 193.233.7.65
Добавим шлюз по умолчанию в случае использования двух каналов в зависимости от
загрузки канала:
ip route add default scope global nexthop dev ppp0 \
nexthop dev ppp1
ip route delete - удалить маршрут.
Сокращение:
delete, del, d.
Аргументы:
Аргументы данной команды с сходны с ip route add.
Пример:
Удаляем маршрут созданный в предыдущем разделе.
ip route del default scope global nexthop dev ppp0 \
     nexthop dev ppp1
ip rule - управление правилами машрутизации
Сокращение:
rule, ru
Маршрутизация может производиться не только в зависимости от адреса получателя,
но и по адресу источника, IP протокола и транспортного протокола.
По умолчанию в существуют 3 правила:
Таблица Local (ID 255) - специальная таблица маршрутизации с самым большим
приоритетом, которая содержит таблицы для локальных и широковещательных
адресов.
Таблица Main (ID 254) - обычная таблица маршрутизации.
Таблица Default (ID 253) - пустая по умолчанию таблица.
ip rule add - добавить новое правило.
Ip rule delete - удалить правило.
Сокращения:
add, a; delete, del, d
Аргументы:
from - адрес источник
to - адрес получателя
iif Имя - имя интерфейса с которого будет получен пакет
fwmark Метка - метка пакета, устанавливаемая firewall.
table Идентификатор таблицы - таблица связанная с маршрутом. Идентификатором
таблицы может быть номер или строка из файла /etc/iproute2/rt_tables
priority Число- приоритет таблицы.
Примеры:
Маршрутизировать пакеты с сети 192.203.80.0/24 согласно таблицы example.
ip ru add from 192.203.80.0/24 table example prio 220
Рассмотрим примеры использования маршрутизации на основе правил.
1. Пусть у нас есть два канала в интернет: быстрый модем с IP адресом
212.64.94.251 связанный PPP c 212.64.94.1 и медленный c 212.64.78.148
связанный PPP c 195.96.98.253. Надо пакеты одного пользователя отправлять
через медленный модем. Для этого сформируем новое правило:
# echo 200 User >> /etc/iproute2/rt_tables
# ip rule add from 10.0.0.10 table John
# ip rule ls
0: from all lookup local
32765: from 10.0.0.10 lookup John
32766: from all lookup main
32767: from all lookup default
Далее назначаем для этого пользователя шлюз по умолчанию и очищаем кэш таблицы
маршрутизации для того чтобы наши изменения вступили в действие.
# ip route add default via 195.96.98.253 dev ppp2 table John
# ip route flush cache
2. Необходимо направить весь трафик на 80 порт через сетую карту eth0.
Пометим пакеты идущие на 80 порт.
# iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 80 \
-j MARK --set-mark 2
Создадим правила для помеченных пакетов.
# echo 202 www.out >> /etc/iproute2/rt_tables
# ip rule add fwmark 2 table www.out
# ip route add default via 10.0.0.2 dev eth0 table www.out
# ip route flush cache
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ:
  1. IP Command Reference Alexey N. Kuznetsov
  2. Linux Advanced Routing & Traffic Control HOWTO

Yulka-MOl

Вопрос 2.
Какая утилита позволяет узнать названия библиотечных функций, используемых программой в процессе исполнения?
Мой ответ:
Пример shell кода:
 Wiki - Список программ UNIX подобных систем
ltrace — (Linux) Трассировщик вызовов динамических библиотек в адресном пространстве наблюдаемого процесса
man ltrace
http://linux.die.net/man/1/ltrace
ltrace [-CdfhiLrStttV] [-a column] [-e expr] [-l filename] [-n nr] [-o filename] [-p pid] ... [-s strsize] [-u username] [-X extern] [-x extern] ... [--align=column] [--debug] [--demangle] [--help] [--indent=nr] [--library=filename] [--output=filename] [--version] [command [arg ...]]
Description
 ltrace is a program that simply runs the specified command until it exits. It intercepts and records the dynamic library calls which are called by the executed process and the signals which are received by that process. It can also intercept and print the system calls executed by the program.
P.S. Альтернативы ltrace. Возможно strace.
Пример вызова из shell:

Serab

ip route add - добавить новый маршрут
ip route change - изменить маршрут
ip route replace - заменить маршрут
Сокращения:
add, a; change, chg; replace, repl.
он позволяет сокращать до любого однозначного префикса.
я на своих машинах еще добавляю alias i=ip :grin:

spitfire

он позволяет сокращать до любого однозначного префикса.
Ага, и в какой-то недавней версии ip l стало сначала вызывать ip l2tp вместо ip link. Я поначалу очень удивился странной ошибке вместо списка линков.

Serab

так он же неоднозначен выходит. Какое там тогда поведение на самом деле?

spitfire

Тогда берётся лексикографически первая, подозреваю. По крайней мере ip l оно мне теперь выполняет как ip l2tp.

Serab

баг мб? вроде оно раньше на неоднозачные ошибку выкидывало.
хотя это какой-то странный баг должен быть.

Yulka-MOl

3. Какая команда покажет в том числе количество байт, отправленных в swap и полученных оттуда?
Мой ответ:
Пример команды в shell.
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 376448 35132 279352 0 0 65 4 94 193 1 2 96 1
Соответственно здесь si - это отправленные с диска (swap) в память, а so - это загруженные на диск (swap) из памяти.
man vmstat
http://unixhelp.ed.ac.uk/CGI/man-cgi?vmstat
DESCRIPTION
vmstat reports information about processes, memory, paging, block IO,
traps, and cpu activity.
The first report produced gives averages since the last reboot. Addi-
tional reports give information on a sampling period of length delay.
The process and memory reports are instantaneous in either case.
Memory
swpd: the amount of virtual memory used.
Swap
si: Amount of memory swapped in from disk (/s).
so: Amount of memory swapped to disk (/s).

Yulka-MOl

4. Какую строку необходимо добавить в '/etc/pam.d/ssh', чтобы при первом входе в систему пользователю автоматически создавался домашний каталог из '/etc/user_template' ?
Мой ответ:
Wiki: PAM (Pluggable Authentication Modules)
Это набор разделяемых библиотек, которые позволяют интегрировать различные низкоуровневые методы аутентификации в виде единого высокоуровневого API. Это позволяет предоставить единые механизмы для управления, встраивания прикладных программ в процесс аутентификации. Является одной из частей стандартного механизма обеспечения безопасности UNIX-систем.
PAM'ятка матерого юниксоида. Модули аутентификации.
Даёт следующий ответ.
session required pam_mkhomedir.so skel=/etc/user_tamplate umask=027
Если быть точным, то там написано следующее.
Стек PAM-модулей session предназначен для модулей, подготавливающих окружение для только что вошедшего пользователя. Это может быть любое действие, связанное с выделением или ограничением доступных пользователям ресурсов. Наиболее показательный пример - модуль pam_limits из пакета Linux-PAM (но не OpenPAM). Он ограничивает ресурсы приложений вошедшего пользователя на основе конфигурационного файла /etc/security/limits.conf.
Если говорить о сторонних разработках, то в первую очередь следует упомянуть полезнейший модуль pam_chroot (sourceforge.net/projects/pam-chroot единственная задача которого - помещать вошедших пользователей в песочницу. Модуль незаменим, когда требуется организация shell-, ftp- или какого-либо другого хостинга и любых конфигураций, предусматривающих вход в систему сомнительных лиц. Модуль очень прост в использовании. Для настройки достаточно выполнить две команды:
# echo 'session required pam_chroot.so' >> /etc/pam.d/ssh
# echo 'vasya /usr/chroot' >> /etc/security/chroot.conf
Все, теперь vasya, вошедший с помощью ssh-клиента, будет помещен в каталог /usr/chroot и не сможет из него выбраться. На втором месте в рейтинге – модуль pam_mkhomedir из пакета Linux-PAM, просто создающий домашний каталог для прошедшего аутентификацию пользователя. Поначалу полезность модуля может показаться сомнительной, но администраторы гетерогенных сетей, состоящих вперемешку из машин Windows/UNIX, ценят его дороже своих потертых джинсов. Дело в том, что в таких сетях принято использовать Active Directory для хранения учетных данных пользователей, коих может быть не одна сотня. Вместо того чтобы создавать многочисленные каталоги для каждого пользователя, зарегистрированного в AD, они просто выполняют приведенную ниже команду на всех UNIX-машинах и удаляются в серверную порезаться в «контру»:
# echo 'session required pam_mkhomedir.so skel=/etc/skel/ umask=027' >> /etc/pam.d/common-session
Модуль обычно используется в связке с модулем pam_winbind, осуществляющим аутентификацию в AD, или с pam_ldap, аутентифицирующим пользователей, используя сервер LDAP.
Почетное третье место занимает завязанный на возможностях Linux-ядра модуль pam_namespace. Его задача - незаметное создание изолированной копии общедоступного каталога (/tmp, например) для каждого пользователя. Другими словами, вошедший пользователь получает доступ только к своей версии каталога /tmp и не видит файлов других пользователей. Нужно это для борьбы с методами взлома, основанными на использовании состояний гонок (race condition символических ссылок и просто для ограждения возможного нарушителя от любых файлов легальных пользователей.
Модуль использует простой конфигурационный файл /etc/security/namespace.conf для принятия решения о том, какие каталоги должны быть подменены. Вот простая инструкция для изолирования каталога /tmp:
# mkdir /tmp-inst
# chmod 0 /tmp-inst
# echo "/tmp /tmp-inst/ user root" >> /etc/security/namespace.conf
# echo "session required pam_namespace.so" >> /etc/pam.d/common-session
Результат: индивидуальный каталог /tmp для каждого пользователя, за исключением root'а (на самом деле файлы будут храниться в каталоге /tmp-inst/юзер). Конфигурационная строка для изолирования каталога /home (чтобы злоумышленник не смог увидеть и получить доступ к каталогам пользователей) должна выглядеть так:
$HOME $HOME/$USER.inst/ user root
=====
Также информацию о PAM я когда-то встречал в книге Linux Administration's Security Guide .
Плюс на wiki куча ссылок на доки по Ubuntu и прочим, но я там ничего полезного не нашел.

zya369

если не секрет, какую цель ты преследуешь этим тредом?
показать свои знания? узнать ответы, которых не знаешь? просто подумать тут вслух?
если первое, то вряд ли эти знания кого-то удивят, особенно в таком неспешном формате, т.к. все в целом легко гуглится
если второе, то тоже непонятно, т.к. опять-таки гугл :confused:
если третье, то как-то странно, это же форум, а не бложик
ЗЫ это не претензия, просто интересно

Yulka-MOl


Моя цель - неспешно разобрать все вопросы олимпиады.
Гуглятся далеко не все вопросы.
Детальный разбор 2х вопросов в день - это просто нормальный темп для меня приведения в порядок своих знаний о linux администрировании.
Если кто-то заметит, что я пишу какую-то чушь - то надеюсь меня поправят, поэтому я и решил писать в тему на форуме, а не плодить блоги. :)

Serab

мне интересно, читаю как статью, спасибо автору.

Yulka-MOl

5. Какой параметр файла dhcpd.conf указывает, с какого сервера надо начинать PXE загрузку?
Мой ответ:
Wiki: Preboot eXecution Environment (PXE)
PXE (англ. Preboot eXecution Environment, произносится пикси) — среда для загрузки компьютеров с помощью сетевой карты без использования жёстких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы. Для организации загрузки системы в PXE используются протоколы IP, UDP, BOOTP и TFTP.
PXE-код, обычно находящийся в ПЗУ сетевой карты, получает из сети по протоколу TFTP (получив адрес TFTP-сервера по BOOTP) исполняемый файл, после чего передаёт ему управление.
Спецификация PXE ограничивает размер загрузчика 32 килобайтами, поэтому иногда используется двухстадийная загрузка, когда первый загрузчик получает и запускает вторичный, который уже получает и запускает образ операционной системы.
Одна из реализаций загружаемого по PXE файла — pxelinux из комплекта программ syslinux. pxelinux умеет показывать пользователю меню, похожее на меню syslinux и загружать по сети и передавать управление ядру Linux и программам, имеющим идентичный формат загрузки (например, Memtest86).
HabraHabr статья про PXE Boot
DHCP-Сервер
Установим пакет: dhcp3-server
sudo apt-get install dhcp3-server
Теперь нам нужно его настроить для этого откроем фаил /etc/dhcp3/dhcpd.conf удобным нам способом. В моем случае это:
nano /etc/dhcp3/dhcpd.conf
Мой фаил /etc/dhcp3/dhcpd.conf:
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
server-name "10.22.22.22";
subnet 10.22.22.0 netmask 255.255.255.0 {
pool {
range 10.22.22.1 10.22.22.21;
next-server 10.22.22.22; # Адресе tftp сервера для загрузки фаила с загрузчиком
filename "pxelinux.0"; # Имя фаила с загрузчиком
}
}
Внимание! если на вашем DHCP сервере сконфигурированы Static адреса для клиентов, то DHCP сервер проигнорирует вышеописанную конфигурацию и «отдаст» клиенту только те параметры которые внесены в секцию параметров static клиента.
Подробности: man dhcpd.conf
Перезапускаем dhcp сервер:
sudo /etc/inti.d/dhcp3-server restart

Yulka-MOl

6. Какой утилитой можно посмотреть Kerberos ключи для текущего пользователя?
Мой ответ:
Данный протокол используется при идентификации по LDAP в сети.
Wiki про Kerberos: Сетевой протокол аутентификации Kerberos
Kerberos — сетевой протокол аутентификации, позволяющий передавать данные через незащищённые сети для безопасной идентификации. Он ориентирован в первую очередь на клиент-серверную модель и обеспечивает взаимную аутентификацию — оба пользователя через сервер подтверждают личности друг друга. Данная модель является одним из вариантов Нидхем-Шрёдер-протокола аутентификации на основе доверенной третьей стороны и его модификациях, предложенных Denning и Sacco.
Wiki про LDAP: Lightweight Directory Access Protocol (LDAP)
Lightweight Directory Access Protocol это — «облегчённый протокол доступа к каталогам») протокол прикладного уровня для доступа к службе каталогов X.500, разработанный IETF как облегчённый вариант разработанного ITU-T протокола DAP. LDAP — относительно простой протокол, использующий TCP/IP и позволяющий производить операции авторизации (bind поиска (search) и сравнения (compare а также операции добавления, изменения или удаления записей. Обычно LDAP-сервер принимает входящие соединения на порт 389 по протоколам TCP или UDP. Для LDAP-сеансов, инкапсулированных в SSL, обычно используется порт 636.
Wiki про X.500: Серия стандартов X.500
X.500 — серия стандартов ITU-T (1993 г.) для службы распределенного каталога сети. Каталоги X.500 предоставляют централизованную информацию обо всех именованных объектах сети (ресурсах, приложениях и пользователях) (рекомендации MKKTT для каталогов). Изначально стандарт X.500 планировался для использования именований узлов, адресов и почтовых ящиков, предусмотренных стандартом X.400.
Каталоги, как правило, содержат статические и редко изменяемые элементы, так как каталоги изначально оптимизированы для очень быстрого отклика на запросы поиска и чтения данных.
Каталоги полностью структурированы. Каждый элемент данных имеет имя, которое, одновременно определяет положение элемента в иерархии каталога. Каждый атрибут элемента, как правило, может иметь несколько значений и это является нормальным поведением, в отличие от обычных баз данных.
Каталоги являются очень специфическими системами хранения данных. Их удобно использовать для иерархически скомпонованных объектов. Каталоги могут быть реплицированы между несколькими серверами, для удобного доступа и распределения нагрузки. Текстовая информация очень хорошо подходит для каталогов, так как легко поддается поиску, но данные могут быть представлены и в любой другой форме.
Очень удобно использовать каталоги для управления пользовательскими аккаунтами, машинами, схемами доступа, приложениями и многим другим, поскольку механизмы управления чаще всего только считывают данные из центрального хранилища. В то же время каталоги очень гибко настраиваются для любого уровня контроля доступа, позволяя ограничивать доступ к информации, как только угодно.
Каталоги часто используются для хранения информации о пользователях или реальных объектах. Например, приложения могут использовать данные, ассоциированные с человеком, такие, как реальный или сетевой адрес, телефон, e-mail, уровень доступа и т. д. Поскольку во многие приложения интегрированы средства доступа к каталогам, то пользователи значительно эффективнее используют программное обеспечение для совместной работы. Очень удобно использовать каталоги для централизованного управления сетью, поскольку данные о пользователях, парке машин и запускаемых сервисах сосредоточены в одном месте и легко администрируются.
Теперь про настройки.
Мне ближе Ubuntu, поэтому цитирую её документацию по настройкам и тестированию.
Ubuntu Guide Kerberos
The new user principal can be tested using the kinit utility:
# kinit steve/admin
steve/EXAMPLE.COM's Password:
After entering the password, use the klist utility to view information about the Ticket Granting Ticket (TGT):
# klist
Credentials cache: FILE:/tmp/krb5cc_1000
     Principal: steve/EXAMPLE.COM
  Issued Expires Principal
Jul 13 17:53:34 Jul 14 03:53:34 krbtgt/EXAMPLE.EXAMPLE.COM
 You may need to add an entry into the /etc/hosts for the KDC. For example:
192.168.0.1 kdc01.example.com kdc01
 Replacing 192.168.0.1 with the IP address of your KDC.

Impils

В виндах посмотреть Kerberos ключи можно утилитой с таким же названием - klist.
Для XP и 2003 она входит в состав Resource Kit Tools
Для vista, 7, 2008, 2008 R2 она включена в дистрибутив.

Yulka-MOl

7. Значение MTU на интерфейсе eth0 равно 700. Сколько IP-пакетов будет отправлено с данного интерфейса после выполнения команды ping -s7000 -c1 -Ieth0 10.0.0.1?
Мой ответ:
Wiki: Утилита ping
Ping — утилита для проверки соединений в сетях на основе TCP/IP.
Утилита отправляет запросы (ICMP Echo-Request) протокола ICMP указанному узлу сети и фиксирует поступающие ответы (ICMP Echo-Reply). Время между отправкой запроса и получением ответа (RTT, от англ. Round Trip Time) позволяет определять двусторонние задержки (RTT) по маршруту и частоту потери пакетов, то есть косвенно определять загруженность на каналах передачи данных и промежуточных устройствах.
Wiki: Internet Control Message Protocol (ICMP)
Формат пакета ICMP
Бит 0—7 8—15 16—31
0 Тип Код Контрольная сумма
32 Содержание сообщения (зависит от значений полей «Код» и «Тип»)
Типы пакетов ICMP (полный список)
0 — Эхо-ответ
1 — Зарезервировано
2 — Зарезервировано
3 — Адресат недоступен
Wiki: Maximum Transmission Unit (MTU)
В компьютерных сетях термин Maximum Transmission Unit (MTU) используется для определения максимального размера блока (в байтах который может быть передан на канальном уровне сетевой модели OSI.
Значения MTU зависят от коммуникационного интерфейса (сетевая плата, последовательный порт, и т. д.).
Значение MTU может быть определено стандартом (например для Ethernet либо может выбираться в момент установки соединения (обычно в случае прямых подключений точка-точка). Чем выше значение MTU, тем меньше заголовков передаётся по сети — а значит, выше пропускная способность. Однако медленные интерфейсы могут передавать большой пакет значительное время, увеличивая время ожидания для других пакетов. К примеру, пакет размером в 1500 байт, максимально допустимый для Ethernet, может «подвесить» 14.4k модем примерно на одну секунду(1500*8=12000 бит, 14.4*1000=14400 бит/с, Время передачи: 12000/14400 = 0.83сек).
Интернет протокол был разработан для использования в различных сетевых технологиях, каждая из которых может оперировать пакетами различных размеров. Если говорить об IP с точки зрения MTU, можно обнаружить несколько проблем. Во-первых, если хост будет знать значение MTU для собственного (возможно и своих соседей) интерфейса, минимальное значение MTU для всех узлов сети будет неизвестно. Другая потенциальная проблема заключается в том, что протоколы более высокого уровня могут создавать пакеты большего размера, не поддерживаемые другими узлами сети. Очевидно, что скорость передачи будет тем больше, чем больше будет размер пакета. Однако не все узлы в сети могут передавать информацию с максимальной полезной нагрузкой.
 
Для устранения этих проблем IP поддерживает фрагментацию, что позволяет разбивать датаграмму на меньшие кусочки, каждый из которых будет достаточно мал, чтобы беспрепятственно пройти через узел, из-за которого происходит фрагментация. Процесс фрагментации происходит на уровне IP (третий уровень сетевой модели OSI фрагменты пакетов маркируются таким образом, чтобы IP целевого хоста мог произвести сборку фрагментов в оригинальную датаграмму. Подобный метод предполагает некоторые недостатки:
1. Целевой хост должен получить все фрагменты для того, чтобы собрать пакет. Если хотя бы один фрагмент утерян — весь пакет должен быть отправлен заново.
2. Когда значение MTU определенного узла меньше размера большинства пакетов, которые должны быть переданы, почти все пакеты должны пройти фрагментацию. В некоторых случаях задержки, которые вызовет фрагментация всех пакетов, могут быть сочтены неприемлемыми.
3. Увеличивается нагрузка на CPU промежуточных маршрутизаторов
4. Увеличивается требование к памяти маршрутизатора, т.к необходимо хранить в буфере все фрагменты IP пакета
5. Некоторые простые фаерволы блокируют все фрагменты, т.к в них не содержится информация о более высоких уровнях(TCP/UDP)
6. Из-за оверхэда(копия IP-заголовка для каждого фрагмента) не эффективно используется полоса пропускания
7. Не существует простого способа определения MTU для всех интерфейсов сети на пути к целевому хосту.
Интернет: О способах изменения MTU
===============
Теперь к задаче.
Man pages: ping
ping [ -LRUbdfnqrvVaAB] [ -c count] [ -i interval] [ -l preload] [ -p pattern] [ -s packetsize] [ -t ttl] [ -w deadline] [ -F flowlabel] [ -I interface] [ -M hint] [ -Q tos] [ -S sndbuf] [ -T timestamp option] [ -W timeout] [ hop ...] destination
-c count
 Stop after sending count ECHO_REQUEST packets. With deadline option, ping waits for count ECHO_REPLY packets, until the timeout expires.
-s packetsize
 Specifies the number of data bytes to be sent. The default is 56, which translates into 64 ICMP data bytes when combined with the 8 bytes of ICMP header data.
Мы поменяли MTU на значение 700 байт. А размер пакета ICMP сделали 7000 байт (и не забываем 8 байт на заголовок ICMP).
Итого пакеты получатся размером: (692 + 8) + (692 + 8) + (692 + 8) + ... + (692 + 8).
Кол-во пакетов = 7000 / 692 = 10,11 (округляем до 11).
Поправка от пользователя
Ответ правильный чисто случайно. Экзаменаторы Яндекса тоже лузеры, что выбрали payload 7000, надо было чуть-чуть меньше, чтобы при всяких разных ошибках результат не получался 11.
Правильный ответ: первый пакет будет содержать IP заголовок 20 б, и ICMP заголовок 8 б. Дальнейшие фрагменты будут содержать только IP заголовок 20 б. Тогда payload первого пакета будет 672 б, остаётся 6328 б, на которые потребуется ещё 10 пакетов с payload 680.
Ответ: 11

Yulka-MOl

8. Каким образом в ext3 всем пользователям, включая root, запретить модификацию файла /tmp/file и создание на него жестких ссылок?
Мой ответ:
chattr меняет атрибуты файлов на файловых системах Linux ext2 и ext3.
Wiki: Third Extended File System (EXT3)
Third Extended File System (третья версия расширенной файловой системы сокращённо ext3 или ext3fs — журналируемая файловая система, используемая в операционных системах на ядре Linux, является файловой системой по умолчанию во многих дистрибутивах. Основана на ФС ext2, начало разработки которой положил Стивен Твиди.
Основное отличие от ext2 состоит в том, что ext3 журналируема, то есть в ней предусмотрена запись некоторых данных, позволяющих восстановить файловую систему при сбоях в работе компьютера.
Интернет: Основные системные программы. Пакет e2fsprogs.
chattr - Изменяет атрибуты файла в файловой системе ext2, а также ext3 файловой системы - журналируемой версии ext2 файловой системы.
Man pages: документация по chattr
Команда управляет атрибутами файлов, формат которых задается в следующем символьном виде +-=[ASacDdIijsTtu].
Оператор `+' добавляет выбранные атрибуты к уже существующим атрибутам файлов; оператор `-' удаляет их; оператор `=' устанавливает только атрибуты, которые файлы имеют.
Новые атрибуты для файла выбираются из последовательности `acdijsuADST': (a) - "только добавление записей", (c) - "сжатый", (d) - "недампируемый", (i) - "недосягаемый", (j) - "с журналированием данных" , (s) - "с гарантированным удалением", (t) - "без склеивания хвостов файлов", (u) - "не удаляемый", (A) - "не обновляемый по времени доступа", (D) - "с синхронизацией изменений директории", (S) - "синхронно обновляемый", (T) - "на вершине иерархии директорий".
Следует учитывать, что действие атрибутов команды chattr перекрывает полномочия пользователя, направленные на модификацию или удаление файлов. Это свойство часто используют в качестве дополнительной меры по усилению безопасности системы. Например, установка атрибута i ("недосягаемый") для файла /etc/lilo.conf при помощи:
chattr +i /etc/lilo.conf
предотвращает любые изменения (случайные и не только) в файле lilo.conf. Установленные командой chattr атрибуты невозможно увидеть с помощью команды ls. Для этого следует применять команду lsattr.

Yulka-MOl

9. Локальная папка /var/www/html открыта для записи всем пользователям. Пользователь vasily хочет постоянно создавать в ней файлы, которые бы мог удалять только он сам и root. Какую команду должен выполнить root, чтобы исполнить желание пользователя vasily?
Мой ответ:
Wiki: Список программ UNIX подобных систем
chmod - изменяет права доступа к файлу.
Man pages: chmod
sticky-бит (t) - не описывается в POSIX. Такое специфическое название он получил из-за первоначальной функции, которую он выполнял: сохранял исполняемый код программы на устройстве подкачки. В настоящее время установка sticky-бита для каталога, приводит к тому, что только владелец файла и владелец этого каталога могут удалять этот файл из каталога. (Обычно это используется в каталогах типа /tmp, куда все имеют права на запись).
Числовой режим состоит из не более четырех восьмеричных цифр (от нуля до семи которые складываются из битовых масок 4, 2 и 1. Любые пропущенные разряды дополняются лидирующими нулями. Первая цифра выбирает установку идентификатора пользователя (setuid) (4) или идентификатора группы (setgid) (2) или sticky-бита (1). Вторая цифра выбирает права доступа для пользователя, владеющего данным файлом: чтение(4 запись (2) и выполнение (1); третья цифра выбирает права доступа для пользователей, входящих в данную группу, с тем же смыслом, что и у второй цифры; и четвертый разряд выбирает права доступа для остальных пользователей (не входящих в данную группу опять с тем же смыслом.
Итого. Мы хотим выставить sticky-бит - поэтому пишем chmod 1777 <имя файла> ( или просто +t).

Yulka-MOl

10. Вы только что дали файлу права на выполнение:
chmod +x /usr/local/bin/script.pl
Как теперь запустить его, введя всего 2 символа с клавиатуры (и нажав Enter)?
Ответ:
Интернет: Документация по bash от GNU
Wiki: Bourne again shell (Bash)
Bash - усовершенствованная и модернизированная вариация командной оболочки Bourne shell. Одна из наиболее популярных современных разновидностей командной оболочки UNIX. Особенно популярна в среде Linux, где она часто используется в качестве предустановленной командной оболочки.
Аргументы
$$ pid текущего shell’а (самого процесса-сценария)
$! pid последнего процесса в фоновом режиме
$? код возврата последнего процесса (функции или скрипта)
$x где x — номер параметра, переданного скрипту ($1, $2 и т. д., $0 — последний запущенный скрипт)
$# количество аргументов командной строки
$* все аргументы в виде одной строки (слова)
$@ то же самое, что и $*, но при этом каждый параметр представлен как отдельная строка (слово)
$- список флагов, переданных сценарию
$_ содержит последний аргумент предыдущей команды
Отсюда и трюк с двумя символами.
$_ запускаем последний аргумент утилиты chmod. :)
P.S. Странно, что про командную оболочку в вопросе не сказано. bash не указано явно.
А ведь согласно доке, указанной сверху $_ - это bash, а не shell фича.
When Bash invokes an external command, the variable ‘$_’ is set to the full path name of the command and passed to that command in its environment.

Yulka-MOl

Новая неделя - новые вопросы. Первый тур - первая игра - В11-В20.
Я надеюсь, что меня продолжают проверять читатели. :)

11. Какой файл требуется изменить, чтобы порядок DNS-запросов был следующий: ldap,dns,files?
Ответ:
12. Как сделать так, чтобы все вновь созданные файлы в папке /opt принадлежали той же группе, что и сама папка /opt?
Ответ:
13. Какую команду нужно выполнить в bash, чтобы получить следующий эффект при выполнении данного цикла?
somehost: ~# for i in `seq 2`; do echo $i; done
++ seq 2
+ for i in `seq 2`
+ echo 1
1
+ for i in `seq 2`
+ echo 2
2
Ответ:
14. Как можно из консоли (не используя консольные веб-браузеры) организовать интерактивную сессию с веб-сервером securehost, который работает только через SSL на порту 443?
Ответ:
15. Какая команда в MongoDB shell выведет uptime сервера в секундах?
Ответ:
16. Какой IPv6 адрес у ns1.yandex.ru? Укажите все возможные написания адреса.
Ответ:
17. Ваш сервер bind9 содержит динамически обновляемую сервером dhcpd зону our.zone.com в виде(view) internal. Вам необходимо поправить файл зоны вручную, не нарушая работоспособность остальных сервисов/зон. Каким образом вы можете временно приостановить обновление зоны сервером?
Ответ:
18. Вам нужно, чтобы сервер MySQL использовал страницы памяти размером 4 Мбайт. Какой параметр нужно добавить в его конфигурационный файл?
Ответ:
19. Вы купили хостинг сайта myhosting.ru с ssh и mySQL и хотели бы подсоединиться к mySQL серверу своей утилитой GUI-UTILITY. Она умеет подсоединяться только на порт 3306, но сервер разрешает подключения только с адреса localhost. К сожалению, у вас нет рутовых прав ни на сервере, ни на клиенте, соответственно, вы не можете изменить конфигурационные файлы. Как вам подключиться к серверу стандартными средствами Linux? Ответ не предполагает использование pipelines(|).
Ответ:
20. Какую строку нужно добавить в файл pg_hba.conf сервера PostgreSQL, чтобы разрешить пользователю 'abc' подключаться к базе 'topsecret' с IP-адреса '10.0.11.2' без пароля?
Ответ:

sergey_m

7. Значение MTU на интерфейсе eth0 равно 700. Сколько IP-пакетов будет отправлено с данного интерфейса после выполнения команды ping -s7000 -c1 -Ieth0 10.0.0.1?
...
Итого пакеты получатся размером: (692 + 8) + (692 + 8) + (692 + 8) + ... + (692 + 8).
Кол-во пакетов = 7000 / 692 = 10,11 (округляем до 11).
Ответ правильный чисто случайно. Экзаменаторы Яндекса тоже лузеры, что выбрали payload 7000, надо было чуть-чуть меньше, чтобы при всяких разных ошибках результат не получался 11.
Правильный ответ: первый пакет будет содержать IP заголовок 20 б, и ICMP заголовок 8 б. Дальнейшие фрагменты будут содержать только IP заголовок 20 б. Тогда payload первого пакета будет 672 б, остаётся 6328 б, на которые потребуется ещё 10 пакетов с payload 680.

sergey_m

Странно, что про командную оболочку в вопросе не сказано. bash не указано явно.
А ведь согласно доке, указанной сверху $_ - это bash, а не shell фича.
Это у линуксоидов так принято.

sergey_m

Вам нужно, чтобы сервер MySQL использовал страницы памяти размером 4 Мбайт. Какой параметр нужно добавить в его конфигурационный файл?
Очень интересно что они здесь имеют в виду. Разве в Linux уже есть механизм, который позволяет приложению менять page size?
http://en.wikipedia.org/wiki/Page_%28computer_memory%29
Оставить комментарий
Имя или ник:
Комментарий: