По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В этой статье рассматривается OSPF и все проблемы, которые могут возникнуть с этим протоколом. OSPF отличается от EIGRP протоколом состояния канала, но общим для них является то, что оба протокола маршрутизации устанавливают соседство до обмена информацией о маршрутизации. В случае OSPF мы обмениваемся LSA (объявление о состоянии канала), чтобы создать LSDB (база данных о состоянии канала). Наилучшая информация из LSDB будет скопирована в таблицу маршрутизации. В этой части мы начнем с устранения неполадок соседей OSPF. Как только у нас есть рабочее соседство OSPF, мы рассмотрим другие проблемы, такие как отсутствующие маршруты. Full просмотр соседства OSPF При просмотре соседства OSPF, мы видим, что оно сообщает нам Full. Необходимо больше информации для понимания состояния Full. Если смежность соседства OSPF не полная, мы рассматриваем одно из следующих состояний: Соседей нет вообще Оно "залипло" в ATTEMPT. Оно "залипло" в INIT. Оно "залипло" в 2-WAY. Оно "залипло" в EXSTART/EXCHANGE. Оно "залипло" в LOADING. Давайте начнем и рассмотрим разные ситуации, которые могут возникнуть с соседством OSPF! Видео: протокол OSPF (Open Shortest Path First) за 8 минут Урок 1 у нас есть 2 маршрутизатора Мы начнем со сценариев, когда OSPF вообще не имеет соседства. В приведенном выше примере у нас есть 2 маршрутизатора. нет никакого OSPF соседства Как вы можете видеть, у нас нет никакого OSPF соседства, что может быть не так? show ip ospf interface show ip ospf interface Можно было просто посмотреть на текущую конфигурацию и выяснить, что не так, но мы не ищем простых путей. Мы используем другие полезные команды OSPF. Сначала используем команду show ip ospf interface. Мы видим, что OSPF не включен на интерфейсе FastEthernet 0/0 R1, но он работает на R2. Кто-то допустил ошибку с командой network и набрал неверный сетевой адрес Кто-то допустил ошибку с командой network и набрал неверный сетевой адрес ... простая ошибка, но такие вещи случаются. R1(config)#router ospf 1 R1(config-router)#no network 192.168.21.0 0.0.0.255 area 0 R1(config-router)#network 192.168.12.0 0.0.0.255 area 0 Настройка правильного сетевого адреса и обратной маски устраняет эту ошибку. Настройка правильного сетевого адреса Проблема решена. Соседство OSPF установлено. Это было легкое начало... Итог урока: проверьте правильность настройки сетевого адреса, обратной маски и области. Урок 2 2 маршрутизатора, но проблема другая Очередная проблема. Схема аналогичная: 2 маршрутизатора, но проблема другая. нет никакого соседства OSPF Как вы видите, нет никакого соседства OSPF. Протокол OSPF был включен на интерфейсе обоих маршрутизаторов Протокол OSPF был включен на интерфейсе обоих маршрутизаторов, поэтому мы знаем, что был использован правильный тип сети. Однако если вы внимательно посмотрите на R1, то увидите, что на нем написано "No Hellos (Пассивный интерфейс)". Если вы настроите пассивный интерфейс, то сеть на интерфейсе все равно будет объявлена, но она не будет отправлять приветственные пакеты OSPF. Таким образом, невозможно создать соседство OSPF. невозможно создать соседство OSPF Вот она проблема. R1(config)#router ospf 1 R1(config-router) #no passive-interface Fe0/0 Удалим пассивный интерфейс. Удалим пассивный интерфейс Соседство OSPF работает. Проблема устранена! Итог урока: проверьте, что OSPF отправляет приветственные пакеты на интерфейс, поскольку, в противном случае, вы не сможете создать соседство. Урок 3 те же маршрутизаторы, другая проблема Следующий сценарий с теми же маршрутизаторами, но другая проблема. R1 показывает, что наш сосед OSPF находится в состоянии INIT R2 ничего не показывает Интересно... R1 показывает, что наш сосед OSPF находится в состоянии INIT, а R2 ничего не показывает. OSPF был правильно настроен на обоих интерфейсах OSPF был правильно настроен на обоих интерфейсах Как мы видим, в примере выше OSPF был правильно настроен на обоих интерфейсах. Поскольку R1 показывает состояние INIT, мы можем сделать вывод, что он получает что-то от R2. R2 ничего не показывает, поэтому, вероятно, ничего не получает от R1. OSPF использует пакеты приветствия для установления соседства OSPF, и они отправляются с использованием многоадресного адреса 224.0.0.5. можем ли мы пропинговать адрес многоадресной рассылки можем ли мы пропинговать адрес многоадресной рассылки Рекомендуется проверить, можем ли мы пропинговать адрес многоадресной рассылки, который OSPF использует для пакетов приветствия. Мы видим, что R1 и R2 оба не получают ответа. Отправка эхо-запросов друг другу проходят без проблем Отправка эхо-запросов друг другу проходят без проблем Отправка эхо-запросов друг другу проходят без проблем. Так что может вызвать проблемы с отправкой и получением многоадресного трафика OSPF? Как насчет списка доступа? на R2 имеется входящий список доступа на R2 имеется входящий список доступа Мы что-то нашли. И это то, что на R2 имеется входящий список доступа с именем BLOCKSTUFF. в нижней части access-list имеется данный запрет Список доступа разрешает только TCP, UDP и ICMP трафик. OSPF не использует TCP или UDP, и он удаляется этим списком доступа из-за deny any. Мы этого не видим в верхнем листинге, но в нижней части access-list имеется данный запрет. R2(config)#ip access-list extended BLOCKSTUFF R2(config-ext-nacl)#5 permit ospf any any проведем коррекцию Проведем коррекцию access-list, чтобы был разрешен трафик OSPF. теперь она отображается как Full Проблема решена, теперь она отображается как Full. теперь можно пинговать адрес многоадресной рассылки 224.0.0.5 OSPF теперь можно пинговать адрес многоадресной рассылки 224.0.0.5 OSPF Ну что, теперь можно пинговать адрес многоадресной рассылки 224.0.0.5 OSPF. Мы видим ответ с другой стороны. Итог урока: не блокируйте многоадресные адреса OSPF 224.0.0.5 и 224.0.0.6 (DR / BDR). Урок 4 от же сценарий, другая проблема Это еще не все! Тот же сценарий, другая проблема: Соседство OSPF отсутствует, но мы видим, что OSPF был включен на интерфейсе Соседство OSPF отсутствует, но мы видим, что OSPF был включен на интерфейсе Соседство OSPF отсутствует, но мы видим, что OSPF был включен на интерфейсе Соседство OSPF отсутствует, но мы видим, что OSPF был включен на интерфейсе Соседство OSPF отсутствует, но мы видим, что OSPF был включен на интерфейсе. Пинг на адреса многоадресной рассылки проходит Пинг на адреса многоадресной рассылки проходит Пинг на адреса многоадресной рассылки проходит, так что это уже хорошо. Это хороший момент для включения отладки, чтобы узнать, что происходит: что происходит за кулисами Это очень полезная отладка, которая позволяет увидеть, что происходит за кулисами. сбросим процесс OSPF Мы сбросим процесс OSPF, чтобы ускорить отладку. Имейте в виду, что вы также можете сбросить только одно соседство OSPF. Это лучшая идея, если это применяется в производственной сети (сети предприятия или организации). R1 говорит, что он получил пакет Теперь нам есть с чем работать. R1 говорит, что он получил пакет hello, но у нас есть несоответствующие параметры hello. R означает то, что мы получили, а C - что мы настроили. Как мы видим, существует несоответствие в маске подсети. R1 настроен с маской подсети 255.255.255.0, в то время как R2 имеет маску подсети 255.255.255.128. OSPF будет сравнивать маску подсети только в том случае, если вы используете широковещательный тип сети. show ip ospf interface show ip ospf interface Можно использовать команду show ip ospf interface для проверки типа сети, и видно, что она является broadcast. Здесь мы видим, что R2 имеет другую маску подсети Здесь мы видим, что R2 имеет другую маску подсети Здесь мы видим, что R2 имеет другую маску подсети. Необходимо это исправить! R2(config)#interface Fe0/0 R2(config-if)#ip address 192.168.12.2 255.255.255.0 Достаточно просто... соседство OSPF работает соседство OSPF работает Теперь мы видим, соседство OSPF работает. Итог урока: проверьте правильность использования одинаковых масок подсетей на маршрутизаторах, которые напрямую связаны друг с другом. Урок 5 Та же топология, и у нас очередная проблема с пакетами hello Давайте продолжим, но уже со следующей ошибкой. Та же топология, и у нас очередная проблема с пакетами hello. Сразу перейдем к отладочной части: проблема похожа на наш последний сценарий Эта проблема похожа на наш последний сценарий. Есть часть параметров, которые должны совпадать в hello-пакете, чтобы создать соседство OSPF. dead-interval на R1 сконфигурирован на 24 секунды, а на R2 - на 11 секунд. hello-interval сконфигурирован на 10 секунд на R2 и 6 секунд на R1. Поменяем настройки параметров: R1(config)#interface Fe0/0 R1(config-if)#ip ospf hello-interval 10 R1(config-if)#ip ospf dead-interval 11 Нам нужно изменить это на уровне интерфейса. Введенные команды с новыми параметрами Введенные команды с новыми параметрами решают нашу проблему. Соседство OSPF работает. Урок 6 Топология Еще одна проблема, с которой нам, возможно, придется столкнуться, это аутентификация. OSPF предлагает 3 метода аутентификации: без аутентификации Plaintext MD5 аутентификация нет соседей OSPF нет соседей OSPF Как мы видим, у нас нет соседей OSPF. Давайте используем debug: Debug ip ospf adj Debug ip ospf adj поможет нам решить эти неполадки. Видно, что мы получаем пакет с аутентификацией типа 2, а используется тип 0. Вот что это значит: Type 0: нет аутентификации. Type 1: plaintext аутентификация. Type 2: MD5 аутентификация. Соответственно - R1 сконфигурирован без аутентификации, а R2 сконфигурирован на использование аутентификации MD5. R2 сконфигурирован на использование аутентификации MD5 Мы также можем посмотреть информацию OSPF для каждого интерфейса, чтобы увидеть, включена ли аутентификация или нет. включена ли аутентификация или нет Это то, что настроено на интерфейсе R2. R1(config)#interface FastEthernet0/0 R1(config-if)#ip ospf authentication message-digest R1(config-if)#ip ospf message-digest-key 1 md5 MYKEY Мы копируем и вставляем его в R1. копируем и вставляем его в R1 Проблема устранена! Если вам интересно, вот что вы увидите, когда задан неправильный пароль на одном из маршрутизаторов: R1(config)#interface FastEthernet0/0 R1(config-if)#no ip ospf message-digest-key 1 md5 MYKEY R1(config-if)#ip ospf message-digest-key 1 md5 WRONGKEY Сначала мы поменяем ключ: отладчик говорит нам, что мы используем неправильный ключ Наш отладчик говорит нам, что мы используем неправильный ключ между нашими маршрутизаторами. Извлеченный урок: убедитесь, что вы используете один и тот же тип аутентификации OSPF и пароль между маршрутизаторами. Урок 7 Тот же сценарий Что еще может пойти не так? Кажется, что нет никаких проблем, связанных с соседством OSPF! Тот же сценарий, теперь другая проблема: Соседство отсутствует OSPF Соседство отсутствует OSPF OSPF-соседство отсутствует. есть несоответствие в номере области На одном из наших маршрутизаторов появилось сообщение. Оно не требует объяснений, похоже, у нас есть несоответствие в номере области. R1 настроен для области 1, а R2 настроен для области 0 R1 настроен для области 1, а R2 настроен для области 0 R1 настроен для области 1, а R2 настроен для области 0. Исправляем: network R1(config)#router ospf 1 R1(config-router)#no network 192.168.12.0 0.0.0.255 area 1 R1(config-router)#network 192.168.12.0 0.0.0.255 area 0 Мы используем команду network, чтобы задать правильный номер области. network Ура, все работает! Итог урока: убедитесь, что ваши маршрутизаторы OSPF согласовывают один и тот же номер области. Урок 8 а этот раз R1 и R2 находятся в одной зоне 1 Рисунок выше слегка отличается от предыдущего. На этот раз R1 и R2 находятся в одной зоне 1. нет соседей нет соседей Вот так сюрприз... нет соседей! Запускаем отладку: Запускаем отладку Очень интересно! Существует несоответствие в опции stub/transit area. OSPF имеет различные типы областей, и оба маршрута должны согласовываться с типом области (stub, nssa, totally stub и totally nssa). R1, по-видимому, настроен на использование normal area R1, по-видимому, настроен на использование normal area. R2, похоже, настроен на использование stub area R2, похоже, настроен на использование stub area. Несоответствие в типе области означает, что мы не можем установить соседство OSPF. R2 имеет команду area 1 stub На листинге выше мы видим, что R2 имеет команду area 1 stub. Удалим ее. R2(config)#router ospf 1 R2(config-router)#no area 1 stub Изменим область 1 на normal area для R2. Изменим область 1 на normal area для R2 Изменим область 1 на normal area для R2 Итог урока: убедитесь, что ваши маршрутизаторы OSPF используют один и тот же тип области. Урок 9 Очередная ситуация с неполадками с OSPF Очередная ситуация с неполадками в OSPF, которая на первый взгляд кажется очень запутанной. Давайте посмотрим на конфигурацию OSPF обоих маршрутизаторов: посмотрим на конфигурацию OSPF обоих маршрутизаторов посмотрим на конфигурацию OSPF обоих маршрутизаторов Это простая конфигурация. таблица соседства OSPF не пустая таблица соседства OSPF не пустая У нас таблица соседства OSPF не пустая, но оба маршрутизатора "застряли" в состоянии 2WAY. Помимо поиска нужного нам слова "FULL", следует обратить внимание на две вещи, отображаемые командой show: Оба маршрутизатора показывают друг друга как DROTHER. Приоритет для обоих маршрутизаторов равен 0. В multi-access сети, такой как Ethernet, OSPF будет выполнять выборы DR/BDR, если тип сети broadcast или non-broadcast. Проверяем тип сети: Оба интерфейса настроены для типа сети broadcast Оба интерфейса настроены для типа сети broadcast Оба интерфейса настроены для типа сети broadcast. Это значение по умолчанию для интерфейсов Ethernet. Это означает, что у нас есть выборы DR/BDR, но оба маршрутизатора настроены на приоритет 0, а это означает, что они не будут участвовать в выборах DR/BDR. По этой причине они застряли в состоянии 2WAY. Необходимо это исправить: R1(config)#interface fastEthernet 0/0 R1(config-if)#ip ospf priority 1 Мы изменим приоритет на одном из маршрутизаторов. Мы видим, что R1 был выбран для DR Мы видим, что R1 был выбран для DR Все работает. Мы видим, что R1 был выбран для DR, потому что он имеет приоритет 1. Итог урока: Типы широковещательной и не вещательной сети требуют выбора DR/BDR. Убедитесь, что один из маршрутизаторов выбран. В следующей статье мы разберем еще 8 уроков траблшутинга OSPF.
img
Когда появился брандмауэр ASA 5506-X, было много нареканий: "это устройство не является заменой ASA 5505, к нему необходимо докупать коммутатор!" и "на устройстве есть шесть портов, но которые я не могу использовать" и так далее. Если, честно сказать, ASA 5505 должен использоваться в среде SOHO, где все находится в одном устройстве (с PoE). Проблема состояла в том, что люди стали устанавливать их повсюду и в крупных компаниях, и в центрах обработки данных. Что бы решить эту проблему, необходимо было бы изменить аппаратное обеспечение. Поэтому Cisco, для решения этой проблемы, просто добавила BVI (виртуальный интерфейс моста), начиная с версии 9.7. Вообще, это не совсем верное утверждение, так как в Cisco ASA уже определенное время имеются интерфейсы BVI (Bridge Group Virtual Interface) в так называемом "прозрачном режиме" (transparent mode). Таким образом, на ASA 5506-X с настройками по умолчанию- это "мостовые" интерфейсы начиная с порта Ge0/2 и заканчивая портом Ge0/8, которым можно присвоить имя inside и IP-адрес. Вроде бы все как у ASA5505. Но нет, потому что для каждого мостового интерфейса требуется прописывать отдельно access-group/ACL, а также отдельно настраивать NAT. Конечно, можно все оставить по умолчанию и ничего не трогать, если у вас ну очень простая сеть. Также обратите внимание, что утверждение выше справедливо и для удаленного управления через SSH/ADSM и так далее. Далее посмотрим настройки и произведем изменения в интерфейсе ASA 5506-X для BVI Ниже показана сокращенная конфигурация брандмауэра по умолчанию и жирным шрифтом выделены дополнительные команды, которые используются для этой конфигурации брандмауэра. Это обновленная "дефолтная" конфигурация брандмауэра 5506-X (начиная с version 9.7.) Удаление интерфейса BVI на ASA 5506-X через CLI Во-первых, необходимо удалить группу мостов на физических интерфейсах, но предварительно надо удалить имя интерфейса. Если этого не сделать, то это приведет к ошибке. Подключитесь к устройству через консольный кабель или через внешний интерфейс (outside)(Это необходимо, так как мы собираемся удалить настроенный внутренний интерфейс (inside). Только после выполнения вышеописанных команд можно удалить интерфейс BVI. Интерфейс BVI1 будет удален из конфигурации (если вы ранее работали на маршрутизаторах, то это похоже на удаление интерфейса loopback). Теперь удалите "несуществующие" группы объектов, которые использовались для NAT. Предположим, что внешний интерфейс (GigabitEthernet0/1) включен и подключен, (по умолчанию он будет настроен на DHCP). Далее необходимо будет настроить "внутренний" интерфейс (будет использован GigabitEthernet0/2) и настроить правило NAT/PAT, чтобы разрешить трафик. Теперь весь трафик из внутренней сети во внешнюю разрешен, а весь внешний трафик запрещен.
img
Данная статья посвящена, наверное, самой сложной части начальной части изучения Linux - правам доступа. В данной статье будет рассказано о правах доступа, владельцах файлов, папок. Цели статьи: Просматривать и изменять владельцев объектов. Устанавливать правила доступа к объектам. Понимать право “Execute” Основные команды для работы с правами доступа: chown – установка владельца chgrp – установка группы владельца chmod – установка прав доступа В Windows у нас есть только один владелец файла или папки. Это можно посмотреть в свойствах объекта на вкладке безопасность, дополнительно и там же мы можем сменить владельца. Владелец в Windows по умолчанию обладает полными правами на объект. В Linux все происходит немного по-другому: Любой объект моет иметь своего владельца и группу владельцев, и кроме этого для объекта существуют все остальные пользователи в системе. Это самое существенное различие, что может быть владелец и группа владельцев. И так у меня есть пользователь petya и пользователь siadmin. Теперь посмотрим информацию по этим двум пользователям. Чтобы посмотреть воспользуемся командой id siadmin и id petya. У моего пользователя есть uid, который говорит, что я siadmin и вхожу в группу siadmin. Когда мы создаем нового пользователя группа по умолчанию совпадает с именем пользователя. Т.е каждый пользователь по умолчанию входит в свою собственную группу. Для пользователя petya я создал группу не по его имени. Я создал группу testusers и включил данного пользователя в данную группу и установил данную группу по умолчанию для данного пользователя. Я нахожусь в домашней папке. Набрав команду ls –l мы можем посмотреть список каталогов и файлов, у каждого из них есть владелец и группа владельцев. Эти данные указаны в колонках. Для файла test1.txt владельцем является root и группа владельцев root. Я создал папку Folder и файл test2.txt и назначил владельца и группу владельцев, согласно картинке. Для изменения данных параметров используется команда chown. Данную команду необходимо применять с повышением в привилегиях, через команду sudo. Например, изменим владельца для файла test1.txt. команда будет выглядеть так sudo chown petya test1.txt. Пароль не запросило, т.к я уже его вводил. Как мы видим все успешно отработало. Если раньше был владелец root, то теперь мы видим petya. Для изменения группы мы так же можем воспользоваться командой sudo chgrp testusers test1.txt. Данная команда chgrp используется редко, т.к вполне достаточно знать команду chown. Данная команда умеет менять в том числе и группу. Простой пример изменим группу используя команду chown :testusers file.txt. Просто перед группой ставим знак : который и говорит, что надо заменить группу на указанную. А можно сделать сразу 2 действия chown petya:testusers file1.txt Немного сумбура вносит, что у пользователя группа по умолчанию совпадает с именем пользователя. Но это стандартное поведение Linux, который так заводит группу. Даже суперпользователь root имеет свою группу root. При создании пользователя petya был принудительно включен в группу testusers и она была выставлена по умолчанию для данного пользователя. Еще есть важный момент, который необходимо упомянуть. Это рекурсивное выставление владельцем или группы владельцев на папки или файлы. Т.е если у нас есть папка родительская и в ней дочерние папки и файлы, а то и несколько вложений, а мы хотим изменить владельца или группу владельцев рекурсивно вниз, то команду chown необходимо использовать с ключем –R. Пример: sudo chown –R siadmin:testusers Folder Права доступа Далее вернемся к самой первой картинке. На картинке добавлены подписи на английском языке. Это сделано, для большей наглядности. Потому, что сейчас будем раздавать права на объекты файловой системы файлы, папки и другие объект. Следовательно, права будут присваиваться владельцам, группе владельцев и все остальные. Права для владельцев – это user - (u), права для группы владельцев group - (g), Права для всех остальных other - (o). Для того, чтобы далее разбираться с темой прав, надо запомнить вот такую табличку. В классическом Linux, есть 3 вида доступа к объекту, это право на чтение, право на запись и право на выполнение и различные комбинации из этих прав. Заглавные буквы на верху таблицы отвечают за какое-либо право. Цифрами обозначены значения данных прав. Если мы даем право на чтение, то оно обозначается r--, если чтение и запись то rw-, если даем все права то rwx. Мы можем объединять данные права, как видите в табличке различные комбинации указаны. Всего 8 комбинаций от "нет прав", до "полных прав". Так же данная комбинация может назначаться в виде цифр. Т.е на какой то файл у такого товарища доступ 5, это значить что данный товарищ имеет право читать файл и запускать на выполнение. Посчитать очень просто чтение это - 4 , а выполнение – это 1, а в сумме будет 5 или по другому r-x. Следовательно мы можем назначать, как в цифровом, так и в символьном варианте права. Еще один не маловажный момент мы назначаем права на файл, сразу для всех видов пользователей. Следовательно, указывая права, мы их сразу задаем для владельца, для группы владельца и всех остальных. Права мы можем назначать. Точно так же как на картинке символами rwx или цифрами, согласно табличке. Для лучшего понимания пример: Chmod 750 script - полные права владельцу, чтение и выполнение группе владельца и ничего всем остальным. Когда мы просматриваем права на объекты мы видим символьные обозначения, а там, где нет символа ставится прочерк, который означает, что данное право отсутствует. Право <<rwx rw- r-->> script - полные права владельцу, чтение и запись группе владельца, чтение остальным. Чтобы легче было определять права на объект надо мысленно разделить на блоки по 3 символа. Первый блок — это Владелец, 2-й Блок — это группа владельца и 3-й блок — это другие пользователи. Сhmod u+w script - дать право записи владельцу. Chmod ugo-x script - отобрать у всех право исполнения файла. Посмотреть, какие объекты находятся в директории и их права можно командой ls –la. Так же мы видим владельца и группу владельца. Теперь мы можем понимать первую строчку. Вывод из всего этого, напрашивается следующий. Владелец у объекта файловой системы может быть только один. В группу testusers или другую мы можем добавить кого угодно и они будут следовательно иметь права, как группа владельцев. И, следовательно, все остальные пользователи, т.е не владелец и не входящие в группу, будут относится к категории всех остальных пользователей. Получается Linux нам дает разбить всех на три группы и в соответствии с этим назначить различные права, а Windows ведет себя по-другому и там можно более гибко задавать права. Мы можем создать 100 пользователей и каждому из них дать какие-то свои уникальные права. В Linux тоже это возможно с помощью разных ACL (Access Control List - лист доступа), но это не входит в базовые понятия, которые мы разбираем в рамках данной статьи. Можно заметить ,что для папки спереди появляется символ d. Это d – directory каталог. Может появляться l – link – ссылка и.т.д. Следовательно, можно убирать права указывая у кого, например, забрать выполнение chmod ugo-x test1.txt или мы можем добавить владельцу chmod u+x test1.txt. И третий вариант изменения прав на файл - это полностью перезаписать права на объект chmod 640 test1.txt. Разберемся с правом на execute – выполнение. Понятно становится это права, когда мы имеет дело с каким-то скриптом или бинарником или программой исполняемой. Так же у нас данное право может назначаться на каталог, а каталог мы исполнить не можем. Но тут есть интересный момент, если у вас будет на папку разрешение только на чтение и запись, прочитать папку, переименовать ее т.е поработать с наименованием папки, но в глубь папки вы не сможете зайти. Чтобы зайти во внутрь папки необходимо право execute – т.е выполнение ее. Маска создания файлов и папок В данной части статьи рассмотрим следующий вопрос: Понимание принципов работы и управления масками создания файлов и папок. Основные понятия: umask – маска создания файлов и папок suid – бит запуска от имени владельца sgid – бит запуска от имени группы владельцев sticky – бит защиты содержимого Первое понятие umask - user creation mask - т.е маска с которой создается новая папка или файл, это то с какими правами по умолчанию будут создаваться папки и файлы для данного пользователя. В том случае если не создано каких-то особенных настроек наследования папки. suid – set user id, который позволяет, если установлен на исполняемый файл, то любой пользователь, который запускает, получает права определенные для владельца данного файла. По-другому, позволяет использовать права владельца данного файла, происходит некая подмена вас на владельца этого файла. sgid – set user id, который позволяет, если установлен на исполняемый файл, то любой пользователь, который запускает, получает права определенные для группы владельца данного файла. По-другому, позволяет использовать права группы владельца данного файла, происходит некая подмена вас на пользователя входящего в группу владельца этого файла. Маска это такая интересная штука, которая указывает права по–умолчанию. Она рассчитывается с помощью вычитания из максимальных прав. Примеры вычисления показаны на картинке. Посмотрим, как выглядит это в консоли. Создадим текстовый файл от имени стандартного пользователя touch test10.txt. Мы видим права, которые были выданы по умолчанию 664, соответственно я являюсь владельцем и моя группа. Создадим папку mkdir TestFolder. Выданы права по умолчанию 775. Теперь посмотрим правило действующее. Почему создаются объекты именно с такими правами. Этот параметр находится в профиле в старых версиях, сейчас он перенесен и за данный параметр отвечает утилита pam_umask. Если мы откроем мануал по данной утилите, то мы увидим, что данный параметр находится в /etc/login.defs Видим, что значение umask = 022. – это значение, которое идет по умолчанию во всех дебиан подобных операционных системах. Введем новое значение umask 075. Создадим новый файл touch test20.txt. Получаем права 602. После перезагрузки маска изменится на маску по умолчанию, чтобы маску нужную зафиксировать, необходимо отредактировать файл /etc/login.defs. Следовательно, для нашего пользователя значить маска изменится с 022 на ту маску, которую там пропишем. Нужно обратить внимание, что при создании папки права на выполнение по умолчанию выдаются, а на файл нет. Это связанно с тем, что без данных прав в данную папку невозможно будет зайти, а с файла убираются в целях защиты. Например, если вдруг окажется, что файл – это вредоносный код. Suid, sgid, sticky Рассмотрим оставшийся вопрос. Зачем нужны suid, sgid и sticky, биты и их установка. Suid – устанавливается для файлов. Sgid – устанавливается для файлов и для папок Sticky – устанавливается для папок. У них у всех есть цифровые значения. Их можно назначать точно так же, как и права, можно назначать через rwx или цифирные сочетания, а также т.к есть цифирные обозначения их можно комбинировать. Если мы установили 6 то мы установили suid и sgid. Этот бит через цифры ставится, точно так же, как и права, только ставим дополнительную цифру перед цифрами, означающими права. Так же эти биты можно ставить, через буквы: Chmod u+s script - установка suid Chmod g+s script - установка sgid Chmod o+t script - установка sticky Как мы видим suid добавляется к правам владельца, sguid прибавляется к правам группы владельца. Sticky добавляется к правам всем остальным. Как мы видим создан файл script.run с правами 755 и папка TestFolder 755. Установим suid бит на файл script.run. В настоящее время данный файл может выполнить любой человек. Изменим права на 770 - sudo chmod 770 script.run. Переключимся под пользователя, который не входит в группу siadmin. Например, пользователь su petya. Можно конечно добавить права пользователю petya, но иногда нужно, чтобы файлик запустился из-под Владельца файла. Даже если будут стоять разрешение на запуск данного файла и будет стоять suid, то файл запуститься из под Владельца. Устанавливаем sudo chmod u+s script.run и видим, во-первых, теперь у нас файлик подкрашен красным, данное выделение делает оболочка. Во-вторых, когда мы смотрим права, то видим x заменился на s. И теперь, кто бы не запускал файл, он всегда будет запускать от имени Владельца. Можно подробнее посмотреть через команду stat script.run, которая показывает полную статистику по файлу. Мы можем увидеть, что права стали теперь 4770. Вот эта самая цифра 4 впереди и говорит, что установлен suid бит. Мы аналогично можем убрать suid бит sudo chmod u-s script.run. Все вернулось на свои места. Для чего это нужно, есть некоторые программы которым необходим доступ к аппаратной части. Например ping, который проверяет связь, ему нужен доступ к сетевой карте. По умолчанию права на ping есть только у root, но если мы хотим чтобы все пользователи могли использовать данную утилиту, то мы должны разрешить ее запуск от имени root. Фактически та же самая функция, как и в операционной системе Windows запустить от пользователя. Аналогичным образом работает и sgid, если нам необходимо запускать от группы владельца, то устанавливаем этот бит и можем пользоваться - sudo chmod g+s script.run. Результат наших действий подсвечен желтым. Можно одновременно оба бита установить, следовательно, при выполнении будет и владелец заменен и группа заменена. Это имеет смысл делать, только для исполняемых файлов. Устанавливать на обычный текстовый файл данные биты, смысла конечно же нет. Очень редко, когда применяю оба бита сразу, такое сочетание необходимо если уж сильно кто-то заморачивается с безопасностью или требуется ювелирная настройка прав доступа и запуска. Теперь посмотрим, что с папкой происходит. На папку можно устанавливать sgid и sticky биты. Если мы устанавливаем групповой бит, то он для папок будет менять владельцев всех вложенных файлов на группу владельцев этой папки, т.е это один из вариантов наследования. Создадим файл от пользователя siadmin. Touch file.txt в текущей папки он создается со стандартными правами. Установим sgid на папку TestFolder - Sudo chmod g+s TestFolder. Создадим в ней такой же файл sudo touch TestFolder/file.txt Как мы видим группа осталась прежней. Если пользователю root сказать создать файл в текущем каталоге, то владелец и группа будут root. Теперь про sticky бит. Если установлен sticky бит на папку, то только Владелец данной папки или суперпользователь может удалить из нее файлы. Создадим папку Folder, поставим на нее максимальные права 777. И внутри создадим файл file.txt. Файлик с правами по умолчанию. Поменяем права на данный фал 666. Права на чтение и запись появились теперь у всех. Переключимся на другого пользователя, например, petya. Перейдем в домашний каталог пользователя siadmin - cd /home/siadmin/Folder. Внутри файл txt, который мы создавали. И удаляем rm file.txt. Файл удалился без проблем. Допустим мы хотим защитить от удаления, следовательно, необходимо установить sticky бит - sudo chmod o+t Folder Как видим появилась буква t на месте прав для всех остальных. Создадим еще раз файл touch file1.txt. Даем на данный файл всем права 666. А далее перелогиниваемся под petya. Заходим в папку /home/siadmin/Folder и командой rm file1.txt пытаемся удалить, на что получаем отказ от системы. Несмотря на права 666, система не дает удалить файл. Следовательно, удалить все вложенные объекты может либо root или Владелец папки.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59