По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Icinga - это бесплатное средство мониторинга с открытым исходным кодом для вашего дата-центра. Это приложение для мониторинга компьютерных систем и работы сети, которое проверяет состояние готовности вашей сети и компьютерных ресурсов, уведомляет о перебоях в работе системы, генерирует данные о производительности ваших ресурсов, а также обеспечивает высокую степень работоспособности и возможность настройки мониторинга распределённых систем со встроенной функцией кластера.
Icinga была создана в 2009 году в качестве разветвления средства мониторинга Nagios. Но потом была заново переписана на С++ и стала одним из самых популярных инструментов мониторинга в интернете. Слово "Ицинга" - это Зулусское слово, означающее "оно ищет", или "оно обозревает", или "оно исследует".
В этом учебном пособии мы покажем вам, как установить и настроить инструмент мониторинга Icinga 2 на сервере LTS Ubuntu 20.04. Мы установим Icinga 2 из официального репозитория, а затем настроим icingaweb2, облегченный и расширяемый веб-интерфейс для системы мониторинга icinga2.
Предпосылки
Для этого руководства мы установим icinga2 и icingaweb2, используя сервер Ubuntu 20.04 с 2 ГБ оперативной памяти. Но эти данные меняются в зависимости от размера вашей ИТ-инфраструктуры.
Что мы будем делать?
Установка Icinga2 и Nagios Monitoring Plugins;
Установка и настройка базы данных MySQL;
Установка и настройка модуля Icinga MySQL;
Установка Apache2 и PHP-пакетов;
Установка и настройка Icingaweb2;
Установка Icinga2 Stack Post.
Шаг 1 - Установка Icinga2 и системы мониторинга Nagios
Сперва мы добавим репозиторий icinga2 для Ubuntu 20.04 и установим пакеты icinga2 и плагины мониторинга Nagios. Добавьте GPG ключ Icinga2 в вашу систему.
curl https://packages.icinga.com/icinga.key | apt-key add -
Теперь перейдите в директорию '/etc/apt/sources.list.d' и создайте новый репозиторий 'icinga-focal.list'.
cd /etc/apt/sources.list.d/
vim icinga-focal.list
Вставьте следующую конфигурацию репозитория.
deb http://packages.icinga.com/ubuntu icinga-focal main
deb-src http://packages.icinga.com/ubuntu icinga-focal main
Нажмите сохранить и закройте. Затем обновите все доступные репозитории и установите подключаемые модули Icinga2 и Nagios Monitoring с помощью команды apt ниже.
sudo apt update
sudo apt install icinga2 monitoring-plugins
После завершения установки запустите службу Icinga2 и добавьте сервис в автозагрузку.
systemctl start icinga2
systemctl enable icinga2
После этого проверьте службу icinga2, используя приведенную ниже команду.
systemctl status icinga2
Ниже приведен результат, который вы получите.
В результате сервис icinga2 запущен и работает на Ubuntu 20.04 FocalFossa.
Шаг 2 - Установка и настройка базы данных MySQL
На этом этапе мы установим последнюю версию сервера MySQL на нашем Ubuntu 20.04 и установим пароль по умолчанию для пользователя MySQL с root правами. Установите MySQL сервер с помощью команды apt, приведенной ниже.
sudo apt install mysql-server mysql-client
После этого запустите службу MySQL и добавьте её в автозагрузку.
systemctl start mysql
systemctl enable mysql
И сервис MySQL готов и запущен. Далее мы зададим пароль для root - пользователя MySQL с помощью командной строки 'mysql_secure_installation', которые предоставлены MySQL-пакетами. Запустите команду 'mysql_secure_installation', которая представлена ниже.
mysql_secure_installation
Теперь вам будет предложено настроить новый пароль для пользователя root, введите надежный пароль, а затем введите "Y" для прочих конфигураций.
Press y|Y for Yes, any other key for No:
Please set the password for root here.
New password:
Re-enter new password:
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
В результате завершена установка сервера MySQL и сконфигурирован корневой пароль по умолчанию.
Шаг 3 - Установка и настройка модуля Icinga MySQL
После установки сервера MySQL мы установим модуль icinga2 для поддержки MySQL под названием 'icinga2-ido-mysql'. Установка 'icinga2-ido-mysql' возможна с помощью команды apt, приведенной ниже.
sudo apt install icinga2-ido-mysql
Теперь вам будет предложено включить функцию icinga2 ido-mysql, выберите "Да", чтобы продолжить.
Сконфигурируйте 'icinga2-ido-mysql'с помощью команды dbconfig, затем выберите "Yes" для продолжения.
Введите свой пароль для 'icinga2-ido-mysql'.
Повторите пароль для 'icinga2-ido-mysql'.
В результате установка пакета 'icinga2-ido-mysql' была завершена, и был создан новый пользователь MySQL 'icinga2'.
Затем, чтобы Icinga работала с новой версией MySQL, мы настроим MySQL пользователя 'icinga2' с аутентификацией по встроенному паролю MySQL.
Войдите в командную строку MySQL, используя нижеприведенную команду.
mysql -u root -p
Теперь измените аутентификацию пользователя 'icinga2@localhost' с помощью собственного плагина аутентификации MySQL, используя следующий запрос.
ALTER USER icinga2@localhost IDENTIFIED WITH mysql_native_password BY 'aqwe123@#$';
flush privileges;
Введите 'exit', чтобы выйти из командной строки MySQL, а пользователь MySQL 'icinga2' теперь будет использовать родной плагин аутентификации.
Далее, включите функцию 'ido-mysql' и проверьте все включенные плагины, используя следующую команду.
icinga2 feature enable ido-mysql
icinga2 feature list
Функция 'ido-mysql' будет включена, чтобы применить новую конфигурацию, перезапустите службу icinga2.
systemctl restart icinga2
Таким образом, установка и настройка 'icinga2-ido-mysql' была завершена.
Шаг 4 - Установка Apache2 и PHP-пакетов
На этом шаге, мы установим пакеты Apache и PHP для icingaweb2 и мы будем использовать PHP 7.3, который доступен в репозитории PPA, потому что на данный момент icingaweb2 еще не поддерживается в новой версии PHP 7.4.
Сначала установите пакет 'python3-software-properties' и добавьте репозиторий PHP PPA, используя следующую команду.
sudo apt install python3-software-properties
sudo add-apt-repository ppa:ondrej/php
Далее установите Apache и PHP пакеты с помощью команды apt, описанной ниже.
sudo apt install apache2 php7.3 php7.3-common php7.3-gd php7.3-ldap php7.3-intl php7.3-curl libapache2-mod-php7.3 php7.3-mysql php7.3-pgsql php7.3-xml
После того, как вся установка будет завершена, отредактируйте конфигурацию 'php.ini' с помощью vim-редактора.
vim /etc/php/7.3/apache2/php.ini
Снимите комментарий с опции 'date.timezone' и введите свой часовой пояс.
date.timezone = Asia/Singapore
Раскомментируйте конфигурацию 'cgi.fix_pathinfo' и измените значение на '0'.
cgi.fix_pathinfo=0
Сохраните и закройте. Далее перезапустите службу Apache2 и добавьте ее в автозагрузку.
systemctl restart apache2
systemctl enable apache2
Служба Apache2 запущена и работает, проверьте её, используя следующую команду.
systemctl status apache2
Ниже приведен результат, который вы получите.
В результате была завершена установка Apache и PHP пакетов для icingaweb2.
Шаг 5 - Установка и настройка Icingaweb2
После установки Apache и PHP-пакетов мы установим пакет icingaweb2 и создадим новую базу данных MySQL для icingaweb2. Начните установку пакетов icingaweb2 и icingacli с помощью команды apt.
sudo apt install icingaweb2 icingacli
После завершения установки сгенерируйте токен icingaweb2 для установки с помощью приведенной ниже команды.
icingacli setup token create
Ниже приведен результат, который вы получите.
The newly generated setup token is: 9b871ead0a60c94f
Теперь скопируйте код токена в надёжное место, он будет использован для установки icingaweb2. Далее войдите в командную строку MySQL, используя нижеприведенную команду mysql.
mysql -u root -p
Теперь создайте новую базу данных и пользователя, используя следующие запросы.
create database icingaweb2;
create user icingaweb2@localhost identified with mysql_native_password by "icingaweb2pass";
grant all privileges on icingaweb2.* to icingaweb2@localhost with grant option;
flush privileges;
Введите 'exit', чтобы выйти из командной строки MySQL.
В результате этого установка icingaweb2 завершена и создана новая база данных icingaweb2.
Шаг 6 - Установка Icinga2 и Icinga Stack Post
Откройте веб-браузер и введите IP-адрес сервера, как показано ниже. Замените IP-адрес на IP-адрес своего сервера.
http://IP_адрес/icingaweb2/setup
Вставьте код токена установки в поле и нажмите кнопку 'Далее'.
Теперь вам нужно выбрать модуль Icinga для установки, оставить модуль 'Monitoring' и нажать 'Далее'.
После этого Icinga проверит состояние среды для его установки. Убедитесь, что все необходимые модули находятся в зеленом состоянии, за исключением 'Модулей PostgreSQL', затем нажмите 'Далее'.
Теперь вам нужно выбрать Аутентификацию для доступа к icingaweb2, выбрать 'Database ' (База данных) и нажать 'Next ' (Далее).
Введите все данные базы данных для 'icingaweb2' и нажмите 'Validate Configuration' (Проверить конфигурацию) для тестирования. После того, как все прошло успешно, нажмите кнопку 'Next ' (Далее).
Теперь для аутентификации Backend Authentication выберите 'icingaweb2' и нажмите 'Next ' (Далее).
Введите логин и пароль администратора для icingaweb2 и нажмите 'Далее' еще раз.
В разделе Application Configuration (Конфигурация приложения) оставьте всё по умолчанию и нажмите 'Далее'.
Подтвердите все настройки и нажмите "Далее".
И вы получите страницу приветствия на icingaweb2. Снова нажмите "Далее", чтобы настроить backend мониторинга.
Установите имя Backend как 'icinga2' с типом 'IDO', затем нажмите 'Далее'.
Теперь вам нужно настроить MySQL IDO backend ресурс для приложения icinga2. Введите данные базы данных для icinga2 и нажмите кнопку 'Validate Configuration'.
После успешного завершения нажмите кнопку 'Далее'.
Для 'Command Transport' выберите 'Local Command File' и оставьте его по умолчанию. Затем нажмите 'Далее'.
Для службы Monitoring Security оставьте всё по умолчанию и нажмите 'Далее'.
Подтвердите все настройки и нажмите кнопку 'Готово'.
Теперь установка Icinga 2 и Icinga web 2 завершена, нажмите кнопку 'Login to Icinga Web 2', и вы будете перенаправлены на страницу входа.
Введите пользователя, которого вы настроили в самом начале и нажмите кнопку "Войти".
И, наконец, установка и настройка icinga2 и icingaweb2 на сервере Ubuntu 20.04 успешно завершена.
Хранилище сервера - важнейшая часть с точки зрения отказоустойчивости. При не надлежащей настройке дисков, данные могут быть утеряны. Полбеды, если вы храните там только игрули, сериальчики и фотографии из поездки в Туапсе в 2005 году, а что если это корпоративные данные?
Поэтому, нужно быть уверенными, что если что - то случится с дисками, то данные не пропадут. Для этого используют технологию RAID (Redundant Array of Independent Disks) (не путать с RAID: Shadow Legends), или так называемый избыточный массив независимых дисков.
В RAID одни и те же данные копируются сразу на множество дисков, так что, в случае, если один диск выйдет из строя, потери данных не будет - копия есть на другом носителе.
Поговорим про четыре распространенных типа RAID массивов: RAID 0, RAID 1, RAID 5 и RAID 10.
Видео: RAID 0, 1, 5 и 10 | Что это?
RAID 0
Честно говоря, RAID 0 нифига не отказоустойчивый. Мы даже против того , чтобы RAID 0 имел название RAID. Скорее AID (Redundant Array of Independent Disks) 0.
В нем цельные данные дробятся на блоки и частями записываются на 2 (два) или более диска. Тем самым, 2 физически отдельных диска, на самом деле, объединяются в один.
И, например, если один из двух физических дисков случайно попадет под каток - вы потеряете все данные. Единственный случай, когда RAID 0 имеет смысл использовать, это если вы храните не критичные к потери данные к которым нужен доступ на высокой скорости. Да - да, RAID 0 имеет низкую отказоуйстойчивость, но высокую производительность.
RAID 1
А вот это парень уже вполне отказоустойчив. RAID 1 кстати еще называют зеркальным, по вполне простой причине - данные синхронно записываются на 2 и более диска сразу:
Тем самым, если один из дисков попадет в воду и выйдет из строя, данные не будут потеряны.
Важный пункт - если вы собираете в RAID 1 массив 2 (два) диска, то в результате вы будете иметь только половину от их общей памяти.
RAID 5
В пятом рэйде вам понадобятся 3 и более дисков. Он, кстати, один из наиболее распространенных рэйдов. Он работает быстро и может хранить много данных (в отличие от первого рэйда, например).
В RAID 5 данные не копируются между всеми дисками, а как в RAID 0 последовательно записываются частями на каждый из дисков, но с одним дополнением - к данным так же равномерно записывается контрольная сумма, которая называется parity, которая нужна для восстановления данных в случае, если один из дисков отвалится.
Важный недостаток RAID 5 в том, что это контрольная сумма занимает немало места. Например, если у вас 4 диска суммарным объемом в 4 терабайта, то использовать под хранение данных вы сможете только 3 терабайта - что около 75%. Остальное займет как раз контрольная сумма.
RAID 10
Подходим к финалу - десятый рейд. Но не спешите, не такой уж он и десятый. Цифру 10 он имеет потому, что с точки зрения технологии, сочетает в себе функциональность RAID 1 и RAID 0.
Создатели технологии уверены, что 1 + 0 = 10. Не будем их расстраивать, и разберемся в технологии.
Для десятого рейда вам понадобится минимум 4 диска или больше, но всегда их количество должно быть четным.
Говоря простым языком, 4 диска делятся на 2 группы, по 2 диска, и каждая из групп объединяется в отказоустойчивый RAID 1. Тем самым, мы имеем 2 зеркальных RAID 1 массива, которые в свою очередь, объединяются в RAID 0 массив - ну вы помните, где данные частями записываются на каждый из дисков. Только вместо дисков у нас по первому рэйду.
Тем самым, 10ый рэйд имеет все скоростные преимущества RAID 0 и преимущество надежности RAID 1, но стоит как чугунный мост, так как опять же, под реальное хранение данных вы сможете использовать только 50% от общего объема всех дисков.
Данная статья посвящена, наверное, самой сложной части начальной части изучения 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 или Владелец папки.