Руководство администратора
ACPI (advanced configuration and power interface) - интерфейс расширенной настройки и управления питанием был разработан для предоставления операционной системе возможности настройки и управления аппаратными компонентами. Он позволяет получать информацию о заряде батареи, подключении к сети, температуре, скорости вентиляторов, системных событиях вида "закрыта крышка ноутбука" или "низкий заряд батареи".

Поддержка ACPI зависит от BIOS, установленного аппаратного обеспечения и датчиков, параметров ОС. В зависимости от оборудования, ОС будет иметь возможность управления различными параметрами и получать события от ACPI через службу `acpid`. ACPI активируется автоматически.

!!!Подразделы

<<tagging acpi>>
/%
https://www.suse.com/documentation/sles10/book_sle_reference/data/sec_pmanage_acpi.html
%/
Каталог `/proc/acpi` содержит файлы, которые предоставляют информацию о состоянии системы и возможность изменения некоторых параметров. Многие возможности зависят от поддержки производителем аппаратного обеспечения.

;/proc/acpi/info
:Общая информация.
;/proc/acpi/alarm
:Условия пробуждения системы из состояния сна.
;/proc/acpi/sleep
:Информация о возможных состояниях сна.
;/proc/acpi/event
:Данный файл используется для передачи аппаратных событий службе acpid.
;/proc/acpi/dsdt и /proc/acpi/fadt
:Данные файлы содержат таблицы описания ACPI для приложений, например dmidecode.
;/proc/acpi/ac_adapter/AC/state
:Состояние сетевого адаптера.
;/proc/acpi/battery/BAT*/{alarm,info,state}
:Информация о состоянии батареи.
;/proc/acpi/button
:Каталог, содержащий информацию об аппаратных переключателях и кнопках.
;/proc/acpi/fan/FAN/state
:Состояние вентиляторов. Можно записать в этот файл 0 (включить) или 3 (выключить). Однако ядро или аппаратное обеспечение может изменить данное значение в случае перегрева.
;/proc/acpi/processor/*
:Содержит подкаталоги по одному на каждый центральный процессор в системе.
;/proc/acpi/processor/*/info
:Информация о энергосберегающих свойствах процессора.
;/proc/acpi/processor/*/power
:Информация о состоянии процессора. Звёздочка означает, что процессор простаивает.
;/proc/acpi/processor/*/throttling
:Может использоваться для понижения производительности процессора (8 уровней). Этот параметр не влияет на тактовую частоту.
;/proc/acpi/processor/*/limit
:Если производительность процессора контролируется системной службой, можно установить различные значения в этом файле.
;/proc/acpi/thermal_zone/
:Область температурных зон и датчиков, определяемая производителем оборудования. В большинстве случаев управление температурой всё равно остаётся на стороне BIOS.
;/proc/acpi/thermal_zone/*/temperature
:Текущая температура.
;/proc/acpi/thermal_zone/*/state
:Текущее состояние (активное или пассивное охлаждение или просто ok).
;/proc/acpi/thermal_zone/*/cooling_mode
:Режим охлаждения для управления скоростью вращения вентиляторов.
;/proc/acpi/thermal_zone/*/trip_points
:Устанавливает температурные режимы: critical, hot, passive, active1, и active2. Даже если они не поддерживаются оборудованием, режимы должны следовать именно в таком порядке. Например: `echo 90:0:70:0:0 > trip_points` устанавливает 90 градусов Цельсия для режима critical и 70 для passive.
;/proc/acpi/thermal_zone/*/polling_frequency
:Управляет частотой обновления датчика температуры. `echo X > polling_frequency` устанавливает частоту обновления раз в `X` секунд. Для отключения нужно записать в этот файл `0`.

Многие из этих параметров изменяются автоматически при настройке параметров питания системы через программу "Настройки -> Менеджер питания".
<<options>>
Автодополнение позволяет быстро набирать команды и пути в файловой системе. Если после набора неполного имени команды или файла нажать клавишу `Tab`, командная оболочка `Bash` предложит возможные варианты продолжения имени команды или файла по неполному имени команды или файла или дополнит его полностью, если вариант всего один.
Пример.
```
ls /<TAB>
bin/            initrd.img.old  sbin/           usr/
boot/           lib/            selinux/        var/
cdrom/          media/          srv/            vmlinuz
...
ls /
```
В операционной системе присутствует другой метод автодополнения команд, основанный на истории введённых ранее команд. Начните набирать команду и нажмите клавишу `PageUp` или `PageDown` — система будет подставлять команды из истории. Перемещение по истории команд происходит последовательного нажатия клавиш `PageUp` или `PageDown`.
! Cal
Простой календарь.
Формат команды:
```
cal [<параметры>] [<день> [<месяц> [<год>]]]
```
Параметры:
`-1` отображать только один месяц (по умолчанию).
`-3` выводить календарь на три месяца: текущий, предыдущий и следующий.
`-s` отображать воскресенье в качестве первого дня недели.
`-m` отображать понедельник в качестве первого дня недели.
`-j` отображать дни в формате количества дней с&nbsp;1&nbsp;января.
`-y` календарь на текущий год.

! time
Утилита time позволяет подсчитать, сколько времени проработала та или иная программа.
Формат команды:
```
time <команда> [<аргументы...>]
```
Пример.
```
time sleep 1
real	0m1.001s 
user	0m0.000s 
sys	0m0.001s
```
Время UNIX стандарт описания времени, принятый в UNIX и других POSIX-совместимых операционных системах, включая . Определяется как количество секунд, прошедших с полуночи 00:00:00 1 января 1970 года; время с этого момента называют «эпохой UNIX».

Представление времени в виде количества секунд удобно использовать для сравнения и хранения дат (дата и время в этом формате занимают всего 4 или 8 байтов). При необходимости обращения к элементам дат (день, месяц, год) секунды можно преобразовать в любой подходящий формат (и наоборот). 

Данный формат представляется удобным для системных администраторов, так как позволяет легко хранить, считывать и сравнивать значения дат. Многие утилиты  используют данный формат времени, что будет указано явно.

В программах для хранения времени `UNIX` используется целочисленный знаковый тип. Знаковость упрощает вычисление разницы в секундах между двумя моментами времени, которая может быть отрицательной. 32-битные числа со знаком могут ссылаться на моменты времени от пятницы 13 декабря 1901 года 20:45:52 до вторника 19 января 2038 года 03:14:07 включительно.

! date

Утилита `date` позволяет устанавливать время, форматировать его и отображать текущую дату.
Формат команды:
```
date [<параметры>] [+<формат>]
```
или
```
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
```
Выводит текущее время в заданном формате или устанавливает системное время.

* `-d,&nbsp;--date=<строка>` показать не текущее время, а время, описанное в `<строка>`;
* `-f,&nbsp;--file=<файл>` соответствует применению `--date` для каждой строки из `<файл>`;
* `-r,&nbsp;--reference=<файл>` показать время последнего изменения `<файл>`;
* `-R,&nbsp;--rfc-2822` выводить дату и время в формате `RFC 2822`;
* `--rfc-3339=date|seconds|ns` выводить дату и время в формате `RFC 3339` с указанной точностью;
* `-s,&nbsp;--set=<строка>` установить время, описанное в `<строка>`;
* `-u,&nbsp;--utc,&nbsp;--universal` показать или установить универсальное координированное время.

Последовательность `<формат>` управляет выводом. Единственный ключ, допустимый для второй формы, задает координированное универсальное время. Воспринимаются следующие последовательности:

`%%` знак «%».
`%a` местное сокращенное название дня недели (например, Вск).
`%A` местное полное название дня недели (например, Понедельник).
`%b` местное сокращенное название месяца (например, Янв).
`%B` местное полное название месяца (например, Январь).
`%c` местная дата и время (например, Чтв 05 Июл 2007 11:57:29).
`%C` век; аналогично `%Y`, кроме пропуска последних двух символов (например, 21).
`%d` день месяца (например, 01).
`%D` дата; аналогично `%m/%d/%y`.
`%e` день месяца, дополненный пробелами; аналогично `%_d`.
`%F` долная дата; эквивалентно `%Y-%m-%d`.
`%g` последние две цифры года, соответствующего номеру недели в году согласно ISO 8601 (см. `%G`).
`%G` год, соответствующий номеру недели в году согласно ISO 8601 (см. `%V`); обычно имеет смысл только в сочетании с `%V`.
`%h` то же, что и `%b`.
`%H` час (00..23).
`%I` час (01..12).
`%j` номер дня в году (001..366).
`%k` час (0..23).
`%l` час (1..12).
`%m` месяц (01..12).
`%M` минута (00..59).
`%n` новая строка.
`%N` наносекунды (000000000..999999999).
`%p` местный эквивалент AM или PM; пусто если неизвестно.
`%P` аналогично %p, но в нижнем регистре.
`%r` местное 12-часовое время (например, 11:11:04 PM).
`%R` 24-часовой формат часов и минут; аналогично `%H:%M`.
`%s` число секунд, истекших с 1970-01-01 00:00:00 UTC (также известно как «время UNIX»).
`%S` секунда (00..60).
`%t` символ табуляции.
`%T` время; аналогично `%H:%M:%S`.
`%u` день недели (1..7); 1 — понедельник и&nbsp;т. п..
`%U` номер недели в году, начинающейся с воскресенья (00..53).
`%V` номер недели в году, начинающейся с понедельника, согласно ISO 8601 (01..53).
`%w` день недели (0..6), 0 означает воскресенье.
`%W` номер недели в году, начинающейся с понедельника (00..53).
`%x` местное представление даты (например, 31.12.1999).
`%X` местное представление времени (например, 23:13:48).
`%y` последние две цифры года (00..99).
`%Y` год (например, 1999).
`%z` часовой пояс в формате «+ччмм» (например, -0400).
`%:z` часовой пояс в формате «+чч:мм» (например, -04:00).
`%::z` часовой пояс в формате «+чч:мм:сс» (например, -04:00:00).
`%:::z` часовой пояс с минимально необходимым количеством двоеточий (например, -04, +05:30).
`%Z` алфавитное сокращение часового пояса (например, EDT).
По умолчанию `date` дополняет числовые поля нулями. После «`%`» могут идти следующие необязательные флаги:
• `- `(дефис) — не дополнять это поле;
• `_ `(подчёркивание) — дополнять пробелами;
• `0` (ноль) — дополнять нулями;
• `^` — использовать верхний регистр, если возможно;
• `# `— использовать противоположный регистр, если возможно.
После любого из флагов идет необязательная ширина поля в виде десятичного числа; затем необязательный модификатор, один из следующих: 
`E` если возможно, использовать альтернативное представление для текущей локали;
`O` если возможно, использовать альтернативные числовые символы локали.
`Bash` позволяет запускать задачи: пользовательские программы, которые работают в&nbsp;фоновом режиме. Для запуска задачи необходимо запустить программу, добавив в&nbsp;конце аргументов запуска символ `&`.
Пример:
```
sleep 1 &
```
Текстовый редактор `vi` - универсальный редактор операционных систем семейства UNIX. В ОС установлена как классическая версия редактора, так и редактор `vim` - улучшенный `vi`. Редактор `vi` имеет модальный интерфейс - одни и те же клавиши в разных режимах работы выполняют разные действия. В редакторе `vi` есть три основных режима: командный режим, режим вставки и режим строчного редактора. По умолчанию, работа начинается в командном режиме.

Работа с `vi/vim` на начальном этапе нетривиальна и по сравнению с другими текстовыми редакторами требует некоторой подготовки. Однако, данный редактор является универсальным для всех операционных систем, поэтому умение работать с `vi` означает умение настраивать операционную систему даже в случае существенных ограничений: отсутствие графического входа в систему, восстановление после сбоев, удаленная работа.

Редактор `vi` присутствует только в минимальной установке операционной системы. Во всех других случаях установки в системе используется редактор `vim`, при этом редактор `vi` заменяется редактором `vim`. Главные отличия редактора `vim` от `vi`:

* неограниченное число шагов отмены/повторов;
* многооконность;
* поддержка множества буферов;
* подсветка синтаксиса;
* редактирование командной строкой;
* достраивание имен файлов;
* визуальное редактирование;0 
* графический интерфейс;
* режим совместимости `vi`;
* проверка орфографии.

!!! Запуск редактора

Редактор `vi` присутствует всегда, в случае полной установки устанавливается улучшенная версия редактора - `vim`, в которой присутствуют такие дополнительные возможности как подсветка синтаксиса.

Запустить редактор можно следующим образом:

```
vi <файл>
```

или:

```
vi [<параметры>] [<список файлов>]
```

Если указано несколько файлов, `vim` по окончанию редактирования первого файла переходит ко второму, после второго - к третьему и так далее.

Улучшенная версия редактора поддерживает навигацию по файловой системе, для этого нужно запустить `vi`, указав в качестве аргумента каталог - точку входа, например, текущий каталог:

```
vim <каталог>
vim .
```

Редактор `vim` является единственным редактором, который поддерживает подсветку синтаксиса практически для всех форматов файлов: исходные тексты программ, различные конфигурационные файлы, файлы журналов. Поэтому его удобно использовать для чтения файлов журналов,также редактирования конфигурационных файлов. Для чтения файлов журналов рекомендуется использовать режим чтения, для этого нужно вызвать редактор с параметром `-R`:

```
sudo vim -R <файл журнала>
```

Для чтения большинства журналов необходимы права администратора. Чтение журналов можно выполнять и в режиме редактирования (без параметра `-R`), однако, во избежание случайной порчи файла, рекомендуется всегда использовать `-R`, если файл открывается для чтения.

```
sudo vim /etc/passwd
sudo vim -R /var/log/messages
```

В зависимости от типа файла, который `vim` определяет автоматически, меняется подсветка синтаксиса.

!!! Режимы работы универсального текстового редактора vi

Режимы работы универсального текстового редактора `vi` с применением клавиатуры: 

* командный - в этом режиме выполняется перемещение курсора, выполнение некоторых действий, переход в другие режимы. В этом режиме редактор работает по умолчанию. Все другие режимы должны активироваться из командного режима, вернуться обратно в командный режим из любого другого режима - клавиша `Esc`;
* редактирование - в этом режиме введенные символы клавиатуры будут вставляться в текст редактируемого файла, этот режим ещё называют режимом вставки. Обычно переход в режим редактирования осуществляется при помощи клавиши `i`;
* режим строчного редактора `ed` - используется для управления файлами. Переход в данный режим: клавиша `:`;
* режим поиска - ввод поискового запроса. Переход в режим поиска осуществляется клавишей `/`;
* визуальный режим - режим выделения текста, клавиша `v`.

!!!! Командный режим

В командном режиме редактор работает по умолчанию. Основные действия в командном режиме:

* `^G` - показать сведения о текущем файле и строке.
Запись и выход:
* `ZZ` - сохранить изменения и выйти;
* `ZQ` - выйти без сохранения изменений.

Запись и выход из редактора также возможны через режим редактора `ex`. Перемещение курсора ввода в командном режиме (символ `^` здесь и далее по тексту обозначает клавишу `Ctrl`):

* `вверх, вниз, вправо, влево, h, j, k, l` - перемещение курсора ввода клавишами клавиатуры;
* `^U` - табуляция вверх; 
* `^D` - табуляция вниз; 
* `^F` - на страницу вниз;
* `^B` - на страницу вверх; 
* `^E` - подвинуться на строку вниз; 
* `^Y` - подвинуться на строку вверх; 
* `^`  - в начало текущей строки; 
* `0` - в начало текущей строки (к первому непробельному символу);
* `$` - в конец текущей строки;
* `w` - на слово вправо;
* `b` - на слово влево;
* `e` - в конец слова;
* `\\` - на параграф вперед (параграф - это блок текста, отделенный пустой строкой);
* `}` - на абзац вниз;
* `{` - на абзац вверх;
* `^f` - на страницу (экран) вниз;
* `^b` - на страницу (экран) верх;
* `[[ или ]]` - в начало текста/в конец текста, при редактировании исходного текста программ перемещается в начало функции/в конец функции;
* `"` - к месту выполнения команды `[[`;
* `%` - найти парную скобку `(`, `{` или `[`;
* `[n]G` - на строку `«n»`;
* `[n]|` - в колонку `«n»`; 
* `H` - в начало экрана;
* `M` - в середину экрана;
* `L` - в конец экрана;
* `z^` - текущую строку в начало экрана;
* `z.` - текущую строку в середину экрана;
* `z-` - текущую строку в конец экрана;
* `/<текст>` - найти <текст> и перейти к нему (переход в режим поиска);
* `/` - повторить поиск далее по файлу и перейти к найденному тексту.

Правка в командном режиме: 

* `x` - уничтожить символ после курсора;
* `X` - уничтожить символ перед курсором;
* `d` - используется совместно с командами перемещения. Удаляет символы с текущего положения курсора до положения после ввода команды перемещения. 
Пример: `dw` - удаляет символы с текущего до конца слова; `diw` - удаляет слово под курсором;
* `с` - команда аналогичная `d`, но после удаление переходит в режим ввода. Очень удобная альтернатива команде `R`;
* `dd` - стирание текущей строки;
* `J` - слияние текущей строки со следующей;
* `u` - отмена последней команды;
* `U` - отмена всех последних изменений в строке;
* `^r` или `:redo` - вперед по изменениям;
* `.` - повтор последней команды.

!!!!Повторители

Командам и движениям курсора даются повторители (числа), например:

* `2w` - передвинуть курсор на два слова вперед;
* `10l` - передвинуть курсор на десять символов вправо;
* `d10l` - стереть десять символов справа от курсора;
* `2d10l` - стереть двадцать символов справа от курсора;
* `5J` - слить пять последующих строк в одну;
* `4.` - повторить последнюю введенную команду четыре раза.

!!!!Режим редактирования

Переход в режим редактирования:

* `i` - вставлять текст в позицию курсора;
* `a` - вставить текст перед позицией курсора;
* `A` - вставлять в конец строки;
* `I` - вставить перед началом строки;
* `R` - перейти в режим замены;
* `r` - заменить один символ; 
* `s` - заменить один символ на несколько; 
* `O` - вставить строку перед курсором; 
•` o` - вставить строку после курсора; 
* `C$` - заменить конец строки.  

В режиме редактирования:

* `ESC` - возврат из режима редактирования в командный режим; 
* `^W/^U` - Убрать слово/Убрать строку; 
* `Backspace` - удалить символ перед курсором.

!!!!Режим строчного редактора ex

Работа в данном режиме происходит следующим образом: набирается символ `:`, вводится необходимая команда, после чего нажимается клавиша `Enter`. Редактор выполняет команду и переходит в обычный режим.

Некоторые команды режима редактора `ex`:
* `:q` или `:q!` - выход из редактора без сохранения изменений; 
* `:x` - выход из редактора с записью, если файл был модифицирован; 
* `:w` - запись файла; 
* `:w <имя файла>` - запись файла; 
* `:w! <имя файла>` - запись файла; 
* `:e <имя файла>` - загрузка файла <имя файла>; 
* `:e! <имя файла>` - загрузка файла <имя файла>; 
* `:r <имя файла>` - добавить содержимое указанного файла к редактируемому сразу за текущей строкой; 
* `:set` nu- включить нумерацию строк; 
* `:set nonu` - отключить нумерацию строк; 
* `:!command` - выполнить команду, как в командной оболочке, не покидая редактора.

!!!!Режим поиска

Режим поиска позволяет быстро находить текст в документе. Для перехода в режим поиска нужно нажать клавишу `/`, ввести текст, который нужно найти, ввод завершить нажатием клавиши `Enter`. Редактор выполнит поиск текста в документе и вернётся в командный режим.

* `/word` - выполнить поиск слова `word` в тексте; 
* `/` - повторить поиск слова `word` далее по тексту.

!!! Буферы vi

Редактор имеет три типа буферов:

* буфер стирания (0-9);
* неименованный буфер;
* именованные буферы (a-z).

В буферы стирания автоматически заносятся стираемые элементы. В буфере 0 хранится последний стертый элемент, в буфере 1 - предпоследний и т. д.

Занести в буфер:

* `yy` - занести текущую строку в неименованный буфер; 
* `y <движение курсора>` - занести указанный движением курсора блок текста в неименованный буфер; 
* `"ayy` - занести текущую строку в именованный буфер `a`; 
* `"Ayy` - добавить текущую строку к содержимому именованного буфера `a`; 
* `"by10j` - занести последующие 10 строк в именованный буфер `b`.

Вставить из буфера: 

* `p` - вставить в текущую позицию содержимое неименованного буфера;
* `"ap` - вставить в текущую позицию содержимое именованного буфера `a`;
* `"1p` - вставить в текущую позицию содержимое буфера стирания 1.

!!! Многооконное редактирование

Редактирование нескольких файлов выполняется либо с использованием команды редактора :`e <имя файла>`, либо указав все необходимые файлы в командной строке при вызове редактора, например, `vi file1 file2 file3`. В последнем случае передвижение по списку файлов выполняется с помощью команд: 

* `:n` - переходим к следующему файлу в списке; 
* `:rew` - возвращаемся к редактированию первого файла в списке. 

Именованные буферы сохраняют свое содержимое при переходе к редактированию другого файла.
Команды, набранные пользователем, оболочка `Bash` запоминает. Список команд, введенных пользователем, просматривается нажатием клавиш на клавиатуре стрелка вверх и стрелка вниз. Нажатием клавиши стрелка вверх список введенных команд «прокручивается» от последней к первой, а по нажатию клавиши стрелка вниз список введенных команд «прокручивается» от первой к последней. Введенная ранее в оболочку `Bash` команда отображается в командной строке. Пользователь выбирает, редактирует и вводит команду на исполнение оболочки `Bash` нажатием клавиши `Enter`.

Список команд сохраняется между сеансами работы пользователя в момент завершения работы оболочки `Bash`. Накопленный за время работы список команд дописывается в конец файла `~/.bash_history`, находящийся в домашнем каталоге пользователя. При следующем запуске командной оболочки `Bash` происходит считывание файла `~/.bash_history`. Количество сохраняемых команд в `~/.bash_history` ограничено текущей настройкой, например 500 команд.
Удобный просмотр истории обеспечивает команда `history`.
Формат команды:
```
history [-c]
```
Команда `history` без аргументов выводит на экран содержимое истории. Параметр `-c` полностью очищает историю команд.

! Поиск по истории команд

Для того чтобы найти в истории ранее набранную команду, нужно нажать сочетание клавиш `Ctrl+R` и начать вводить строку поиска. Командная оболочка автоматически начнёт предлагать вариант команды, основываясь на истории ранее набранных команд. После того как на экране появилась нужная строчка, нужно отправить её на выполнение, нажав клавишу `Enter`, или отредактировать её, нажав одну из клавиш перемещения курсора.

Возможен другой вид поиска по истории: при помощи автодополнения, который описан в разделе «Bash Автодополнение».
Утилита `screen` — полноэкранный функциональный консольный оконный менеджер с поддержкой прокрутки, поиска в окне, функцией копирования-вставки между окнами. Важной особенностью является возможность отсоединиться от `screen`, завершить сеанс работы в `Bash`, после чего заново восстановить предыдущий сеанс `screen`.

Утилита `screen` является важным инструментом системного администратора, так как выполняет функции оконного менеджера при отсутствии графического интерфейса, что важно при управлении системами, например, по `SSH`.
 
Основные возможности утилиты:
1. Создание и управление несколькими виртуальными окнами в одном единственном окне терминала:
*  переключение между окнами; 
* отслеживание активности в каждом окне;
* обмен содержимым между окнами с помощью копирования и вставки;
* назначение заголовков окнам;
2. Разделение рабочего пространства терминала на несколько частей и переключение между ними. Так администратор может разделить рабочее пространство, чтобы наблюдать за несколькими терминалами одновременно;
3. Сохранение сеанса работы даже при обрыве соединения по `SSH` или отключении от терминала с возможностью возобновить работу в терминале;
4. Возможность настройки горячих клавиш.

! Конфигурационный файл

Для настройки программы используется конфигурационный файл `.screenrc`, который находится в домашнем каталоге. Если его там нет, можно скопировать системный файл `screenrc` который находится в каталоге `/etc`.

Все параметры можно изменить во время работы. Для этого нажмите сочетание клавиш `Ctrl+a`: и введите название параметра и его значение.

Некоторые директивы:
* `vbell&nbsp;off` - управляет визуальным звонком. Если данный параметр будет включен (on) то звонок будет отображаться, как вспышка на экране;
* `activity&nbsp;'activity&nbsp;in&nbsp;window&nbsp;%n'`- сообщение, которое будет выводиться при включенном режиме мониторинга за окном;
* `bell_msg&nbsp;'bell&nbsp;in&nbsp;window&nbsp;%n'`- сообщение, которое выведется на экран в случае получения звукового сигнала в каком-либо окне;
* `nethack&nbsp;on` - изменяет стиль текста выводимых сообщений;
* `autodetach&nbsp;on`- если по какой-то причине соединение с управляющим процессом будет потеряно, то после восстановления работа в `screen` может быть возобновлена. В обратном случае - `off` — `screen` будет уничтожен со всеми дочерними окнами и процессами;
* `startup_message&nbsp;off`- выключает сообщение об авторских правах при первом запуске;
* `defscrollback&nbsp;10000`- количество строк по умолчанию для буфера прокрутки;
* `caption&nbsp;always`- показывает заголовки окна в строке статуса;
* `caption string "%{rk} %c %{dd} %{+b M}%n %{-b dd}%-w%{+b B.}%n* %t%{-}%+w%<"`- форматирование строки статуса. Данный набор символов приведет к тому, что в строке статуса будет отображаться время и цветом выделяться активное окно.

! Комбинации клавиш при работе

Все комбинации в `screen` начинаются с нажатия управляющей последовательности `Ctrl+a`, поэтому во всех сочетаниях ниже она опущена для наглядности. Для того чтобы отправить сочетание клавиш `Ctrl+a` какой-либо программе внутри `screen` (например, это может быть `screen` внутри `screen`), используйте сочетание `Ctrl+a a`.

Выход из `screen`:
• `d` — отсоединение от сессии, при этом сессия и все работающие внутри неё приложения сохраняются и не завершаются;
• `DD` — отсоединиться и выйти (быстрый выход), например, если был произведён вход по `SSH`, данное сочетание закроет сеанс `SSH`, но сохранит сеанс `screen`;
• `:quit` или `:exit` — выйти из сеанса `screen` (закрыть сеанс).
Получение справки:
• `?` — вывести список сочетаний клавиш.

Управление окнами:
• `c` — создание нового окна;
• `a` — переключение между окнами — используется для быстрого перемещения между двумя последними окнами;
• `<НОМЕР>` — выбор окна по номеру (от 0 до 9);
• `p` — предыдущее окно;
• `n` — следующее окно;
• `"` — список окон для переключения;
• `'<заголовок или номер>` — перейти к окну по заголовку или номеру;
• `A` — изменить заголовок окна;
• `C` — очистить окно;
• `F` — подогнать размер окна под текущий размер терминала;
• `K` — уничтожить окно (опасное действие, не рекомендуется использовать для повседневной работы);
• `\` — уничтожить все окна (опасное действие, не рекомендуется использовать для повседневной работы);
• `r` — переключение режима переноса по словам;
• `b` — отображение заголовка окна (по умолчанию заголовки скрыты);

Разделение окон:
• `S` — текущее окно разделяется на две области по горизонтали и в обоих можно открыть по новому окну;
• `|` или `V` — разделить текущее окно на две области по вертикали;
• `X` — закрыть текущую область;
• `Q` — закрыть все области кроме текущей;
• `TAB` — переключение между разделенными частями окна.

Разное:
• `[` или `ESC` — режим прокрутки, он же режим копирования. Для копирования подведите курсор к нужному месту и нажмите пробел;
• `]` — вставка выделенной области;
• `H` — протоколирование окна в файл `screenlog`;
• `M` — режим слежения за активностью в окне;
• `_` — режим слежения за неактивностью в окне;
• `x` — «заблокировать» менеджер, для того чтобы разблокировать менеджер, нужно будет ввести пароль пользователя.

! Параметры

* `-rd` подключиться к `screen`. Сделать `deatach` для остальных сессий;
* `-ls` список запущенных менеджеров;
* `-dm` запуск `screen` в режиме `deatach`;
* `-wipe` удалить сведения о запущенных менеджерах;
* `-x` присоединиться к `screen`.
* `-S&nbsp;<сессия>` создать новую сессию с именем `<сессия>`.
* `-r&nbsp;[сессия]` присоединиться к указанной сессии или последней сессии. Список сессий можно узнать с помощью параметра `-ls`.

Можно использовать возможность автоматического дополнения совместно с параметром `-r`. 
Чтобы не вводить длинное имя сессии, введите:
```
screen -r [TAB][TAB]
```
Система автоматически дополнит имя сессии или, если сессий несколько, выведет варианты дополнения на экран.

! Примеры использования

Утилиту `screen` удобно использовать для запуска какой-либо долго выполняющейся задачи в фоновом режиме. Данная проблема актуальна в связи с тем, что `Bash` завершает все дочерние процессы и все задачи, связанные с текущим терминалом, когда пользователь покидает данный терминал. Иногда пользователь может случайно закрыть терминал или, в случае соединения по `SSH`, может оборваться текущее соединение, что в итоге приведёт к тому, что важная длительная операция, например, резервное копирование, завершится без предупреждения.
Утилита `screen` не завершает задачу, даже если пользователь закрыл терминал или закрыл соединение `SSH`, поэтому в случае работы по `SSH`, где существует риск обрыва соединения, рекомендуется всегда использовать `screen`.

Пример использования `screen` для выполнения длительной операции:
```
sudo screen
sudo wget http://server.local/cd-image.iso
```
Нажмите сочетание клавиш `Ctrl+a d`, чтобы выйти:
```
[detached]
```
После этого можно закрыть сессию `SSH` или `Bash`, выполнив команду `exit` или запустить ещё один сеанс `screen`.
Проверить статус задач:
```
sudo screen -ls
There is a screen on:
        20673.pts-0.srv (Detached)
1 Socket in /var/run/screen/S-root.
```
Можно снова присоединиться к данному терминалу:
```
sudo screen -r 20673.pts-0.srv
```
Или, если это был единственный терминал:
```
sudo screen -r
```
Таким образом, `screen` позволяет управлять сразу несколькими длительными по времени задачами без риска случайного завершения.

! Очистка экрана
Для очистки экрана от результатов вывода предыдущих команд используется утилита `clear`.
Формат команды:
```
clear
```
В зависимости от типа используемого терминала команда автоматически выбирает метод очистки.

! Сброс состояния терминала

Иногда полезно не только очистить терминал, но и&nbsp;сбросить все изменения. Для сброса терминала используется утилита `reset`.
Формат команды:
```
reset
```
Утилита `reset` полезна, когда в терминале по ошибке был открыт файл с двоичными данными, нарушивший формат ввода или вывода.

! Выход из командной оболочки

Команда `exit` завершает текущий сеанс командной оболочки, в случае использования внутри сценария — завершает сценарий с указанным кодом возврата.
Формат команды:
```
exit [<код завершения>]
```
Если указан код завершения, сценарий завершится с указанным кодом.
Работа с&nbsp;командным интерпретатором значительно упрощается и&nbsp;ускоряется при использовании специальных сочетаний клавиш.
Сочетания клавиш командной оболочки
|Сочетание клавиш|Описание|
|Ctrl+C|Завершить текущую задачу (сигнал SIGINT)|
|Crtl+Z|Остановить текущую задачу|
|Ctrl+D|Завершить ввод или выйти из текущего сеанса|
|(!!) без скобок|Повторить предыдущую команду|
|Ctrl+A|Переход в&nbsp;начало строки|
|Ctrl+B|Переход на 1 символ назад|
|Ctrl+D|Удаляет символ под курсором (аналог Delete)|
|Ctrl+E|Переход к&nbsp;концу строки|
|Ctrl+F|Переход на 1 символ вперёд|
|Ctrl+K|Удаляет всё, до конца строки|
|Ctrl+L|Очищает экран, аналог команды clear|
|Ctrl+R|Поиск по истории или повторение поиска (листание результатов поиска)|
|Ctrl+J|Прекращает поиск и&nbsp;позволяет отредактировать найденную команду|
|Ctrl+T|Меняет символ под курсором на предыдущий («тянет» предыдущий символ к&nbsp;концу строки)|
|Ctrl+U|Удаляет все символы слева от курсора до начала строки|
|Ctrl+W|Удаляет символы слева от курсора до начала слова.|
|Ctrl+XX|Переходит от текущей позиции курса в&nbsp;начало строки и&nbsp;обратно|
|Ctrl+X @|Показывает возможные дополнения имени хоста (имена берутся из /etc/hosts)|
|Alt+<|Переход к&nbsp;первой команде в&nbsp;истории команд|
|Alt+>|Переход к&nbsp;последней команде в&nbsp;истории|
|Alt+?|Показывает список возможных дополнений команды|
|Alt+*|Вставляет все возможные дополнений команды в&nbsp;строку команд|
|Alt+/|Пытается дополнить имя файла (аналогично табуляции)|
|Alt+.|Вставляет последний аргумент предыдущей команды|
|Alt+b|Сдвигает курсор влево на 1 слово|
|Alt+c|Делает букву под курсором большой, а&nbsp;остальные, до конца слова, маленькими.|
|Alt+d|Удаляет символы с&nbsp;текущей позиции курсора и&nbsp;до конца слова|
|Alt+f|Передвигает курсор на одно слово вперёд|
|Alt+l|Делает все буквы с&nbsp;текущей позиции курсора и&nbsp;до конца слова маленькими|
|Alt+t|Меняет местами слова под курсором и&nbsp;предыдущее|
|Alt+u|Переводит буквы с&nbsp;текущей позиции курсора и&nbsp;до конца слова в&nbsp;верхний регистр|
|Alt+BckSp|Удаляет символы с&nbsp;текущей позиции курсора до начала слова|
|TAB|Дополнение команды (иногда нужно нажать 2 раза)|
|*+TAB|Отображает все подкаталоги, включая скрытые|
|~+TAB|Выводит всех пользователей|
|$+TAB|Список всех доступных переменных окружения|
|@+TAB|Имена хостов из /etc/hosts|
|=+TAB|Аналог команды ls (содержимое текущего каталога)|



Пользователь использует псевдонимы команд для сокращения длины набираемой строки команды. Например, псевдоним — `grep`, а полная команда — `grep --color=auto`.

В конфигурационных файлах командной оболочки `Bash` определены сокращения, список которых выводится на экран после ввода команды `alias` без параметров:
```
alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias vi='vim'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
```
Псевдонимы не наследуются с окружением.
Для назначения псевдонима пользователь выполняет команду `alias` с параметром.
Пример.
```
alias ls='ls --color=auto'
```
Однако, псевдоним, заданный таким образом не сохранится после выхода из текущей командной оболочки. Обычно псевдонимы назначают через конфигурационный файл командной оболочки `~/.bashrc`. Данный файл доступен для редактирования каждым пользователем операционной системы. Чтобы добавить персональные сокращения команд, откройте файл `~/.bashrc` любым текстовым редактором, например, vim и добавьте в него несколько строк с командой `alias`:
```
alias t='tar'
alias s='secon'
alias n='newrole'
```
Пользователь может устанавливать сокращения по своему усмотрению. Для каждого пользователя будет свой собственный набор сокращений.

*П р и м е ч а н и е.* Так как пользователь может заменять существующие команды при помощи `alias`, при разработке сценариев на языке `Bash` необходимо учитывать и это и обращаться к командам не по имени, например, `grep`, `cat`, `du`, а по полному пути: `/bin/grep`, `/bin/cat`, `/usr/bin/du`.
Отменить действие синонима можно при помощи команды `unalias`:
```
unalias ls grep
```
Запуск с параметром `-a` удаляет все псевдонимы. Это иногда полезно для сценариев, чтобы убедиться, что команды действительно те, которые ожидает разработчик сценария, а не те, что установил пользователь.
```
unalias -a
```
При вводе команды пользователь перемещает курсор по вводимому тексту и изменяет текст. Для перемещения курсора используются клавиши клавиатуры: стрелка влево  и стрелка вправо. Для перемещения курсора в начало вводимого текста необходимо нажать `Home`, для перемещения курсора в конец строки нажать `End`. Перемещение курсора влево на одно слово, нажать сочетание клавиш `Ctrl+влево`. Перемещение курсора на одно слово вправо, нажать сочетание клавиш `Ctrl+вправо`.

Команда может располагаться на нескольких строках для удобства ввода длинных команд. Командная оболочка обычно самостоятельно выполняет перенос строк в длинных командах, однако чтобы выполнить объединение двух и более частей команды, в конце строки вставьте символ `\` и нажмите клавишу `Enter`. 
Пример:
```
ls /etc /proc /etc/sysconfig /dev \
/usr/share/backgrounds
```
Если выполняется ввод многострочной команды или ввод данных в файл с помощью команды `cat`, для завершения ввода необходимо нажать сочетание клавиш `Ctrl+D`.

Удаление символа перед курсором выполняется нажатием на клавишу `Backspace`. Удаление символа после курсора выполняется нажатием на клавишу `Del`.

Для завершения процесса нажать сочетание клавиш `Ctrl+C`. Некоторые команды, например, `ping`, будут работать до тех пор, пока не будет нажато сочетание клавиш `Ctrl+C` или процесс не будет завершен принудительно другим способом, например, командой `kill/killall`.

Чтобы «усыпить» процесс, нужно нажать сочетание клавиш `Ctrl+Z`, это не завершит процесс, но приостановит его. Приостановленный процесс нужно либо завершить, либо возобновить с помощью команды `kill/killall`. Найти процесс, который «спит», поможет команда `ps`.
В  ОС существует встроенная справочная система по основным командам. Для получения справки по команде администратор вводит следующий текст в&nbsp;командной строке:
```
man <имя команды>
```
Откроется окно, содержащее справочное руководство по `<имя команды>`. Администратор перемещает текст справки в&nbsp;окне, нажимая на клавиатуре клавиши стрелка вверх, стрелка вниз, `Page Up`, `Page Down` и&nbsp;`/`.

Справочная система выводит на экран описание, список параметров, примеры команды и&nbsp;аналогичные команды.

Дополнительно к&nbsp;справочной системе некоторые программы выводят на экран краткие сведения о&nbsp;параметрах команды после ввода администратором `<имя команды>` с&nbsp;параметром `--help` или `-h`.
Пример.
```
cat --help 
Usage: cat [OPTION]... [FILE]... 
Concatenate FILE(s), or standard input, to standard output.
...
```
! Команды управления задачами

`jobs` - Выводит список задач, исполняющихся в фоновом режиме, в качестве параметра принимает только номер задачи.
Пример.
```
bash$ sleep 100 &
[1] 1384

bash $ jobs
[1]+  Running                 sleep 100 & 
```
"1" -- это номер задачи (управление задачами осуществляет текущий командный интерпретатор), а "1384" -- номер процесса (управление процессами осуществляется системой). Завершить задание/процесс ("прихлопнуть") можно либо командой kill %1, либо kill 1384.

`disown` - Удаляет задачу из таблицы активных задач командной оболочки.

`fg, bg` - Команда `fg` переводит задачу из фонового режима на передний план. Команда `bg` перезапускает приостановленную задачу в фоновом режиме. Если эти команды были вызваны без указания номера задачи, то они воздействуют на текущую исполняющуюся задачу.

`wait` - Останавливает работу сценария до тех пор пока не будут завершены все фоновые задачи или пока не будет завершена задача/процесс с указанным номером задачи/PID процесса. Возвращает код завершения указанной задачи/процесса. Команда `wait` может принимать необязательный параметр -- номер задания/процесса, например, wait %1 или wait $PPID. 

Используйте команду `wait` для предотвращения преждевременного завершения сценария до того, как завершит работу фоновая задача.

`suspend` - Действует аналогично нажатию на комбинацию клавиш Control+-Z, за исключением того, что она приостанавливает работу командной оболочки.

`logout` - Завершает сеанс работы командной оболочки, можно указать необязательный код завершения.

`times` - Выдает статистику исполнения команд в единицах системного времени, в следующем виде:
```
0m0.020s 0m0.020s
```
`kill` - Принудительное завершение процесса путем передачи ему соответствующего сигнала.

*Идентификация задач*
`%N` 	Номер задания [N]
`%S` 	Вызов (командная строка) задания, которая начинается со строки S
`%?S` 	Вызов (командная строка) задания, которая содержит строку S
`%%` 	"текущее" задание (последнее задание приостановленное на переднем плане или запущенное в фоне)
`%+` 	"текущее" задание (последнее задание приостановленное на переднем плане или запущенное в фоне)
`%-` 	Последнее задание
`$!` 	Последний фоновый процесс

! Пример управления задачами
 
Что бы переключить запущенный процесс в фоновый режим, приостановите его:
```
Ctrl-z
```
Для получения номера приостановленного процесса выполните команду:
```
jobs -l
```
Для переключения в фоновый режим выполните команду:
```
bg %jobnum
```

Для возвращения процесса на передний план выполните команду:
```
fg %jobnum
```
Для того, что бы процесс не прерывался после окончания терминальной сессии, нужно запускать его в скрине (screen). Если выполнение процесса затянулось и нужно переключить процесс в фоновый режим, действуя автономно от процесса, выполните команду:
```
disown -h %jobnum
```
Закройте терминальное окно, запущенная задача будет выполняться в фоновом режиме.

Получить информацию о том, выполняется ли запущенная задача можно с помощью утилиты `ps`:
```
ps -aux |grep %имя_процесса%
```
Удобное средство для работы со многими файлами — использование шаблона. При наборе текста команды имена файлов нужно перечислять через пробел либо указать шаблон, по которому командная оболочка `Bash` подставит попадающие под маску файлы.
Шаблон состоит из символов, используемых в имени файла и/или из управляющих символов.
Возможны следующие управляющие символы: 
• `*` — звездочка, означает любой символ, повторяющийся любое число раз;

• `?` — знак вопроса, означает точно один любой символ; 

• `[]` — квадратные скобки, набор символов, заключенный в скобки, например [abc] соответствует одному из возможных перечисленных символов: a, b или с. Для обозначения диапазона символов в алфавитном порядке используется дефис: [a-c], что эквивалентно [abc];

• `{}` — фигурные скобки, позволяют перечислять несколько выражений подряд, например: {foo,bar}* будет соответствовать всем файлам, начинающимся с foo или bar. Фигурные скобки не являются шаблонами как таковыми — они выполняют роль генератора списков.

*П р и м е ч а н и е.* Шаблоны игнорируют файлы, начинающиеся с точки. Так, шаблон `*.txt` будет соответствовать `file.txt`, но не будет соответствовать `.hidden.txt.` Для охвата шаблонами файлов, начинающихся с точки, нужно явно указать точку в начале: `.*.txt` будет соответствовать файлу `.hidden.txt`, но не `file.txt`. Шаблон, соответствующий вообще всем файлам: `{,.}*.txt`.
Пример.
```
mkdir ~/test_dir 
cd ~/test_dir
touch {1,2,3,11,file,.hidden}.txt foot  football  bard
ls -A
11.txt  1.txt  2.txt  3.txt  bard  file.txt  foot  football  .hidden.txt
ls *.txt
11.txt  1.txt  2.txt  3.txt  file.txt 
ls ?.txt
1.txt  2.txt  3.txt
ls [12].txt
1.txt  2.txt
ls {foo,bar}*
foot  football  bard
ls *[a-z].txt
file.txt
ls .*[a-z].txt
.hidden.txt
ls {,.}*[a-z].txt
file.txt  .hidden.txt
```
Шаблоны в&nbsp;фигурных скобках можно использовать при создании файлов:
```
touch {foo,bar}{dea,dbe,ef}
ls
bardbe  bardea  baref  foodbe  foodea  fooef
```
При создании файлов использовать другие шаблоны (звёздочку или группы символов) нельзя. Это связано с&nbsp;тем, что `{}` является не стандартным шаблоном, а&nbsp;генератором комбинаций:
```
echo {0,1,2,3,4,5,6,7,8,9}
0 1 2 3 4 5 6 7 8 9
echo {0,1}{0,1}
00 01 10 11
```
Возможно использование фигурных скобок для комбинирования строк:
```
echo -e "\n"{"Яблоко","Груша"}" "{"зелёного","красного","жёлтого"}" цвета"
Яблоко зелёного цвета 
Яблоко красного цвета 
Яблоко жёлтого цвета 
Груша зелёного цвета 
Груша красного цвета 
Груша жёлтого цвета 
```
Подобные комбинации полезны при установке нескольких программ:
```
sudo yum install lib{acl,curl,ev}-devel
```
Данная команда запросит установку пакетов `libacl-devel`, `libcurl-devel` и&nbsp;`libev-devel`.
Некоторые компоненты Xfce поддерживают режим KIOSK. Эту опцию можно активировать, создав и изменив файл системы kioskrc. 
Для активации режима создайте каталог и конфигурационный файл:
```
mkdir -p /etc/xdg/xfce4/kiosk
sudo vim /etc/xdg/xfce4/kiosk/kioskrc
```
Для активации режима KIOSK для Xfce4 Panel отредактируйте конфигурационный файл следующим образом:
```
[xfce4-panel]
CustomizePanel=%name_group
```
Это позволит только пользователям в группе name_group настраивать свои панели.

Менеджер сеанса Xfce тоже поддерживает режим KIOSK.
Предоставляются следующие возможности режима KIOSK:
* CustomizeSplash - разрешение пользователю осуществлять настройки Заставок экрана;
* CustomizeChooser - разрешение пользователю изменять настройки смены пользователя;
* CustomizeLogout - разрешение пользователю осуществлять настройки завершения сеанса;
* CustomizeCompatibility - разрешение пользователю изменять настройки совместимости с KDE/Gnome;
* CustomizeSecurity - настройки безопасности (это одна из самых ВАЖНЫХ настроек, поскольку это освобождает пользователей от привязки к TCP-порту (Фактически libICE);
* Shutdown - разрешение пользователю перезагружать или выключать систему;
* SaveSession - разрешение пользователю сохранять Сеанс при выходе из системы (`Сохранить сеанс для будущих входов`).
                             
Для активации режима KIOSK для Xfce4-Session отредактируйте конфигурационный файл следующим образом:
```
[xfce4-session]
CustomizeSplash=ALL
CustomizeChooser=ALL
CustomizeLogout=ALL
CustomizeCompatibility=%wheel
CustomizeSecurity=NONE
Shutdown=%wheel
SaveSession=%admin
```
Это позволит всем пользователям изменять свою заставку и настройки смены пользователя. 
Настраивать параметры совместимости разрешено только пользователям из группы wheel.
Настраивать параметры безопасности не разрешено никому.
Перезагружать или выключать систему разрешено пользователям только из группы wheel.
Сохранять Сеанс при выходе из системы только для пользователей из группы admin.

Для активации режима KIOSK для Xfce4 Desktop отредактируйте конфигурационный файл следующим образом:

```
[xfdesktop]
UserMenu=%wheel
CustomizeBackdrop=ALL
CustomizeDesktopMenu=%wheel
CustomizeWindowlist=NONE
CustomizeDesktopIcons=brian
```
* UserMenu
Позволяет или нет вносить изменения пользователю в меню рабочего стола. Если нет, `xfdesktop` будет игнорировать файл `menu.xml` в каталоге  `~/.config/xfce4/desktop/` и использовать `$sysconfdir/xdg/xfce4/desktop/menu.xml`.
* CustomizeBackdrop
Позволяет или нет вносить изменения в окружение рабочего стола. Если нет, то панель настроек будут затемнена. 
* CustomizeDesktopMenu
Позволяет или нет вносить изменения в меню рабочего стола. Включает показ или скрытие знаков приложений, так же как и само меню. 
* CustomizeWindowlist 
Позволяет или нет модифицировать окна. Включает показ или скрытие значков окон, так же как и само меню.
* CustomizeDesktopIcons 
Позволяет или нет пользователю задействовать отображение значков рабочего стола, или изменить их стиль. 
! Подготовка виртуальной машины (ВМ) для гостевой ОС

*Подготовка виртуального дискового пространства*
Предварительно установите следующие пакеты:
* `z-meta-virtualization-client`
* `z-meta-virtualization-environment `
* `z-meta-virtualization-hypervisor `
* `z-meta-virtualization-platform `
* `z-meta-virtualization-tools`
Для этого выполните команду:
```
sudo yum install z-meta-virtualization-client z-meta-virtualization-environment z-meta-virtualization-hypervisor z-meta-virtualization-platform z-meta-virtualization-tools -y
```
Для создания виртуальных (образов) дисков формата, поддерживаемого виртуализацией QEMU системным администратором, следует выполнить команду:
```
sudo qemu-img create /var/lib/libvirt/images/OS-RT.img 10G
```
На экране терминала появится подобный вывод:
```
Formatting '/var/lib/libvirt/images/OS-RT.img', fmt=raw size=...
```
При выполнении этого действия пользователем без прав системного администратора, предварительно выполните команду:
```
mkdir ~/images
qemu-img create ~/images/OS-RT.img 10G
```
На экране терминала появится подобный вывод:
```
Formatting '/home/name/images/OS-RT.img', fmt=raw size=...
```
Просмотрите созданный виртуальный диск:
```
ls -lh images/OS-RT.img
-rw-r--r--. 1 name name 10G июл 21 11:31 images/OS-RT.img
```
*Создание домена виртуальной машины*

Пакет `virt-install` был установлен на этапе подготовки виртуального дискового пространства.
Параметры командной строки доступные при использовании `virt-install`:

1. `arch=i686&nbsp`– указание к использованию эмуляции CPU 32-разрядной архитектуры, или архитектуры CPU хоста, если параметр не&nbsp;указан (по-умолчанию);

2. `ram&nbsp;1024&nbsp`;`-r&nbsp;1024&nbsp`– указывается объём памяти ОЗУ (в мегабайтах), выделяемый виртуальной машине;

3. `disk&nbsp`;`path=/var/lib/libvirt/images/OS-RT.img,size=10&nbsp`– указывается путь к виртуальному диску, который может быть файлом, разделом или логическим томом. В примере, приведенном ниже, файл виртуального диска называется `OS-RT.img` и будет иметь размер `10&nbsp`; Гигабайт, также он будет расположен в каталоге `/var/lib/libvirt/images/` и использовать подсистему ввода-вывода `virtio` в качестве шины передачи данных;

4. `file&nbsp`;`path=/var/lib/libvirt/images/OS-RT.img&nbsp`– указание на предварительно созданный и отформатированный образ жесткого диска, используется вместо параметра — disk;

5. `cdrom=ISOFILE.iso&nbsp`;`-c&nbsp`;`ISOFILE.iso&nbsp`– указание на файл, используемый как виртуальный CD-ROM. Файл может быть ISO-образом или путём к физическому приводу CD-ROM хоста;

6. `accelerate&nbsp`– включает технологии ускорения на уровне ядра;

7. `network&nbsp`– содержит сведения, относящиеся к виртуальному сетевому интерфейсу. В примере выше используется сеть `default`, и модель интерфейса настроена для `virtio`;

8. `video=vga&nbsp`– осуществление выбора типа эмуляции виртуального адаптера/дисплея подсистемы отображения;

9. `boot&nbsp`;`cdrom,hd,network,menu=on&nbsp`– указание приоритета загрузки (порядка поиска загрузочных носителей);

10. `vnc&nbsp` – осуществление экспорта виртуальной консоли ВМ с использованием протокола VNC;

11. `noautoconsole&nbsp`– указание не подключаться автоматически к консоли созданной виртуальной машины;

12. `v:&nbsp`– создание полностью виртуализированного гостевого аккаунта.
Выполните команду:
```
sudo virt-install --hvm --accelerate --connect=qemu:///system \ 
--network network=default \
--name OS-RT --memory=1024 \
--disk path=/var/lib/libvirt/images/OS-RT.img,size=10,bus=virtio \
--cdrom=/home/OS-RT-2.0-x86_64-2017.03.23-DVD.iso --boot cdrom,hd,menu=on \
--video=vga
```
*Создание клона виртуальной машины*
 
Для создания клона виртуальной машины выполните команду:
```
sudo virt-clone --connect qemu:///system --original OS-RT --name OS-RT-clone --file /var/lib/libvirt/images/OS-RT-clone.img
```
На экране терминала отобразится:
```
Выделение ресурсов «OS-RT-clone.img»...        |  10 GB  00:00:02      ETA 
Клон «OS-RT-clone» успешно создан.
```
!!! См. также
* [[Управление виртуальными машинами с помощью Virt-manager]]
* [[Создание виртуальной машины с помощью Virt-install]]
* [[Использование Virt-manager для управления сервером виртуализации (kvm/libvirt) от имени пользователя]]
* [[Изменение размера образа системы]]

Kernel panic (англ.: тревога, сбой в ядре) - сообщение о критической ошибке ядра операционной системы, после которой операционная система не может продолжать дальнейшую работу. На экран выводится последнее сообщение об ошибке, которое можно записать или сфотографировать, после чего необходимо перезагрузить компьютер.
*SELinux* — это система принудительного контроля доступа, реализованная на уровне ядра. 
Основные термины, использующиеся в `SELinux`:
* *Домен* — список действий, которые может выполнять процесс. Обычно в качестве домена определяется минимально-возможный набор действий, при помощи которых процесс способен функционировать. Таким образом, если процесс дискредитирован, злоумышленнику не удастся нанести большого вреда.
* *Роль* — список доменов, которые могут быть применены. Если какого-то домена нет в списке доменов какой-то роли, то действия из этого домена не могут быть применены.
* *Тип* — набор действий, которые допустимы по отношения к объекту. Тип отличается от домена тем, что он может применяться к пайпам, каталогам и файлам, в то время как домен применяется к процессам.
* *Контекст безопасности* — все атрибуты SELinux — роли, типы и домены.
 
! Режимы SELinux

Существует три режима `SELinux`:

* `Enforcing - Режим по-умолчанию. При выборе этого режима все действия, которые каким-то образом нарушают текущую политику безопасности, будут блокироваться, а попытка нарушения будет зафиксирована в журнале.
* `Disabled - Полное отключение системы принудительного контроля доступа.
* `Permissive - В случае использования этого режима, информация о всех действиях, которые нарушают текущую политику безопасности, будут зафиксированы в журнале, но сами действия не будут заблокированы.

! Просмотр статуса SELinux

Для просмотра статуса `SELinux` используйте команду:
```
sestatus


SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28
```
или команду:
```
getenforce

Enforcing
```
Команда «setenforce» позволяет быстро переключаться между режимами Enforcing и Permissive, изменения вступают в силу без перезагрузки. Но если вы включаете или отключаете SELinux, требуется перезагрузка, ведь нужно заново устанавливать метки безопасности в файловой системе.
Для того, чтобы выбрать режим по-умолчанию, который будет применяться при каждой загрузке системы, задайте значение строки 'SELINUX=' в файле /etc/selinux/config, задав один из режимов — 'enforcing', 'permissive' или 'disabled'. Например: 'SELINUX=permissive'.

! Контроль доступа в SELinux

`SELinux` предоставляет следующие модели управления доступом:
* `Type Enforcement (TE)`: основной механизм контроля доступа, используемый в целевых политиках. Позволяет детально, на самом низком уровне управлять разрешениями.
* `Role-Based Access Control (RBAC)`: в этой модели права доступа реализуются в качестве ролей. Ролью называется разрешения на выполнение определенных действий одним или несколькими элементами системы над другими частями системы. По-сути, `RBAC` является дальнейшим развитием `TE`.
* `Multi-Level Security (MLS)`: многоуровневая модель безопасности, в которой всем объектам системы присваивается определенный уровень доступа. Разрешение или запрет доступа определяется только соотношением этих уровней.
Все процессы и файлы в рамках `SELinux` имеют контекст безопасности. Рассмотрим пример контекста безопасности для файла `etc/passwd`:
```
 ls -Z /etc/passwd
-rw-r--r--. root root system_u:object_r:passwd_file_t:s0 /etc/passwd
```
В дополнение к стандартным правам доступа к файлу, мы можем видеть контекст безопасности `SELinux`:
`system_u:object_r:passwd_file_t:s0`

Контекст базируется на `user:role:type:mls`.
Пример контекста безопасности `SELinux` для процесса `httpd`: 
```
ps axZ | grep httpd
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 2421 pts/0 S+   0:00 grep --color=auto httpd
```
Пример контекста безопасности файла в домашнем каталоге:
```
ls -Z /home/USER1/myfile.txt 
-rw-rw-r--. USER1 USER1 unconfined_u:object_r:user_home_t:s0 /home/USER1/myfile.txt
```
`user_home_t`-тип, этот тип присваивается по умолчанию всем файлам в домашнем каталоге.

! Отключение SELinux.

`SELinux` можно отключить двумя способами:
* на постоянной основе с помощью файла конфигурации;
* временно приостановить использование команды `setenforce`.
Чтобы отключить Selinux на постоянной основе, откройте файл конфигурации `/etc/sysconfig/selinux file` в текстовом редакторе и найдите строку: `SELinux =` и измените значение на отключенное:
```
SELinux=disabled
```
Перезагрузите систему:
```
systemctl reboot
```
Чтобы отключить `SELinux` временно, используйте команду `setenforce`:
```
setenforce 0
```
Это установит режим `SELinux` на `Permissive`
```
setenforce 1
```
Команда setenforce не требует перезагрузки системы.

Когда режим `SELinux` меняется с помощью команды `setenforce`, состояние `SELinux` не будет постоянным, так как при перезагрузке системы он считывает файл `/etc/sysconfig/selinux` и устанавливает режим `SELinux` на значение, определенное в файле.


! Изменение режима SELinux

Самых быстрый способ переключения между режимами принудительного и разрешающего режимов - это команда `setenforce`. Мы можем использовать `setenforce 0` для перехода в разрешающий режим или `setenforce 1` для перехода в режим принудительного исполнения.  Отключить `SELinux` во время выполнения нельзя, поскольку для переключения в режим отключения или из него требуется перезагрузка системы.
Способ изменения режима `SELinux` на постоянный - редактировать текстовый файл `/etc/selinux/config` с помощью постоянной настройки, будь то принудительный, разрешающий или отключенный. По умолчанию этот файл отображается следующим образом:
```
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
```
Отредактируйте переменную `SELINUX` между принудительным, разрешительным или отключенным, как описано в комментариях к файлу. После редактирования файла изменения будут установлены только после перезагрузки системы.

! Устранение проблем SELinux

Основные причины отказа доступа:
* Неправильно маркированный файл;
* Процесс работает в неправильном контексте;
* Ошибка в политике. Процесс требует доступ к файлу, который не был учтен при создании политики;
* Попытка вторжения.
!!! См. также

* [[Установка SysStat]]

Введите команду `sar` с указанием параметров:
 	
|Параметр|Описание|
|-u|Статистика использования CPU|
|-r|Статистика использования памяти|
|-b|Статистика ввода-вывода и скорости передачи|
|-B|Статистика страниц|
|-d|Статистика активности блочных устройств|
|-n [keyword]|Сетевая статистика|
|-q|Средняя длина очереди и средние нагрузки|
|-A|Показать все|
В соответствии с параметром будет отображен соответствующий журнал.

1. Пример отображения отчетов по статике за последние сутки:
```
Центральный процессор
sudo sar -u

01:10:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
10:20:01 AM     all      0.90      0.00      0.23      1.19      0.03     97.65
...
...
01:30:01 PM     all      0.04      0.00      0.06      0.14      0.04     99.72
Average:        all      3.60      0.00      0.05      0.21      0.01     96.13

Память
sudo sar -r

01:10:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
10:20:01 AM   3681144    241544      6.16     10744    138392     83984      1.04
...
...
01:40:01 PM   3663328    259360      6.61     14752    145988     87996      1.09
Average:      3666930    255758      6.52     13204    144710     88273      1.10

Ввод-вывод
sudo sar -b

01:10:01 AM       tps      rtps      wtps   bread/s   bwrtn/s
10:20:01 AM     45.21      9.35     35.87    257.22    409.24
...
...
01:40:01 PM      0.52      0.00      0.52      0.00      5.43
Average:         3.11      0.49      2.62     14.55     29.32

Сеть
sudo sar -n DEV

01:10:01 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
10:20:01 AM        lo      1.04      1.04      0.09      0.09      0.00      0.00      0.00
10:20:01 AM      eth0      7.48      4.48     10.06      0.30      0.00      0.00      0.00
...
...
01:40:01 PM        lo      0.01      0.01      0.00      0.00      0.00      0.00      0.00
01:40:01 PM      eth0      0.05      0.04      0.00      0.00      0.00      0.00      0.00
Average:           lo      0.08      0.08      0.01      0.01      0.00      0.00      0.00
Average:         eth0      0.54      0.38      0.51      0.03      0.00      0.00      0.00

Средняя нагрузка
sudo sar -q

01:10:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
10:20:01 AM         1        99      0.04      0.07      0.04
...
...
01:30:01 PM         1       104      0.00      0.00      0.00
01:40:01 PM         1       101      0.00      0.00      0.00
Average:            1       102      0.11      0.08      0.06
```

2. Пример вывода прошлой статистики с указанием файла журнала.
Файлы журнала хранятся в каталоге `/var/log/sa`. 

```
Отображать все статические данные в файле журнала
sudo sar -A -f /var/log/sa/sa05
01:10:01 AM     CPU      %usr     %nice      %sys   %iowait    %steal      %irq     %soft    %guest     %idle
10:20:01 AM     all      0.90      0.00      0.19      1.19      0.03      0.04      0.00      0.00     97.65
10:20:01 AM       0      0.96      0.00      0.19      1.27      0.03      0.04      0.00      0.00     97.51
...
...
01:50:01 PM       125         3         4         0         0         0
02:00:01 PM       125         3         4         0         0         0
Average:          122         3         4         0         0         0

Отображать среднее значение нагрузки с указанием времени в файле журнала
sudo sar -q -s 11:00:00 -e 12:00:00 -f /var/log/sa/sa05
11:00:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
11:10:01 AM         1       103      0.01      0.03      0.14
11:20:01 AM         1       102      0.01      0.01      0.06
11:30:01 AM         1       102      0.00      0.00      0.01
11:40:01 AM         1       101      0.00      0.00      0.00
11:50:01 AM         1       101      0.01      0.01      0.00
Average:            1       102      0.01      0.01      0.04

```
3. Пример вывода текущей статистики.
```
Отображать загрузки процессора 3 раза в секунду
sudo sar -u 1 3
01:51:34 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
01:51:35 AM     all      0.00      0.00      0.50      0.00      0.00     99.50
01:51:36 AM     all      0.00      0.00      0.00      0.00      0.50     99.50
01:51:37 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
Average:        all      0.00      0.00      0.17      0.00      0.17     99.67

Отображать состояние ввода/вывода и сети 5 раз в 2 секунды
sudo sar -b -n DEV 2 5
01:54:11 AM       tps      rtps      wtps   bread/s   bwrtn/s
01:54:13 AM      0.00      0.00      0.00      0.00      0.00

01:54:11 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
01:54:13 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:54:13 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
...
...
01:54:19 AM       tps      rtps      wtps   bread/s   bwrtn/s
01:54:21 AM      0.00      0.00      0.00      0.00      0.00

01:54:19 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
01:54:21 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:54:21 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:          tps      rtps      wtps   bread/s   bwrtn/s
Average:         0.70      0.00      0.70      0.00      4.80

Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth0      0.20      0.00      0.01      0.00      0.00      0.00      0.00

```

4. Пакеты SysStat включают в себя другие команды не только команды Sar, используя эти команды можно также отображать текущую статистику.
```

Отображать ввод / вывод в мегабайтах в секунду
sudo iostat -mx -d 2
...
...
Отображать загрузку ЦП  3 раза в 2 секунды
sudo mpstat -P ALL 2 3

02:28:57 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
02:28:59 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:28:59 PM    0    0.00    0.00    0.00    0.00    0.50    0.00    0.00    0.00   99.50
02:28:59 PM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
...
...

Отображать использование памяти 3 раза в секунду
sudo pidstat -r -p 1202 1 3

02:34:07 PM       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
02:34:08 PM      1202      0.00      0.00  175360   2456   0.06  httpd
02:34:09 PM      1202      0.00      0.00  175360   2456   0.06  httpd
02:34:10 PM      1202      0.00      0.00  175360   2456   0.06  httpd
Average:         1202      0.00      0.00  175360   2456   0.06  httpd
...
...

Отображать статистику CIFS в мегабайтах 3 раза в секунду
sudo cifsiostat -m 1 3
Filesystem:                    rB/s         wB/s    rops/s    wops/s         fo/s         fc/s         fd/s
\\10.0.0.100\tmp               0.00        20.93      0.00      0.00         0.00         0.00         0.00
...
...

```
!!! См. также
* [[Управление службами с помощью Systemd]]
!!! См. также
* [[Основные функции Systemd. Модули.]]
!!! См. также
* [[Журналирование с помощью Systemd]]
<<view title link "Справочник команд - |">>
Средство командной строки `nmcli` может использоваться как пользователями, так и скриптами для управления `NetworkManager`. Основной формат команды выглядит следующим образом:
```
nmcli OPTIONS OBJECT { COMMAND | help }
```
Где OBJECT:

* device - управление сетевыми интерфейсами;
* connection - управление соединениями;
* networking - управление сетью в целом;
* general - показывает состояние всех сетевых протоколов и NetworkManager в целом;
* radio - управление сетевыми протоколами, wifi, ethernent и т д.

Опции:
*  `-t, --terse` предназначены для использования в скриптах (краткий вывод);
*  `-p, --pretty` предназначены для пользователей (легко читаемый вывод);
* `-m, --mode tabular | multiline ` отвечает за переключение между табличным и многострочным выходом. Если опущен, по умолчанию для большинства команд используется табличное значение. Для команд, создающих более структурированную информацию, которая не может отображаться в одной строке, значение по умолчанию является многострочным.
`tabular` - вывод в форме таблицы, в которой каждая строка описывает одну запись. Столбцы определяют конкретные свойства записи.
`multiline` - каждая запись содержит больше строк, каждое свойство на своей собственной линии. Значения имеют префикс имени свойства;
* `-f, --fields <field1,field2,...> | all | common` Этот параметр используется для указания того, какие поля (имена столбцов) должны быть напечатаны. Действительные имена полей различаются для определенных команд. Перечислите доступные поля, указав недопустимое значение для `--fields option`.
`all` - используется для печати всех допустимых значений поля команды. `сommon` -  используется для печати общих значений поля команды. Если этот параметр опущен, значение по умолчанию является общим. Опция обязательна, если используется `-terse`;
* `-e, --escape yes | no ` Опция определяет можно ли использовать символы: «:» и «\» в текстовом режиме. Эквивалентным символом является «\». Если опустить, значение по умолчанию - да;
* `-v, --version` Выводится версия `nmcli`;
* `-h, --help` Вывод справочной информации
Выполнение команды было выполнено для `nmcli`, и если доступные параметры команды неизвестны, необходимо нажать `Tab`. Чтобы просмотреть краткий обзор конфигурации на известных сетевых устройствах, используйте команду устройства `nmcli` без аргументов.
Средство `nmcli `имеет встроенную контекстно-зависимую справку.
Например:
```
nmcli help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }

OPTIONS
  -t[erse]                                   terse output
  -p[retty]                                  pretty output
  -m[ode] tabular|multiline                  output mode
  -f[ields] <field1,field2,...>|all|common   specify fields to output
  -e[scape] yes|no                           escape columns separators in values
  -n[ocheck]                                 don't check nmcli and NetworkManager versions
  -a[sk]                                     ask for missing parameters
  -w[ait] <seconds>                          set timeout waiting for finishing operations
  -v[ersion]                                 show program version
  -h[elp]                                    print this help

OBJECT
  g[eneral]       NetworkManager's general status and operations
  n[etworking]    overall networking control
  r[adio]         NetworkManager radio switches
  c[onnection]    NetworkManager's connections
  d[evice]        devices managed by NetworkManager
  a[gent]         NetworkManager secret agent or polkit agent
  m[onitor]       monitor NetworkManager changes
```
Выберите опцию `general`, на экране терминала отобразится следующий листинг:

```
nmcli general help
Usage: nmcli general { COMMAND | help }

  COMMAND := { status | hostname | permissions | logging }

  status

  hostname [<hostname>]

  permissions

  logging [level <log level>] [domains <log domains>]
```
*Настройка сети с использованием средства командной строки `nmlci`*

Установите статический IP-адрес на сервер.
Замените имя интерфейса «eth0» имя интерфейса в вашей системе.
```
# set hostname
sudo hostnamectl set-hostname dlp.srv.world

# display devices
sudo nmcli d
DEVICE       TYPE      STATE      CONNECTION
eth0         ethernet  connected  eth0
lo           loopback  unmanaged  --

# set IPv4 address ⇒ nmcli *** [IP address]
sudo nmcli c modify eth0 ipv4.addresses 10.0.0.30/24

# set default gateway
sudo nmcli c modify eth0 ipv4.gateway 10.0.0.1

# set DNS
sudo nmcli c modify eth0 ipv4.dns 10.0.0.1

# set manual for static setting (it's "auto" for DHCP)
sudo nmcli c modify eth0 ipv4.method manual

# restart the interface and reload the settings
sudo nmcli c down eth0; nmcli c up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)

# show settings
sudo nmcli d show eth0
GENERAL.DEVICE:                 eth0
GENERAL.TYPE:                   ethernet
GENERAL.HWADDR:                 00:0C:29:CD:9C:2D
GENERAL.MTU:                    1500
GENERAL.STATE:                  100 (connected)
GENERAL.CONNECTION:             eth0
GENERAL.CON-PATH:               /org/freedesktop/NetworkManager/ActiveConnection/0
WIRED-PROPERTIES.CARRIER:       on
IP4.ADDRESS[1]:                 ip = 10.0.0.30/24, gw = 10.0.0.1
IP4.DNS[1]:                     10.0.0.1
IP6.ADDRESS[1]:                 ip = fe80::20c:29ff:fecd:9c2d/64, gw = ::

# show status

sudo ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:cd:9c:2d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.30/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fecd:9c2d/64 scope link
       valid_lft forever preferred_lft forever

```
*Запуск и остановка интерфейса c использованием `nmcli`*

Чтобы просмотреть доступные сетевые подключения, выполните команду:
```
nmcli con show
NAME              UUID                                  TYPE            DEVICE
Auto Ethernet     9b7f2511-5432-40ae-b091-af2457dfd988  802-3-ethernet  --
ens3              fb157a65-ad32-47ed-858c-102a48e064a2  802-3-ethernet  ens3
MyWiFi            91451385-4eb8-4080-8b82-720aab8328dd  802-11-wireless wlan0
```
Поле `NAME` на выходе всегда обозначает идентификатор соединения (имя). Это не имя интерфейса, хотя оно может выглядеть одинаково. Во втором соединении, показанном выше, `ens3` в поле `NAME` является идентификатором соединения, заданным пользователем для профиля, применяемого к интерфейсу `ens3`. В последнем показанном соединении пользователь назначил идентификатор соединения MyWiFi на интерфейс `wlan0`.
Добавление Ethernet-соединения означает создание профиля конфигурации, который затем назначается устройству. Перед созданием нового профиля просмотрите доступные устройства следующим образом:
```
nmcli dev status
DEVICE  TYPE      STATE         CONNECTION
ens3    ethernet  disconnected  --
ens9    ethernet  disconnected  --
lo      loopback  unmanaged     --
```
Инструмент текстового пользовательского интерфейса `NetworkManager (TUI), nmtui`, предоставляет текстовый интерфейс для настройки сети путем управления NetworkManager.
Для запуска `nmtui` введите команду:
```
nmtui
```
Появится текстовый пользовательский интерфейс. Любая недопустимая команда печатает сообщение об использовании.

На рисунке изображено начальное меню текстового интерфейса `NetworkManager`.

!img/nmtui.png!

Для навигации используйте клавиши со стрелками или нажмите `Tab` для перехода вперед и нажмите `Shift + Tab`, чтобы вернуться к настройкам. Нажмите `OK`, чтобы выбрать параметр. Полоса пробела переключает статус флажка.
Введите следующую команду:
```
nmtui edit connection-name
```
Если имя соединения не указано, появится меню выбора. Если имя соединения указано и правильно определено, появится соответствующее окно «Изменить соединение».

!img/nmtui2.png!

Введите команду:
```
nmtui connect connection-name
```
Если имя соединения не указано, появится меню выбора. Если имя соединения указано и правильно определено, соответствующее соединение активируется. Любая недопустимая команда печатает сообщение об использовании.

В данный момент nmtui не поддерживает все типы соединений. В частности, вы не можете редактировать VPN-соединения, соединения Wi-Fi с использованием WPA Enterprise или Ethernet-соединения с использованием 802.1X.
Примечание. Некоторые BIOS позволяют указывать источник загрузки вручную, в таком случае нужно при перезагрузке компьютера нажать соответствующую клавишу (как правило, `F10-F12`). Описание назначения клавиш выбора вариантов загрузки и входа в BIOS см. в документации на аппаратное обеспечение.
[[Откройте порт|Создание правил межсетевого экрана]] `$1` для службы `$2`.

@@@
sudo firewall-cmd --add-port=*$1*
sudo firewall-cmd --runtime-to-permanent
@@@
[[Откройте стандартный порт для службы|Создание правил межсетевого экрана]] `$1`.

@@@
sudo firewall-cmd --add-service=*$1*
sudo firewall-cmd --runtime-to-permanent
@@@
[[iso-образ установочного диска с ОС|http://downloads.os-rt.ru]]
[[Установите пакет|Установка и удаление пакетов]] `$1`.

```
sudo yum install -y $1
```
[[Установите необходимые пакеты|Установка и удаление пакетов]].

```
sudo yum install -y $1
```
[[Установите службу|Установка и удаление пакетов]] `$1`.

@@@
sudo yum install -y *$1*
@@@

<<tiddler tmpl-service-enable with:"$1">>
Перезапустите службу `$1`.

@@@
sudo systemctl restart *$1*.service
@@@
[[Включите службу|Управление службами]] `$1` и её автоматическую загрузку.

@@@
sudo systemctl enable *$1*.service
sudo systemctl start *$1*.service
@@@

После проверки всех настроек межсетевого экрана включите режим автозапуска межсетевого экрана.

Для этого введите:

```
sudo systemctl enable firewalld
```

Теперь межсетевой экран будет запускаться вместе с сервером.
@attr order=f
Администратор может настроить автоматическое монтирование сетевых файловых систем.

<<tiddler tmpl-install-service with:autofs>>

Более никаких дополнительных настроек производить не требуется.

Убедитесь, что NFS-сервер доступен через DNS, в противном случае его нужно добавить в `/etc/hosts`. Для того чтобы автоматически смонтировать экспортированные каталоги сервера, выполните команду @ls /net/*<hostname>*/@, где @*<hostname>*@ - сетевое имя NFS-сервера.

Для удобства можно создать символьную ссылку на этот сервер: @ln -s /net/*<hostname>*/ /*<hostname>*@.
[[Общее описание установки ОС в графическом режиме|Установка ОС в графическом режиме]]

Для автоматического создания разделов выберите "Система", "Место установки", в появившемся окне убедитесь что установлен параметр "Создать разделы автоматически". После завершения изменений нажимаем на кнопку "Готово", система готова к установке.

Внимание! *Все* данные и файловые системы с жёсткого диска будут безвозвратно удалены! Заблаговременно сделайте резервную копию важных данных! 

Нажмите "Начать установку". Установите пароль для root и создайте пользователей (пользователей можно создать после установки системы).
После завершения установки нажать на кнопку "Перезагрузка", компьютер перезагрузится.

После установки необходимо произвести первичную [[настройку системы|Настройка системы]].
При [[установке системы|install-os]] необходимо придумать пароль пользователя root. С помощью данного пользователя можно осуществлять задачи администирования:

# Войти пользователем root в графический интерфейс. При входе в систему выберите из выпадающего списка пользователей "Другие...", введите имя пользователя root и пароль, нажмите "Вход".
# Войти пользователем root в режиме командной строки. В на запрос системы `login:` напишите `root`, нажмите Enter и введите пароль на запрос `Password:`, снова нажмите Enter.
# Войти пользователем root удалённо по ssh командой `ssh root@server.example.ru`, на запрос `Password:` введите пароль root на компьютере `server.example.ru`.
# Войти в систему обычным пользователем любым способом. Ввести команду `su`, после чего ввести пароль root.

Внимание! Не рекомендуется выполнять администрирование система от имени root. Вместо этого [[создайте пользователя-администратора|Создание пользователя-администратора]] и используйте команду `sudo`.
!!! См. также

* [[Диагностика сети]]

* [[Проверка доступности сети]]

* [[Настройка имени хоста]]

* [[Базовые параметры сети]]

* [[Настройка IP-адресов]]

* [[Настройка сетевых интерфейсов]]

* [[Псевдонимы сетевых интерфейсов]]

* [[Управление сетевыми интерфейсами]]

* [[Изменение сетевых настроек]]

* [[Изменение DNS и создание доменных имен]]

* [[Маршрутизация]]

* [[Настройка даты и времени]]

* [[Межсетевой экран]]

@attr order=a
В данном руководстве описывается администрирование операционной системы «ОСь».

В операционной системе «ОСь» вы можете [[выполнять задачи администрирования от пользователя root|Администрирование пользователем root]] или [[сделать своего пользователя администратором|Создание пользователя-администратора]]. Наибольшие возможности по настройке системы администратор получает при [[использовании командной строки|Использование командной строки]].

Для продолжения работы выберите один из разделов в меню "Содержание" или воспользуйтесь [[поиском|Поиск]].
@attr order=0
При настройке TCP/IP сети используются следующие основные параметры.

# IP-адрес - уникальный адрес машины, записываемый в формате `[0-255].[0-255].[0-255].[0-255]`. Для локальной сети часто используются адреса вида 192.168.1.35.
# Маска подсети - записывается аналогично IP-адресу и разделяет IP-адрес на две части, первая относится к адресу подсети, вторая - к адресу узла. Например адрес 192.168.1.2 с маской 255.255.255.0 принадлежит подсети 192.168.1, а часть адреса узла - 2.
# IP адрес шлюза - это адрес машины, являющейся шлюзом для связи с более крупной подсетью. Шлюзов может быть несколько, если компьютер подключен к нескольким сетям одновременно. Адрес шлюза не используется в изолированных сетях (не подключенных к глобальной сети).
# IP-адрес сервера имен (DNS - сервера) - адрес сервера преобразующего имена хостов в IP адреса. Как правило, это адрес кэширующего DNS-сервера, обменивающимся информацией с другим DNS-сервером более высокого уровня.
Файлы блочных устройств - файлы, которые служат интерфейсом к устройствам, обмен данными с которыми происходит большими фрагментами данных - блоками.

Ядро операционной системы обеспечивает всё взаимодействие с таким типом устройств, выбирая драйвер, подходящий для текущего оборудования. 

Примером блочного устройства служит жёсткий диск.
@attr order=9
Бондинг - объединение двух и более физических сетевых интерфейсов в один логический для увеличения надёжности. В случае отказа одной из сетей, второй интерфейс будет задействован автоматически. Совместно два сетевых интерфейса могут использоваться для увеличения пропускной способности сети.

Для использования возможности бондинга, нужно создать логический бондинг-интерфейс. Создайте в каталоге `/etc/sysconfig/network-scripts/` файл с именем `ifcfg-bond<N>`, заменив `<N>` на номер интерфейса (например, 0) и настройте интерфейс как обычный Ethernet.

Пример настройки бондинг-интерфейса:

```
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=10.0.1.27
USERCTL=no
```

Физические интерфейсы настраиваются путём добавления директив MASTER и SLAVE к параметрам каждого из них (<N> - номер интерфейса):

```
DEVICE=eth<N>
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
```

Бондинг работает через модуль ядра, поэтому в файл `/etc/modprobe.conf` нужно добавить строчку `alias bond0 bonding`. 

После настройки интерфейс можно поднять командой `ifup`.
Проблема связана с графическим драйвером Intel. В главном меню выберите "Настройки -> Диспетчер окон (дополнительно)", на вкладке "Эффекты" выберите "Включить эффекты".

!img/xfce/WindowManagerEffects.png!
Физический терминал компьютера (клавиатура и&nbsp;дисплей)&nbsp;— поддерживают несколько виртуальных терминалов, которые могут работать как отдельные физические терминалы. В&nbsp;каждом виртуальном терминале выполняется отдельная сессия пользователя.

После загрузки операционной системы пользователь автоматически попадает в&nbsp;первый виртуальный терминал, в&nbsp;котором появляется приглашение ввода имени пользователя и&nbsp;пароля операционной системы. Если доступна графическая оболочка, на первом виртуальном терминале будет работать графическая сессия.

Для переключения между виртуальными терминалами используются сочетания клавиш от `Ctrl+Alt+F1` до `Ctrl+Alt+F7`. Переключение между виртуальными терминалами возможно в&nbsp;любой момент в&nbsp;процессе работы.
При работе с современным оборудованием ACPI может стать источником проблем поддержки такого оборудования как видеокарты или мешать нормальной загрузке системы. Нередко включение или отключение ACPI может решить проблемы, возникающие с оборудованием, в том числе неисправным. Управление поддержкой ACPI осуществляется через [[параметры ядра|Параметры ядра]]. Следующие параметры можно добавлять к параметрам ядра:

* `pci=noacpi` - не использовать ACPI для устройств PCI.
* `acpi=ht` - использовать ACPI только для включения HyperThreading.
* `acpi=off` - выключить ACPI.
* `acpi=on` - включить ACPI.
* `acpi=strict` - "строгий режим" ACPI.
* `acpi=noirq` - не использовать ACPI для управленя IRQ.
* `acpi=oldboot` - функции ACPI будут использоваться только в процессе загрузки. После загрузки функции ACPI отключатся.

С использованием утилиты z-adm:

`z-adm acpi on|off`

!!!См. также

* [[Настройка контроля за температурой ACPI]]
* [[Передача параметров ядру]]
Включение межсетевого экрана.

Для начала нужно включить демон. `Unit-файл systemd` называется `firewalld.service`. Чтобы запустить демон, введите.

```
sudo systemctl start firewalld.service
```

Убедитесь, что сервис запущен:
```

firewall-cmd --state
running
```

Теперь сетевой экран запущен и работает согласно конфигурации по умолчанию.

На данный момент сервис включен, но не будет запускаться автоматически вместе с сервером. Чтобы случайно не заблокировать себя на собственном сервере, сначала создайте набор правил, а затем настройте автозапуск.

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

Большинство команд `firewall-cmd ` может использовать флаг `-permanent`, который сохранит правило, после чего оно будет использоваться на постоянной основе.
Находится в [[Программе установки|Программа установки]]. Используется для доступа к важным данным, конфигурационным и иным файлам, записанным на жёсткий диск. Если система перестала загружаться выполните восстановление ОС вручную, используя данный режим.
@attr order=z
<<list>>
Если сеть не настроена при установке операционной системы или установлен `DHCP`, выполнить настройки сети можно с помощью службы `NetworkManager`. Служба `NetworkManager` контролирует сетевые настройки и с помощью службы по управлению конфигурациями вносит соответствующие изменения в активные сетевые устройства. Она поддерживает стандартные файлы конфигураций `ifcfg`.
Для изменения настроек уже существующего проводного соединения сети с помощью службы `NetworkManager` выполните следующие шаги:
1. Определите список доступных интерфейсов для этого введите команду:

```
sudo ip link list
```
В терминале появится подобный вывод:
```
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 54:ab:3a:85:27:90 brd ff:ff:ff:ff:ff:ff
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DORMANT qlen 1000
    link/ether 0a:da:ce:e8:95:eb brd ff:ff:ff:ff:ff:ff
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 100
    link/none 

```
В данном случае доступный интерфейс - `eth0`.
2. Откройте `Главное меню`, выберите команду  `Администрирование` и опцию `Сеть`. Система запросит пароль администратора. Введите пароль. Появится окно "Сетевые соединения"

!img/NetworkManager/NM-1.png!

В шаге 1. был определен доступный интерфейс `eth0`. Параметры интерфейса `eth0` можно изменить, нажав, соответствующую кнопку. Откроется окно с вкладками параметров интерфейса.

!img/NetworkManager/NM2.png!

3. Выберите закладку `IPv4`. В зависимости от наличия протокола `DHCP`, выберите режим настройки:
* Автоматически (DHCP);
* Вручную.

!img/NetworkManager/IPV4 DHCP.png! 

В режиме "Вручную" нажмите кнопку `ADD` и в открывшихся окнах, пропишите три параметра:
* IP- адрес;
* значение маски;
* номер шлюза.
В процессе заполнения, фон окон подсвечивается красным цветом. При правильно заполненном формате значений параметров цвет подсветки меняется на зеленый или желтый.

!img/NetworkManager/IPV4 manual1.png!

Сохраните настройки.

! Wi-Fi

Убедитесь в том, что адаптер Wi-Fi, подключен, опознан системой и вообще все, что относится к `Wi-Fi` работает, это можно сделать двумя способами:
* Откройте `Главное меню`, выберите команду  `Администрирование` и опцию `Сеть`. Система запросит пароль администратора. Введите пароль. Появится окно `Сетевые соединения`. В выпадающем меню должны быть строки с перечислением точек доступа. 
* Выполните команду:
```
sudo ifconfig -a
```
В выводе команды появится подобный фрагмент:

```
wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether ee:e4:59:bb:85:ce  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

```
В окне "Сетевые соединения" кликнуть по кнопке `Добавить (Add)` и в списке выбрать пункт `Wi-Fi`. После этого откроется следующее окно, редактор соединения. В нем нужно заполнить несколько полей на разных вкладках. 
1. На вкладке `Wi-Fi` заполните четыре поля:

!img/NetworkManager/WiFi.png!

* Название соединения;
* SSID (уникальное название) - делает уникальной сеть `Wi-Fi` среди других, что облегчает поиск и подключение;
* Режим (режим точки доступа);
* Устройство.
2. На вкладке `Защита Wi-Fi` в выпадающем меню выберите `WPA/WPA2 Personal` и введите пароль ( не менее 8 знаков). 

!img/NetworkManager/WiFi1.png!

3. На вкладке `IPv4` в окне `Способ настройки` в выпадающем меню выберите: `Общее с другими компьютерами`:

!img/NetworkManager/WiFi2.png!

4. На вкладке `Общее` уберите или оставьте переключатель автовключения. Этот переключатель определяет как будет включаться точка доступа - вручную или автоматически.

!img/NetworkManager/WiFi3.png!

Сохраните настройки и закройте окно `Сетевые соединения`.






 
@attr order=0
Редактор сетевых интерфейсов позволяет настроить основные параметры сети. Для запуска приложения выберите в главном меню "Администрирование - Сеть". Если вход был выполнен от имени обычного пользователя, программа запросит пароль системного администратора.

В появившемся окне нажмите одну из кнопок напротив имени интерфейса для выполнения одного из следующих действий:

* просмотр информации о сетевом интерфейсе (IP адрес и т.п.);
* изменить параметры сетевого интерфейса;
* удалить сетевой интерфейс.

Примечание. Все кнопки снабжены всплывающими подсказками.

Внимание! Ошибки, допущенные в процессе настройки сети, могут нарушить нормальную работу системы. Особенно внимательно следует настраивать сеть при удалённом подключении к машине, например, по ssh.

!!!Настройка сетевого интерфейса

При настройке сетевого интерфейса откроется форма для заполнения параметров данного интерфейса. Вы можете нажать на кнопку "Информация", чтобы получить сведения о текущих параметрах интерфейса.

* "Имя интерфейса" - при создании нового интерфейса нужно указать в этом поле имя нового интерфейса. Вы можете создавать интерфейсы вида `eth0:0`, которые будут являться псевдонимами основного физического интерфейса.
* "Получать IP-адрес автоматически" - система использовать имеющийся в сети DHCP-сервер, чтобы автоматически настроить параметры сети.
* "IP-адрес" - обязательный параметр, если вы не используете DHCP.
* "Маска подсети" - данный параметр можно не указывать, в таком случае маска будет вычислена автоматически.
* "Шлюз" - укажите шлюз, используемый для выхода в Интернет, если имеется.
* "Первичный сервер имён", "Вторичный сервер имён" - укажите адреса DNS-серверов, если имеются. Они также могут быть получены по DHCP.
* "Домен поиска" - домен, на основе которого будет действовать разрешение имён. Нужно указывать для разрешения имён в локальной сети, например, домен `example.ru`, в котором компьютеры будут иметь адреса вида `server.example.ru`.
* "Разрешить пользователям управлять подключением" - непривилегированный пользователь сможет включать (ifup) и отключать (ifdown) данный интерфейс.
* "Подключать при загрузке" - поднимать данный интерфейс автоматически при старте системы.
* "Сетевой мост" - данный интерфейс должен функционировать как сетевой мост.

!!!Удаление сетевого интерфейса

Вы можете удалить созданный ранее сетевой интерфейс, что полезно при создании/удалении псевдонимов. Если вы удалите сетевой интерфейс случайно, вы можете найти его резервную копию в каталоге `/etc/sysconfig/network-scripts`.

!!!Дополнительные возможности

Чтобы открыть окно дополнительных возможностей, нажмите на кнопку "Параметры" в редакторе сетевых интерфейсов.

!!!!Создать новый интерфейс

В данном режиме нужно заполнить те же параметры, что и при настройке существующего интерфейса, указав имя нового интерфейса латинскими буквами. Для того чтобы создать псевдоним, введите в качестве имени интерфейса имя вида `eth0:0`.

!!!!Изменить сетевое имя узла

Позволяет изменить текущее сетевое имя узла (hostname).

!!!!Включить/отключить IPv6

Управляет наличием поддержки нового протокола IPv6 в системе. Если машина используется только в локальной сети и не имеет прямого доступа в Интернет, отключите поддержку IPv6.
Команда `ifconfig` выводит информацию об имеющихся в системе сетевых интерфейсах, их состоянии и адресах.

Примеры:

```
# ifconfig
(...)
eth0      Link encap:Ethernet  HWaddr 00:50:BA:8F:61:7A
          inet addr:192.168.0.2  Bcast:192.168.0.255
Mask:255.255.255.0
          inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1498792 errors:0 dropped:0
overruns:0 frame:0
          TX packets:1284980 errors:0 dropped:0
overruns:0 carrier:0
          collisions:1984 txqueuelen:100
          RX bytes:485691215 (463.1 Mb)  TX
 bytes:123951388 (118.2 Mb)
          Interrupt:11 Base address:0xe800
```
Просмотр только сведений о конкретном интерфейсе:
```
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:50:BA:8F:61:7A
          inet addr:192.168.0.2  Bcast:192.168.0.255
Mask:255.255.255.0
          inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1498792 errors:0 dropped:0
overruns:0 frame:0
          TX packets:1284980 errors:0 dropped:0
overruns:0 carrier:0
          collisions:1984 txqueuelen:100
          RX bytes:485691215 (463.1 Mb)  TX
bytes:123951388 (118.2 Mb)
          Interrupt:11 Base address:0xe800
```
Если перед входом по SSH терминал "замирает" на несколько секунд, вероятная причина - плохая работа DNS. ssh по умолчанию использует DNS, за что отвечает параметр `UseDNS` в `/etc/ssh/sshd_config`.

Чтобы отключить DNS на сервере SSH, добавьте строку `UseDNS no` в `/etc/ssh/sshd_config`. Эту процедуру нужно будет проделать на каждом сервере, но лучшее решение - диагностировать проблемы с [[DNS-сервером|Настройка сервера имён DNS]] и устранить их. Данный способ подходит, если Вы не можете управлять DNS-сервером и при этом требуется быстрая работа ssh.
Межсетевой экран `firewalld` по умолчанию включает в себя многие наиболее распространённые сервисы. Однако некоторым приложениям необходимы сервисы, поддержка которых отсутствует в `firewalld`. 

Добавить новые сервисы можно двумя способами.

!!! Настройка порта

Проще всего в такой ситуации открыть порт приложения в необходимой зоне межсетевого экрана. Нужно просто указать порт или диапазон портов и протокол.

Например, приложение, которое использует порт 5000 и протокол `TCP`, нужно добавить в зону `public`. Чтобы включить поддержку приложения на дну сессию, используйте параметр `-add-port=` и укажите протокол `tcp` или `udp`.

```
sudo firewall-cmd --zone=public --add-port=5000/tcp
```

Убедитесь, что операция прошла успешно:

```
sudo firewall-cmd --list-ports
5000/tcp
```

Также можно указать последовательный диапазон портов, отделив первый и последний порт диапазона с помощью тире. Например, если приложение использует `UDP-порты 4990-4999`, чтобы добавить их в зону `public`, нужно ввести:

```
sudo firewall-cmd --zone=public --add-port=4990-4999/udp
```

После тестирования можно добавить эти правила в постоянные настройки межсетевого экрана.

```
sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
sudo firewall-cmd --zone=public --permanent --list-ports
success
success
4990-4999/udp 5000/tcp
```

!!! Определение сервиса

При добавлении большого количества приложений, могут возникнуть сложности при отслеживании, для чего предназначен тот или иной порт. Чтобы избежать такой ситуации, можно вместо портов определить 
сервисы.

Сервисы – это просто наборы портов с определенным именем и описанием. С помощью сервисов проще управлять настройками, но сами по себе они сложнее, чем порты.

Для начала нужно скопировать существующий сценарий из каталога `/usr/lib/firewalld/services ` в каталог `/etc/firewalld/services` (здесь межсетевой экран ищет нестандартные настройки).

Например, можно скопировать определение сервиса `SSH` и использовать его для определения условного сервиса `example`. Имя сценария должно совпадать с именем сервиса и иметь расширение `.xml`.

```
sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml
```

Откорректируйте скопированный файл.

```
sudo vi /etc/firewalld/services/example.xml
```

В файле находится определение `SSH`. Большую часть определения сервиса составляют метаданные. Изменить краткое имя сервиса можно в `тегах <short>`. Также нужно добавить описание сервиса. Единственное изменение, которое повлияет на работу сервиса – это изменение номера порта и протокола.

Допустим новый сервис (example) требует открыть `TCP- порт 7777` и `UDP- порт 8888`. Определение будет выглядеть так:

```
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Example Service</short>
<description>This is just an example service.  It probably shouldn`t be used on a real system.</description>
<port protocol="tcp" port="7777"/>
<port protocol="udp" port="8888"/>
</service>
```
Сохраните и закройте файл.

Перезапустите межсетевой экран.

Теперь сервис появится в списке доступных сервисов.
[[Миграция локальных пользователей в LDAP]] является наиболее простым способом добавления пользователей в базу LDAP. Если вы хотите добавить пользователя вручную, используйте инструкцию ниже.

Создайте пароль для нового пользователя.

@@@
slappasswd
  New password: 
  Re-enter new password: 
  *{SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*
@@@

Создайте файл с описанием пользователя `newuser`, с группой `newuser`.

@@@sh
vi ldapuser.ldif
  # создайте нового пользователя
  # замените ваше имя домена "dc=example,dc=ru"
dn: uid=*newuser*,ou=People,dc=*example*,dc=*ru*
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: *newuser*
: *Иван* # имя
sn: *Иванов* # фамилия
userPassword: *{SSHA}xxxxxxxxxxxxxxxxx* # замените на ранее сгенерированный
loginShell: /bin/bash
uidNumber: *1000* # придумайте новый уникальный
gidNumber: *1000* # выберите из существующих идентификаторов групп или используйте группу ниже
homeDirectory: /home/*newuser*

  # группа пользователя
dn: cn=*newuser*,ou=Group,dc=*example*,dc=*ru*
objectClass: posixGroup
cn: *newuser*
gidNumber: *1000* # придумайте новый уникальный
memberUid: *newuser* # пользователь, входящий в группу
@@@

Загрузите пользователя на сервер LDAP, заменив `ldapadmin`, `example`, `ru` в соответствии с собственными настройками домена.

@@@sh
ldapadd -x -D cn=*ldapadmin*,dc=*example*,dc=*ru* -W -f ldapuser.ldif
Enter LDAP Password: # введите пароль администратора LDAP
@@@

<<seeAlso ldap>>
Безопасный интерфейс командной строки - один из способов использования `SSH`. При высокой пропускной способности, сеансы `X11` могут быть направлены по каналу `SSH`. Или, используя пересылку `TCP / IP`, ранее незащищенные соединения портов между системами могут быть сопоставлены определенным каналам `SSH`.

!!! Перенаправление X11 (X11 Forwarding)

Чтобы открыть сеанс `X11` через соединение `SSH`, выполните команду:
```
ssh -Y username@hostname
```
Например, для входа на удаленный компьютер с именем `penguin.example.com` с именем `USER` в качестве имени пользователя введите:
```
ssh -Y USER@penguin.example.com
USER@penguin.example.com's password:
```
При запуске программы `X`, клиент `SSH` и сервер создают новый безопасный канал, и данные программы `X` передаются по этому каналу на клиентский компьютер.
Обратите внимание, что система X Window должна быть установлена на удаленной системе до того, как произойдет перенаправление X11. Для установки группы пакетов X11 ведите команду:
```
sudo yum group install "X Window System"
```
При использовании перенаправления `X11` для для создания безопасного интерактивного сеанса утилиты `Параметры печати` подключитесь к серверу с помощью `ssh` и введите:
```
system-config-printer &
```
Появится инструмент `Параметры печати`, позволяющий удаленному пользователю безопасно настраивать печать на удаленной системе.

!!! Перенаправление порта (Port Forwarding)
SSH может защищать небезопасные протоколы `TCP / IP` через переадресацию портов. При использовании этой технологии SSH-сервер становится зашифрованным каналом для SSH-клиента.
Переадресация портов выполняется путем сопоставления локального порта на клиенте с удаленным портом на сервере. SSH может отображать любой порт с сервера на любой порт клиента. Условие для работоспособности этого механизма - несовпадение номеров портов.
Настройка перенаправления портов для прослушивания на портах с номером ниже 1024 требует прав администратора.
Для создания канала пересылки портов `TCP / IP`, который прослушивает подключения на локальном хосте, введите команду:
```
ssh -L local-port:remote-hostname:remote-port username@hostname
```
Например, чтобы проверить электронную почту на сервере с именем `mail.example.com`, используя POP3 через зашифрованное соединение, используйте следующую команду:
```
ssh -L 1100:mail.example.com:110 mail.example.com
```
В момент установки канала переадресации портов между клиентским компьютером и почтовым сервером, направьте почтовый клиент POP3 на использование порта 1100 на локальном хосте для проверки нового сообщения электронной почты. Любые запросы, отправленные на порт 1100 в клиентской системе, будут надежно направлены на сервер `mail.example.com`.
Если `mail.example.com` не запускает SSH-сервер, но компьютер в той же сети, `SSH` используется для защиты части соединения. Для этого выполните команду:
```
ssh -L 1100:mail.example.com:110 other.example.com
```
В этом примере запросы POP3 с порта 1100 на клиентской машине пересылаются через соединение `SSH` на порте 22 на сервер `SSH`, `other.example.com`. Затем `other.example.com` подключается к порту 110 на `mail.example.com`, чтобы проверить наличие нового сообщения электронной почты. Обратите внимание, что при использовании этого метода безопасно только соединение между клиентской системой и SSH-сервером `other.example.com.`
Переадресация портов также может использоваться для надежного получения информации через межсетевые экраны. Если межсетевой экран настроен на разрешение SSH-трафика через стандартный порт (то есть порт 22), но блокирует доступ к другим портам, соединение между двумя узлами с использованием заблокированных портов по-прежнему возможно путем перенаправления их связи через установленное соединение `SSH`.
*Примечание*
Использование переадресации портов для переадресации соединений позволяет любому пользователю в клиентской системе подключиться к этой службе. Если клиентская система становится скомпрометированной, злоумышленник также имеет доступ к перенаправленным службам.
Системные администраторы, связанные с переадресацией портов, могут отключить эту функцию на сервере, указав параметр `No` для строки `AllowTcpForwarding` в `/etc/ssh/sshd_config` и перезапустив службу `sshd`.

Если работа происходит в графическом интерфейсе операционной системы, пользователь может использовать эмулятор терминала — специальное приложение, выполняющее все функции терминала. Для того, чтобы открыть окно эмулятора терминала, нажмите на значок в левом нижнем углу экрана !img/Bash/Значок.png! выберите следующий пункт меню: Система — Терминатор. Откроется окно с приглашением командной строки, работа в котором не отличается от работы с настоящим терминалом.
`Systemd`  управляет протоколированием процессов и систем, предоставив централизованное решение для управления всеми процессами ядра и пользователя. Система, которая собирает и управляет этими журналами, известна как журнал. Журнал реализован с помощью службы `journald`, который обрабатывает все сообщения, созданные ядром, initrd, службами и т. д. Команда `journalctl` используется для доступа к данным и их обработки в журнале.

! Просмотр информации о базовом журнале

Системная служба `journald`, собирает и управляет записями журнала из всех частей системы. Это в основном информация журнала из приложений и ядра.
Чтобы просмотреть все записи журнала, введите:
```
journalctl
```
По умолчанию, будут отображены записи из текущей загрузки. Чтобы посмотреть записи предыдущих загрузок, введите:

Чтобы видеть только сообщения ядра, такие как представлены в `dmesg`, используйте флаг `-k`:
```
journalctl -k
```
```
-- Logs begin at Пн 2017-04-10 14:43:05 MSK, end at Пн 2017-06-26 11:10:01 MSK. 
июн 26 10:47:11 tatyana.local kernel: microcode: microcode updated early to revi
июн 26 10:47:11 tatyana.local kernel: Initializing cgroup subsys cpuset
июн 26 10:47:11 tatyana.local kernel: Initializing cgroup subsys cpu
июн 26 10:47:11 tatyana.local kernel: Initializing cgroup subsys cpuacct
...
```

Просмотреть список всех доступных фильтров отображения журналов можно, выполнив команду:

```
man systemd.journal-fields
```

! Фильтрация журналов по времени

Одной из наиболее важных функций `journalctl` является его функция фильтрации.
*Отображение журналов из текущей загрузки*

*Отображение журналов по временным интервалам*

Для того чтобы запросить отображение журналов за интервалы времени, которые не выравниваются с системными загрузками, используйте опции `--since` и `--until`. Опции ограничивают записи, отображаемые после или до заданного времени, соответственно.
Для абсолютных значений времени используйте следующий формат:
```
YYYY-MM-DD HH:MM:SS
```
Например, отображаются все записи с 10 января 2017 года в 17:15:
```
journalctl --since "2017-01-10 17:15:00"
```
Если компоненты вышеуказанного формата не используются, будут применены некоторые значения по умолчанию. Например, если дата не указана, будет приниматься текущая дата. Если компонент времени отсутствует, будет заменено «00:00:00» (полночь). Поле секунд также может быть отключено по умолчанию до «00»:
```
journalctl --since "2017-01-10" --until "2017-01-11 03:00"
```
Применяя команду `journalctl` используйте слова «вчера», «сегодня», «завтра» или «сейчас». При указании времени используйте «-» или «+», уменьшая или увеличивая величину интервала. Также можно использовать слово «назад» в конструкции предложения.
Чтобы получить данные вчерашнего дня, введите:
```
journalctl --since yesterday
```
Например, получено сообщение о прерывании обслуживания, начинающемся в 9:00 и продолжающемся до часа назад, введите:
```
journalctl --since 09:00 --until "1 hour ago"
```
! Отображение  по сообщению

*по модулю*
Для просмотра журналов конкретного приложения или службы используется опция `-u`. 
Например, чтобы увидеть все журналы из блока Nginx в системе, введите:
```
journalctl -u networkmanager.service
```
Если отобразится сообщение:
```
-- No entries --
```
Значит этот модуль не установлен  в системе.
C опцией -u также используется отображение журналов по дате и времени, например,
чтобы проверить, как работает служба сегодня, введите:
```
journalctl -u NetworkManager.service --since today
```
Чтобы чередовать страницы журналов от разных модулей, например Nginx подключен к модулю PHP-FPM для обработки динамического содержимого, вы можете объединить записи из обоих в хронологическом порядке, указав оба устройства:
```
journalctl -u NetworkManager.service -u php-fpm.service --since today
```
*Фильтрация по процессам, пользователям и группам*
Просмотреть логи для какого-либо процесса можно, указав в команде `journalctl` его идентификационный номер (`_PID`), например:
```
journalctl _PID=381
```
Для просмотра журналов процессов, запущенных от имени определённого пользователя или группы, используются фильтры `_UID` и `_GID` соответственно. Например, веб-сервер запущен от имени пользователя `user`. Определите сначала `ID` этого пользователя:
```
id -u user

33
```
Теперь можно просмотреть журналы всех процессов, запущенных от имени этого пользователя:
```
journalctl _UID=33
```
Выведите на консоль список пользователей, о которых имеются записи в журналах:
```
journalctl -F _UID
```
Для просмотра аналогичного списка пользовательских групп введите команду:

```
journalctl -F _GUID
```
*Отображение журналов "по пути"*
Для просмотра журналов для какого-либо процесса укажите путь к нему, например:
```
journalctl /usr/bin/docker
```
Таким способом можно просмотреть записи для всех "дочерних" процессов.

*Просмотр сообщений ядра*
Для просмотра сообщений ядра используйте опции `-k` или `−−dmesg`:
```
journalctl -k
```
Приведённая команда покажет все сообщения ядра для текущей загрузки. 

*Отображение журнала по уровню ошибки*
Во время диагностики и исправления неполадок в системе нередко требуется просмотреть журналы и выяснить, есть ли в них сообщения о критических ошибках. Специально для этого в `journalctl` предусмотрена возможность фильтрации по уровню ошибки. Просмотреть сообщения обо всех ошибках, имевших место в системе, можно с помощью опции `-p`:
```
journalctl -p err -b

-- Logs begin at Пн 2017-04-10 14:43:05 MSK, end at Вт 2017-06-27 10:30:01 MSK. 
июн 26 10:47:11 tatyana.local systemd[1]: Failed to start Load Kernel Modules.
июн 26 10:47:11 tatyana.local systemd-modules-load[112]: Failed to find module '
июн 26 10:47:13 tatyana.local kernel: [drm:intel_dp_start_link_train [i915]] *ER
...
```
Приведённая команда покажет все сообщения об ошибках, имевших место в системе.
Эти сообщения можно фильтровать по уровню. В `journal` используется такая же классификация уровней ошибок, как и в `syslog`:

    0 — EMERG (система неработоспособна);
    1 — ALERT (требуется немедленное вмешательство);
    2 — CRIT (критическое состояние);
    3 — ERR (ошибка);
    4 — WARNING (предупреждение);
    5 — NOTICE (всё нормально, но следует обратить внимание);
    6 — INFO (информационное сообщение);
    7 —DEBUG (отложенная печать).


Коды уровней ошибок указываются после опции -p.

! Запись логов в стандартный вывод

По умолчанию `journalctl` использует для вывода сообщений логов внешнюю утилиту `less`. В этом случае к ним невозможно применять стандартные утилиты для обработки текстовых данных (например, `grep`). Эта проблема легко решается: достаточно воспользоваться опцией `−−no-pager`, и все сообщения будут записываться в стандартный вывод:
```
journalctl --no-pager
```
После этого их можно будет передать другим утилитам для дальнейшей обработки или сохранить в текстовом файле.

! Выбор формата вывода

C помощью опции `-o` можно преобразовывать данные логов в различные форматы, что облегчает процесс последовательного синтаксического анализа и дальнейшую обработку, например:

```
journalctl  -u NetworkManager.service -o json

{ "__CURSOR" : "s=219db37661d745e8b9bf86f894c64d61;i=550;b=246bb261d03a4ef6965efda3a6c619c6;m=117cc45;t=54cce7b8be7f3;x=6e746d88a5cdb0cd", "__REALTIME_TIMESTAMP" : "14918246
{ "__CURSOR" : "s=219db37661d745e8b9bf86f894c64d61;i=592;b=246bb261d03a4ef6965efda3a6c619c6;m=142930d;t=54cce7bb6aebb;x=65449852876f1b70", "__REALTIME_TIMESTAMP" : "14918246
{ "__CURSOR" : "s=219db37661d745e8b9bf86f894c64d61;i=593;b=246bb261d03a4ef6965efda3a6c619c6;m=14293e5;t=54cce7bb6af93;x=309ef1b0bbbce08b", "__REALTIME_TIMESTAMP" : "14918246
{ "__CURSOR" : "s=219db37661d745e8b9bf86f894c64d61;i=594;b=246bb261d03a4ef6965efda3a6c619c6;m=144f7e3;t=54cce7bb91391;x=8317501252fac4dd", "__REALTIME_TIMESTAMP" : "14918246
...
```
Объект `json` можно представить в более структурированном и читаемом виде, указав формат `json-pretty` или `json-sse`:

```
journalctl -u nginx.service -o json-pretty

"__CURSOR" : "s=219db37661d745e8b9bf86f894c64d61;i=550;b=246bb261d03a4ef6965efda3a6c619c6;m=117cc45;t=54cce7b8be7f3;x=6e746d88a5cdb0cd",
        "__REALTIME_TIMESTAMP" : "1491824603293683",
        "__MONOTONIC_TIMESTAMP" : "18336837",
                   ...
 "_SELINUX_CONTEXT" : "system_u:system_r:init_t:s0",
        "UNIT" : "NetworkManager.service",
        "MESSAGE" : "Starting Network Manager...",
        "_SOURCE_REALTIME_TIMESTAMP" : "1491824603293406"
```
             
Помимо `JSON` данные логов могут быть преобразованы в следующие форматы:

* `cat` — только сообщения из логов без служебных полей;
* `export` — бинарный формат, подходит для экспорта или резервного копирования логов;
* `short` — формат вывода `syslog`;
* `short-iso` — формат вывода `syslog` с метками времени в формате ISO 8601;
* `short-monotonic` — формат вывода `syslog` c метками монотонного времени (monotonic timestamp);
* `short-precise` — формат вывода `syslog` с метками точного времени (время событий указывается с точностью до микросекунд);
* `verbose` — максимально подробный формат представления данных (включает даже те поля, которые в других форматах не отображаются).

! Просмотр информации о недавних событиях

Опция `-n` используется для просмотра информации о недавних событиях в системе:

```
journalctl -n

-- Logs begin at Пн 2017-04-10 14:43:05 MSK, end at Вт 2017-06-27 11:47:15 MSK. --
июн 27 11:47:15 tatyana.local NetworkManager[718]: <info>  [1498553235.5056] dhcp4 (eth0):   lease time 10800
июн 27 11:47:15 tatyana.local NetworkManager[718]: <info>  [1498553235.5056] dhcp4 (eth0):   nameserver '192.168.1.95'
...
```
По умолчанию на консоль выводится информация о последних 10 событиях. С опцией `-n` можно указать необходимое число событий:

```
journalctl -n 20
```
! Просмотр журналов в режиме реального времени

Сообщения из журналов можно просматривать не только в виде сохранённых файлов, но и в режиме реального времени. Для этого используется опция `-f`:
```
journalctl -f 
-- Logs begin at Пн 2017-04-10 14:43:05 MSK. --
июн 27 11:47:15 tatyana.local dbus[711]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
июн 27 11:47:15 tatyana.local nm-dispatcher[10083]: req:1 'dhcp4-change' [eth0]: new request (3 scripts)
июн 27 11:47:15 tatyana.local nm-dispatcher[10083]: req:1 'dhcp4-change' [eth0]: start running ordered scripts...
...
```

! Управление журналированием

*Определение текущего объёма журналов*
Со временем объём журналов растёт, и они занимают всё больше места на жёстком диске. Узнать объём имеющихся на текущий момент журналов можно с помощью команды:
```
journalctl --disk-usage

Archived and active journals take up 344.1M on disk.
user ~$ Journals take up 16.0M on disk.
```
*Ротация журналов*

Настройка ротации журналов осуществляется с помощью опций `−−vacuum-size` и `−−vacuum-time`.
Первая из них устанавливает предельно допустимый размер для хранимых на диске журналов (в нашем примере — 1 ГБ):
```
sudo journalctl --vacuum-size=1G
```
Как только объём логов превысит указанную цифру, лишние файлы будут автоматические удалены.
Аналогичным образом работает опция `−−vacuum-time`. Она устанавливает для журналов срок хранения, по истечении которого они будут автоматически удалены:
```
sudo journalctl --vacuum-time=1years
```
Настройка ротации журналов в конфигурационном файле
Настройки ротации журналов можно также прописать в конфигурационном файле `/еtc/systemd/journald.conf`, который включает в числе прочих следующие параметры:

* `SystemMaxUse=` максимальный объём, который журналы могут занимать на диске;
* `SystemKeepFree=` объём свободного места, которое должно оставаться на диске после сохранения журналов;
* `SystemMaxFileSize=` объём файла журнала, по достижении которого он должен быть удален с диска;
* `RuntimeMaxUse=` максимальный объём, который журналы могут занимать в файловой системе `/run`;
* `RuntimeKeepFree=` объём свободного места, которое должно оставаться в файловой системе `/run` после сохранения журналов;
* `RuntimeMaxFileSize=` объём файла журнала, по достижении которого он должен быть удален из файловой системы `/run`.


Данный режим предназначен для аварийной загрузки. Для загрузки в режиме single необходимо в меню GRUB [[передать ядру|Передача параметров ядру]] [[параметр|Параметры ядра]] `1` или `single`.

!!!См. также

* [[Параметры ядра]]
* [[Передача параметров ядру]]
Находится в [[Программе установки|Программа установки]].

Режим позволяет отказаться от установки ОС и передаёт управление загрузчику ОС, установленной на жёсткий диск.
чтобы проверить, запущен ли межсетевой экран нужно выполнить:

```
sudo systemctl status firewalld
```

На экран будет выведена расширенная информация. Чтобы определить, работает межсетевой экран или нет:

```
sudo firewall-cmd --state

```
На экране терминала появляется сообщение: `running`

Межсетевой экран включен.

Остановка межсетевого экрана:

```
systemctl stop firewalld
```

Запрет автостарта:

```
# systemctl disable firewalld
```

Запуск межсетевого экрана:

```
# systemctl start firewalld
```

Включение автостарта:

```
# systemctl enable firewalld
```
Каждый процесс при завершении возвращает своему родительскому процессу специальный код завершения программы. Код может использоваться для получения результата выполнения программы и&nbsp;для проверки корректности её выполнения (возврата кода ошибки).

В  в&nbsp;случае успешного выполнения программа возвращает значение `0`. Другие значения (все, отличные от 0) означают тот или иной код ошибки. Узнать код возврата программы можно с&nbsp;помощью специальной служебной переменной командной оболочки: `$?`, например:
```
$ ls
...
$ echo $?
0
$ ls nonexistent
ls: невозможно получить доступ к unexistent: Нет такого файла или каталога
$ echo $?
2
```
Служба межсетевого экрана управляет группами правил при помощи так называемых зон. Зоны – это наборы правил, которые управляют трафиком на основе уровня доверия к той или иной сети. Зоны присваиваются сетевым интерфейсам и управляют поведением межсетевого экрана. Список всех допустимых зон по-умолчанию:

```
# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
```

Назначение зон:

* `drop`: самый низкий уровень доверия сети. Весь входящий трафик сбрасывается без ответа, поддерживаются только исходящие соединения.
* `block`: эта зона похожа на предыдущую, но при этом входящие запросы сбрасываются с сообщением icmp-host-prohibited или icmp6-adm-prohibited.
* `public`: эта зона представляет публичную сеть, которой нельзя доверять, однако поддерживает входящие соединения в индивидуальном порядке.
* `external`: зона внешних сетей. Поддерживает маскировку NAT, благодаря чему внутренняя сеть остается закрытой, но с возможностью получения доступа.
* `internal`: обратная сторона зоны external, внутренние сети. Компьютерам в этой зоне можно доверять. Доступны дополнительные сервисы.
* `dmz`: используется для компьютеров, расположенных в DMZ (изолированных компьютеров, которые не будут иметь доступа к остальной части сети); поддерживает только некоторые входящие соединения.
* `work`: зона рабочей сети. Большинству машин в сети можно доверять. Доступны дополнительные сервисы.
* `home`: зона домашней сети. Окружению можно доверять, но поддерживаются только определённые пользователем входящие соединения.
* `trusted`: всем машинам в сети можно доверять.


!!! Просмотр правил по умолчанию

Чтобы узнать, какая зона используется по умолчанию, введите:

```
firewall-cmd --get-default-zone
public
```

На данный момент межсетевой экран не получал никаких инструкций относительно других зон, кроме того, к другим зонам не привязан ни один интерфейс, поэтому сейчас зона `public` является зоной по умолчанию, а также единственной активной зоной.

Чтобы получить список активных зон, введите:

```
firewall-cmd --get-active-zones
public
interfaces: eth0 eth1
```
К зоне `public` привязаны два сетевых интерфейса: `eth0` и `eth1`. Интерфейсы, привязанные к зоне, работают согласно правилам этой зоны.

Чтобы узнать, какие правила использует зона по умолчанию, введите:

```
firewall-cmd --list-all
public (default, active)
interfaces: eth0 eth1
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
```
Т.е. `public` является зоной по умолчанию и единственной активной зоной. К `public` привязаны интерфейсы `eth0` и `eth1`. И `public` поддерживает трафик DHCP (присваивание IP-адресов) и SSH (удаленное администрирование).


!!! Другие зоны межсетевого экрана


Чтобы получить список всех доступных зон, введите:

```
firewall-cmd --get-zones
block dmz drop external home internal public trusted work
```

Чтобы получить параметры конкретной зоны, добавьте в команду флаг `-zone=`.

```
firewall-cmd --zone=home --list-all
home
interfaces:
sources:
services: dhcpv6-client ipp-client mdns samba-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

```
Чтобы вывести определения всех доступных зон, добавьте параметр `--list-all-zones`. Для более удобного просмотра вывод можно сделать постраничным:

```
firewall-cmd --list-all-zones | less
```
Для добавления или изменения DNS-серверов, нужно открыть для редактирования файл `/etc/resolv.conf` и написать в нем:

```
nameserver <1-й DNS сервер>
nameserver <2-й DNS сервер>
```

Для создания доменных имен отредактировать файл `/etc/hosts`.

Чтобы временно поменять MAC-адрес сетевой карты с интерфейсом `eth0`, нужно использовать команду:

```
# ifconfig eth0 hw ether 00:01:02:03:04:05
```
 Для сохранения дискового пространства на хосте, диски на виртуальных машинах имеет смысл делать малого размера. Изменить размер дисков можно в дальнейшем. Для изменения размера образа диска `qcow2` нужно выполнить следующие действия:
1. Выключите виртуальную машину (приостановка или остановка работы недопустима, т.к. важно состояние файловой системы).
@@@
sudo virsh shutdown *hostname*

Домен hostname выключается
@@@

*hostname* замените на имя машины.

2. Увеличьте диск qcow2. Это простая команда для увеличения размера диска в данном случае на 5 ГБ. 
@@@
sudo qemu-img resize/var/lib/libvirt/images.qcow2 +5GB
@@@

3. Измените размер разделов гостя в образе. Загрузите ISO-образ  и присоедините его к виртуальной машине, отредактировав настройки виртуальной машины.
@@@
sudo virsh edit *hostname*
@@@

Добавьте в открывшийся xml-файл, значение для определения порядка загрузки.
```
<boot dev='hd'/>
```
Просто замените, `hd` на `cdrome`.
```
<boot dev='cdrom'/>
```
Добавьте `cdrom` после жесткого диска. Обязательно измените `/path/to/image.iso` на образ ISO, с которого необходимо загрузиться. Без этого изменения, виртуальная машина не загрузится.
```
<disk type='file' device='cdrom'/>
<source file='/mnt/iso/os-rt.iso'/>
<target dev='hdc' bus='ide'/>
<readonly/>
</disk>
```
Далее запустите VM и VNC.
4. Запустите резервное копирование виртуальной машины.

@@@
sudo virsh start *hostname*
@@@
Команда `ifconfig` используется для настройки сетевых интерфейсов. Команда должна использоваться при загрузке системы для настройки адресов каждого сетевого интерфейса и после загрузки для изменения параметров сетевых интерфейсов. Если команда введена без аргументов, `ifconfig` выдает сведения о состоянии активных интерфейсов. Если в качестве аргумента указан какой-либо интерфейс, то выдается информация только о состоянии этого интерфейса; если указан один аргумент `-a`, выдается информация о состоянии всех интерфейсов, даже отключенных. Иначе команда конфигурирует указанный интерфейс.

Производить настройку сети должен системный администратор.

Команда `ifconfig` имеет следующий синтаксис:

```
ifconfig [-v] [-a] [-s] [<интерфейс>]
```

Опции команды `ifconfig`: 

* `<интерфейс>` - имя интерфейса (например, eth0); 

* `up` - вызывает активизацию интерфейса, задается неявно при присвоении адреса интерфейсу; 

* `down` - вызывает остановку работы драйвера для интерфейса; 

* `[-]arp` - включает или отключает использование протокола ARP для интерфейса; 

* `[-]promisc` - включает или отключает неразборчивый режим (`promiscuous mode`) работы интерфейса, в этом режиме все проходящие по сети пакеты принимаются интерфейсом; 

* `[-]allmulti` - включает или отключает режим `all-multicast`, в этом режиме все многоадресные (`multicast`) пакеты в сети принимаются интерфейсом; 

* `metric N` - устанавливает метрику интерфейса; 

* `mtu N` - устанавливает максимальный размер пакета (`Maximum Transfer Unit - MTU`) для интерфейса; 

* `адрес` - IP-адрес, присваиваемый интерфейсу; 

* `netmask адрес` - устанавливает маску сети IP для этого интерфейса, по умолчанию используется обычная маска сети класса A, B или C (что определяется по IP-адресу интерфейса), но устанавливается необходимое значение; 

* `add адрес/длина_префикса` - добавляет адрес IPv6 для интерфейса; 

* `del адрес/длина_префикса` - удаляет адрес IPv6 для интерфейса; 

* `irq адрес` - устанавливает аппаратное прерывание, используемое устройством, не для всех устройств можно динамически менять значение IRQ; 

* `media тип` - устанавливает физический порт или тип носителя, используемый устройством, не для всех устройств допустимо изменение параметра, и для разных устройств могут поддерживаться различные значения, специальный тип носителя auto используется для автоматического определения типа носителя; 

* `[-]broadcast <адрес>` - аргумент адрес задает соответствующий протоколу широковещательный адрес для интерфейса, в противном случае устанавливает (или сбрасывает) флаг `IFF_BROADCAST` для интерфейса. 
*Пример.* 
Задать основной IP-адрес и маску сети для интерфейса `eth0`:

```
# ifconfig eth0 192.168.0.1 netmask 255.255.255.0
```

Присвоение дополнительного IP-адреса интерфейсу `eth0`:

```
# ifconfig eth0:0 10.10.0.1 netmask 255.255.255.0
```
Каналы - особые файлы, через которые процессы обмениваются данными, одна из форм межпроцессного взаимодействия. Каналы являются аналогами конвейера. Вместо традиционного, безымянного конвейера, создаётся файл с помощью команды `mkfifo`, к которому могут обратиться несколько различных процессов по имени.

Пример работы с именованным каналом.

```sh
mkfifo test_pipe # создать канал test_pipe
cat test_pipe # извлечь информацию из test_pipe
# Данную команду нужно выполнить в другом терминале
echo TEST_DATA > test_pipe # Осуществить передачу информации в test_pipe
# В первом терминале должна появиться строка TEST_DATA
```
В  ОС используется командная оболочка (или командный интерпретатор) `Bash`, который предоставляет пользователю интерфейс командной строки. Командная оболочка выполняет в&nbsp;том числе функции: редактирование команды, автодополнение, история команд.

!!! См. также
* [[Bash Редактирование команд]]
* [[Bash История команд]]
* [[Bash Псевдоним]]
* [[Bash Автодополнение]]
* [[Bash Шаблоны]]
* [[Bash Справочная система]]
* [[Bash Очистка экрана, сброс состояния терминала, выход из командной оболочки]]
* [[Bash Перечень сочетаний клавиш]]
 Чтобы использовать Virt-manager для управления сервером виртуализации от лица пользователя необходимо сделать следующие настройки:

1. Добавьте пользователя в группу `libvirt` и проверьте добавление пользователя в эту группу:
```
sudo usermod -aG libvirt "tester"

id tester|grep libvirt

uid=1001(tester) gid=1001(tester) группы=1001(tester),984(libvirt)
```
Отредактируйте файл конфигурации `libvirtd` для добавления группы:
```
sudo bash -c 'cat <<EOF >>/etc/libvirt/libvirtd.conf
unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
EOF'
```
2. Подтвердите настройки:
```
sudo tail -n  2 /etc/libvirt/libvirtd.conf

unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
```
3. Перезапустите службу `libvirtd` и проверьте статус:
```
sudo systemctl restart libvirtd
sudo systemctl status  libvirtd 

libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
   Active: active (running) since Пт 2017-07-28 12:06:25 MSK; 3min 4s ago
     Docs: man:libvirtd(8)
           http://libvirt.org
 Main PID: 21235 (libvirtd)
   CGroup: /system.slice/libvirtd.service
           ├─ 1125 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default...
           ├─ 1126 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default...
           ├─ 1172 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/bridge....
           ├─ 1173 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/bridge....
           └─21235 /usr/sbin/libvirtd
```
4. Выключите и включите систему для входа от лица пользователя без прав администратора.

5. Запустите `virt-manager` со стандартной учетной записью пользователя:

```
virt-manager
```
 



! Вход системного администратора

Администрирование операционной системы должно производиться от имени системного администратора. Системный администратор всегда имеет специальное имя пользователя: `root`. Пароль системного администратора запрашивается при установке операционной системы.

При загрузке операционной системы появляется приглашение входа в&nbsp;систему. Чтобы войти в&nbsp;систему как системный администратор, введите в&nbsp;качестве имени пользователя `root`, а&nbsp;в&nbsp;качестве пароля&nbsp;— тот пароль, что был указан при установке системы.

Во время работы под учётной записью обычного пользователя можно также осуществить вход от системного администратора при помощи команды `su`. Использовать команду `su` можно только на этапе первоначальной настройки операционной системы. Администрирование системы в&nbsp;принудительном режиме работы&nbsp;&nbsp;возможно только при первоначальном входе в&nbsp;систему под именем системного администратора.

! Администрирование при помощи sudo

На этапе первоначальной настройки системный администратор имеет возможность назначить своему пользователю права системного администратора через команду `sudo`, добавив его в&nbsp;файл `sudoers`. Данная процедура позволит упростить администрирование при работе под учётной записью обычного пользователя. 

Для предоставления данной возможности пользователю user1, нужно от имени системного администратора добавить в&nbsp;файл `/etc/sudoers` следующую строку:
```
user1 ALL=(ALL) ALL
```
Теперь для выполнения команд от имени системного администратора достаточно будет выполнить от имени пользователя `user1`:
```
sudo <команда с аргументами>
```
`sudo` требует ввод пользовательского пароля (а&nbsp;не пароля системного администратора). Чтобы организовать администрирование без необходимости ввода пароля, нужно изменить строку в&nbsp;файле `/etc/sudoers`:
```
user1 ALL=(ALL) NOPASSWD: ALL
```
Для изменения файла `/etc/sudoers` используйте команду `visudo`.

!!! См. также
* [[Командная строка]]
* [[Полезные приемы при работе с Bash]]
* [[Bash Менеджер окон в терминале screen]]
* [[Bash Время UNIX (date)]]
* [[Bash Время UNIX (cal, time)]]
* [[Bash Использование текстового редактора VI]]

`Scp` используется для передачи файлов между компьютерами через защищенное, зашифрованное соединение.
Чтобы передать локальный файл в удаленную систему, выполните команду:
```
scp localfile username@hostname:remotefile
```
Например, для переноса `taglist.vim` на удаленный компьютер с именем `penguin.example.com`, выполните следующую команду:
```
sudo scp taglist.vim USER@penguin.example.com:.vim/plugin/taglist.vim
USER@penguin.example.com's password:
taglist.vim                                   100%  144KB 144.5KB/s   00:00
```
Чтобы передать содержимое `.vim/plugin/` в тот же каталог на удаленном компьютере `penguin.example.com`, введите следующую команду:
```
scp .vim/plugin/* USER@penguin.example.com:.vim/plugin/
USER@penguin.example.com's password:
closetag.vim                                  100%   13KB  12.6KB/s   00:00
snippetsEmu.vim                               100%   33KB  33.1KB/s   00:00
taglist.vim                                   100%  144KB 144.5KB/s   00:00
```
Чтобы передать удаленный файл в локальную систему, выполните команду:
```
scp username@hostname:remotefile localfile
```
Например, чтобы загрузить конфигурационный файл` .vimrc` с удаленного компьютера, введите команду:
```
scp USER@penguin.example.com:.vimrc .vimrc
USER@penguin.example.com's password:
.vimrc                                        100% 2233     2.2KB/s   00:00
```
Утилита sftp используется для открытия безопасного интерактивного сеанса FTP. Утилита sftp использует безопасное, зашифрованное соединение.
Чтобы подключиться к удаленному компьютеру, введите следующую команду:
```
sftp username@hostname
```
Например, для входа на удаленную компьютер с именем `penguin.example.com ` пользователя `USER` введите:
```
sftp USER@penguin.example.com
USER@penguin.example.com's password:
Connected to penguin.example.com.
sftp>
```
После ввода правильного пароля будет предложено ввести подсказку. Утилита `sftp` принимает набор команд, аналогичных тем, которые используются `ftp`.

Выбор доступных команд `sftp`

|!Команда|!Описание|
|`ls [directory]`|Список содержимого удаленного каталога. Если ни один не указан, по умолчанию используется текущий рабочий каталог.|
|`cd directory`|Установить directory в качестве удалённого рабочего каталога.|
|`mkdir directory`|Создать удаленный каталог.|
|`rmdir path`|Удалить удаленный каталог.|
|`put localfile [remotefile]`|Перенос локального файла на удаленный компьютер.|
|`get remotefile [localfile] `|Перенос удаленного файла с удаленного компьютера.|
Утилита `ssh` позволяет подключаться к удаленному компьютеру и выполнять там команды. Это безопасная замена для программ `rlogin`, `rsh` и `telnet`.
Для входа на удаленный компьютер выполните следующую команду:
```
ssh hostname
```
Например, чтобы подключиться к удаленному компьютеру с именем `penguin.example.com`, введите в командной строке следующую команду:
```
ssh penguin.example.com
```
Вход в систему произойдет с именем пользователя, которое используется на локальном компьютере. Если нужно указать другое имя пользователя, используйте следующую команду:
```
ssh username@hostname
```
Например, чтобы войти на `penguin.example.com` как пользователь `USER`, введите:
```
ssh USER@penguin.example.com
```
При первом подключении вам будет отправлено сообщение:
```
The authenticity of host 'penguin.example.com' can't be established.
ECDSA key fingerprint is 256 da:24:43:0b:2e:c1:3f:a1:84:13:92:01:52:b4:84:ff.
Are you sure you want to continue connecting (yes/no)?
```
Пользователь может попросить администратора сервера подтвердить правильность ввода ключа. Это должно быть сделано безопасным и согласованным образом. Если пользователь имеет доступ к ключам хоста сервера, правильность ввода можно проверить с помощью команды `ssh-keygen` следующим образом:
```
sudo ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
256 da:24:43:0b:2e:c1:3f:a1:84:13:92:01:52:b4:84:ff   (ECDSA)
```
Введите `yes`, чтобы принять ключ и подтвердить соединение. Появится уведомление о том, что сервер был добавлен в список известных хостов, и приглашение ввести пароль:
```
Warning: Permanently added 'penguin.example.com' (ECDSA) to the list of known hosts.
USER@penguin.example.com's password:
```
При изменении ключа хоста сервера `SSH клиент` уведомляет пользователя о том, что соединение не может быть выполнено, пока ключ хоста сервера не будет удален из файла `~/.ssh/known_hosts`.
Чтобы удалить ключ из файла `~/.ssh/known_hosts`, выполните команду:

```
sudo ssh-keygen -R penguin.example.com
sudo Host penguin.example.com found: line 15 type ECDSA
/home/USER/.ssh/known_hosts updated.
Original contents retained as /home/USER/.ssh/known_hosts.old
```

Каталог - специальный файл, который хранит в себе все имена находящихся в нём файлов, а также указатели на другую информацию по отношению к хранящимся в каталоге файлам.

Таким образом, право на чтение каталога есть право на чтение имён файлов, содержащихся в данном каталоге, но не самого содержимого файлов.

Право на запись в каталог имеет только ядро, а логическая операция создания, перемещения и удаления файлов происходит через интерфейс системных вызовов и контролируется ядром.

Файлы группируются в каталоги, которые, в свою очередь, могут быть включены в другие каталоги.

В результате получается иерархическая структура каталогов, начинающаяся с корневого каталога. 

Каждый каталог содержит как отдельные файлы, так и подкаталоги.

Иерархическую структуру каталогов представляют диаграммой в виде «дерева каталогов», где каталог - узел «дерева», а файл - «лист». 

В ОС строится единая структура каталогов для всех носителей, и единственный корневой каталог этой структуры обозначается символом `/`. 

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

Имена каталогов строятся по тем же правилам, что и имена файлов. 

Фактически, каталоги кроме своей структуры ничем не отличаются от обычных файлов.

Полным именем файла (или полным путем к файлу) называется список имен вложенных друг в друга подкаталогов, начинающийся с корневого каталога и оканчивающийся собственно именем файла. 

При этом имена подкаталогов в этом списке разделяются тем же символом `/`, который служит для обозначения корневого каталога.

В каждый момент времени пользователь работает с одним экземпляром оболочки `Bash` и оболочка хранит значение так называемого «текущего» каталога, в котором пользователь в данный момент работает.

Имеется специальная команда, которая сообщает путь к текущему каталогу - `pwd`.

Пример:

```
Login: user
Password: ********
$ pwd
/home/user
```

Понятие «текущий каталог» относится не только к терминалу пользователя, но и вообще к каждому процессу в системе, то есть каждый процесс имеет свой рабочий каталог.

Кроме текущего каталога для каждого пользователя системы определен «домашний каталог» - каталог, в котором пользователь имеет полный доступ ко всем данным. 

В структуре каталогов ОС домашние каталоги пользователей обычно размещаются в каталоге `/home` и имеют имена, совпадающие с именем пользователя. 

Когда пользователь входит в систему, по умолчанию его текущим каталогом становится домашний каталог.

В ОС при работе с каталогами можно использовать специальные метасимволы, которые иногда очень удобны. К таким метасимволам относятся: 

* `.` (точка) - синоним текущего каталога; 
* `..` (две точки) - синоним родительского каталога; 
* `~` (тильда) - синоним домашнего каталога.

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

Пример:

```
$ pwd                // текущий каталог
/home/user1
$ cd .               // перехода в текущий каталог
$ pwd                // текущий каталог не изменился
/home/user1
$ cd ..              // переход на уровень выше
$ pwd                // текущий каталог изменился
/home
$ cd ~               // переход в домашний каталог
$ pwd                // текущий каталог - домашний каталог пользователя
/home/user1 
```
Для изменения текущего каталога служит команда `cd`. 

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

Относительным путём называется перечисление тех каталогов, которые нужно пройти в дереве каталогов, чтобы перейти от текущего каталога к каталогу целевому. 

Если целевой каталог, который необходимо сделать текущим, расположен ниже текущего в структуре каталогов, то необходимо указать подкаталог текущего каталога, затем подкаталог того каталога 

и т. д., вплоть до имени целевого каталога. 

Если же целевой каталог расположен выше в структуре каталогов или вообще на другой ветви дерева, то применяют метасимволы, описанные выше, например:

```
$ pwd
/home/user/documents/work
$ cd ../..
$ pwd
/home/user
```
<<tagging "ssh клиент">>
Клонирование виртуальной машины - самый простой способ миграции готовой установки ОС. Для выполнения данной процедуры нужно выключить виртуальную машину, выбрать в менеджере виртуальных машин "Клонирование" или "Экспорт" (зависит от системы виртуализации, установленной на хостовой машине) и дождаться окончания копирования виртуального жёсткого диска. После этого вторая машина будет готова к использованию.

Внимание! Единственная проблема, которая может возникнуть в процессе клонирования виртуальной машины - неработающая сеть. Это связано с тем, что MAC-адрес остался от старой машины. Так как MAC-адреса не должны дублироваться, нужно удалить файл `/etc/udev/rules.d/70-persistent-net.rules`, а в файле(ах) `/etc/sysconfig/network-scripts/ifcfg-*` закомментировать `UUID` и `HWADDR`. После внесения изменений машину нужно перезагрузить.
Основное средство администрирования  — командная строка. 

Каждая команда, передаваемая пользователем системе, — инструкция, которую необходимо выполнить. Пока не нажата клавиша `Enter`, строку команды можно редактировать, используя стандартные клавиши ввода на клавиатуре.

Команды интерпретируются и выполняются специальной программой — командной оболочкой. По умолчанию в  используется командная оболочка `Bash`. В файле `/etc/shells` находится список всех командных оболочек в системе:

```
# cat /etc/shells
/bin/sh
/bin/Bash
/sbin/nologin
/bin/tcsh
/bin/csh
```
Все дальнейшие примеры и указания касаются командной оболочки `Bash`.
Командная строка состоит из приглашения и вводимой команды. Приглашение — специальная последовательность символов, которая располагается в начале строки и задаёт начало области ввода команды, например:

```
user@home$
root@server1#
```
Приглашение командной оболочки пользователя оканчивается знаком доллара — `«$»`, а приглашение для системного администратора всегда оканчивается символом решётки — `«#»`. В дальнейшем, в примерах команд приглашение командной строки будет опускаться, а символ доллара или решётки — указывать от имени пользователя или администратора нужно выполнить ту или иную команду.
!!! См. также
* [[Доступ к командной строке из эмулятора терминала]]
* [[Виртуальные терминалы]]
* [[Состав команды]]
* [[Значение, возвращаемое командами]]
* [[Объединение команд]]
* [[Bash Задачи]]
* [[Bash Управление задачами]]
* [[Переменные окружения]]
* [[Интерфейс командной оболочки]]
* [[Полезные приемы при работе с Bash]]
@attr order=2
|!Файл|!Описание|
|`/etc/resolve.conf`|Список серверов DNS - получение информации о доменах (*генерируется автоматически*)|
|`/etc/hosts`|Список доменов, которые разрешаются локально (без помощи DNS)|
|`/etc/hostname`|Имя текущего хоста|
|`/etc/networks`|Хранит имена и адреса локальной и других сетей|
|`/etc/host.conf `|Параметры разрешения имён|
|`/etc/nsswitch.conf`|Порядок поиска доменов. Обычно это: локальный файл, NIS, DNS|
|`/etc/sysconfig/network`|Общие настройки сети|
|`/etc/sysconfig/network-scripts/ifcfg-<интерфейс>`|Настройки сети, уникальные для каждого интерфейса|

Информацию по параметрам, находящимся в этих файлах, можно получить, набрав команду `man <файл>`.
Маска подсети позволяет определить все узлы, находящиеся в той же локальной сети. Пакеты к ним будут доставляться напрямую через канальный уровень.

Таблицу, управляющую маршрутизацией пакетов, просматривают с помощью команды `netstat -r` или `route`, обе команды имеют ключ `-n` для выдачи IP-адреса, а не имени компьютера.

Пример выполнения команды `route`:

```
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         FlagsMetric Ref    Use    Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     00        0    eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     00        0    lo
0.0.0.0         192.168.1.1     0.0.0.0         UG    00        0    eth0
```

Компьютер или аппаратное устройство, осуществляющее маршрутизацию между локальной сетью и Internet, называется шлюзом.

Параметры маршрутизации задаются с помощью команды `route`, например:

```
# route -f <операция> -тип <адресат> <шлюз> <интерфейс>
```

Аргумент `<операция>` принимает одно из двух значений: `add` (добавить маршрут) или `delete` (удалить маршрут). Аргумент `<адресат>` может быть IP-адресом машины, IP-адресом сети или ключевым словом `default`. Аргумент `<шлюз>` - это IP-адрес компьютера, на который следует пересылать пакет, этот компьютер должен иметь прямую связь с компьютером-получателем сообщения. 


Необязательный аргумент `<тип>` принимает значения `net` или `host`. В первом случае в поле адресата указывается адрес сети, а во втором - адрес конкретного компьютера (хоста).

Настройка маршрутизации выполняется по трем интерфейсам: 

* локальный интерфейс (`lo`); 
* интерфейс для платы «Ethernet» (`eth0`); 
* интерфейс для последовательного порта (`PPP` или `SLIP`). 

Локальный интерфейс поддерживает сеть с IP-номером `127.0.0.1.`

Поэтому для маршрутизации пакетов с адресом `127....` используется команда:

```
# route add -net 127.0.0.1 lo
```

Если для связи с локальной сетью используется одна плата Ethernet, и все машины находятся в этой сети (сетевая маска `255.255.255.0`), то для настройки маршрутизации достаточно вызвать:

```
# route add -net 192.168.36.0 netmask 255.255.255.0 eth0
```
Если имеется насколько интерфейсов, то необходимо определиться с сетевой маской и вызвать команду `route` для каждого интерфейса. Так как маршрутом может быть очень много, обычно задают маршрут по умолчанию, который используется для отправки всех пакетов, не указанных явно в таблице маршрутизации. Маршрут по умолчанию настраивается следующей командой:

```
# route add default gw 192.168.1.1 eth0
```

Параметр `gw` указывает программе `route`, что следующий аргумент - это IP-адрес или имя маршрутизатора, на который надо отправлять все пакеты, соответствующие этой строке таблицы маршрутизации.
!!! См. также

* [[Включение межсетевого экрана и сохранение правил]]
* [[Запуск межсетевого экрана]]
* [[Зоны межсетевого экрана]]
* [[Правила межсетевого экрана по умолчанию]]
* [[Настройка зон интерфейсов межсетевого экрана]]
* [[Создание новых зон в межсетевом экране]]
* [[Создание правил межсетевого экрана]]
* [[Автоматический запуск межсетевого экрана]]

<<tiddler tmpl-install with:migrationtools>>

Отредактируйте параметры в файле `/usr/share/migrationtools/migrate_common.ph`.

@@@sh
sudo vi /usr/share/migrationtools/migrate_common.ph
  # Default DNS domain
  $DEFAULT_MAIL_DOMAIN = "*example.ru*";
  # Default base
  $DEFAULT_BASE = "dc=*example*,dc=*ru*";
  # turn this on to support more general object clases
  # such as person.
  $EXTENDED_SCHEMA = *1*;
@@@

Выполните миграцию только локальных пользователей и групп, у которых `UID >= 1000`, заменив `ldapadmin`, `example`, `ru` в соответствии с собственными настройками домена.

@@@sh
awk -F: '($3>=1000&&$3<=60000){print $0}' /etc/passwd > passwd.filtered
awk -F: '($3>=1000&&$3<=60000){print $0}' /etc/group > group.filtered
sudo /usr/share/migrationtools/migrate_passwd.pl passwd.filtered passwd.ldif
sudo /usr/share/migrationtools/migrate_group.pl group.filtered group.ldif
ldapadd -x -W -D "cn=*ldapadmin*,dc=*example*,dc=*ru*" -f passwd.ldif
ldapadd -x -W -D "cn=*ldapadmin*,dc=*example*,dc=*ru*" -f group.ldif
@@@

Примечание. Пароли пользователей будут экспортированы в LDAP только в том случае, если в `/etc/shadow` есть соответствующие записи.

<<seeAlso ldap>>
! Установка AutoFS
Выполните команду:
```
sudo yum install -y autofs
```
! Редактирование файла AutoFS

Основным файлом конфигурации для `AutoFS` является файл `/etc/auto.master`, также называемый основной картой. Файл основной карты содержит список монтирования и расположение его карты.

*Редактирование /etc/auto.master*
Выполните команду:
`sudo vi /etc/auto.master`
Добавьте следующую строку в конец файла:
```
/autofs /etc/auto.nfs --timeout=60
```
Тайм-аут по умолчанию для `AutoFS` составляет 300 секунд (5 минут). После пяти минут бездействия файловая система, которая смонтирована, будет автоматически отключена.

*Примечание.* Необязательно определять тайм-аут в файле `/etc/auto.master`.
*Создание /etc/auto.nfs*
Создайте файл, содержащий  карту `automounter`:
```
sudo vi /etc/auto.nfs
```
Этот файл должен содержать отдельную строку для каждого общего ресурса `NFS`. Формат для строки - `{точка монтирования} [{параметры монтирования}] {местоположение}`. Точки монтирования, указанные здесь, будут относиться к точке монтирования, указанной в `/etc/auto.master`.
```
nfsfileshare  -fstype=nfs4,rw,soft,intr  192.168.12.5:/nfsfileshare
```
где:
`nfsfileshare` - точка монтирования;
`-fstype=nfs4,rw,soft,intr` - параметры монтирования;
`192.168.12.5:/nfsfileshare` - поделиться местоположением.
Это создает новую точку монтирования в `/autofs/nfsfileshare/` и монтирует каталог NFS `/nfsfileshare`, экспортируемый `192.168.12.5`.
Перезапустите службу `AutoFS` и включите ее при запуске системы:
```
sudo systemctl restart autofs
sudo systemctl enable autofs
```
! Тестирование AutoFS
Обратитесь к каталогу `/autofs/nfsfileshare`:
```
ll  /autofs/nfsfileshare

total 0
drwxrwxrwx 4 root root 33 Sep 17 17:47 ./
drwxr-xr-x 3 root root  0 Sep 19 01:23 ../
drwxr-xr-x 2 root root  6 Sep 17 17:39 1/
drwxrwxr-x 2 raj  raj   6 Sep 17 17:45 2/
-rw-rw-r-- 1 raj  raj   0 Sep 17 17:47 test
```
*Примечание.* Убедитесь, что статические монтирования отключены и удалена запись из файла `/etc/fstab`.
Отобразится содержимое общего каталога `NFS`. Кроме того, используйте команду `df` для просмотра смонтированных файловых систем, что позволит увидеть общий ресурс `NFS`, который устанавливается автоматически.
```
df -hT

/dev/sda3        ext4        50G         4,9G   42G           11% /
devtmpfs         devtmpfs   1,9G            0  1,9G            0% /dev
tmpfs            tmpfs      1,9G         2,4M  1,9G            1% /dev/shm
tmpfs            tmpfs      1,9G         760K  1,9G            1% /run
tmpfs            tmpfs      1,9G            0  1,9G            0% /sys/fs/cgroup
/dev/sda1        ext4       976M          35M  875M            4% /boot
/dev/sda5        ext4       405G          45G  340G           12% /home
tmpfs            tmpfs      388M         4,0K  388M            1% /run/user/994
tmpfs            tmpfs      388M          16K  388M            1% /run/user/1000
```
Чтобы протестировать отключение, не выполняйте никаких действий в смонтированной файловой системе в течение 5 минут (в примере -  1 минута (-timeout = 60)). Автозапуск автоматически отключит файловую систему после простоя бездействия.

! Отладка и устранение неполадок AutoFS
Убедитесь, что у вас есть `LOGGING = debug` в `/etc/sysconfig/autofs`.
Выполните команду:
```
sudo cat /var/log/messages

Sep 19 13:14:20 client automount[1891]: expire_proc_indirect: expire /autofs/nfsfileshare
Sep 19 13:14:20 client automount[1891]: handle_packet: type = 4
Sep 19 13:14:20 client automount[1891]: handle_packet_expire_indirect: token 4, name nfsfileshare
Sep 19 13:14:20 client automount[1891]: expiring path /autofs/nfsfileshare
Sep 19 13:14:20 client automount[1891]: umount_multi: path /autofs/nfsfileshare incl 1
Sep 19 13:14:20 client automount[1891]: umount_subtree_mounts: unmounting dir = /autofs/nfsfileshare
```
Если отобразится сообщение подобное последней строке в листинге, то `AutoFS` отмонтировал часть файловой системы после истечения таймаута.
Выполните команды:
```
sudo systemetl stop autofs
sudo automount -f -v
```
Попытайтесь получить доступ к ресурсу в другом терминале и пройдите через выведенную выше команду на первом терминале.
```
Starting automounter version 5.0.7-56z1.el7, master map /etc/auto.master
using kernel protocol version 5.02
lookup(dir): dir map /etc/auto.master.d missing or not readable
lookup(file): failed to read included master map dir:/etc/auto.master.d
lookup(file): failed to read included master map auto.master
mounted indirect on /autofs with timeout 60, freq 15 seconds
attempting to mount entry /autofs/nfsfileshare
mounted /autofs/nfsfileshare
1 remaining in /autofs
1 remaining in /autofs
1 remaining in /autofs
1 remaining in /autofs
expiring path /autofs/nfsfileshare
expired /autofs/nfsfileshare  
```
Если вы видите вывод,с сообщениями подобными 7,8,13,14 строкам листинга, то `AutoFS` автоматически установил файловую систему и размонтировал ее после таймаута.




@attr order=z
Как правило, настройка BIOS требуется для изменения параметров загрузки по умолчанию (с жёсткого диска) - по сети, с DVD- или USB-носителя.

<<tiddler tmpl-boot-bios>>

Для входа в параметры BIOS, перезагрузите компьютер и нажмите несколько раз в процессе загрузки клавишу входа в BIOS. Как правило, при загрузке системы на экране написано, как войти в BIOS. На большинстве компьютеров это клавиша `Del` или `Esc`.

Настройку BIOS следует производить, следуя инструкции изготовителя материнской платы компьютера.

<<seeAlso bios>>
<<tiddler tmpl-install-service with:dnsmasq>>

Выполните настройку `dnsmasq` через файл `/etc/dnsmasq.conf`.

@@@sh
sudo vim /etc/dnsmasq.conf

  # добавьте диапазон IP-адресов, который будет предоставляться по DHCP
  dhcp-range=*10.0.0.200*,*10.0.0.250*,12h
  # добавьте стандартный маршрут для клиентов (шлюз)
  dhcp-option=option:router,*10.0.0.1*
  # укажите при необходимости адреса серверов DNS, NTP
  dhcp-option=option:ntp-server,*10.0.0.10*
  dhcp-option=option:dns-server,*10.0.0.10*
  # укажите маску сети для клиентов
  dhcp-option=option:netmask,*255.255.255.0*
@@@

<<tiddler tmpl-restart-service with:dnsmasq>>

<<tiddler tmpl-firewall-service with:dhcp>>

Проверьте правильность работы DHCP на клиентах.
@attr order=1
Настройка IP-адресов сетевых интерфейсов осуществляется через файлы `/etc/sysconfig/network-scripts/ifcfg-<имя интерфейса>`. Получить перечень интерфейсов системы можно с помощью команды `ip a`.

Пример параметров для динамического IP:

```
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
```

Пример статического IP:

```
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.101
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.2
DNS2=192.168.1.3
USERCTL=no
```

!!! См. также

* [[Псевдонимы сетевых интерфейсов]]

!!! См. также

* [[Настройка сетевых интерфейсов]]
`IPMI` (Intelligent Platform Management Interface) – это интерфейс для удаленного мониторинга и управления физическим состоянием сервера.

Возможности `IPMI`:

* удаленное включение, выключение и перезагрузка сервера;
* мониторинг температуры, напряжения и системы охлаждения;
* удаленное подключение к серверу носителя информации (например, для установки ОС и ПО);
* управление аккаунтами и правами пользователей (имеется поддержка LDAP и Active Directory);
* управление портами доступа и защита доступа SSL-сертификатом;
* настройка уведомлений о работе сервера.

! Установка и настройка необходимых инструментов

<<tiddler tmpl-install-many with:"OpenIPMI OpenIPMI-tools">>
Выполните команды:
```
sudo chkconfig ipmi on
sudo service ipmi start
```
Проверьте:
```
sudo ls /dev/ | grep ipmi
/dev/ipmi0
#
```
! Настройка доступа к IPMI по сети

Для удаленного доступа к интерфейсу подключите сетевой кабель и настройте `IP` адрес.
Выполните команду:
```
sudo ipmitool lan set 1 ipsrc static
```
Используйте статический `IP`.
```
sudo ipmitool lan set 1 ipaddr 192.168.1.150 # IP
sudo ipmitool lan set 1 netmask 255.255.255.0 # Маска подсети
sudo ipmitool lan set 1 defgw ipaddr 192.168.1.1 # Адрес основного шлюза
sudo ipmitool lan set 1 access on # Разрешаем доступ из сети
```
Проверьте настройки:
```
sudo ipmitool lan print 1
```
! Настройка пользователя IPMI
Настройте аккаунт `admin` и `user` для `IPMI` с помощью так называемых `User Slots`.
В стандартных IPMI количество слотов — 9(1-9).

1.Настройка администратора 
admin(root) -  учётная запись администратора по стандарту имеет номер 2.
```
sudo ipmitool user set name 2 admin # изначально слот наз-ся root
sudo ipmitool user set password 2 # установка пароля для admin
Password for user 2:
Password for user 2:
sudo  ipmitool channel setaccess 1 2 link=on callin=on ipmi=on privilege=4 # данные опции описаны ниже
sudo  ipmitool user enable 2 # включение "слота"
```
2.Настройка простого пользователя — user
```
sudo ipmitool user set name 3 user
sudo ipmitool user set password 3
Password for user 3:
Password for user 3:
sudo ipmitool channel setaccess 1 3 link=on callin=on ipmi=on privilege=2
sudo ipmitool user enable 3
```
Список уровней привилегий с описанием:
1 — `Эхо` — низший уровень привелегий который разрешает лишь подключаться к `IPMI`;

2 — `User level` — простой уровень привилегий который разрешает просматривать показания датчиков;

3 — `Operator level` — средний уровень привелегий, разрешает всё кроме изменения настроек пользователей и самого `IPMI`;

4 — `Administrator level` — высший уровень привилегий, разрешает доступ ко всем функциям `IPMI`;

5 — `OEM Proprietary level` — резервный уровень привилегий для различных целей изготовителя мат. платы;

15  —  `No access` — отключенный слот.

Полезные команды с описанием для IPMI:

*Утилиты*
* `ipmitool mc info` - информация о `IPMI`;
* `ipmitool mc reset [ warm | cold ]` - перезагрузка IPMI(не влияет на работу сервера).

*Работа с сенсорами*
* `ipmitool sdr list` - список сенсоров;
* `ipmitool sdr type list` - список по типу;
* `ipmitool sdr type Temperature` - вывод текущей температуры cpu, case, etc;
* `ipmitool sdr type Fan` - вывод текущей скорости кулеров;
* `ipmitool sdr type 'Power Supply'` - вывод текущего состояние блока питания.

*Работа с самим сервером*
* `ipmitool chassis status` - статус сервера;
* `ipmitool chassis identify` - функция, отвечающая за мигание лампочками передней панели, для определения местоположения  сервера в стойке;
* `ipmitool chassis power soft` - отключить сервер через ACPI (аналог poweroff);
* `ipmitool chassis power cycle` - быстрая перезагрузка сервера с отключением питания;
* `ipmitool chassis power off` - полное отключение питания;
* `ipmitool chassis power on` - включение питания;
* `ipmitool chassis power reset` - перезагрузка, помогает когда сервер не отвечает.

*Работа с порядком устройств загрузки(boot devices)*
* `ipmitool chassis bootdev pxe` - установить загрузку с PXE при наличии PXE сервера;
* `ipmitool chassis bootdev cdrom` - установить загрузку с CD-rom;
* `ipmitool chassis bootdev bios` - зайти в BIOS при загрузке для дополнительных настроек по оптимизации.

*Логирование* 
* `ipmitool sel info` - информация о логах;
* `ipmitool sel list` - просмотр лога; 
* `ipmitool sel clear` - очистка лога.

На удаленном хосте также можно получить доступ к серверу. Если сетевой интерфейс работает по протоколу IPMI 2.0, то  будет доступна опция `SoL (Serial over LAN)`, с помощью которой можно будет наблюдать и управлять ходом загрузки сервера безотносительно к операционной системе по сети с другого компьютера.
Для этого с удаленного хоста выполните команду:

```
sudo ipmitool -I lanplus -U root -P 'password' -H 192.168.1.150 sol activate
```
[[Создайте SSL-сертификат|Создание самоподписанного SSL-сертификата для сервера]] и скопируйте его в каталог с сертификатами LDAP. Не забудьте повторять процедуру при обновлении сертификата.

```perl
sudo cp /etc/pki/tls/private/$(hostname -s).key /etc/openldap/certs/
sudo cp /etc/pki/tls/certs/$(hostname -s).crt /etc/openldap/certs/
sudo chown ldap. /etc/openldap/certs/$(hostname -s).{key,crt}
```

Создайте файл `cert.ldif` следующего содержания:

```perl
cat > cert.ldif <<EOF
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/$(hostname -s).crt

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/$(hostname -s).key
EOF
```

Загрузите данный файл в базу LDAP.

```
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f cert.ldif
```

Отредактируйте файл `/etc/sysconfig/slapd`.

```sh
sudo vi /etc/sysconfig/slapd
  # замените строку с параметром SLAPD_URLS на следующую, если хотите включить SSL принудительно
  SLAPD_URLS="ldapi:/// ldap://127.0.0.1/ ldaps:///"
  # данный пример разрешает клиенту использовать или не использовать SSL по его выбору
  SLAPD_URLS="ldapi:/// ldap://127.0.0.1/ ldaps:///"
  # ldapi:/// - необходим для локальной настройки через UNIX сокеты
  # ldap://127.0.0.1/ - подключения без шифрования разрешены только с локального узла
  # ldaps:/// - все внешние клиенты должны подключаться с использованием шифрования
```

<<tiddler tmpl-firewall-service with:ldaps>>

Рекомендуется закрыть обычный порт службы `ldap`, чтобы клиенты принудительно подключались с использованием шифрования.

```
sudo firewall-cmd --remove-service ldap --permanent
sudo firewall-cmd --reload
```

<<seeAlso ldap>>
Чтобы сохранить пароль от [[ключа SSH|Создание SSH-ключей]] и не вводить его каждый раз при соединении с удаленным компьютером, используйте агент аутентификации `ssh-agent`. Чтобы сохранить пароль во время сеанса, выполните следующую команду:

```
ssh-add
Enter passphrase for /home/USER/.ssh/id_rsa:
```

Обратите внимание, что при выходе из системы ваш пароль будет забыт. И эту команду необходимо выполнять каждый раз, когда осуществляется вход в [[терминал|Использование командной строки]].
@attr mls=1
@attr order=z
ОС поддерживает передачу меток КСЗ по NFS. При этом используется протокол NFSv4.2. Его использование необходимо явно указать в настройках сервера и клиентов. Версию NFS, используемую клиентом, можно указать с помощью параметра монтирования nfsvers или vers. По умолчанию будет использоваться NFSv4.


По умолчанию при монтировании сетевой файловой системы используется протокол NFSv4 и файлам и каталогам назначается контекст `nfs_t`. В безопасном режиме доступ к ним ограничивается политикой КСЗ.

В ОС определены следующие переключатели КСЗ, отвечающие за работу с NFS:

* `xen_use_nfs` - разрешить xen управлять файлами NFS;
* `virt_use_nfs` - разрешить средствам виртуализации управлять файлами NFS;
* `use_nfs_home_dirs` - поддержка домашних каталогов NFS;
* `allow_ftpd_use_nfs` - разрешить FTP серверам использовать NFS, используемый для служб файлового обмена;
* `git_system_use_nfs` - предоставить службе Git доступ к файловым системам NFS;
* `qemu_use_nfs` - разрешить qemu использовать файловую систему NFS;
* `allow_nfsd_anon_write` - разрешить NFS-серверу изменять файлы, используемые для открытой передачи файлов. Каталоги и файлы должны быть отмечены как `public_content_rw_t`;
* `httpd_use_nfs` - разрешить доступ httpd к файловым системам NFS;
* `samba_share_nfs` - разрешить серверу Samba осуществлять экспорт томов NFS;
* `nfs_export_all_rw` - разрешить экспорт файлов и каталогов через NFS в режиме чтения-записи;
* `nfs_export_all_ro` - разрешить экспорт файлов и каталогов через NFS в режиме чтения.

Для установки выполните следующую команду:

```
# setsebool [-P] <переключатель> <значение> | переключатель=значение [переключатель=значение...]
```

Параметр `-P` позволяет сохранить значение переключателя после перезагрузки системы. В качестве значения можно устанавливать `1`, `true` или `on` для включения переключателя. Для выключения можно использовать 0, false или off.

Для сохранения меток КСЗ при монтировании сетевой файловой системы требуется использовать протокол NFSv4.2. Для этого необходимо указать параметр -v4.2 в опциях монтирования. Например: `mount -t nfs -o v4.2 <адрес сервера>:<экспортируемый каталог> <локальный каталог>`.

В таком случае файлы и каталоги будут сохранять свой контекст и настройка переключателей не потребуется.
<<tiddler tmpl-install-many with:"openldap-clients nss-pam-ldapd oddjob-mkhomedir">>

Включите вход через LDAP, заменив адрес сервера и домен на собственные.

@@@sh
sudo authconfig --enableldap --enableldapauth --enablemkhomedir --update \
--ldapserver=*ldap.example.ru* --ldapbasedn="dc=*example*,dc=*ru*"
@@@

!!!Использование шифрования для LDAP

Если на сервере [[настроена аутентификация по SSL|Настройка SSL в OpenLDAP]], выполните команду:

```
sudo authconfig --enableldaptls --update
```

!!!Интерактивный режим

Выполните команду `sudo authconfig-tui` чтобы выполнить те же самые настройки в интерактивном режиме.

<<seeAlso ldap>>
@attr order=e

Откройте программу в главном меню: "Администрирование" -> "Дата и время". Выполните настройку дату и времени, заполнив открывшуюся форму.

Если на компьютере нет графического окружения, используйте инструкции ниже, чтобы настроить дату и время в командной строке.

<<tagging время>>
Изначально все сетевые интерфейсы привязаны к зоне по умолчанию.

!!! Изменение зоны интерфейса на одну сессию


Чтобы перевести интерфейс в другую зону на одну сессию, используйте опции `-zone=` и `-change-interface=`.

Например, чтобы перевести `eth0` в зону `home`, нужно ввести:

```
sudo firewall-cmd --zone=home --change-interface=eth0
success
```

*Примечание:* При переводе интерфейса в другую зону нужно учитывать, что это может повлиять на работу некоторых сервисов. К примеру, зона `home` поддерживает SSH, поэтому соединения этого сервиса не будут сброшены. Но некоторые зоны сбрасывают все соединения, включая SSH, и тогда вы можете случайно заблокировать себе доступ к собственному серверу.

Чтобы убедиться, что интерфейс привязан к новой зоне, введите:

```
firewall-cmd --get-active-zones
home
interfaces: eth0
public
interfaces: eth1
```

После перезагрузки межсетевого экрана интерфейс будет снова привязан к зоне по умолчанию.

```
sudo systemctl restart firewalld.service
firewall-cmd --get-active-zones
public
interfaces: eth0 eth1
```

!!! Изменение зоны интерфейса на постоянной основе

Если в настройках интерфейса не указана никакая другая зона, после перезапуска межсетевого экрана интерфейс будет снова привязан к зоне по умолчанию. Эти параметры хранятся в каталоге `/etc/sysconfig/network-scripts`, в файлах формата `ifcfg-interface`.

Чтобы определить зону интерфейса, откройте конфигурационный файл этого интерфейса, например:

```
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
```

В конец файла добавьте переменную `ZONE=` и в качестве значения укажите другую зону, например, `home`:

```
. . .
DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=8.8.8.8
ZONE=home
```

Сохраните и закройте файл.

Чтобы обновить настройки, перезапустите сетевой сервис и межсетевой экран:

```
sudo systemctl restart network.service
sudo systemctl restart firewalld.service
```

После перезапуска интерфейс `eth0` будет привязан к зоне `home`.

```
firewall-cmd --get-active-zones
home
interfaces: eth0
public
interfaces: eth1
```

!!! Настройка зоны по умолчанию

Также вы можете выбрать другую зону по умолчанию.

Для этого используется параметр `-set-default-zone=`. После этого все интерфейсы будут привязаны к другой зоне:

```
sudo firewall-cmd --set-default-zone=home
home
interfaces: eth0 eth1
```
Находится в [[Программе установки|Программа установки]]

Режим интерактивного текстового диалога с администратором. Позволяет установить ОС в случае нехватки оперативной памяти.

После выбора режима, некоторое время понадобится для запуска программы, программа проверит целостность носителя и выведет текстовой диалог вида:

[img[img/installer/InstallerConsole01.png]] 

Настройка установки построена в виде интерактивного диалога с администратором: администратор вводит команду и нажимает клавишу "Enter", система выполняет выбранное действие. Вывод информации происходит последовательно, просмотреть историю диалога можно используя комбинации клавиш "Shift+PageUp" и "Shift+PageDown".

!!!Настройки установки

Раздел программы "Установка". В псевдографическом интерфейсе отображаются пронумерованные пункты меню со значком [x] или [!]. Значок [!] означает, что нужно выбрать этот пункт меню и произвести настройку. Значок [x] означает, что настройка данного пункта меню завершена, но в неё могут быть внесены изменения. Под названием каждого пункта отображены его текущие настройки.

Для того чтобы выбрать пункт меню, введите цифровое обозначение пункта меню и нажмите клавишу "Enter".

* Языковые настройки
По умолчанию установлено "Russian (Russia)".
В этом пункте предлагается выбрать язык установки 1) Russian или 2) English.

* Выбор часового пояса
По умолчанию установлено "часовой пояс Europe/Moscow".
В этом пункте предлагается выбрать часовой пояс:
1) Europe
2) Asia
3) America
4) Africa
5) Antarctica
6) Pacific
7) Australia
8) Atlantic
9) Indian
10) Arctic
11) US
12) Etc
Для изменения часового пояса выберите пункт меню и следуйте указаниям программы установки.

* Источник установки
По умолчанию установлено "Локальный носитель".
В этом пункте предлагается выбрать тип источника установки:
1) CD/DVD
2) Локальный ISO
3) Сеть
Для изменения типа источника установки выберите пункт меню и следуйте указаниям программы.

* Выбор программ
В этом пункте *необходимо* выбрать тип установки ОС:
1) Рабочий стол
2) Сервер
3) Минимальная установка

* Расположение установки
В этом пункте *необходимо* выбрать место установки ОС (жёсткий диск) и разбиение разделов жёсткого диска. Программа установки предлагает возможность замены существующей системы, использования всего дискового пространства или использования только свободного пространства на диске. Для выбора места установки выберите данный пункт меню и следуйте указаниям программы установки.

Примечание. Администратор может переключить программу установки в режим командной строки (клавиши "Ctrl+Alt+F2") и самостоятельно настроить разбиение дисков, используя интерактивную программу "fdisk". 

* Настройка сети
Выбор пункта позволяет посмотреть текущие параметры сети и возможность настроить параметры сети:
1) Установить имя узла
2) Настройка устройства eth0
Для изменения параметров сети выберите пункт меню и следуйте указаниям программы.

* Пароль root
В этом пункте *необходимо* установить сложный пароль администратора.

* Создание пользователя
По умолчанию установлено "Пользователь не будет создан".
В этом пункте предлагается создать пользователя системы.
Для создания пользователя выберите пункт меню и следуйте указаниям программы. 

!!!Установка ОС

Для начала установки нажмите клавиши "b" и "Enter". На экране будет выводится прогресс установки пакетов. По окончании процесса установки программа установки предложит нажать клавишу "Enter" для перезагрузки компьютера.

Примечание. После установки ОС в режиме командной строки графический рабочий стол запускаться не будет, вход в систему осуществляется в режиме командной строки. Для того чтобы активировать графический рабочий стол, выполните после установки системы команду `systemctl set-default graphical.target` и перезагрузите систему (команда `reboot`).

После установки необходимо произвести первичную [[настройку системы|Настройка системы]].
@attr order=b
Прежде чем обратиться к файлу на удалённой файловой системе клиент (ОС клиента) должен смонтировать её и получить от сервера указатель на неё. Монтирование NFS может производиться с помощью команды `mount` или путем добавления записи в `/etc/fstab`.

!!!Монтирование файловой системы NFS командой `mount`

Формат:

```
# mount -t nfs [-o <параметры монтирования>] <адрес сервера>:<экспортируемый каталог> <локальный каталог>
```

* Адресом сервера является IP-адрес или полное доменнное имя сервера, экспортирующего файловую систему, которую требуется примонтировать.
* Экспортируемый каталог - корень экспортируемой файловой системы.
* Локальный каталог - каталог в который будет примонтирована сетевая файловая система.

Пример:

```
# mkdir -p /mnt/nfs-data
# mount -t nfs -o noexec,nosuid,nodev,soft myserver:/export /mnt/nfs-data
```

Основные параметры при монтировании NFS:

* `nosuid` - запрещает исполнять setuid программы из смонтированного каталога;
* `nodev` - запрещает использовать в качестве устройств символьные и блочные специальные файлы;
* `noexec` - запрещает запуск исполняемых файлов с примонтированной файловой системы;
* `noacl` - запрещает использование ACL на примонтированной файловой системе.

Следующие параметры управляют действиями NFS при отсутствии ответа от сервера или в случае возникновения ошибок ввода/вывода:

* `fg` (`bg`) (foreground - приоритеный режим, background - фоновый режим) - в приоритетном режиме (по умолчанию) `mount` возвращает код ошибки, если запрос монтирования завершается с ошибкой или по таймауту. В фоновом режиме в таком случае создается дочерний процесс, который продолжает попытки монтирования, а родительский процесс завершается с нулевым кодом возврата;
* `hard` (`soft`) - выводит на терминал сообщение "server not responding" при достижении таймаута и продолжает попытки монтирования. При заданном параметре soft - при таймауте сообщает вызвавшей операцию программе об ошибке ввода/вывода;
* `retrans=n` (retransmission value - значение повторной передачи) - после n малых таймаутов NFS генерирует большой таймаут (по умолчанию 3). Большой таймаут прекращает выполнение операций или выводит на консоль сообщение «server not responding», в зависимости от указания параметров hard/soft;
* `retry=n` (retry value - значение повторной попытки) - количество минут повторений службы NFS операций монтирования, прежде чем сдаться (по-умолчанию 10000 для фонового режима и 2 для приоритетного режима). Если n=0, то команда завершается при возникновении первой ошибки;
* `timeo=n` (timeout value - значение таймаута) - количество десятых долей секунды ожидания службой NFS до повторной передачи в случае RPC или малого таймаута. Это значение увеличивается при каждом таймауте до максимального значения 60 секунд или до наступления большого таймаута. В случае занятой сети, медленного сервера или при прохождении запроса через несколько маршрутизаторов или шлюзов увеличение этого значения может повысить производительность.

!!!Монтирование файловой системы NFS с помощью файла `/etc/fstab`

Для монтирования файловой системы NFS при загрузке можно использовать конфигурационный файл `/etc/fstab`.

Общий синтаксис строки в файле `/etc/fstab` отвечающей за монтирование NFS следующий:

```
<адрес сервера>: <экспортируемый каталог>	<локальный каталог>	nfs	[<параметры монтирования>]	0	0
```

Параметры для монтирования NFS в конфигурационном файле `/etc/fstab` аналогичны одноименным параметрам при монтировании с помощью команды mount. Локальный каталог должен существовать, иначе монтирование не будет выполнено.

Для получения более подробного описания конфигурационного файла `/etc/fstab` выполните см. man:fstab.
Если в системе включён ACPI и присутствуют датчики температуры, ядро ОС будет контролировать перегрев оборудования и в случае перегрева система выключится автоматически. Контроль за температурой обычно осуществляется через BIOS, однако некоторые современные материнские платы позволяют контролировать температуру компонентов аппаратного обеспечения из операционной системы.

!!!!Контроль текущих значений температурного режима

Текущая температура:
`cat /proc/acpi/thermal_zone/THM/temperature`

Температурные лимиты при которых произойдет отключение ОС при старте:
`cat /proc/acpi/thermal_zone/THM/trip_points`

!!!!Настройка глобального температурного режима

Существует возможность через [[параметры ядра|Параметры ядра]] изменить пределы критической температуры или отключить данную возможность в ядре. Данные изменения никак не влияют на возможности контроля за перегревом из BIOS, однако могут помочь в решении проблем, когда датчики температуры работают некорректно, вынуждая систему перезагружаться.

Внимание! Отключая контроль за температурой устройств, вы можете повредить своё оборудование. Используйте эти параметры с осторожностью.

Следующие [[параметры ядра|Параметры ядра]] можно использовать для контроля за температурой, добавляя их в загрузчик. Все температуры указываются в ^o^C.

`thermal.act=N` - нижняя граница для всех температурных зон (`N`^o^C), `N=-1` - отключить.
`thermal.crt=N` - температура, которая считается критической и приведёт к выключению питания (`N`^o^C), `N=-1` - отключить.
`thermal.nocrt=1` - отключить контроль критической температуры и температуры перегрева.
`thermal.off=1` - полностью отключить контроль температуры через ACPI.
`thermal.psv=N` - установить значение пассивной температуры (`N`^o^C), `N=-1` - отключить.
`thermal.tzp=N` - глобальная частота опроса температурных зон (раз в `N` сек.) `N=0` - отключить.

Если датчики температуры работают некорректно и компьютер перезагружается по причине перегрева, можно добавить в параметры ядра при загрузке `thermal.nocrt=1` - это отключит механизм контроля за перегревом.

!!!См. также

[[Включение и отключение ACPI в ядре]]
/%
http://centoshelp.org/resources/docs/kernel-boot-time-parameters-as-defined-by-kernel-org/
%/
@attr order=a
<<tiddler tmpl-install with:nfs-utils>>

Существует два способа настройки NFS сервера: редактирование файла `/etc/exports` и использование утилиты `exportfs`.

!!!Настройка с помощью файла /etc/exports

В файле `/etc/exports` описываются какие файловый системы экспортируются удаленным машинам и указываются параметры экспортирования.

Каждая строка файла `exports` имеет следующий формат:

```
<точка экспорта> <клиент>(<параметры>) [<клиент>(<параметры>) ...]
```

* *Точка экспорта* задает путь к эскпортируемому каталогу на сервере. 
* *Клиент* задает имя одного или более клиентов или IP-адресов, разделенные пробелами, которым разрешено монтировать точку экспорта. 
* *Параметры* описывают правила монтирования для клиента.

Описание *клиента* допускается в следующем формате:
* именем отдельного узла является полное доменное имя или IP адрес;
* несколько клиентов могут быть заданы с использованием символов `*` и `?`. Например: `*.example.com`;
* подсети задаются в виде пар `<адрес IP>/<маска>`. Например: `192.168.0.0/24`;
* при использовании сервера NIS сетевая группа задается в формате `@<сетевая группа>`.

Общие *параметры экспортирования* аналогичны файловым системам. Параметры, относящиеся к NFS:

* `auth_nlm` (`no_auth_nlm`) или `secure_locks` (`insecure_locks`) - указывает, что сервер должен требовать аутентификацию запросов на блокировку (с помощью протокола NFS Lock Manager (диспетчер блокировок NFS));
* `nohide` (`hide`) - если сервер экспортирует две иерархии каталогов, при этом одна вложена (примонтирована) в другую. Клиенту необходимо явно смонтировать вторую (дочернюю) иерархию, иначе точка монтирования дочерней иерархии будет выглядеть как пустой каталог. Параметр nohide приводит к появлению второй иерархии каталогов без явного монтирования;
* `secure` (`insecure`) - требует, чтобы запросы NFS поступали с защищенных портов (номер порта меньше 1024), чтобы программа без прав системного администратора не могла монтировать иерархию каталогов;
* `subtree_check` (`no_subtree_check`) - если экспортируется подкаталог файловой системы, но не вся файловая система, сервер проверяет, находится ли запрошенный файл в экспортированном подкаталоге. Отключение проверки уменьшает безопасность, но увеличивает скорость передачи данных;
* `wdelay` (`no_wdelay`) - указывает серверу задерживать выполнение запросов на запись, если ожидается последующий запрос на запись, записывая данные более большими блоками. Это повышает производительность при отправке больших очередей команд на запись. `no_wdelay` указывает не откладывать выполнение команды на запись, что может быть полезно, если сервер получает большое количество команд не связанных друг с другом.

Сервер NFS считает, что операционная система удаленного узла выполнила проверку подлинности пользователей и назначила им корректные идентификаторы UID и GID. Экспортирование файлов дает пользователям системы клиента такой же доступ к этим файлам, как если бы они регистрировались напрямую на сервере. Соответственно, когда клиент NFS посылает запрос серверу, сервер использует UID и GID для идентификации пользователя в локальной системе. 

Следующие параметры задают правила отображения удаленных пользователей в локальных:

* `root_squash` (`no_root_squash`) - при заданном параметре `root_squash`, запросы от системного администратора отображаются на анонимного UID/GID, либо на пользователя, заданного в параметре `anonuid`/`anongid`;
* `no_all_squash` (`all_squash`) - не изменяет UID/GID подключающегося пользователя. Параметр `all_squash` задаёт отображение всех пользователей (не только системного администратора), как анонимных или заданных в параметре `anonuid`/`anongid`;
* `anonuid=UID` и `anongid=GID` - явно задает UID/GID для анонимного пользователя.

Пример:

```
/nfs-export 192.168.77.0/24(rw,all_squash)
```

При этой настройке каталог `/nfs-export` будет доступен всем пользователям подсети `192.168.77.X` на доступ с правами `rw`. При этом при подключении UID будут транслироваться в анонимные (заданный в настройках сервера по умолчанию).

!!!Настройка с помощью утилиты `exportfs`

При запуске NFS-сервера выполняется утилита `exportfs`, которая читает содержимое файла `/etc/exports`, передает управление сервису `rpc.mountd` (если используется NFSv3) и далее сервису `rpc.nfsd`, который предоставляет доступ ко всем экспортируемым файловым системам удаленным пользователям. При запуске вручную утилита `exportfs` дает возможность администратору выборочно редактировать экспортируемые файловые системы без перезапуска сервера NFS. `exportfs` записывает экспортируемые файловые системы в файл `/var/lib/nfs/xtab`, который обрабатывается сервисом `rpc.mountd` и все изменения применяются сразу после выполнения данной команды.

Параметры утилиты `exportfs`:
* `[клиент:имя-каталога]` - добавить или удалить указанную файловую систему для указанного клиента);
* `-v` - выводить подробную информацию;
* `-r` - переэкспортировать все каталоги (синхронизировать `/etc/exports` и `/var/lib/nfs/xtab`);
* `-u` - удалить из списка экспортируемых;
* `-a` - добавить или удалить все файловые системы в зависимости от других параметров, переданных утилите `exportfs`;
* `-o <файловые системы>` - определяет каталоги для экспортирования. Формат файловой системы аналогичен формату в файле `/etc/exports`. Несколько файловых систем перечисляются через запятую;
* -i - не использовать `/etc/exports` при добавлении, только параметры текущей командной строки.

!!!Получение информации о состоянии NFS

Получить информацию об экспортируемых файловых системах на удаленном хосте можно с помощью утилиты `showmount`. Утилита `showmount` запрашивает службу `rpc.mountd` на удалённом хосте о смонтированных файловых системах. По умолчанию выдаётся отсортированный список клиентов. Параметры утилиты `showmount`:

* `-a` | `--all` - выдаётся список клиентов и точек монтирования с указанием куда клиент примонтировал каталог. Эта информация может быть ненадежной;
* `-d` | `--directories` - выдаётся список точек монтирования;
* `-e` | `--exports` - выдаётся список экспортируемых файловых систем.

При запуске `showmount` без аргументов, на консоль будет выведена информация о системах, которым разрешено монтировать локальные каталоги.

Для того чтобы просмотреть статистику NFS и RPC, можно использовать утилиту `nfsstat`.

!!!Запуск сервера NFS

Для запуска NFS-сервера выполните следующую команду:

```
# systemctl start nfs
```

Для остановки сервера выполните следующую команду:

```
# systemctl stop nfs
```

Для того чтобы NFS-сервер запускался при загрузке системы, требуется добавить запуск сервера в автозагрузку. Для этого выполните следующую команду:

```
# systemctl enable nfs-server; systemctl enable nfs-client.target
```

Для того чтобы убрать запуск NFS-сервера при загрузке, требуется выполнить следующую команду:

```
# systemctl disable nfs-server; systemctl disable nfs-client.target
```
@attr mls=1
@attr order=z
Для обеспечения передачи меток КСЗ по сети NFS сервер нужно настроить для работы по протоколу NFSv4.2. Для этого файл `/etc/sysconfig/nfs` требуется привести к следующему виду:

```
RPCNFSDARGS="-V 4.2"
```

В таком случае при подключении клиента по протоколу NFSv4.2 файлы и каталоги экспортируемые с сервера будут сохранять свой контекст.

Для обеспечения большей безопасности NFS сервер можно настроить для работы только по протоколу NFSv4.2. Для этого файл `/etc/sysconfig/nfs` требуется привести к следующему виду:

```
RPCNFSDARGS="-N 2 -N 3 -V 4.2"
MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
```

В таком случае NFS сервер будет использовать только протокол NFSv4.2, а все запросы на подключение с версиями протокола ниже чем NFSv4.2 будут запрещены.
<<tagging dhcp>>
<<tagging dns>>
Данный сервер может выполнять роль DNS и DHCP для небольших локальных сетей. Также dnsmasq обладает функциональностью DNS-прокси и кэширующего DNS-сервера. dnsmasq настраивается на сервере, имеющем доступ к другим DNS-серверам в сети Интернет.

dnsmasq использует `/etc/hosts` как базу доменов и кэширует запросы через сервера, указанные в `/etc/resolv.conf`. Если запрашиваемый домен присутствует в `/etc/hosts`, клиенту возвращается запись IP-адреса из `/etc/hosts`, в противном случае отправляется запрос в Интернет через DNS-сервера, указанные в `/etc/resolv.conf`.

<<tiddler tmpl-install-service with:dnsmasq>>

Выполните настройку `dnsmasq` через файл `/etc/dnsmasq.conf`.

```sh
sudo vim /etc/dnsmasq.conf

# раскомментируйте строку (не отправлять имена без домена)
domain-needed
# раскомментируйте строку (не пересылать адреса из не маршрутизируемых сетей)
bogus-priv
# если нужно, раскомментируйте строку (опрашивать каждый сервер из resolv.conf строго по порядку)
strict-order
# раскомментируйте строку (автоматически отдавать записи из /etc/hosts)
expand-hosts
# добавьте имя домена вашей сети
domain=example.ru
# если нужно, раскомментируйте строку и укажите интерфейс, на котором будет работать dnsmasq
# для каждого интерфейса строку нужно повторить
interface=eth0
```

Создайте базу доменов в `/etc/hosts`, которую dnsmasq будет отдавать клиентам.

```sh
sudo vim /etc/hosts
...
# стандартные записи, их менять не нужно
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
# создайте базу имён в вашей сети
10.0.0.10   server1
10.0.0.11   server2
10.0.0.100  client1
```

<<tiddler tmpl-restart-service with:dnsmasq>>

<<tiddler tmpl-firewall-service with:dns>>

<<tiddler tmpl-install with:bind-utils>>

Проверьте правильность работы DNS на данном сервере.

```sh
nslookup server1.example.ru localhost
nslookup server1 localhost
```

Укажите [[IP адрес текущего хоста|Узнать текущий IP-адрес компьютера]] в качестве DNS-сервера на клиентах и проверьте правильность работы DNS на клиентах:

```
getent hosts server1.example.ru
```
<<tiddler tmpl-install-many with:"openldap-servers openldap-clients">>

Скопируйте файл настроек базы данных.

```
sudo cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
sudo chown ldap:ldap /var/lib/ldap/DB_CONFIG
```

<<tiddler tmpl-service-enable with:slapd>>

Остальная настройка OpenLDAP производится в специальной записи сервера `cn=config`. Настройка через файл параметров `slapd.conf` признана устаревшей.

Примечание. Для удобства можно сохранить этот же пароль в файле `~/.ldappasswd`.

```
 echo -n <ваш пароль от LDAP> > ~/.ldappasswd
chmod 600 ~/.ldappasswd
```

Далее вместо команды `ldapadd -x -W` пишите `ldapadd -x -y ~/.ldappasswd`. Пароль вводить не нужно, так как он хранится в файле `~/.ldappasswd`.

!!!Пароль администратора

Создайте пароль администратора LDAP, который будет использоваться в будущем для выполнения задач администрирования данного сервера удалённо.

@@@
slappasswd
  New password: 
  Re-enter new password: 
  *{SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*
@@@

Сохраните выделенный фрагмент хэш-суммы пароля, который понадобится позже.

!!!Параметры сервера

Файлы параметров LDAP-сервера находятся в каталоге `/etc/openldap/slapd.d/`. Их не нужно изменять вручную, вместо этого используйте данную инструкцию.

Перед началом использования LDAP нужно изменить параметры `olcSuffix` и `olcRootDN`:

;olcSuffix
:суффикс базы данных, или имя домена для которого LDAP предоставляет информацию, иными словами, это название вашего домена
;olcRootDN
:запись, которая хранит имя пользователя-администратора LDAP, имеющего полный неограниченный доступ к базе
;olcRootPW
:пароль учётной записи администратор LDAP, он будет использоваться для добавления записей в базу LDAP
;olcAccess
:доступ к базе для мониторинга (нужно разрешить только для администратора)

Создайте файл `db.ldif` следующего содержания, заменив `ldapadmin`, `example`, `ru` в соответствии с собственными настройками домена.

@@@sh
cat > db.ldif
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=*example*,dc=*ru*

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=*ldapadmin*,dc=*example*,dc=*ru*

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: *{SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=*ldapadmin*,dc=*example*,dc=*ru*" read by * none

 # пользователи могут менять собственные пароли
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcAccess
 # by self write разрешит пользователю менять любые собственные атрибуты, не только пароль
olcAccess: {0}to * by self read by dn.base="cn=*ldapadmin*,dc=*example*,dc=*ru*" write by * read
olcAccess: {0}to attrs=userPassword by self write by dn.base="cn=*ldapadmin*,dc=*example*,dc=*ru*" write by anonymous auth by * none

  # нажмите Ctrl+D
@@@

Поле `olcRootPW` заполняется хэш-суммой пароля, полученной выше.

Загрузите данный файл в базу LDAP.

```
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f db.ldif
```

Загрузите дополнительные схемы в LDAP. Это минимальный набор схем, необходимый для организации единого входа, вы можете также загрузить дополнительные схемы, которые находятся в каталоге `/etc/openldap/schema`.

```
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif 
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
```

Выполните тестирование параметров LDAP.

```
sudo slaptest -u
```

В случае успеха появится сообщение `config file testing succeeded`.

Создайте файл `base.ldif` следующего содержания, заменив `example`, `ru` в соответствии с собственными настройками домена.

@@@sh
cat > base.ldif
dn: dc=*example*,dc=*ru*
dc: *example*
objectClass: top
objectClass: domain

dn: cn=*ldapadmin*,dc=*example*,dc=*ru*
objectClass: organizationalRole
cn: *ldapadmin*
description: LDAP Manager

dn: ou=People,dc=*example*,dc=*ru*
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=*example*,dc=*ru*
objectClass: organizationalUnit
ou: Group
 # нажмите Ctrl+D
@@@

Загрузите базовую схему домена.

@@@sh
ldapadd -x -W -D "cn=*ldapadmin*,dc=*example*,dc=*ru*" -f base.ldif
Enter LDAP Password: # введите пароль администратора LDAP, созданный выше
@@@

Примечание. Для удобства добавьте в `~/.bashrc` псевдоним @alias ldapaddf='ldapadd -x -y ~/.ldappasswd -D cn=*ldapadmin*,dc=*example*,dc=*ru* -f'@, далее можно просто пользоваться командой `ldapaddf`.

<<tiddler tmpl-firewall-service with:ldap>>

Этих настроек достаточно для минимального функционирования LDAP, однако рекомендуется дополнительно настроить [[вход в LDAP с использованием сертификата SSL|Настройка SSL в OpenLDAP]].

!!!Дополнительно

# [[Миграция локальных пользователей в LDAP]]. Если у вас уже была база пользователей в файле `/etc/passwd`, вы можете выполнить миграцию.
# [[Настройка аутентификации клиента через LDAP]]. Проверьте корректность входа на данный сервер с использованием учётных записей из LDAP.
# [[Установка phpldapadmin]] для управления базой LDAP.

<<seeAlso ldap>>
@attr order=1
Для того чтобы изменить имя узла (хоста), выполните команду.

@@@
sudo hostnamectl set-hostname *myserver.example.ru*
@@@

Проверьте настройки:

```sh
hostname # выведет полное имя узла
myserver.example.ru
hostname -s # выведет короткое имя узла
myserver
hostname -d # выведет домен узла
example.ru
```

Измените `/etc/hosts`, если там было записано старое имя.

При возникновении проблем выполните перезагрузку сети (`service network restart`) или компьютера (`reboot`).
Файлы конфигурации интерфейса управляют программными интерфейсами для отдельных сетевых устройств. Когда система загружается, она использует эти файлы для определения того, какие интерфейсы вывести и как их настроить. Обычно эти файлы называются именем `ifcfg`, где имя суффикса относится к имени устройства, которым управляет файл конфигурации. По соглашению суффикс файла `ifcfg` совпадает с строкой, заданной директивой DEVICE в самом файле конфигурации.

! Статические сетевые настройки
Чтобы настроить интерфейс со статическими сетевыми настройками с помощью файлов `ifcfg`, для интерфейса с именем `eth0`, создайте файл с именем `ifcfg-eth0` в каталоге `/etc/sysconfig/network-scripts /` следующим образом:
```
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
PREFIX=24
IPADDR=10.0.1.27
```
! Динамические настройки сети
Чтобы настроить интерфейс с динамическими сетевыми настройками с помощью файлов `ifcfg`, для интерфейса с именем `em1`, создайте файл с именем `ifcfg-em1` в каталоге `/etc/sysconfig/network-scripts/` следующим образом:
```
DEVICE=em1
BOOTPROTO=dhcp
ONBOOT=yes
```
Чтобы настроить интерфейс для отправки другого имени хоста на DHCP-сервер, добавьте следующую строку в файл `ifcfg`.
```
DHCP_HOSTNAME=hostname
```
Чтобы настроить интерфейс для игнорирования маршрутов, отправленных сервером DHCP, добавьте следующую строку в файл `ifcfg`.
```
PEERDNS = no
```
Это предотвратит обновление сетевой службы `/etc/resolv.conf` с DNS-серверами, полученными от DHCP-сервера.
Чтобы настроить интерфейс для использования определенных DNS-серверов, установите `PEERDNS = no`, как описано выше, и добавьте строки в файл `ifcfg` следующим образом:
```
DNS1=ip-address
DNS2=ip-address
```
Где `ip-адрес` - это адрес DNS-сервера. Это приведет к тому, что сетевая служба обновит `/etc/resolv.conf` с указанными DNS-серверами.

NetworkManager по умолчанию вызовет `DHCP-клиента, dhclient`, когда профиль настроен для автоматического получения адресов или когда файл конфигурации интерфейса `BOOTPROTO` установлен в `dhcp`. Если требуется `DHCP`, для каждого интернет-протокола, IPv4 и IPv6, на интерфейсе запускается экземпляр `dhclient`. Если NetworkManager не работает или не управляет интерфейсом, тогда устаревшая сетевая служба будет запрашивать экземпляры `dhclient` по мере необходимости
Сетевой интерфейс Ethernet обычно имеет имя вида `ethX` или `enp*`. Параметры указываются в файле `/etc/sysconfig/network-scripts/ifcfg-<имя интерфейса>`.

Основные параметры:

* `BOOTPROTO=<protocol>` - протокол загрузки (`none` - не использовать, `dhcp` - использовать *DHCP*, `bootp` - использовать *BOOTP*);

* `DEVICE=<name>` - имя интерфейса физического устройства;

* `IPADDR=<address>` - IP-адрес;

* `GATEWAY=<address>` - адрес шлюза;

*` NETMASK=<mask>` - маска сети;

* `ONBOOT=<answer>` - автоматически поднимать интерфейс при старте системы: `yes` (да) или `no` (нет);

* `DNS{1,2}=<address>` - адреса DNS-серверов, которые будут записаны в `/etc/resolv.conf`;

* `USERCTL=<answer>` - пользователь может управлять соединением: `yes` (да) или `no` (нет).
Дополнительные параметры:

* `DHCP_HOSTNAME` - данный параметр нужен только в том случае, когда *DHCP*-сервер выдаёт адрес только после отправки имени хоста;

* `ETHTOOL_OPTS=<options>` - специфичные для устройства параметры, поддерживаемые утилитой `ethtool`, например: `ETHTOOL_OPTS="autoneg off speed 100 duplex full"`;

* `HWADDR=<MAC-address>` - MAC-адрес физического устройства, полезно для машин с несколькими сетевыми картами, чтобы гарантировать привязку номера интерфейса к определённому физическому устройству;

* `MACADDR=<MAC-address>` - MAC-адрес, который будет использоваться вместо MAC-адреса физического устройства, нельзя использовать совместно с *HWADDR*;

* `PEERDNS=<answer>` - модифицировать файл `/etc/resolv.conf`: `yes` (да) или `no` (нет), при использовании *DHCP* `yes` - по умолчанию;

* `MASTER=<bond-interface>` - при настройке бондинга - имя связанного с данным устройством бондинг-интерфейса;

* `SLAVE=<answer>` - используется при настройке бондинга совместно с директивой *MASTER*: `yes` (устройство контролируется другим интерфейсом, указанным в *MASTER*) или `no` (не контролируется);

* `SRCADDR=<address>` - адрес-источник для исходящих пакетов.
@attr order=c
/% http://www.k-max.name/linux/network-in-linux/ %/
<<tagging сеть sortBy: order>>

!!! См. также

* [[nmcli]]
* [[nmtui]]
* [[Использование интерфейса командной строки (CLI)]]
@attr order=d
<<tagging настройка>>
@attr order=9
Если сетевая карта не видит сеть, возможно, необходимо явно указать скорость сетевого соединения следующей командой:

`# ethtool -s eth0 speed 100 duplex full autoneg off`

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

`ETHTOOL_OPTS="speed 100 full duplex autoneg off"`
@attr order=f
@attr mls=1
!!! Начальная подготовка
Для развертывания сервера толстых клиентов требуется установить пакеты `nfs-utils`, `dnsmasq`, `syslinux`, `dracut-network`.

Для этого:
1. Вставьте диск с ОС в CD-привод
2. Примонтируйте его в каталог `/misc/cd`
`# mkdir -p /misc/cd` 
`# mount /dev/cdrom /misc/cd`
3. Установите необходимые пакеты
```bash
yum install -y nfs-utils dnsmasq syslinux dracut-network
```

!!! Настройка экспорта корневого каталога через NFS

Создайте каталог, который будет являться корневым для толстых клиентов. Здесь и далее в качестве примера будет использован каталог `/export/root`.

```
# mkdir -p /export/root
```

Корневой каталог для толстых клиентов должен содержать все файлы установленной системы. Для этого выполним следующие команды:

```
# yum groupinstall @^Desktop @config-tools @net-communication-tools @support-legacy-apps @ksaus-compatibility-tools --installroot=/export/root
```

Далее следует произвести базовые настройки в установленном окружении.
```bash
chroot /export/root

# Задаём пароль пользователя root
passwd

# Задаём язык на тонком клиенте
echo LANG="ru_RU.utf8" > /etc/locale.conf

# Выходим из chroot
exit
```

----

Далее, для экcпорта корневого каталога через NFS нужно занести в файл `/etc/exports` следующие данные:

`/export/root *(rw,no_root_squash,insecure,no_subtree_check)`

Настройте NFS-сервер для работы с протоколом v4.2. Для этого приводим файл настроек `/etc/sysconfig/nfs` к следующему виду:

```bash
# Optional arguments passed to rpc.nfsd. See rpc.nfsd(8)
RPCNFSDARGS="-N 2 -N 3 -V 4.2"
MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
```

Для дальнейшего запуска NFS сервера требуется выполнить команду:

`# systemctl start nfs`

Чтобы NFS-сервер автоматически загружался при включении ОС, требуется выполнить команды:

```
# systemctl enable nfs-server
# systemctl enable nfs-client.target
```

Далее проверяем, что NFS настроен корректно с помощью команды:

```
# mount -o v4.2 localhost:/export/root /mnt
```

Если монтирование не удалось, следует перезагрузить машину и попробовать вновь.

Далее следует отмонтировать каталог `/mnt`:

```
# umount /mnt
```

!!!Создание рамдиска

Для загрузки тонкого клиента требуется создать минимальное загрузучное окружение - рамдиск. Для создания рамдиска с поддержкой NFS нужно добавить следующую строку в `/etc/dracut.conf`

```
add_dracutmodules+="nfs"
```

Для поддержки сети на этапе загрузки может понадобиться добавить драйвера сетевой карты в рамдиск. Например в VirtualBox по умолчанию используется сетевая карта Intel PRO/1000 MT Desktop. Поэтому если тонкий клиент будет тестироваться в VirtualBox, то в файл `/etc/dracut.conf` нужно добавить строчку:

```
add_drivers+="e1000"
```

Создайте рамдиск в папке `/var/lib/tftpboot` следующей командой:

```
# mkdir -p /var/lib/tftpboot
# dracut /var/lib/tftpboot/initramfs.img -v
```

Примечание. Создавать рамдиск нужно только после того как было выполнено тестовое монтирование NFS (см. выше) иначе модуль nfs может не попасть в рамдиск и клиент не сможет примонтировать корневой каталог. 

Необходимо разрешить чтение этого файла для всех:

```
# chmod go+r /var/lib/tftpboot/initramfs.img
```

!!!Настройка IP адреса сервера толстых клиентов

Дальнейшие настройки привязаны к IP-адресу и сетевому интерфнйсу сервера. Следует убедиться, что в локальной сети будущего сервера толстых клиентов отсутствуют DHCP-сервера, в противном случае сервер не будет корректно функционировать. Когда это условие будет выполнено, следует задать статический адрес будущему серверу, например, воспользовавшись графической утилитой настройкой Сети.


!!!Настройка tftp сервера

Корневой каталог tftp сервера находится в `/var/lib/tftpboot`. В него нужно скопировать загрузчик syslinux:

```
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
```

Также нужно скопировать в него ядро, которое будут загружать тонкие клиенты:

```
# cp /boot/vmlinuz-$(uname -r) /var/lib/tftpboot/vmlinuz
```

Далее следует создать конфигурационный файл для tftp-сервера, выполнив следующие команды:

```
# mkdir -p /var/lib/tftpboot/pxelinux.cfg/
# touch /var/lib/tftpboot/pxelinux.cfg/default
```

Привидите файл `/var/lib/tftpboot/pxelinux.cfg/default` к следующему виду

```bash
default thin-client

label thin-client
  kernel vmlinuz
  append initrd=initramfs.img root=nfs:<server-ip>:/export/root,vers=4.2 rw
```

где:

* `<server-ip>` - IP адреса сервера, на котором находится корневая файловая система для тонкого клиента.

Выполните перемаркировку файлов tftp-сервера:

```
# restorecon -R -F /var/lib/tftpboot/
```

!!!Настрока dhcp-сервера

Для загрузки толстых клиентов по сети необходимо настроить dhcp-сервер, отредактировав файл `/etc/dnsmasq.conf`

```bash
interface="<interface>"
dhcp-range=<ip-range>,24h
dhcp-boot="pxelinux.0"
dhcp-option=pxe,66,<server-ip>
enable-tftp
tftp-root=/var/lib/tftpboot
```

где:

* `<interface>` - название сетевого интерфейса, клиентам которого будут назначаться IP адреса;
* `<ip-range>` - диапазон IP адресов выделяющийся клиентам (например, 192.168.1.10,192.168.1.100);
* `<server-ip>` - IP адрес сервера.

Для запуска dhcp сервера необходимо выполнить следующие команды:

```
# systemctl start dnsmasq
# systemctl enable dnsmasq
```

!!!Настройка корневой файловой системы клиентов

Для того чтобы тонкие клиенты при загрузке не пытались примонтировать локальные файловые системы требуется отредактировать файл `/export/root/etc/fstab` и привести его к следующему виду:

```
none		/tmp		tmpfs	defaults	0 0
tmpfs		/dev/shm	tmpfs	defaults	0 0
sysfs		/sys		sysfs	defaults	0 0
proc		/proc		proc 	defaults	0 0
```

После выполнения всех указанных действий можно запускать тонкие клиенты выбрав в меню BIOS соответствующий пункт загрузки (LAN boot).
Возможно несколько причин, по которым может не работать звук.

!!!Регулятор громкости установлен на минимум

Откройте регулятор громкости (Главное меню - Мультимедиа - Регулятор громкости PulseAudio) или запустите программу `pavucontrol` и измените параметры громкости звука.

!!!Выбрана не та звуковая карта

Откройте регулятор громкости. Если у вас несколько звуковых устройств, установите галочку напротив того устройства, к которому подключена акустическая система.

!!!Выполнен вход от имени root

Постоянная работа от имени root не предусмотрена, выполните вход от имени обычного пользователя. Чтобы обычный пользователь мог выполнять функции администратора, добавьте его в группу `wheel`.

!!!Переключение на дополнительный терминал

Если у вас на дополнительном терминале (`Ctrl+Alt+F1` - `Ctrl+Alt+F6`) выполнен вход от имени другого пользователя (например, от root), звук может не работать, так как звуковая карта - единственное устройство - не может работать сразу для нескольких пользователей. Чтобы восстановить работоспособность звука достаточно завершить работу пользователей во всех дополнительных терминалах.
Список часто используемых системными администраторами устройств:

* `/dev/random`	- датчик случайных чисел, который преобразует тепловой шум устройств системы в случайные биты данных. Отличается медленной скоростью, но в то же время высокой надежностью (крайне

низок шанс предугадать последовательность, полученную из` /dev/random`). Устройство является эмулятором аппаратного генератора случайных чисел;

* `/dev/urandom	` - работает так же, как `/dev/random`, с тем исключением, что количество выдаваемых данных не ограничивается количеством поступающей от устройств энтропии. 
   
    Благодаря этому может           работать намного быстрее. Это достигается ценой того, что выдаваемые им данные с математической точки зрения могут являться не случайными, 
   
    а лишь  псевдослучайными (количество сгенерированных данных может существенно превышать их реальную энтропию). 
   
    Впрочем, благодаря криптографической стойкости используемого для генерации данных алгоритма данная особенность в подавляющем большинстве случаев не является существенным недостатком. 

* `/dev/null` - «Чёрная дыра». Все, что было отправлено в это устройство будет утеряно навсегда. Используется для перенаправления вывода ошибок или стандартного вывода, если он не нужен, полезно

   для использования в сценариях `Bash`;

* `/dev/zero` - генератор, аналогичный `/dev/urandom`, но вместо случайной последовательности, генерирует последовательность нулей. Устройство используется для создания заполненных нулевым байтом 

   файлов заданной длины;

* `/dev/cdrom` - устройство привода чтения компакт-дисков;

* `/dev/ttyN` - терминал;

* `/dev/mem` - физическая оперативная память. Память выше 1 Мбайт недоступна;

* `/dev/sd*` - устройство жёсткого диска, например, `/dev/sda`. Если на диске несколько логических разделов, им присваиваются номера, например, `/dev/sda1` и `/dev/sda2` означают соответственно  

   первый и второй логические разделы на диске `/dev/sda`.

При изменении параметров загрузчика GRUB 2 необходимо пересоздать его. Для этого выполните команду:

* `grub2-mkconfig -o /etc/grub2.cfg`, если у вас обычный загрузчик;
* `grub2-mkconfig -o /etc/grub2-efi.cfg`, если у вас загрузчик UEFI;

Внимание! Никогда не меняйте параметры в файлах `grub*.cfg` вручную. При выполнении `grub2-mkconfig` они будут безвозвратно утеряны. Используйте файлы в `/etc/grub.d/` и `/etc/default/grub` для редактирования параметров загрузчика.
Объединение нескольких команд в&nbsp;одной командной строке можно выполнить несколькими способами:

• «Последовательное выполнение». Команды выполняются одна за другой, не зависимо от результата их исполнения. В&nbsp;качестве разделителя выступает символ точки с&nbsp;запятой `;`.

В качестве примера можно рассмотреть составную команду `du -sh; date`, которая выводит на экран содержимое домашнего каталога, а&nbsp;затем текущие дату и&nbsp;время. Это простой способ последовательного объединения команд, которые должны выполняться вместе или они используются для создания сложных псевдонимов;

• «Условное выполнение (И)». Проверяется код завершения первой программы, если он равен `0`, производится выполнение второй программы и&nbsp;так далее. Таким образом, последняя команда выполнится только при успешном завершении всех предыдущих. В&nbsp;качестве разделителя выступают два символа амперсанд&nbsp;— `&&`.

Пример:
```
touch file && echo OK
```
На экране появится слово `ОК`, если файл был успешно создан;

• «Условное выполнение (ИЛИ)». Проверяется код завершения первой программы, если он не равен `0`, производится выполнение второй программы и&nbsp;так далее. Последняя команда будет запущена только если ни одна из предыдущих не закончилась успешно. В&nbsp;качестве разделителя выступают две вертикальные черты&nbsp;—&nbsp;`||`.

Пример:
```
touch file || echo Fail
```
Команда выведет на экран слово `Fail` в&nbsp;случае неудачи;

• «Конвейер». При выполнении программ в&nbsp;режиме конвейера их каналы ввода и&nbsp;вывода связываются так, что текстовые данные передаются через них последовательно, как по конвейеру. Этот механизм является одной из самых фундаментальных особенностей командной строки. В&nbsp;конвейер могут быть объединены последовательно несколько команд, возможно распараллеливание конвейера на несколько потоков при помощи программы `tee`.

Все программы могут быть запущены одновременно так, чтобы обеспечить интерактивность вывода при прохождении данных через цепочку программ. Если одна из программ в&nbsp;цепочке конвейера завершится (например, в&nbsp;случае ошибки), остальным будет отправлен специальный сигнал (`SIGPIPE`).

В качестве разделителя используется символ вертикальный черты `|`.

Пример:
```
cat /etc/passwd | grep :/bin/sh | grep -oE "^[a-z]+" | sort
```
Данная команда выполняет чтение файла `/etc/passwd`, поиск в&nbsp;нём всех пользователей, у&nbsp;которых в&nbsp;качестве стандартной командной оболочки используется `sh`, фильтрует только имена этих пользователей и&nbsp;сортирует полученный список пользователей по алфавиту.

Командная оболочка `Bash` позволяет строить гибкие условные выражения (с использованием скобок и&nbsp;знака отрицания) из выполняющихся команд.
Обычный файл - наиболее распространённый объект в операционной системе, который содержит данные в некотором формате.

Для операционной системы в файле содержится абстрактная последовательность байтов и только прикладная программа может произвести интерпретацию содержимого файла и обработать его надлежащим образом.

Например, обычные текстовые файлы могут открываться практически любой программой или командой, предназначенной для работы с текстом: `cat`, `vim`.

Примеры создания обычного файла:

```
$ touch file1
$ echo text > file2
$ cat > file3
line1
line2
Ctrl+D
```

Важно иметь чёткое представление, с каким устройством в `/dev` ассоциируется USB-носитель, так как буква диска может меняться динамически. Ниже представлен наиболее простой способ сделать это.

# Вставьте USB-накопитель в USB-порт компьютера.
# Откройте терминал и выполните команду `dmesg`.
# В конце вывода команды найдите строку, похожую на следующий листинг:

@[32656.573467] sd 8:0:0:0: [*sdX*] Attached SCSI removable disk@

Искомый диск будет доступен по адресу @/dev/*sdX*@.

Для проверки правильности определения буквы носителя, можно использовать команду `df -h` пример результата работы которой приведён ниже:

```
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
/dev/sda3           50G         5,2G   42G           12% /
devtmpfs           3,9G            0  3,9G            0% /dev
tmpfs              3,9G         1,5M  3,9G            1% /dev/shm
tmpfs              3,9G         620K  3,9G            1% /run
tmpfs              3,9G            0  3,9G            0% /sys/fs/cgroup
/dev/sda1          485M          82M  378M           18% /boot
/dev/sda2          860G         480G  337G           59% /home
tmpfs              797M          44K  797M            1% /run/user/1000
```

Видно, к каким устройствам примонтированы папки, видны метки, объёмы устройств.
Модули в Systemd представлены конфигурационными файлами, размещенными в одной из директорий:
* `/usr/lib/systemd/system/` – модули из установленных пакетов RPM;
* `/run/systemd/system/` — модули, созданные systemd во время работы. Этот каталог приоритетнее каталога с установленными модулями из пакетов RPM;
* `/etc/systemd/system/` — модули, созданные и управляемые системным администратором. Этот каталог приоритетнее каталога модулей, созданных `systemd` во время работы.

Модули содержат информацию о системных сервисах, прослушиваемых сокетах, сохраненных снимках состояний системы и других обьектах, относящихся к системе инициализации.

Типы модулей `systemd`:

* `.service` – системная служба;
* `.target` — группа модулей systemd;
* `.automount` – точка автомонтирования файловой системы;
* `.device` – файл устройства, распознанного ядром;
* `.mount` – точка монтирования файловой системы;
* `.path` – файл или директория в файловой системе;
* `.scope` – процесс, созданный извне;
* `.slice` – группа иерархически организованных модулей, управляющая системными процессами;
* `.snapshot` – сохраненное состояние менеджера systemd;
* `.socket` – сокет межпроцессного взаимодействия;
* `.swap` – Свап-устройство или свап-файл (файл подкачки);
* `.timer` – таймер systemd.

! Основные функции Systemd
*  Включение служб, основанное на сокетах. Во время загрузки `systemd` прослушивает сокеты для всех системных служб, поддерживает этот тип включения и передает сокеты этим службам сразу после старта сервисов. Это позволяет `systemd` не только запускать службы параллельно, но также дает возможность перезапускать службы без потери любых отправленных им сообщений, пока службы были недоступны. Соответствующий сокет остается доступным и все сообщения выстраиваются в очередь.
* Включение служб, основанное на `D-Bus`. Системные службы, использующие `D–Bus` для межпроцессного взаимодействия, могут быть запущены по требованию, когда клиентское приложение пытается связаться с ними.
* Включение служб, основанное на устройствах. Системные сервисы, поддерживающие включение, основанное на устройствах, могут быть запущены, когда подключается или становится доступным определенный тип оборудования.
* Включение служб, основанное на путях. Системные службы могут поддерживать этот вид включения, если изменяется состояние папки или директории.
* Снимки системных состояний. Система может сохранять состояние всех модулей и восстанавливать предыдущее состояние системы.
* Управление точками монтирования и автомонтирования. `Systemd` отслеживает и управляет точками монтирования и автомонтирования.
* Запуск системных служб параллельно из-за использования включения, основанного на сокетах. В комбинации со службами, поддерживающими включение по требованию, параллельное включение значительно уменьшает время загрузки системы.
* Транзакционная логика включения модулей. До включения и выключения модулей `systemd` вычисляет их зависимости, создает временную транзакцию и проверяет целостность этой транзакции. Если транзакция нецелостная, `systemd` автоматически пытается исправить ее и удалить из нее неактуальные задания до формирования сообщения об ошибке.
* Обратная совместимость с инициализацией `SysV`. `Systemd` полностью поддерживает скрипты инициализации `SysV`.
@attr mls=1
Для того чтобы отключить пользователя root, выполните команду:

`z-adm root disable`

Администрирование системы может выполняться [[специально назначенными пользователями|Создание пользователя-администратора]], которых следует создать заблаговременно.
@attr order=2
Сетевой интерфейс Ethernet обычно имеет имя вида `ethX` или `enp*`. Параметры указываются в файле `/etc/sysconfig/network-scripts/ifcfg-<имя интерфейса>`.

Основные параметры:

* `BOOTPROTO=<protocol>` - протокол загрузки (none - не использовать, dhcp - использовать DHCP, bootp - использовать BOOTP);
* `DEVICE=<name>` - имя интерфейса физического устройства;
* `IPADDR=<address>` - IP-адрес;
* `GATEWAY=<address>` - адрес шлюза;
* `NETMASK=<mask>` - маска сети;
* `ONBOOT=<answer>` - автоматически поднимать интерфейс при старте системы: `yes` (да) или `no` (нет);
* `DNS{1,2}=<address>` - адреса DNS-серверов, которые будут записаны в `/etc/resolv.conf`;
* `USERCTL=<answer>` - пользователь может управлять соединением: `yes` (да) или `no` (нет);

Дополнительные параметры:

* `DHCP_HOSTNAME` - данный параметр нужен только в том случае, когда DHCP-сервер выдаёт адрес только после отправки имени хоста;
* `ETHTOOL_OPTS=<options>` - специфичные для устройства параметры, поддерживаемые утилитой `ethtool`, например: `ETHTOOL_OPTS="autoneg off speed 100 duplex full"`;
* `HWADDR=<MAC-address>` - MAC-адрес физического устройства, полезно для машин с несколькими сетевыми картами, чтобы гарантировать привязку номера интерфейса к определённому физическому устройству;
* `MACADDR=<MAC-address>` - MAC-адрес, который будет использоваться *вместо* MAC-адреса физического устройства, *нельзя* использовать совместно с `HWADDR`;
* `PEERDNS=<answer>` - модифицировать файл `/etc/resolv.conf`: `yes` (да) или `no` (нет), при использовании DHCP `yes` - по умолчанию;
* `MASTER=<bond-interface>` - при настройке [[бондинга|Бондинг]] - имя связанного с данным устройством бондинг-интерфейса;
* `SLAVE=<answer>` - используется при настройке [[бондинга|Бондинг]] совместно с директивой `MASTER`: `yes` (устройство контролируется другим интерфейсом, указанным в `MASTER`) или `no` (не контролируется);
* `SRCADDR=<address>` - адрес-источник для исходящих пакетов;
/%
http://linuxman.h1.ru/linart/bootpar.html
http://centoshelp.org/resources/docs/kernel-boot-time-parameters-as-defined-by-kernel-org/
http://www.ipmnet.ru/~sadilina/Fedora/303.html
http://linuxman.h1.ru/linart/bootpar.html
http://www.modx.cc/linux/parametryi-zagruzki-yadra/

http://tldp.org/HOWTO/BootPrompt-HOWTO.html
%/
Ядро Linux может принимать различные параметры, меняющие его поведение. Наиболее часто необходимость в этом возникать при решении проблем с оборудованием. Наиболее важные параметры приведены ниже.

;1 или single
:Одиночный режим или безопасный режим - система загружается в аварийном режиме под пользователем root. Предназначен как для простого случая восстановления пароля root, так и для решения проблем.
;init=<путь>
:По умолчанию ядро пытается запустить программу инициализации (init). Если программа init не запускается, вы можете использовать `init=/bin/bash`, чтобы в командной оболочке исправить ошибки.
;acpi=
:Настройка [[ACPI|Включение и отключение ACPI в ядре]]. Может принимать значения: force, off, ht, strict, noirq.
;noapic
:Полезен, если вы при загрузке увидите сообщение: kernel panic - not syncing: IO-APIC + timer doesn't work! А также бывает полезным, если при установке некорректно работает сетевой адаптер.
;text
:В случае, если возникли проблемы с графической подсистемой, можно попытаться запуститься в текстовом режиме, указав этот параметр.
;panic=<секунды>
:В случае [[паники ядра|Kernel panic]], по-умолчанию компьютер остается в этом состоянии, пока кто-нибудь не перезагрузит машину. Однако, на отдельно стоящих серверах такое поведение нежелательно, поэтому установите panic=30, и при панике ядро попытается перегрузиться через 30 секунд.
;noht
:Деактивизирует функцию HyperThreading, предусмотренную в современных процессорах.
;enforcing=
:Включить или выключить КСЗ: 0 - выключить или 1 - включить.

Обратите внимание, что параметры, сообщаемые при запуске Linux, оказывают влияние только на те драйверы, которые интегрированы прямо в ядро. Параметры модулей ядра нужно указывать в файле `/etc/modprobe.conf`.

!!!См. также

* [[Передача параметров ядру]]
* `less /usr/share/doc/kernel*/Documentation/kernel-parameters.txt` (нужен пакет kernel-doc)
Пароль загрузчика задаётся администратором при установке системы. Рекомендуется всегда создавать пароль загрузчика, чтобы предотвратить пользователем загрузку системы с опасными параметрами.

Внимание! Если пароль загрузчика не задан, пользователь может изменить пароль системного администратора! Если это не ваш личный компьютер, всегда устанавливайте пароль загрузчика.

Пароль загрузчика задаётся/меняется командой `z-adm grub`.
Существует два способа передачи [[параметров|Параметры ядра]] ядру: во время загрузки в меню GRUB или в файле параметров GRUB. В первом случае необходимо знать пароль GRUB, во втором - пароль системного администратора (или обладать полномочиями администратора).

Параметры следует указывать в виде `параметр[=значение1][,значение2]...[,значениеN]`. Значения разделяются запятой без пробелов. Если нужно указать несколько параметров, используйте пробел для их разделения.

!!!Передача аргументов загрузки для всех ядер (только GRUB 2)

Если используется grub2, то можно передать стандартные [[параметры|Параметры ядра]] для всех ядер, установленных в системе. Преимущество такого способа в том, что при обновлении ядра изменения сохраняются.

Для передачи параметров таким способом в файле `/etc/default/grub` измените переменную `GRUB_CMDLINE_LINUX`. После изменения параметров, [[обновите параметры grub2|Обновление параметров загрузчика GRUB 2]].

!!!Передача аргументов загрузки ядра (GRUB или GRUB 2)

Примечание. Для GRUB 2 данный способ не рекомендуется. При обновлении ядра или выполнении `grub2-mkconfig` они будут утеряны.

Для установки параметров конкретного ядра наиболее удобным способом является использование команды `grubby`. Чтобы изменить параметр загрузки работающего ядра, выполните команду от имени системного администратора:

```sh
grubby --update-kernel="/boot/vmlinuz-$(uname -r)" --args="<аргументы>"
# Например:
grubby --update-kernel="/boot/vmlinuz-$(uname -r)" --args="acpi=off"
```

Примечание. Эти параметры вступят в силу только после перезагрузки.

!!!Передача аргументов во время загрузки

Для передачи аргументов ядру во время загрузки необходимо во время отображения меню GRUB нажать клавишу [e], ввести [[пароль загрузчика|Пароль загрузчика]] и изменить строку, содержащую параметры ядра. Её можно обнаружить по ключевому слову `vmlinuz`. Дополнительные аргументы рекомендуется добавлять в конец строки, для этого нужно нажать клавишу [end] и ввести аргументы, разделяя их пробелами. Для загрузки ядра с этими параметрами нажмите [Ctrl+X].

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

!!!См. также

* [[Параметры ядра]]
Переменные окружения устанавливаются пользователем или сценариями командной оболочки. Начальный набор переменных окружения задается стартовыми сценариями операционной системы и&nbsp;сценариями, запускаемыми при регистрации пользователя в&nbsp;системе, например, `/etc/profile `и&nbsp;`/.Bash_profile`. Для имён переменных окружения принято использовать только прописные символы и&nbsp;знак подчёркивания.
Среда в&nbsp;ОС хранит настройки переменных окружения системы и&nbsp;отдельных программ. Каждый процесс при запуске получает свою копию переменных окружения.
Переменные окружения представляют собой набор пар `«имя переменной»` и&nbsp;`«значение переменной»`. Переменная окружения задается вводом в&nbsp;командной строке пары `ИМЯ="значение"`.
Пример.
Команда `PATH="/usr/bin:/bin"` задает переменной `PATH` значение `/usr/bin:/bin`.
Формат команды для просмотра значения переменной окружения:
```
echo $<ИМЯ>
```
Пример.
```
echo $HOME
/home/user
```
Просмотр списка переменных окружения, доступных в&nbsp;командной оболочке:
```
env
```
!!! См. также
* [[Стандартные переменные окружения]]
* [[Получение списка переменных окружения]]
cron - служба, которая регулярно выполняет задания в определённое время. Настройка планировщика осуществляется через специальный файл - crontab.

У каждого пользователя имеется свой собственный crontab для запуска заданий от имени этого пользователя. В файле `/etc/crontab` располагается общесистемный планировщик. В общесистемном планировщике, в отличие от пользовательских, необходимо указать имя пользователя, от которого будет выполнено задание.

Пример `/etc/crontab`

```sh
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# .---------------- минуты (0 - 59)
# |  .------------- часы (0 - 23)
# |  |  .---------- день месяца (1 - 31)
# |  |  |  .------- месяц (1 - 12) или jan,feb,mar,apr ...
# |  |  |  |  .---- день недели (0 - 6) (Понедельник=0) или sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * <имя пользователя>  <команда>
# запускать каждый час все задания из /etc/cron.hourly
  1  *  *  *  * root                cd / && run-parts --report /etc/cron.hourly
```

Примечание. Общесистемный планировщик использовать не рекомендуется, используйте задания для пользователей.

!!!Специальные регулярные задания

Сценарии, которые нужно выполнять регулярно (например, обновление системы), рекомендуется размещать в специальных каталогах:

* `/etc/cron.daily` - ежедневно;
* `/etc/cron.hourly` - каждый час;
* `/etc/cron.monthly` - ежемесячно;
* `/etc/cron.weekly` - еженедельно.

Разместите Bash-сценарии или символьные ссылки на них в одном из этих каталогов, и они будут выполняться с заданным интервалом.

Примечание. Регулярные задания выполняются через [[anacron]] и будут гарантированно выполнены с заданной частотой, даже если компьютер был выключен некоторое время. Задания из crontab при выключенном компьютере не выполняются.

!!!Пользовательский crontab

Вывести содержимое текущего crontab: `crontab -l`.
Удаление crontab: `crontab -r`.
Редактирование crontab: `crontab -e`.

Внимание! Клавиши `r` и `e` располагаются рядом друг с другом и вы можете по ошибке вместо редактирования удалить свой файл заданий. Рекомендуется создать `alias crontab.edit="crontab -e"` и внимательно набирать данную команду. Удалённый crontab невозможно восстановить, если не настроено [[резервное копирование|Резервирование и миграция]].

Пользовательские crontab находятся в `/var/spool/cron/$USER`. Учитывайте это при резервном копировании данных, так как crontab хранится отдельно от данных пользователя.

Пример пользовательского crontab.

```sh
# в качестве командного интерпретатора использовать /bin/bash
SHELL=/bin/bash
# результаты работы отправлять по этому адресу
MAILTO=user1@example.ru
# добавить в PATH домашний каталог пользователя
PATH=/bin:/usr/bin:/home/user1/bin
# для запуска графических приложений
DISPLAY=:0

# выполнять каждый день в 0 часов 5 минут, результат складывать в log/daily
5 0 * * * $HOME/bin/daily.job >> $HOME/log/daily 2>&1
# выполнять 1 числа каждого месяца в 14 часов 15 минут
15 14 1 * * $HOME/bin/monthly
# каждый рабочий день в 22:00
0 22 * * 1-5 echo "Пора домой" | mail -s "Уже 22:00" john

23 */2 * * * echo "Выполняется в 0:23, 2:23, 4:23 и т. д."
5 4 * * sun echo "Выполняется в 4:05 в воскресенье"
0 0 1 1 * echo "С новым годом!"
15 10,13 * * 1,4 echo "Эта надпись выводится в понедельник и четверг в 10:15 и 13:15"
0-59 * * * * echo "Выполняется ежеминутно"
0-59/2 * * * * echo "Выполняется по четным минутам"
1-59/2 * * * * echo "Выполняется по нечетным минутам"
# каждые 5 минут
*/5 * * * * echo "Прошло пять минут"
# каждое первое воскресенье каждого месяца. -eq 7 это код дня недели, т.е. 1 -> понедельник , 2 -> вторник и т.д.
0 1 1-7 * * [ "$(date '+\%u')" -eq 7 ] && echo "Эта надпись выводится каждое первое воскресенье каждого месяца в 1:00"
```

!!!Запуск графических программ через crontab

Вы можете столкнуться с проблемой, что графические программы не запускаются из crontab. Это связано с тем, что служба cron не подключена к графическому серверу. Добавьте переменную окружения `env DISPLAY=:0` перед командой или `DISPLAY=:0` в начало crontab, чтобы обойти эту проблему.
Для того чтобы найти нужною информацию, начните набирать поисковый запрос в строке поиска в правом верхнем углу. По мере набора будут отображаться страницы, соответствующие запросу. Если строка поиска короче трёх символов, нужно нажать клавишу [Enter], чтобы выполнить поиск.

При формулировке поискового запроса следует опускать окончания и суффиксы, например:
`резерв копир`
`ядр acpi`
и т. п.
Всегда используйте клавишу `TAB` при вводе имён команд и файлов:
• это минимизирует ошибки;
• если файл не существует, вы быстро об этом узнаете.

Автодополение по клавише `TAB` работает не только для имён файлов и команд, но и внутри некоторых команд, например, внутри команды `yum` — выводит список команд yum.

Быстрое переименование или создание резервной копии:
```
cp file{,.bak}
mv file{,.bak}
```
Аналогично:
```
cp file file.bak
mv file file.bak
```
Может быть полезно, если имя файла длинное.
`Bash` разделяет аргументы, используя специальную переменную `IFS (Internal Field Separator)`. Эту переменную можно переопределить, чтобы выполнить некоторые необходимые команды максимально быстро, например:
```
IFS=":"
read login pass uid gid realname homedir shell < /etc/passwd
echo $login,$pass,$uid,$gid,$realname,$homedir,$shell
root,x,0,0,root,/root,/bin/bash
unset IFS
```
Команда `unset` необходима, иначе `Bash` будет неправильно воспринимать все остальные команды.


Находится в [[Программе установки|Программа установки]].

Внимание! *Все* данные и файловые системы с жёсткого диска будут безвозвратно удалены! Заблаговременно сделайте резервную копию важных данных!

Установка ОС со *всеми пакетами* без участия администратора. После установки необходимо произвести первичную [[настройку системы|Настройка системы]]. Пароли *загрузчика*, пользователей *root* и *user*: *12345678*
В данном примере рассматривается перенос работающей машины на другое (как правило, обновлённое) аппаратное обеспечение: обновление персонального компьютера или сервера, однако описанные инструкции можно применить и для полного резервирования.

Данную процедуру можно выполнить с помощью `dd`, если объёмы жёстких дисков полностью совпадают. В таком случае нужно подключить два диска (старый и новый) к третьей машине и осуществить полные перенос структуры разделов:

```
dd if=/dev/sdb of=/dev/sdc
```

Монтировать диски при этом не обязательно

Внимание! Убедитесь, что обозначения дисков именно те, которые вы ожидаете. В противном случае можно по ошибке удалить важные данные! Используйте утилиту `fdisk`, чтобы убедиться, что команда набрана правильно.

!!!Полное резервирование с помощью tar

Внимание! Перед резервированием отключите все активные системные службы, чтобы исключить изменение данных во время архивирования. Гарантированный способ сделать это - [[загрузиться в режиме single|Параметры ядра]].

Нужно выяснить структуру дисковых разделов, с которой придётся иметь дело. Это можно узнать командой `df`:

```sh
df
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       7,6G  6,0G  1,2G  84% /
tmpfs           3,9G  708K  3,9G   1% /dev/shm
/dev/sda2       481G  443G   14G  98% /home
```

Приведённый выше листинг является типичным для настольной конфигурации: отдельный корневой раздел и `/home` с данными пользователя. Обязательно нужно архивировать корневой раздел плюс все подключённые тома (в данном примере - `/home`). Выполняем резервное копирование, предполагается, что внешний носитель примонтирован в `/backups`.

```sh
tar -cpSvz --selinux --xattrs --ignore-failed-read --one-file-system --exclude=/backups -f /backups/$(hostname)-$(date +%F).tar.gz / /home
```

Флаги --selinux и --xattrs обязательны для сохранения прав доступа. Важнейший параметр - --one-file-system, он говорит tar архивировать строго одну точку монтирования - будут пропущены все виртуальные файловые системы (proc, sys, dev), примонтированные сетевые диски и т. п., именно поэтому нужно вручную указывать каталог /home и прочие точки монтирования, если они есть.

То же самое, но на удалённую машину по ssh:

```sh
tar -cpSvz --selinux --xattrs --ignore-failed-read --one-file-system -f - / /home | ssh root@hostname "cat > /backups/$(hostname)-$(date +%F).tar.gz"
```

!!!Миграция с помощью резервной копии tar

Данный метод сложнее в реализации, чем `dd`, но является более гибким, так как позволяет переносить конфигурацию между не совпадающими по размеру дисками или изменить конфигурацию разбиения дисков. Однако он имеет ряд ограничений:

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

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

Выполните инструкции из пункта по резервированию. На целевой машине разворачиваем архив (имя архива нужно выбрать самостоятельно):

```sh
cd /
tar -xpSvzf /backups/$(hostname)-$(date +%F).tar.gz
```
Утилита `env` получает текущее окружение и модифицирует его.
Формат команды:
```
env [<параметры>] [-] [<переменная>=<значение>]... [<команда> [<аргументы...>]]
```
Если задано `<переменная>=<значение>`, то модифицируется окружение для указанной команды, изменяя только те переменные окружения, которые указаны явно. При наличии параметра `-i` наследуемое окружение полностью игнорируется, и команда выполняется с тем окружением, которое определено командной строкой `env`.

Если команда не задана, то сформированное окружение выдается на стандартный вывод, по одной паре `имя=значение` в строке.
Параметры:

• `-i`, `--ignore-environment` — исполняет команду с пустым окружением;

• `-u`, `--unset=<переменная>` — убирает переменную из окружения.
Команда без параметров считается запущенной с ключом `-i`.
Аналогичная команда — `printenv`, выводит только переменные окружения.
Формат команды:
```
printenv [<переменная...>]
```
Если аргументы не указаны, выводит все переменные окружения, иначе выводит только указанные переменные.
|!Файл|!Описание|
|`~/.ssh/authorized_keys`|Файл содержит список авторизованных открытых ключей для серверов. Когда клиент подключается к серверу, сервер аутентифицирует клиента, проверяя его подписанный открытый ключ, хранящийся в этом файле.|
|`~/.ssh/id_ecdsa`|Закрытый ключ `ECDSA` пользователя.|
|`~/.ssh/id_ecdsa.pub`|Открытый ключ `ECDSA` пользователя.|
|`~/.ssh/id_rsa`|Закрытый ключ `RSA`, используемый `ssh` для версии 2 протокола `SSH`.|
|`~/.ssh/id_rsa.pub`|Открытый ключ `RSA`, используемый `ssh` для версии 2 протокола `SSH`.|
|`~/.ssh/identity`|Закрытый ключ `RSA`, используемый `ssh` для версии 1 протокола `SSH`.|
|`~/.ssh/identity.pub`|Открытый ключ `RSA`, используемый `ssh` для версии 1 протокола `SSH`.|
|`~/.ssh/known_hosts`|Содержит ключи хоста на серверах `SSH`, к которым пользователь обращается. Этот файл очень важен для обеспечения подключения `SSH`-клиента к правильному `SSH`-серверу.|
!!! Просмотр правил по умолчанию

Чтобы узнать, какая зона используется по умолчанию, введите:

```
firewall-cmd --get-default-zone
public
```

На данный момент межсетевой экран не получал никаких инструкций относительно других зон, кроме того, к другим зонам не привязан ни один интерфейс, поэтому сейчас зона `public` является зоной по умолчанию, а также единственной активной зоной.

Чтобы получить список активных зон, введите:

```
firewall-cmd --get-active-zones
public
interfaces: eth0 eth1
```
К зоне public привязаны два сетевых интерфейса: `eth0` и `eth1`. Интерфейсы, привязанные к зоне, работают согласно правилам этой зоны.

Чтобы узнать, какие правила использует зона по умолчанию, введите:

```
firewall-cmd --list-all
public (default, active)
interfaces: eth0 eth1
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
```
Т.е.  `public` является зоной по умолчанию и единственной активной зоной. К `public` привязаны интерфейсы `eth0` и `eth1`. И `public` поддерживает трафик DHCP (присваивание IP-адресов) и SSH (удаленное администрирование).
1. Установите количество дней действия пароля. По истечению срока действия пароля пользователи должны изменить свой пароль.
Этот параметр имеет значение только при создании нового пользователя, а не для уже существующих пользователей.
Если установлено для пользователей, запустите команду: `chage -M (days) (пользователь)`. 
```
sudo vi /etc/login.defs
строка 25: установлен период действия пароля 60 дней

PASS_MAX_DAYS 60
```
2. Установите минимальное количество дней действия пароля.
Пользователи не могут изменить свой пароль в этот период времени.
Этот параметр имеет значение только при создании нового пользователя, а не для уже существующих пользователей.
Если установлено для пользователей, запустите команду: `chage -m (days) (пользователь)`.
```
sudo vi /etc/login.defs
строка 26: установить минимальный период для первого изменения пароля 2 дня

PASS_MIN_DAYS 2
```
3. Установите количество дней для предупреждений до истечения срока действия пароля.
Этот параметр имеет значение только при создании нового пользователя, а не для уже существующих пользователей.
Если установлено для пользователей, запустите команду: `chage -W (days) (пользователь)`.
```
sudo vi /etc/login.defs
строка 28: установить период предупреждения об окончании истечения срока действия пароля 7 дней

PASS_WARN_AGE 7
```
4. Ограничьте использование пароля, который использовался ранее.
Пользователи не могут установить один и тот же пароль в генерации.
```
sudo vi /etc/pam.d/system-auth
строка 15: запретить использовать один и тот же пароль для 5 поколений в прошлом

password     sufficient     pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
```
5. Установите минимальную длину пароля.
Пользователи не могут установить длину пароля меньше этого параметра.
```
установить длину пароля не меньше 8 символов.
authconfig --passminlen=8 --update

параметр задается в конфигурационном файле ниже

sudo grep "^minlen" /etc/security/pwquality.conf

minlen = 8 
```
6. Задайте минимальное количество требуемых классов символов для нового пароля. (Виды ⇒ символ верхнего регистра / символ нижнего регистра  / цифры / другое)
```
установить 2 для минимального количества требуемых классов символов
sudo authconfig --passminclass=2 --update

параметр задается в конфигурационном файле ниже
sudo grep "^minclass" /etc/security/pwquality.conf
minclass = 2 
```
7. Установите максимальное количество разрешенных последовательных символов в новом пароле.
```
установите 2 для максимального количества допустимых последовательных одинаковых символов
sudo authconfig --passmaxrepeat=2 --update

параметр задается в конфигурационном файле ниже
sudo grep "^maxrepeat" /etc/security/pwquality.conf
maxrepeat = 2 
```
8. Установите максимальное количество разрешенных последовательных символов того же класса в новом пароле.
```
установите 4 для максимального количества допустимых последовательных символов одного и того же класса
sudo authconfig --passmaxclassrepeat=4 --update

параметр задается в конфигурационном файле ниже
sudo grep "^maxclassrepeat" /etc/security/pwquality.conf
maxclassrepeat = 4 
```
9. Требовать хотя бы один строчный символ в новом пароле.
```
sudo authconfig --enablereqlower --update

параметр задается в конфигурационном файле ниже
если вы хотите отредактировать значение, отредактируйте его с помощью vi 
sudo  grep "^lcredit" /etc/security/pwquality.conf
lcredit = -1 

```
10. Требовать хотя бы один символ верхнего регистра в новом пароле.
```
sudo authconfig --enablerequpper --update

параметр задается в конфигурационном файле ниже
если вы хотите отредактировать значение, отредактируйте его с помощью vi 
sudo grep "^ucredit" /etc/security/pwquality.conf
ucredit = -1 
```
11. Требовать хотя бы одну цифру в новом пароле.
```
sudo authconfig --enablereqdigit --update

параметр задается в конфигурационном файле ниже
если вы хотите отредактировать значение, отредактируйте его с помощью vi 
sudo grep "^dcredit" /etc/security/pwquality.conf
dcredit = -1 
```
12. Требовать хотя бы один, отличающийся от предыдущих символ в новом пароле
```
sudo authconfig --enablereqother --update

параметр задается в конфигурационном файле ниже
если вы хотите отредактировать значение, отредактируйте его с помощью vi 
sudo grep "^ocredit" /etc/security/pwquality.conf
ocredit = -1 
```
13. Установите максимальную длину монотонных последовательностей символов в новом пароле. (Пример: ⇒ '12345', 'fedcb')
```
sudo vi /etc/security/pwquality.conf

добавить в конце
maxsequence = 3 
```
14.Установите количество символов в новом пароле, которые не должны присутствовать в старом пароле.
```
sudo vi /etc/security/pwquality.conf

добавить в конце
difok = 5 
```
15. Проверьте, содержат ли слова более 3 символов из поля GECOS записи passwd пользователя в новом пароле.

```
sudo  vi /etc/security/pwquality.conf

добавить в конце
gecoscheck = 1 
```

*Примечание*. Поле GECOS хранит вспомогательную информацию о пользователе (номер телефона, адрес, полное имя и так далее). Оно не имеет чётко определённого синтаксиса.
Служба `fingerd` предполагает, что в нём содержатся следующие элементы, разделённые запятыми:
```
Полное имя
Адрес офиса или домашний адрес
Рабочий телефон
Домашний телефон
```
С помощью утилиты `chfn` можно изменять эту информацию, а с помощью `finger` - узнать, например, полное имя любого пользователя в системе. 

16. Установите Space список слов, которые не должны содержаться в пароле.
```
sudo vi /etc/security/pwquality.conf

добавить в конце
badwords = denywords1 denywords2 denywords3 
```

*Примечание*. `badwords` - пространственный список слов, которые не должны содержаться в пароле. Это дополнительные слова для проверки словаря `cracklib`. Этот параметр также может использоваться приложениями для эмуляции проверки `gecos` для учетных записей пользователей, которые еще не созданы.

17. Установите алгоритм `hash / crypt` для новых паролей. (По умолчанию - `sha512`)
```
показать текущий алгоритм
sudo authconfig --test | grep hashing

password hashing algorithm is md5
изменить алгоритм sha512

sudo authconfig --passalgo=sha512 --update
sudo authconfig --test | grep hashing
алгоритм хэширования пароля - sha512
```
В графической системе при входе по ssh возникнут трудности при работе с приложениями, которые подключаются к шине D-Bus, возникают ошибки следующего вида:

```
Error org.freedesktop.DBus.Error.ServiceUnknown: ...
```

Это связано с тем, что адрес шины задан в переменной окружения `DBUS_SESSION_BUS_ADDRESS`, и при входе по ssh она не определена.

Решить проблему можно двумя способами.

!!! Запустите в графическом терминале screen или tmux

Если это возможно, оставьте на удалённой машине запущенный из графического терминала screen. Далее зайдите по ssh и подключитесь к screen (`screen -r`). Внутри screen все переменные окружения будут настроены правильно и проблем не возникнет.

!!! Обходной манёвр - определяем адрес шины из окружения других приложений

Запустите команду:

```sh
eval "export $(grep -z DBUS_SESSION_BUS_ADDRESS= /proc/$(/bin/pgrep pulseaudio)/environ)"
```

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

Эту команду можно также добавить в [[.bashrc]], чтобы она выполнялась автоматически.

```sh
if [[ -z $DBUS_SESSION_BUS_ADDRESS ]]; then
  eval "export $(grep -z DBUS_SESSION_BUS_ADDRESS= /proc/$(/bin/pgrep pulseaudio)/environ)"
fi
```
Проверка доступности узла в сети или наличия доступа в интернет выполняется при помощи команды `ping`, например:
```
$ ping www.ru
PING www.ru (194.87.0.50) 56(84) bytes of data.
64 bytes from www.ru (194.87.0.50): icmp_req=1 ttl=54 time=5.94 ms
64 bytes from www.ru (194.87.0.50): icmp_req=2 ttl=54 time=5.29 ms
64 bytes from www.ru (194.87.0.50): icmp_req=3 ttl=54 time=5.26 ms
64 bytes from www.ru (194.87.0.50): icmp_req=4 ttl=54 time=4.85 ms
^C~--- www.ru ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 4.856/5.339/5.945/0.396 ms
```
Для окончания работы программы нажмите сочетание клавиш *Ctrl+C*.

Для ограничения числа пакетов, которые программа должна отослать по заданному адресу, нужно указать параметр -*с* и количество пакетов, например, отправка четырёх ICMP пакетов на сервер www.ru:
```
$ ping -c 4 www.ru
```
Для трассировки маршрута используется команда `traceroute`. Данная утилита последовательно опрашивает все шлюзы, через которые проходят пакеты до указанного адреса, например:
```
$ traceroute www.ru
traceroute to www.ru (194.87.0.50), 30 hops max, 60 byte packets
 1  192.168.10.1 (192.168.10.1)  10.898 ms  10.885 ms  10.867 ms
 ...
 8  195.239.134.154 (195.239.134.154)  20.747 ms  21.806 ms
Ruscomnet-gw.Moscow.gldn.net (194.186.0.38)  22.985 ms
 9  DEMOS-gw.ruscomnet.ru (80.249.128.166)  25.399 ms27.007 ms  27.669    ms
10  iki-c1-vl10.demos.net (194.87.0.111)  40.944 ms41.642 ms  42.633    ms
11  kw1.demos.ru (194.87.5.116)  30.541 ms31.241 ms  10.438 ms
```
Находится в [[Программе установки|Программа установки]]. Программа установки может провести проверку работы оперативной памяти компьютера. Проблемы в работе ОС могут быть вызваны сбоями в работе оперативной памяти. Данная программа позволяет убедиться в корректности работы памяти.
@attr order=a
Программа установки - это программа, управляющая установкой ОС в автоматическом или диалоговом режиме. Запускается с загрузочного DVD или USB.

!img/installer/main.png!

Варианты установки:
[[Установка ОС в графическом режиме|Установка ОС в графическом режиме]]
[[Установка ОС с базовым видеодрайвером|Установка ОС с базовым видеодрайвером]]
[[Установка ОС в режиме командной строки|Настройка и установка ОС в режиме командной строки]]
[[Установка ОС в автоматическом режиме|Установка ОС в автоматическом режиме]]
[[Полная установка ОС в автоматическом режиме|Полная установка ОС в автоматическом режиме]] (пункт "Другие варианты установки").

Дополнительные режимы:
[[Загрузка с жёсткого диска|Загрузка с жёсткого диска]]
[[Восстановление установленной системы|Восстановление установленной системы]] (пункт "Решение проблем").
[[Запуск проверки памяти|Проверка памяти]] (пункт "Решение проблем").
[[Редактирование параметров загрузки|Редактирование параметров загрузки]]
[[Создание программного RAID при установке ОС в графическом режиме]]
! RAID-массив («Избыточный массив независимых дисков»)
 Это технология виртуализации, объединяющая нескольких независимых жестких дисков в единую логическую структуру для повышения надежности и/или скорости их работы. Увеличение быстродействия дисковой подсистемы по сравнению с одиночным диском происходит благодаря параллельным операциям чтения/записи, а применение избыточности информации повышает надежность ее хранения.
Существует множество схем взаимодействия между дисками в `raid`-массиве, которые называются уровнями. Есть 7 основных уровней и различные комбинированные варианты, обозначаемые арабскими цифрами. У каждой схемы работы есть свои сильные и слабые стороны, поэтому она подбирается под конкретную задачу.

*RAID 0*
Дисковый массив состоящий минимум из двух дисков, информация на которые записывается поочередно (принцип чередования). Сначала информация разбивается на одинаковые по длине блоки (обозначим их Аi), которые записываются по очереди на каждый из дисков, составляющих массив. Таким образом, файл может оказаться разделенным на части, которые будут хранится на разных HDD. К плюсам можно отнести существенное увеличение скорости работы, поскольку обработка информации распараллеливается между несколькими дисками. К тому же вся емкость дисков доступна операционной системе. Если применены два диска емкостью 500 ГБ, то в системе будет виден диск объемом 1 ТБ. Но сохранность информации зависит от работоспособности не одного диска, а всех дисков входящих в массив. Если использовать два накопителя, то надежность снижается практически в два раза, поскольку даже в случае проблем только с одним из дисков, теряется вся хранящаяся информация. Результат - повышение скорости работы при снижении надежности системы.
Данный тип массива будет оптимальным выбором, когда требуется обеспечить высокое быстродействие при ограниченном бюджете, а вопрос надежности хранения информации не имеет принципиального значения.

*RAID 1*
Самый простой вариант полноценного `!!! См. также
* [[Управление виртуальными машинами с помощью Virt-manager]], в котором используется принцип зеркалирования. Вся информация в полном объеме записывается одновременно на каждый из накопителей массива. В данном случае во главу угла ставится надежность, поскольку вся информация имеется на всех дисках и выход одного или даже нескольких дисков из строя не создаст проблем, пока остается хотя бы один работоспособный накопитель. Скорость работы данный способ не увеличивает, но главным минус в другом. Поставив в компьютер три диска допустим по 500 Гб каждый и объединив их в массив `RAID 1`, в итоге в системе будет один диск на 500 Гб. Но надежность хранения информации повышается.

Все остальные типы `RAID`-массивов можно считать различными комбинациями двух предыдущих.

`RAID` можно настроить с помощью операционной системы. Поскольку отношения между дисками определяются операционной системой, а не встроенным программным обеспечением аппаратного устройства, такой `RAID` называется программным.

Преимущества программного `RAID`:

* Гибкость: управление `RAID` происходит с помощью операционной системы, потому такой массив можно настроить из работающей системы без перенастройки оборудования; 
* Программный RAID не требует специального аппаратного обеспечения.

Недостатки программного `RAID`:

* Ресурсные затраты: В течение всего срока существования программный RAID критикуют за повышенное ресурсопотребление. Управление массивом занимает циклы процессора и память, которые можно использовать для других целей. Такие программные реализации как `mdadm` почти устраняют эту проблему на современном оборудовании; теперь  расход ресурсов процессора сведён к минимуму и в большинстве случаев незначителен.

!!! См. также
* [[Создание программного RAID - массива]]

Команда `date` выведет сегодняшнее число и время в кратком формате. Для того чтобы получить подробную информацию о дате и времени, вызовите команду `timedatectl`.

!!!! Изменение времени

```
timedatectl set-time 23:26:00
```

!!!! Изменение даты и времени

```
timedatectl set-time '2013-06-02 23:26:00'
```

Здесь YYYY - год, MM - месяц, DD - день.

Внимание! При указании даты всегда указывайте и время, в противном случае время будет сброшено на 00:00.

!!!! Синхронизация времени по сети

Вы можете включить синхронизацию времени по сети, если компьютер подключён к сети Интернет:

```
timedatectl set-ntp 1
```

Примечание. Когда включена синхронизация времени, нельзя менять дату и время вручную.

Отключить синхронизацию можно командой:

```
timedatectl set-ntp 0
```
@attr order=2
Псевдонимы (или *алиасы*) сетевых интерфейсов позволяют подключаться одновременно к нескольким подсетям, используя при этом одно и то же физическое сетевое устройство.

Для создания псевдонима, достаточно создать в `/etc/sysconfig/network-scripts` файл с именем @ifcfg-<интерфейс>:*N*@, где `<интерфейс>` - обозначение существующего интерфейса, @*N*@ - номер псевдонима. В этом файле нужно указать те же параметры, как и у обычного физического интерфейса (IPADDR, NETMASK, GATEWAY, DNS1, DNS2 и т. п.), а также указать параметр `DEVICE=<интерфейс>:N`.

!!!Пример

Файл @*/etc/sysconfig/network-scripts/ifcfg-eth0*@:

```
DEVICE=eth0
BOOTPROTO=none
IPADDR=192.168.1.1
PREFIX=24
```

Файл @*/etc/sysconfig/network-scripts/ifcfg-eth0:0*@:

```
DEVICE=eth0:0
BOOTPROTO=none
IPADDR=10.0.0.1
PREFIX=24
```

!!!Серия псевдонимов

Можно создать сразу несколько псевдонимов с серией IP-адресов. Для этого создайте файл с именем `ifcfg-<интерфейс>-range`, в котором нужно указать примерно следующие параметры:

```
IPADDR_START=192.168.1.105
IPADDR_END=192.168.1.115
CLONENUM_START=5
```

Данная конфигурация создаст 10 псевдонимов с адресами от `192.168.1.105` до `192.168.1.115`, причём нумерация псевдонимов начнётся с `:5`.
В файловой системе могут храниться различные объекты, каждый из которых выполняет свою функцию.

Список типов файлов, которые могут храниться в файловой системе:

* обычный файл;
* каталог;
* специальный файл устройства;
* именованный канал;
* сокет;
* символьная ссылка.

В следующих разделах назначение каждого из этих типов рассмотрено подробнее.

Основные возможности по работе с файловой системой: 

* просмотр списков файлов и каталогов; 
* копирование, создание, перемещение, удаление файлов и каталогов; 
* создание жёстких ссылок на файлы; 
* создание мягких ссылок на файлы и каталоги; 
* чтение различных атрибутов файлов; 
* чтение данных из файлов и запись данных в файл; 
* просмотр свободного места на носителях.

!!! Файлы и их имена

С точки зрения операционной системы файл представляет собой непрерывный поток (или последовательность) байтов определённой длины.

Пользовательские данные хранятся в виде файлов, однако, также при помощи файлов определяются настройки операционной системы, осуществляется доступ к периферийному оборудованию: дискам, принтерам, терминалам, оперативной памяти, сетевым адаптерам.

Также при помощи файлов предоставляется доступ к некоторым внутренним структурам ядра операционной системы.

Доступ к файлу равноправен доступу к устройствам, то есть, можно обратиться к принтеру или терминалу как к обычному файлу, назначить на него права доступа, удалить его.

Каждому файлу соответствует индексный дескриптор файла, или `inode`.

Именно индексный дескриптор содержит необходимую файловой системе информацию о файле, включая информацию о расположении частей файла на носителе, типе файла.

Индексные дескрипторы файлов содержатся в специальной таблице индексных дескрипторов, которая создается при создании файловой системы на носителе.

Каждый логический и физический диск имеет собственную таблицу индексных дескрипторов.

Дескрипторы в этой таблице пронумерованы последовательно, и именно номер дескриптора файла является его истинным именем в системе.

Однако для пользователя такая система имен неудобна.

Поэтому файлам даются понятные пользователю имена.

А также файлы группируются в каталоги.

Для того чтобы администратор идентифицировал файл, файлу присваивается определенная последовательность символов, называемая именем.

Файл в операционной системе хранится в каком-либо каталоге.

А последовательный список каталогов в котором хранится данный файл, называется путем к файлу.

Вся последовательность - путь и имя - называется путевым именем файла.

Все файлы в операционной системе хранятся в корневом каталоге, который имеет путь `«/»`.

Файловое пространство объединено в единое дерево, таким образом, к любому файлу или устройству можно обратиться, начиная с корневого каталога и его путь будет начинаться с символа `«/»`.

Имена файлов имеют длину до 255 символов и состоят из любых символов, кроме символа с кодом `0` и символа `«/»`.

Максимальная длина пути до файла не должна превышать 4095 символов.

В файловых системах нет понятия расширения файла, но расширение файла может хранится как часть имени файла, при этом с точки зрения операционной системы оно не несет никакой информации.

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

Таким образом, точка в имени файла в файловой системе ОС не играет никакой роли, если она находится в середине имени.
 
Однако, если точка расположена в начале имени файла, то такой файл с точки зрения ОС является скрытым для пользователя и скрытые файлы имеют особое поведение, отличное от обычных файлов. 

Например, файлы, в начале имени которых стоит точка, по умолчанию не отображаются файловыми менеджерами.
[[Общее описание установки ОС в графическом режиме|Установка ОС в графическом режиме]]

Необходимо освободить место для устанавливаемой ОС. Выберите "Система", "Место установки", в появившемся окне убедитесь что установлен параметр "Создать разделы автоматически". Нажимаем на кнопки "Готово" и "Освободить", освобождаем место для установки второй системы следуя подсказкам программы установки (кнопка "Уменьшить"). 

Внимание! Освобождать необходимо только свободное от *важных данных* место! Во избежание потери данных, заблаговременно сделайте резервную копию важных данных! 

Нажимаем на кнопку "Освободить", система готова к установке. 
Для начала установки нажмите "Начать установку". Задайте пароль для root и создайте пользователей (пользователей можно создать после установки системы).
После завершения установки нажать на кнопку "Перезагрузка", компьютер перезагрузится.

После установки необходимо произвести первичную [[настройку системы|Настройка системы]].
[[Общее описание установки ОС в графическом режиме|Установка ОС в графическом режиме]]

Для самостоятельного создания разделов, выбрать "Система", "Место установки", в появившемся окне убедитесь что установлены параметры "Создать разделы автоматически" и "Выделить дополнительное пространство".
Нажмите на кнопки "Готово" и "Освободить", освобождаем место для установки второй системы следуя подсказкам программы установки (кнопка "Уменьшить"). 

Внимание! *Все* данные и файловые системы с жёсткого диска *могут быть* безвозвратно удалены! Заблаговременно сделайте резервную копию важных данных! 

Нажимаем на кнопку «Освободить» и возвращаемся в основное меню.

Выбрать «Система», «Место установки», в появившемся окне выбрать параметр «Я настрою разделы» и нажать на кнопку «Готово».

В окне "Разметка вручную", используя кнопку плюс создать три раздела:
* boot (загрузочный), рекомендуется 500 Мбайт;
* swap (подкачка страниц), рекомендуется объём оперативной памяти;
* / (корневой), минимум 6 Гбайт. 

После завершения настроек нажать на кнопку "Готово" и "Принять изменения".

Нажмите "Начать установку". Установите пароль для root и создайте пользователей (пользователей можно создать после установки системы).
После завершения установки нажать на кнопку "Перезагрузка", компьютер перезагрузится.

После установки необходимо произвести первичную [[настройку системы|Настройка системы]].
Находится в [[Программе установки|Программа установки]]

Используется для загрузки и настройки модулей ядра, запускающего ОС.
Пример:
`# vmlinuz initrd=initrd.img inst.stage2=hd:CDLABEL=OS-RT rescue inst.iang=ru_RU.UTF-8 vconsole.keymap=us vconsole.font=UniCyr_8x16 quiet net.ifnames=0 bios devname=0_`
@attr order=f
Резервное копирование и миграция - важная часть системного администрирования. Информация может быть утеряна или повреждена в силу непредвиденных обстоятельств: случайное удаление файлов, сбой оборудования, сбой программного обеспечения, стихийные бедствия. Резервное копирование рекомендуется выполнять регулярно (не реже раза в неделю, в зависимости от того, как часто обновляются данные на сервере) и использовать для этих целей внешние носители (желательно, территориально распределённые).

<<list filter "[tag[резервирование]] [tag[миграция]]">>
Примечание. Если на сервере работают базы данных, то рекомендуется воспользоваться встроенными в СУБД инструментами резервного копирования.
Команда `dd` позволяет сохранить в файл любое блочное устройство путём полного копирования. Можно резервировать как жёсткий диск целиком, так и отдельный том (например, `/dev/sda2`). Перед резервным копированием или восстановлением с помощью `dd` нужно предварительно отмонтировать этот жёсткий диск или том:

```sh
umount /dev/sda
```

Только таким образом можно гарантировать, что в процессе резервирования данные на диске не будут изменены.

Внимание! Резервировать или восстанавливать том или жёсткий диск, на котором находится работающая в данный момент ОС, нельзя. Для резервного копирования системных файлов лучше использовать [[tar|Резервное копирование с помощью tar]]. Для резервного копирования системного образа перезагрузите систему [[в режиме single|Загрузка в режиме single]] или с компакт-диска.

Резервное копирование жёсткого диска целиком выполняется следующим образом:

```sh
dd if=/dev/sda bs=1024k of=/media/storage/backup conv=noerror,sync
```

Стоит отметить, что резервное копирование жёсткого диска с помощью команды dd на этот же диск не допускается. Копирование раздела на тот же жёсткий диск возможно только в том случае, если диск разбит на несколько томов. Например, можно выполнить резервное копирование тома `/dev/sda1` на том `/dev/sda2` при условии, что на `/dev/sda2` достаточно свободного места.

Примечание. Добавляйте параметр `conv=noerror,sync`, чтобы копирование было успешным даже в том случае, если на диске есть битые сектора.

Резервное копирование жёсткого диска целиком на другой диск того же объёма выполняется следующим образом:

```sh
dd if=/dev/sda bs=1024k of=/dev/sdb conv=noerror,sync
```

Резервное копирование жёсткого диска целиком с сохранением таблицы разделов:

```sh
dd if=/dev/sda bs=1024k of=/media/storage/backup conv=noerror,sync
```

Для экономии места копию диска сжимают архиватором:

```sh
dd if=/dev/sda bs=1024k conv=noerror,sync | gzip > /media/storage/backup.gz
```

Универсальный метод, позволяющий "на лету" сохранять резервную копию тома на удалённой машине - использование протокола SSH:

```sh
dd if=/dev/sdc1 conv=noerror,sync | gzip | ssh user@hostname 'cat > backup.gz'
```

Длительность копирования зависит от размера исходного файла.

Восстановление из резервной копии выполняется командой:

```sh
dd of=/dev/sda bs=1024k if=/media/storage/backup
```

Или, из сжатой резервной копии:

```sh
gunzip -c /media/storage/backup.gz | dd of=/dev/sda bs=1024k
```

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

Стоит отметить, что полное копирование жёсткого диска - очень длительная процедура, так как копируются даже те участки диска, которые не содержат данных. Подобные архивы занимают очень много места и как правило полезны при миграции (клонировании) жёсткого диска на другую физическую или виртуальную машину.

!!!Миграция с физической на виртуальную машину

Для миграции на виртуальную машину с сохранением разметки и объёма жёсткого диска достаточно выполнить полное копирование жёсткого диска и подключить его как образ виртуальной машины:

```sh
dd if=/dev/sda bs=1024k of=/media/storage/virtual.img conv=noerror,sync
```

Или, можно сразу создать раздел в формате qcow2:

```sh
qemu-img convert -f raw /dev/sda -O qcow2 /media/storage/virtual.qcow2
```
Выгрузить базу данных домена в файл `slapd.ldif`, замените `example` и `ru` на адрес вашего домена.

@@@sh
sudo slapcat -f slapd.ldif -b "dc=*example*,dc=*ru*"
@@@

Данная команда может выполняться при работающей базе данных.

<<seeAlso ldap>>
Утилита tar - универсальный архиватор и идеально подходит для организации простейшего резервирования. Преимущество утилиты tar заключается в том, что практически не существует такой системы, где бы её не было.

Перед любым резервным копированием следует позаботиться о внешнем источнике, на который будут сохраняться резервные копии. Наиболее популярные варианты - внешний жёсткий диск, подключаемый по USB (подразумевается ручное резервирование) или сетевой диск, например, примонтированный по NFS. Также возможен вариант отправки резервной копии по SSH на удалённый сервер.

Не зависимо от вида резервной копии, требуется остановить любую деятельность в архивируемой части файловой системы, чтобы в процессе резервного копирования данные не менялись. В частности, следует приостановить веб-сервер, файловый сервер, сервер базы данных, т.е. блокировать доступ к ресурсам, которые могут использовать пользователи. В противном случае процесс архивации может быть прерван с ошибкой "file changed as we read it". Поэтому наилучшее время для резервного копирования - 3-4 часа ночи, когда большинство пользователей не активны с полной остановкой всех служб. Если же от сервера требуется непрерывная работа, рекомендуется воспользоваться такой возможностью, как снимки LVM.

Рассмотрим важные параметры tar, которые помогут при резервном копировании:

;--ignore-failed-read
:Игнорировать файлы, которые не удалось прочитать, вместо завершения с ошибкой. Резервирование обычно идет автоматически, поэтому имеет смысл игнорировать ошибки, чтобы весь процесс не останавливался из-за невозможности прочитать один файл.
;--one-file-system
:Запрещает выходить за пределы файловой системы. Рекомендуется всегда использовать при полном резервировании корневого каталога (`/`), в противном случае в резервную копию попадет все содержимое системных файловых систем - `/dev /proc /sys`, и т. д., что может послужить поводом для лишних ошибок в процессе развертывания архива. Любые другие каталоги можно копировать рекурсивно и целиком, убирая этот параметр.
;-p, --preserve-permissions
:Сохранить все разрешения сохраняемых файлов. Обычно резервирование происходит от пользователя root, поэтому параметр можно опустить. Его нужно указывать явно только в случае резервного копирования от пользователя.
;--preserve-order
:Сохранять порядок файлов в каталогах, чтобы после восстановления иметь точные копии и самих каталогов.
;-S, --sparse
:Файлы с наличием "пустот" сохраняются именно с указанием мест и длин пустот, а не как файлы с огромным набором нулей. Рекомендуется включать для уменьшения размеров резервной копии.
;-z, --gzip
:Сжать архив с помощью GZIP. Наилучший баланс производительность/размер архива.
;-g, --listed-incremental=файл_метаданных
:Создать инкрементальную резервную копию.
;-X, --exclude-from=файл_исключений
:Файл содержит список исключений - файлов и каталогов, которые не попадут в архив.
;-T, --files-from
:Список файлов для архивации (если их много, лучше указать список в файле, а не командной строке).
;--selinux
:Сохранить контекст безопасности SELinux.
;--xattrs
:Сохранять расширенные права ACL.

!!!Резервное копирование важного каталога

Tar позволяет полностью выполнить резервную копию важных данных. Резервный файл сжимается архиватором gzip, bzip2, xz или lzma.

Создание резервной копии с использованием программы tar:

```sh
tar  --selinux --xattrs -cpSvzf /media/storage/home.bak.tar.gz /home
```

Или, на удалённую машину по SSH:

```sh
tar --selinux --xattrs -cpSvzf - /home | ssh root@hostname "cat > /backups/home.bak.tar.gz"
```

Восстановление из резервной копии. Перед восстановлением нужно перейти в корневой каталог.

```
cd /
tar -xpSvzf /media/storage/home.bak.tar.gz
```

Примечание. Tar распаковывает архив в текущем каталоге, поэтому нужно перейти в каталог, являющийся родительским для данной резервной копии. В данном примере это корневой каталог (`cd /`).

Операции создания резервных копий автоматизируются с помощью Bash-сценариев. Разработанные сценарии операций по резервному копированию данных добавляются в планировщик задач [[cron|Планировщик задач cron]].

Рекомендуется предварительно тестировать сценарии сохранения/восстановления файлов, прежде чем использовать по назначению. Перед использованием сценариев рекомендуется сделать ещё одну резервную копию.

Внимание! При распаковке архива tar без уведомления удаляет существующие файлы.

!!!Часто распространённые ошибки

* файл архива нужно указывать сразу после параметра `-f`, `tar -cvzf /home backup.tar.gz` - неправильно (tar воспринимает каталог `/home` как имя архива);
* нельзя сохранять архив в архивируемом каталоге, если так получается, что архив находится в архивируемом каталоге, то его нужно добавить в список исключений;
* нельзя архивировать файлы, если они в этот момент изменяются (базы данных, почтовые и файловые сервера нужно выключать перед архивацией).

!!!Тестирование архива

Желательно сохранять рядом с архивом его контрольную сумму. Так можно будет легко впоследствии определить, что архив повреждён перед его распаковкой:

```sh
md5sum *.gz > sum.md5
```

Также можно проверить, что архив распаковывается нормально, просто выведя на экран листинг файлов: `tar -tf *.tar.gz`

!!!См. также

* `man tar`
<<list filter "[tag[tar]] [ignore[^Резервное копирование с помощью tar$]]">>
@attr order=x
<<tagging "решение проблем">>
Большинство графических приложений сообщают о некоторых критических ошибок путём отображения модальных диалогов, однако большинство сообщений отправляется в стандартный вывод ошибок (stderr). Особенность графической системы в том, что администратор не может получить stdout и stderr графических приложений, который запускаются при входе в систему (панель, файловый менеджер, рабочий стол, службы рабочего стола). Соответственно, все сообщения об ошибках теряются.

Однако в графической системе существует механизм, позволяющий перенаправить stdout всех графических приложений сеанса рабочего стола в специальный файл журнала - `~/.xsession-errors`. Для того чтобы включить этот журнал, в файле `/etc/X11/xinit/xinitrc.d/z.sh` закомментируйте строку `exec > /dev/null 2>&1`, после чего выполните повторный вход в систему. Ошибки появятся в `~/.xsession-errors`.

Примечание. Не оставляйте отладочный режим включённым после устранения неполадки. Некоторые сторонние графические приложения, бесконечно генерирующие поток ошибок или сообщений, могут привести к нехватке свободного места на жёстком диске.
[[Общее описание установки ОС в графическом режиме|Установка ОС в графическом режиме]]

Для самостоятельного создания разделов, выбрать "Система", "Место установки", в появившемся окне выбрать параметр "Я настрою разделы" и нажать на кнопку "Готово".

Внимание! *Все* данные и файловые системы с жёсткого диска *могут быть* безвозвратно удалены! Заблаговременно сделайте резервную копию важных данных! 

В окне "Разметка вручную", используя кнопку "+" создать три раздела:
* boot (загрузочный), рекомендуется 500 Мбайт;
* swap (подкачка страниц), рекомендуется объём оперативной памяти;
* / (корневой), минимум 6 Гбайт. 

[img[img/installer/NewOS.png]]

После завершения настроек нажать на кнопку "Готово" и "Принять изменения".

Нажмите "Начать установку". Установите пароль для root и создайте пользователей (пользователей можно создать после установки системы).
После завершения установки нажать на кнопку "Перезагрузка", компьютер перезагрузится.

После установки необходимо произвести первичную [[настройку системы|Настройка системы]].
!!! Запуск сервера OpenSSH

<<tiddler tmpl-install with:openssh-server>>

<<tiddler tmpl-service-enable with:sshd>>

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

```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
```

Чтобы предотвратить это, сделайте резервную копию соответствующих файлов из каталога `/etc/ssh/`. Если данное сообщение появилось на клиенте, выполните очистку файла `~/.ssh/known_hosts` клиента.

!!! Использование проверки подлинности на основе ключа

Для повышения уровня безопасности системы, рекомендуется вход по ключу, создайте на клиенте пары ключей `SSH` и затем выполняйте вход на сервер по ключу, не используя пароль.

[[Создайте на клиенте пару ключей|Создание SSH-ключей]]:

```sh
ssh-keygen
  Generating public/private rsa key pair.
  Enter file in which to save the key (/home/user/.ssh/id_rsa): # нажмите Enter
  Enter passphrase (empty for no passphrase): # нажмите Enter, если не хотите защитить ключ паролем
  Enter same passphrase again: # нажмите Enter
```

[[Скопируйте ключ на сервер|Создание SSH-ключей]] (или несколько серверов, для этого выполните команду несколько раз):

```sh
ssh-copy-id root@myserver.example.ru
Password: # введите пароль администратора на этом сервере
```

Проверьте вход по ssh, что сервер больше не спрашивает пароль:

```sh
# вход на сервер должен осуществляться без запроса пароля
ssh root@myserver.example.ru
```

Отключите вход на сервере по паролю.

```sh
vi /etc/ssh/sshd_config
# найдите строку PasswordAuthentication и замените её:
PasswordAuthentication no
```

<<seeAlso ssh>>
@attr order=e
<<tagging сервер>>
Сетевая файловая служба/система (NFS) - протокол сетевого доступа к файловым системам. NFS предоставляет клиентам прозрачный доступ к файлам и файловой системе сервера. В отличие от других протоколов, NFS осуществляет доступ только к тем частям файла, к которым обратился процесс, и основное достоинство его в том, что он делает этот доступ прозрачным. Это означает, что любое приложение клиента, которое может работать с локальным файлом, с таким же успехом может работать и с файлом на NFS сервере, без каких либо модификаций самой программы.

Существует несколько версий NFS.

* NFS версии 2 (NFSv2) является устаревшей и не поддерживается.
* NFS версии 3 (NFSv3) поддерживает асинхронную запись данных и 64-битные размеры файлов, позволяя клиентам обращаться к файлам размер которых превышает 2Гб.
* NFS версии 4 (NFSv4) работает через сетевые экраны, не требует службу rpcbind, поддерживает ACL права файлов.

Все версии NFS могут использовать TCP/IP протокол для обмена данными, для NFSv4 это условие является обязательным. NFSv3 может использовать протокол UDP. При монтировании сетевой файловой системы по умолчанию используется NFSv4 если ее поддерживает удаленный сервер.

<<tagging NFS sortBy: order>>
Символьная ссылка - специальный файл, в котором хранится указатель на другой файл - относительный или абсолютный путь. Это отличает символьные ссылки от жёстких ссылок, которые являются дубликатом `inode`. Целью ссылки может быть любой объект - другая ссылка, файл, каталог, или даже несуществующий файл. Ссылки используются для удобной организации структуры файлов, кроме того, символьная ссылка может ссылаться на каталоги и на другой дисковый раздел, что невозможно осуществить при помощи жёсткой ссылки. 

Символьные ссылки создаются командой `ln` с параметром `-s`. Жёсткие ссылки создаются также командой `ln`, но без параметра.

Пример создания ссылок:

```sh
mkdir ~/test_dir
cd ~/test_dir
pwd
  /home/user1/test_dir
  mkdir dir1
ln dir1 dir2
  ln: «dir1»: не допускается создавать жёсткие ссылки на каталоги
touch file1
ln file1 file2
ls -1i             # обратите внимание на одинаковый inode
  14943954 dir1
  14943893 file1
  14943893 file2
ln -s dir1 dir2
ls -dil dir1 dir2     # inode для символьных ссылок разные
  14943954 drwxrwxr-x. 2 user user 4096 Июл  1 12:50 dir1
  14943955 lrwxrwxrwx. 1 user user    4 Июл  1 12:52 dir2 -> dir1
```

Определить наличие жёсткой ссылки очень сложно. Дело в том, что ни ссылка, ни сам файл не содержат никакой информации о местонахождении второго файла. Определить наличие жёсткой ссылки на файл возможно только командой `ls -l`, которая во втором столбце отображает количество жёстких ссылок на файл. Если это число больше единицы - это означает, что где-то существует жёсткая ссылка на данный файл (но не сообщает, где именно).

Пример:

```sh
ls -l file1 file2
  -rw-rw-r--. 2 rpg rpg 0 Июл  2 09:21 file1
  -rw-rw-r--. 2 rpg rpg 0 Июл  2 09:21 file2
#           |---количество жёстких ссылок
```

!!! Удаление символьных и жёстких ссылок

Удаление символьной ссылки приведёт только к удалению самой ссылки, но не удалению самого файла, на который она ссылается.

Удаление файла, на который ссылается символьная ссылка, приведёт к тому, что данная ссылка станет нерабочей («битая ссылка»), при этом данные с жёсткого диска будут удалены.

Удаление жёсткой ссылки не приведёт к удалению самого файла, а только к удалению данной ссылки. 

Данные при этом сохраняются. 

Однако, если удалить сам файл, данные также сохранятся и будут доступны по имени ссылки. 

Особенность жёстких ссылок состоит в том, что невозможно после создания жёсткой ссылки на файл определённо сказать, какой файл является оригинальным, а какой - ссылкой, 

т. е. жёсткая ссылка и сам файл равноправны. 

Данные с диска стираются только после того, как на данный файл не останется ни одной жёсткой ссылки.
Файлы символьных устройств - файлы, которые служат интерфейсом к устройствам, осуществляющим собственную буферизацию и побайтовую передачу данных. 

Примером символьного устройства является терминал.

Одно и то же устройство может иметь два интерфейса - и символьный, и блочный. 

Например, можно получить побайтовый доступ к содержимому жёсткого диска.
|!Файл|!Описание|
|`/etc/ssh/moduli`  |Файл содержит простые числа и генераторы, используемые для обмена ключами Диффи-Хеллмана, что важно для построения защищенного транспортного уровня. Когда ключи обмениваются в начале сеанса `SSH`, создается общее секретное значение, которое не может быть определено ни одной из сторон. Это значение затем используется для обеспечения аутентификации хоста.|
|`/etc/ssh/ssh_config`|Файл конфигурации клиента `SSH` по умолчанию. При наличии `~ / .ssh / config` этот файл переопределяется.|
|`/etc/ssh/sshd_config`|Конфигурационный файл для службы `sshd`.|
|`/etc/ssh/ssh_host_ecdsa_key`|Закрытый ключ `ECDSA`, используемый службой `sshd`. |
|`/etc/ssh/ssh_host_ecdsa_key.pub`|Открытый ключ `ECDSA`, используемый службой `sshd`.|
|`/etc/ssh/ssh_host_key`|Закрытый ключ `RSA`, используемый службой `sshd` для версии 1 протокола `SSH`.|
|`/etc/ssh/ssh_host_key.pub`|Открытый ключ `RSA`, используемый службой `sshd` для версии 1 протокола `SSH`.|
|`/etc/ssh/ssh_host_rsa_key`|Закрытый ключ `RSA`, используемый службой `sshd` для версии 2 протокола `SSH`.|
|`/etc/ssh/ssh_host_rsa_key.pub`|Открытый ключ `RSA`, используемый службой `sshd` для версии 2 протокола `SSH`.|
|`/etc/pam.d/sshd`|Файл конфигурации `PAM` для службы `sshd`.|
|`/etc/sysconfig/sshd`|Файл конфигурации для службы `sshd`.|
Команда `passwd` позволяет установить пароль локальному пользователю, срок его действия, предупреждение пользователю об окончании срока действия пароля, срок блокировки учётной записи:

@# passwd -x *XX* -w *XX* -i *XX* *username*@

`-x` - максимальный срок действия пароля;
`-w` - за сколько дней до истечения пароля начать предупреждать пользователя;
`-i` - через сколько дней после истечения пароля заблокировать учетную запись;
@*XX*@ - число дней;
@*username*@ - имя пользователя.
Чтобы создать пару ключей для SSH, выполните команду:

```sh
ssh-keygen
  Generating public/private rsa key pair.
  Enter file in which to save the key (/home/USER/.ssh/id_rsa): # нажмите Enter, расположение ключа по умолчанию
  Enter passphrase (empty for no passphrase): # нажмите Enter, если не хотите защитить ключ паролем
  Enter same passphrase again: # нажмите Enter
```

Примечание. Рекомендуется защитить ключ паролем, чтобы им нельзя было воспользоваться в случае утечки ключа. Для того чтобы каждый раз не вводить пароль от ключа, [[используйте SSH-агент|Настройка ssh-agent]]. Из соображений безопасности не используйте тот же пароль, который используется для входа в свою учетную запись.

После создания ключа, вы получите сообщение, подобное этому:

```
Your identification has been saved in /home/USER/.ssh/id_rsa.
Your public key has been saved in /home/USER/.ssh/id_rsa.pub.
The key fingerprint is:
e7:97:c7:e2:0e:f9:0e:fc:c4:d7:cb:e5:31:11:92:14 USER@penguin.example.com
The key's randomart image is:
+--[ RSA 2048]----+
|             E.  |
|            . .  |
|             o . |
|              . .|
|        S .    . |
|         + o o ..|
|          * * +oo|
|           O +..=|
|           o*  o.|
+-----------------+
```

По умолчанию права доступа каталога `~/.ssh/` установлены в `rwx ------` или `700`, выраженные в восьмеричной записи, чтобы только пользователь мог просматривать содержимое.

!!! Вход на удалённую машину по ключу

Скопируйте ключ на сервер, чтобы иметь возможность входа на него под пользователем `USER` без пароля:

```sh
ssh-copy-id USER@myserver.example.ru
Password: # введите пароль пользователя USER на этом сервере
```

Эта команду добавит содержимое публичного ключа клиента в файл `~/.ssh/authorized_keys` на компьютере, к которому нужно подключиться.

Проверьте вход по ssh, что сервер больше не спрашивает пароль:

```sh
# вход на сервер должен осуществляться без запроса пароля
ssh root@myserver.example.ru
```

По умолчанию копируется ключ `~/.ssh/id_rsa.pub`. В качестве альтернативы вы можете указать имя файла открытого ключа, если у вас несколько ключей или ключ с нестандартным именем:

```
ssh-copy-id -i ~/.ssh/my_key.pub USER@server.example.ru
```
:Скачайте <<tiddler tmpl-get-iso>>.
Сохраните его в директории home/OSRT 
Для создания виртуальной машины выполните команду:
```
sudo virt-install --name=OS-RT --ram=512 --boot=cdrom,hd --cdrom=/home/OSRT/http://OS-RT-2.0-x86_64-LATEST-DVD.iso --os-type=linux --graphics=vnc,password=123456 -w bridge:br0 --autostart --nodisks
```
@attr order=x
Для установки ОС на компьютер, создайте загрузочный DVD-диск с образом ОС.

Примечание. Данный способ подходит только для компьютеров с записывающим оптическим приводом.

# Скачайте [[последний образ операционной системы с сайта|http://downloads.os-rt.ru]]
# Вставьте *чистый* DVD-диск в оптический привод компьютера.
# Запишите iso-образ на DVD-диск с помощью программы записи оптических дисков:
## В Windows - ПКМ по образу диска, "Записать".
## В операционной системе «ОСь»:
*** из командной строки: @wodim dev=/dev/cdrom -v *distrib.iso*@, где @*distrib.iso*@ - путь до iso-образа ОС;
*** из графического интерфейса: ПКМ по образу диска -> "Открыть с помощью" -> "Открыть с помощью Запись дисков".
@attr order=x
Для того чтобы установить ОС на компьютер, не имеющий DVD-привода, можно воспользоваться возможностью установки с USB-носителя.

Внимание! Предлагаемый метод удалит *все* данные и файловые системы с USB-носителя. Заблаговременно сделайте резервную копию важных данных!

! Windows

# Скачайте <<tiddler tmpl-get-iso>>.
# Скачайте [[Win32 Disk Imager|https://sourceforge.net/projects/win32diskimager]]
# Распакуйте zip-архив Win32 Disk Imager.
# Вставьте в компьютер USB-носитель ёмкостью >=2Гб для записи на него скачанного ранее iso-образа. *ВНИМАНИЕ!* Убедитесь, что на выбранном вами носителе нет никаких важных данных, так как на последующих шагах все они будут уничтожены.
# Зайдите в распакованную папку и запустите приложение `Win32DiskImager.exe`
# В группе `Image file` щёлкните по кнопке с иконкой папки. В открывшемся диалоговом окне выбора файла найдите и выберите скачанный ранее образ операционной системы «ОСь»; для этого потребуется снять фильтр, приводящий к отображению лишь файлов с расширением `.img` - в соответствующем выпадающем списке выберите пункт `*.*`
# В выпадающем списке `Device` выберите привод, на который вы собираетесь записать iso-образ. *ВНИМАНИЕ!* Выбрав неправильный привод, вы можете потерять данные на вашем жёстком диске или другом носителе.
# Нажмите на кнопку `Write`.
# В появившемся диалоговом окне `Confirm overwrite` нажмите `Yes`.
# Дождитесь завершения записи образа. Это может занять несколько минут.
# Выйдите из программы записи, нажав кнопку `Exit`.

Если вы решили использовать другую программу записи образа, убедитесь, что она производит низкоуровневую запись (ключевые слова: dd, byte-by-byte, raw и т. п.), так как в противном случае имплантированные в iso-образ контрольные суммы могут быть проигнорированы или не соответствовать содержимому носителя после записи.

! Linux

# Скачайте <<tiddler tmpl-get-iso>>.
# Вставьте в компьютер USB-носитель ёмкостью >=2Гб для записи на него скачанного ранее iso-образа. *ВНИМАНИЕ!* Убедитесь, что на выбранном вами носителе нет никаких важных данных, так как на последующих шагах все они будут уничтожены.
# [[Определите метку диска|Определение метки USB-носителя]] в файловой системе `/dev`. Она должна иметь вид @sd*X*@, где @*X*@ - буква диска, например, @sd*b*@. Путь до данного устройства будет выглядеть следующим образом: @/dev/sd*X*@. **ВНИМАНИЕ!** Ошибка в определении метки диска может привести к уничтожению ваших данных на последующих шагах.
# Отмонтируйте этот носитель командой @umount /dev/sd*X*@. (Если команда выдаёт сообщение, что @/dev/sd*X*@ не примонтирован, просто проигнорируйте его.)
# Запишите iso-образ на USB-носитель @/dev/sd*X*@: @dd if=*os-image.iso* of=/dev/sd*X* bs=8M status=progress@. Это может занять несколько минут. Здесь @*os-image.iso*@ - путь до iso-образа диска.

В конфигурации системы с одним жёстким диском вставленный USB-носитель обычно располагается по пути `/dev/sdb`. В таком случае команда примет следующий вид: @dd if=*os-image.iso* of=/dev/sdb bs=8M status=progress@.
@attr alias=firewall-zone
Межсетевой экран предоставляет много предопределенных зон, которых в большинстве случаев достаточно для работы. 

Но в некоторых ситуациях возникает необходимость создать пользовательскую зону.

Например, для веб-сервера можно создать зону `publicweb`, а для DNS-сервиса – зону `privateDNS`.

Создавая зону, нужно добавить её в постоянные настройки межсетевого экрана.

Для создания этих зон выполните:

```
sudo firewall-cmd --permanent --new-zone=publicweb
sudo firewall-cmd --permanent --new-zone=privateDNS
```

Убедитесь, что зоны существуют:

```
sudo firewall-cmd --permanent --get-zones
block dmz drop external home internal privateDNS public publicweb trusted work
```

В текущей сессии новые зоны не будут доступны:

```
firewall-cmd --get-zones
block dmz drop external home internal public trusted work
```

Чтобы получить доступ к новым зонам, перезапустите межсетевой экран:

```
sudo firewall-cmd --reload
firewall-cmd --get-zones
block dmz drop external home internal privateDNS public publicweb trusted work
```

Теперь нужно присвоить новым зонам требуемые сервисы и порты. К примеру, в зону `publicweb` можно добавить `SSH`, `HTTP` и `HTTPS`.

```
sudo firewall-cmd --zone=publicweb --add-service=ssh
sudo firewall-cmd --zone=publicweb --add-service=http
sudo firewall-cmd --zone=publicweb --add-service=https
sudo firewall-cmd --zone=publicweb --list-all
publicweb
interfaces:
sources:
services: http https ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
```

В зону `privateDNS` можно добавить `DNS`:

```
sudo firewall-cmd --zone=privateDNS --add-service=dns
sudo firewall-cmd --zone=privateDNS --list-all
privateDNS
interfaces:
sources:
services: dns
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
```

Далее, привяжите сетевые интерфейсы к новым зонам:

```
sudo firewall-cmd --zone=publicweb --change-interface=eth0
sudo firewall-cmd --zone=privateDNS --change-interface=eth1
```

Протестируйте настройку. Если всё работает правильно, добавьте эти правила в постоянные настройки.

```
sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh
sudo firewall-cmd --zone=publicweb --permanent --add-service=http
sudo firewall-cmd --zone=publicweb --permanent --add-service=https
sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns
```

Далее, настройте сетевые интерфейсы для автоматического подключения к правильной зоне.

К примеру, `eth0` будет привязан к `publicweb`:

```
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
. . .
IPV6_AUTOCONF=no
DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=8.8.8.8
ZONE=publicweb
```

А интерфейс `eth1` будет привязан к `privateDNS`:

```
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1
. . .
NETMASK=255.255.0.0
DEFROUTE='no'
NM_CONTROLLED='yes'
ZONE=privateDNS
```

Перезапустите сетевые сервисы и межсетевой экран:

```
sudo systemctl restart network
sudo systemctl restart firewalld
```
Проверьте зоны:

```
firewall-cmd --get-active-zones
privateDNS
interfaces: eth1
publicweb
interfaces: eth0
```

Убедитесь, что в зонах работают нужные сервисы:

```
firewall-cmd --zone=publicweb --list-services
http htpps ssh
firewall-cmd --zone=privateDNS --list-services
dns
```
Пользовательские зоны полностью готовы к работе. Любую из них можно сделать зоной по умолчанию. 

Например:

```
sudo firewall-cmd --set-default-zone=publicweb
```
Команда `useradd` создаёт обычного локального пользователя с именем `<username>` без каких либо полномочий:

```
# useradd <username>
# passwd <username>
```
@attr order=b
Создание и настройка пользователей производится системным администратором.

<<tagging "создание пользователей">>
@attr mls=1
Данный вид пользователей получает возможность изменять свой мандатный уровень в пределах установленного диапазона. Для создания такого пользователя нужно выполнить команду:

`# z-adm useradd <username> s2`

Эта команда позволяет создать пользователя с одним несекретным уровнем и двумя мандатными уровнями.

Данная команда аналогична выполнению следующего листинга:

```
# useradd -Z user_u <username>
# passwd <username>
# semanage login -a -r s0-s2 <username>
```
@attr mls=1

При [[установке системы|install-os]] во время копирования пакетов система предлагает создать пользователя и задать пароль [[администратора root|Администрирование пользователем root]]. Для того чтобы создать администратора, установите галочку "Сделать этого пользователя администратором" при создании пользователя. Если вы не создали пользователя-администратора на этапе установки или пропустили этот этап, воспользуйтесь инструкцией ниже.

Для того чтобы создать пользователя, который будет выполнять администрирование системы, выполните команды (может потребоваться выход от root):

@@@
sudo useradd -G wheel *<adminname>*
sudo passwd *<adminname>*
@@@

Или, сделать существующего пользователя администратором:

@@@
usermod -aG wheel *<adminname>*
@@@

Эти команды добавят вашего пользователя в особую группу `wheel`. Пользователи, входящие в эту группу, могут выполнять задачи администрирования через команду `sudo`.

Далее после входа в систему этим пользователем, он сможет выполнять задачи администратора следующим образом:

@@@
sudo *<команда, выполняемая с полномочиями системного администратора>*
@@@

При этом `sudo` попросит ввести пароль пользователя `<adminname>`, а не root. При повторном вызове команды `sudo` пароль не запрашивается.
!!! Добавление службы в зону

Проще всего добавить службу или порт в [[зону|firewall-zone]], которую использует межсетевой экран. Просмотрите доступные службы:

```
firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability
http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd
ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius
rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server
wbem-https
```

Примечание. Больше информации о каждом конкретной службе можно найти в файлах `.xml` в каталоге `/usr/lib/firewalld/services`. К примеру, сведения о службе SSH хранятся в `/usr/lib/firewalld/services/ssh.xml` и выглядят так:

```
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol="tcp" port="22"/>
</service>
```

Чтобы включить поддержку службы в той или иной зоне, используйте опцию `--add-service=`. Указать целевую зону можно с помощью опции `--zone=`. По умолчанию эти изменения будут работать в течение одной сессии (до перезагрузки компьютера). Чтобы сохранить изменения и использовать их на постоянной основе, добавьте флаг `--permanent`.

Например, чтобы запустить веб-сервер, для начала нужно открыть порт веб-сервера в зоне `public`:

```
sudo firewall-cmd --zone=public --add-service=http
```

В стандартной установке системы зона public является зоной по умолчанию, поэтому эту команду можно написать в сокращённом варианте:

```
sudo firewall-cmd --add-service=http
```

Убедитесь, что операция выполнена успешно:

```
firewall-cmd --zone=public --list-services
dhcpv6-client http ssh
```

Протестируйте работу службы веб-сервера. Если всё работает правильно, превратите временные настройки в постоянные.

```
sudo firewall-cmd --runtime-to-permanent
```

Чтобы просмотреть список постоянных правил, введите:

```
sudo firewall-cmd --zone=public --permanent --list-services
dhcpv6-client http ssh
```

Теперь зона `public` поддерживает `HTTP` и порт 80 на постоянной основе. Если веб-сервер может обслуживать трафик `SSL/TLS`, вы также можете добавить сервис `https` (для одной сессии или в набор постоянных правил):

```
sudo firewall-cmd --zone=public --add-service=https
sudo firewall-cmd --runtime-to-permanent
```
! Выбор дисков для RAID массивов
Для отображения подключенных дисков выполним команду:
```
sudo fdisk -l | grep "Disk /dev/sd"

Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/vdb: 19.3 GB, 19327352832 bytes, 37748736 sectors
Disk /dev/vdc: 19.3 GB, 19327352832 bytes, 37748736 sectors
Disk /dev/vdd: 11.8 GB, 11811160064 bytes, 23068672 sectors
Disk /dev/vde: 19.3 GB, 19327352832 bytes, 37748736 sectors
```
На vda установлена система. Из vdb и vdс создайте «зеркальный» RAID массив уровня 1 (RAID1) для баз данных, а из vdd и vde RAID1 для логов баз данных.
! Создание RAID массива

Установите утилиту `mdadm`:
```
sudo yum install mdadm -y
```
Выполним следующие команды для создания массивов для БД и логов:
```
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/vdb /dev/vdc
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 18857984K
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

sudo mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/vdd /dev/vde
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 11526144K
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
```
На вопрос `Continue creating array?` ответьте `yes`.

где:

* `/dev/md0` и `/dev/md1` — создаваемые массивы;
* `level=1` — зададим тип массива (0, 1, 5, 6);
* `raid-devices=2` — количество дисков в массиве;
* `/dev/vdb`, `/dev/vdc`, `/dev/vdd` и `/dev/vde` — диски, из которых собираются массивы.

 Проверьте результат выполнения команд:
```
sudo cat /proc/mdstat

Personalities : [raid1] 
md1 : active raid1 vde[1] vdd[0]
      11526144 blocks super 1.2 [2/2] [UU]
      
md0 : active raid1 vdc[1] vdb[0]
      18857984 blocks super 1.2 [2/2] [UU]
      unused devices: <none>

```

! Настройка RAID массива

Отформатируйте массив.  В качестве файловой системы выберите `ext4`:
```
sudo mkfs.ext4 /dev/md0
sudo mkfs.ext4 /dev/md1
```
Создайте конфигурационный файл для утилиты `mdadm`:
```
sudo bash -c 'mdadm --detail --scan --verbose > /etc/mdadm.conf'
```
Создайте точки монтирования — каталоги `/raid200`  и `/raid120`:
```
sudo mkdir /raid200
sudo mkdir /raid120
```
Монтируйте созданные `RAID` массивы в каталог `/raid`:
```
sudo mount /dev/md0 /raid200
sudo mount /dev/md1 /raid120
```
Для автоматического монтирования `RAID` массивов при загрузке системы выполните команду:
```
sudo vi /etc/fstab
```
в открывшемся файле добавьте строки:
```
/dev/md0 /raid200 ext4 defaults 1 2

/dev/md1 /raid120 ext4 defaults 1 2
```
! Примеры использования mdadm

*Пометка диска как сбойного*
Диск в массиве можно условно сделать сбойным, ключ `—fail (-f)`:
```
sudo mdadm /dev/md0 --fail /dev/vdc
sudo mdadm /dev/md0 -f     /dev/vdc
```

*Удаление сбойного диска*
Сбойный диск можно удалить с помощью ключа `—remove (-r)`:
```
sudo mdadm /dev/md0 --remove /dev/vdc
sudo mdadm /dev/md0 -r       /dev/vdc
```

*Добавление нового диска*
Добавить новый диск в массив можно с помощью ключей `—add (-a)` и `—re-add`:
```
sudo mdadm /dev/md0 --add /dev/vdc
sudo mdadm /dev/md0 -a    /dev/vdc
```

*Сборка существующего массива*
Собрать существующий массив можно с помощью `mdadm —assemble`. Как дополнительный аргумент указывается, нужно ли выполнять сканирование устройств, и если нет, то какие устройства нужно собирать.
```
sudo mdadm --assemble /dev/md0 /dev/vdb1 /dev/vdc1 /dev/vdd1 /dev/vde1
sudo mdadm --assemble --scan
```

*Расширение массива*
Расширить массив можно с помощью ключа `—grow (-G)`. Сначала добавляется диск, а потом массив расширяется:
```
sudo mdadm /dev/md0 --add /dev/vdb1
```
Проверьте, что диск (раздел) добавился:
```
sudo mdadm --detail /dev/md0
sudo cat /proc/mdstat
```
После успешного добавления массива, его можно расширить:
```
sudo mdadm -G /dev/md0 --raid-devices=4
```
Опция `—raid-devices` указывает новое количество дисков используемое в массиве. Например, было 3 диска, а расширяем до 4-х — указываем 4.
Рекомендуется задать файл бэкапа на случай прерывания перестроения массива, например добавить:
```
sudo mdadm -G /dev/md0 --raid-devices=4--backup-file=/var/backup
```
При необходимости, можно регулировать скорость процесса расширения массива, указав нужное значение в файлах:
```
/proc/sys/dev/raid/speed_limit_min
/proc/sys/dev/raid/speed_limit_max
```
Чтобы проверить расширение массива, выполните команду:
```
cat /proc/mdstat
```
Нужно обновить конфигурационный файл с учётом сделанных изменений:
```
sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf
vi /etc/mdadm/mdadm.conf
```
[img[img/Raid/Raid-1.png]] 
[img[img/Raid/Raid-2.png]] 
[img[img/Raid/Raid-3.png]]
[img[img/Raid/Raid-4.png]] 
[img[img/Raid/Raid-5.png]] 
[img[img/Raid/Raid-6.png]] 
Для того чтобы создать раздел в `tmpfs` достаточно выполнить команду:

```bash
mkdir /mnt/tmpfs
mount -t tmpfs -o size=10G tmpfs /mnt/tmpfs
```

после чего каталог `/mnt/tmpfs` будет примонтирован в RAM, и его максимально допустимый размер - 10Gb. 
Формат команды следующий:

```bash
mount -t [TYPE] -o size=[SIZE] [FSTYPE] [MOUNTPOINT]
```

где:
* `[TYPE]` - тип RAM (**`tmpfs`** или `ramfs`) для использования. Рекомендуется использовать `tmpfs` как более новую и функциональную.
* `[SIZE]` - максимально допустимый размер ФС.
* `[FSTYPE]` - какой тип ФС использовать в точке монтирования (`tmpgs`, `ext4`, ...).
* `[MOUNTPOINT]` - точка монтирования


!! /tmp

Чтобы примонтировать `/tmp` в `tmpfs`, необходимо добавить в `/etc/fstab` следующие строчки:

```bash
tmpfs   /tmp    tmpfs   nodev,nosuid,size=2G          0  0
```

или включить соответствующий сервис `systemd`:

```
// текущий статус
# systemctl is-enabled tmp.mount
disabled
# systemctl enable tmp.mount
```

Примонтировать `/tmp` "на лету" можно по аналогии с командами выше:

```bash
mount -t tmpfs -o size=2G tmpfs /tmp
```
Проверьте, что настроено сетевое имя сервера.

```sh
hostname -s # должно отобразиться имя сервера без домена
myserver
```

Если сетевое имя не отображается или отображается `localhost`, [[создайте сетевое имя сервера|Настройка сетевого имени узла]].

Для тестирования и личного использования вы можете создать самоподписанный сертификат, который будет использоваться для шифрования сетевых соединений. Если же необходимо настроить сервер для работы в Интернете, необходимо купить SSL-сертификат у одного из доверенных удостоверяющих центров.

Создайте ключ и CSR.

```sh
cd /etc/pki/tls/private
# создайте ключ
sudo openssl genrsa -out $(hostname -s).key 2048
# создайте CSR
sudo openssl req -new -key $(hostname -s).key -out $(hostname -s).csr
# заполните параметры в интерактивном режиме
Country Name (2 letter code) [XX]: RU # введите код страны
State or Province Name (full name) []: # Enter
Locality Name [Default City]: Moscow # введите город
Organization Name [Default Company Ltd]: My Company Name # название организации
Organizational Unit Name []: My Department Name # департамент/отдел
Common Name []: myserver.example.ru # FQDN (полный адрес) данного сервера
Email Address []: admin@example.ru # адрес электронной почты администратора
A challenge password []: # Enter
An optional company name []: # Enter

# ключи не должны быть доступны на чтение кому-либо кроме root
sudo chmod 600 $(hostname -s).csr $(hostname -s).key
```

Создайте самоподписанный сертификат сроком действия 10 лет.

```
sudo openssl x509 -req -days 3650 -in $(hostname -s).csr -signkey $(hostname -s).key -out ../certs/$(hostname -s).crt
```
Сокеты - одна из форм межпроцессного взаимодействия, также могут использоваться для доступа к сети. Многие системные службы работают через сокеты, что обеспечивает сетевую прозрачность.
! Имя команды
Имя команды&nbsp;— её строковый идентификатор, совпадающий с&nbsp;именем программы. Некоторые команды (такие как `echo`) являются встроенными для командной оболочки и&nbsp;для их выполнения вызывается не программа, а&nbsp;внутренняя функция оболочки. Например, `/bin/echo` и `echo` — разные команды, первая является программой, вторая&nbsp;— функцией командной оболочки.

*Аргумент*

Практически любой команде можно передать аргументы командной строки. Аргументом может являться текстовая строка, соответствующая имени файла или другого объекта. Аргументы разделяются символом пробела. Чтобы передать в&nbsp;качестве аргумента строку символов с&nbsp;пробелами, нужно использовать экранирование, например символами кавычек:
```
echo "Hello, world."
Hello, world.
```
Аргументы принято различать:

* непосредственно аргумент команды, обозначающий имя параметра данной команды;
* значение данного параметра. 

В большинстве программ с интерфейсом командной строки аргументы могут быть короткими и длинными. Короткие аргументы начинаются с одного символа `-` (дефис) и содержат один символ, следующий за дефисом (например, `-f`, `-o`, `-A`), а длинные аргументы начинаются с двух дефисов (`–`), после которых следует ключевое слово аргумента (например, `--list`, `--force`, `--context`). Короткие аргументы можно объединять, например, набор аргументов `-l -s -a` будет эквивалентен аргументу `-lsa`. Формат аргументов командной строки носит рекомендательный характер и не все программы могут следовать общепринятому формату аргументов.

*Экранирование символов*

Экранирование символов&nbsp;— замена управляющих символов на соответствующие текстовые подстановки. Символ экранирования «\» сообщает командной оболочке, что символ, стоящий за ним, надо воспринимать буквально. Символы, нуждающиеся в экранировании: пробел «&nbsp;», кавычка (одинарная «'» и двойная «"»), обратный апостроф «`», доллар «$», и&nbsp;непосредственно сам символ экранирования «\».

При передаче аргумента в&nbsp;команду все управляющие символы командной оболочки необходимо экранировать одним из следующих способов:

• заключение аргумента в кавычки (одинарные или двойные);

• экранирование каждого спецсимвола.

При экранировании двойными кавычками командная оболочка воспринимает знак доллара и обратный апостроф как спецсимволы, поэтому внутри двойных кавычек необходимо экранировать знак доллара, обратный апостроф и саму двойную кавычку. Внутри одинарных кавычек нужно экранировать только одинарную кавычку.

Примеры.
```
echo "Hello world"
Hello world
echo 'Hello world'
Hello world
a=world
echo "Hello $a"
Hello world
echo 'Hello $a'
Hello $a
echo "Hello \$a"
Hello $a
echo "`pwd`"
/home/user
echo "\`pwd\`"
`pwd`
```

*Перенаправления*

Стандартный ввод и&nbsp;вывод каждой команды может быть перенаправлен в&nbsp;файл или другую программу. По умолчанию ввод и&nbsp;вывод команды связываются с&nbsp;пользовательским терминалом. Для указания источника ввода или назначения вывода (для обычной информации и&nbsp;для ошибок отдельно) используются специальные символы (`<`,&nbsp;`>`,&nbsp;`|`&nbsp;и&nbsp;`>>`). Поставив цифру перед знаком перенаправления, можно указать, какой поток вывода нужно перенаправить: `1` соответствует стандартному выводу (по умолчанию), `2`&nbsp;— поток ошибок `stderr`. Возможен особый режим перенаправления&nbsp;— перенаправление всех потоков, которой активируется символом `&` перед одним из знаков перенаправления `<`, `>` или `>>`. Также можно указать явно командному интерпретатору, какой вывод нужно перенаправить, в&nbsp;частности, для перенаправления потока ошибок в&nbsp;стандартный вывод нужно добавить к&nbsp;команде сочетание символов `2>&1`.

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

Примеры.

Перенаправление всех ошибок в&nbsp;`/dev/null`:
```
ls 2>/dev/null
```
Перенаправление вывода команды в&nbsp;файл:
```
ls > out.txt
```
Перенаправление вывода команды в&nbsp;другую команду:
```
ls | grep file
```
Перенаправление всех потоков, включая поток ошибок в&nbsp;`/dev/null`:
```
ls non-exestent-file &> /dev/null
```
Перенаправление всех потоков, включая поток ошибок в&nbsp;другую команду:
```
ls non-exestent-file 2>&1 | cat
```
Перенаправление потока ошибок в&nbsp;файл `errors.log`:
```
find /etc -name passwd 2> errors.log
```

*Универсальные параметры команд*

Большинство команд не только подчиняются стандартизированному формату аргументов командной строки, но и&nbsp;имеют некоторые стандартные аргументы:

`-h,&nbsp;-?,&nbsp;--help` Выводит краткую справку о программе.

`-v,&nbsp;-V,&nbsp;--version` Выводит информацию о версии программы.

`-v,&nbsp;-vv,&nbsp;--verbose` «Подробный режим», программа выводит диагностическую информацию о выполняемых действиях, некоторые программы поддерживают разные уровни диагностических сообщений от менее подробных до более подробных путем указания числа (`-v1`, `-v2`) или параметра `-vv`, `-vvv`.

`-` Использование символа дефиса вместо аргумента файла часто означает, что файл нужно считать из стандартного ввода, что удобно про использовании команд в конвейере.

`--` Два символа дефиса обозначают окончание параметров, после этого любые аргументы не воспринимаются как параметры.

Не все команды подчиняются данному правилу, поэтому иногда стоит попробовать несколько вариантов получения справки или информации о версии. Данные параметры опущены для большинства команд, если только они не имеют другое специальное значение.

Примеры.

Показать краткую справку по команде `ls`:
```
ls --help
```
Команда `cat` в качестве входного файла использует стандартный ввод:
```
cat - < /etc/passwd
```
Команда `ls` отображает информацию по файлу с именем `-l`:
```
ls -- -l
```
При этом поведение нижеследующей команды отличается, так как `-l` является особым параметром для команды `ls`:
```
ls -l
```
@attr order=c
Коллекция небольших команд, полезных при администрировании и разработке. Команды вводятся в [[терминале|Использование командной строки]].

!!!Подразделы

<<list filter "[tag[bash]] [sort[title]]" template:bash-commands-tmpl>>
`rpm -qa | grep '^coreutils'` - поиск пакета среди установленных в системе
`rpm -qa` - выводит список всех пакетов в системе
`rpm -qf /bin/pwd` - выводит имя пакета, которому принадлежит данный файл
`rpm -qi grep` - выводит информацию о пакете. Используйте `<Tab>` для автодополнения имени пакета
`rpm -ql grep` - выводит список файлов, принадлежащих пакету
`rpm -V grep` - выполняет проверку целостности пакета
`rpm -i package.src.rpm` - распаковать пакет с исходными текстами в `~/rpmbuild`
`rpm -qa | grep httpd` - среди всех пакетов, установленных в системе, найти пакет, содержащий в своём имени "httpd"
`rpm -qi package_name` - вывести информацию о конкретном пакете
`rpm -qg "System Environment/Daemons"` - отобразить пакеты, входящие в группу пакетов
`rpm -qc package_name` - вывести список конфигурационных файлов, входящих в пакет
`rpm -q package_name --whatrequires` - вывести список пакетов, необходимых для установки конкретного пакета по зависимостям
`rpm -q package_name --whatprovides` - вывести список компонентов, предоставляемых пакетом
`rpm -q package_name --scripts` - отобразить скрипты, запускаемые при установке/удалении пакета
`rpm -q package_name --changelog` - вывести историю ревизий пакета
`rpm -qp package.rpm -l` - отображает список файлов, входящих в пакет, но ещё не установленных в систему
`rpm --import /media/cdrom/RPM-GPG-KEY` - импортировать публичный ключ цифровой подписи
`rpm --checksig package.rpm` - проверить подпись пакета
`rpm -qa gpg-pubkey` - проверить целостность установленного содержимого пакета
`rpm -Va` - проверить целостность всех пакетов, установленных в систему (длительная процедура)
`rpm -Vp package.rpm` - проверить пакет, который ещё не установлен в систему
`rpm2cpio <пакет>.rpm | cpio -idmv` - распаковать RPM-пакет в текущий каталог
`rpm2cpio package.rpm | cpio --extract --make-directories *bin*` - извлечь из пакета файлы, содержащие в своих именах bin
`ifconfig eth0` - показать конфигурацию сетевого интерфейса eth0
`ifup eth0` - активировать (поднять) интерфейс eth0
`ifdown eth0` - деактивировать (опустить) интерфейс eth0
`ifconfig eth0 192.168.1.1 netmask 255.255.255.0` - выставить интерфейсу eth0 ip-адрес и маску подсети
`ifconfig eth0 promisc` - перевести интерфейс eth0 в promiscuous-режим для "отлова" пакетов (sniffing)
`ifconfig eth0 -promisc` - отключить promiscuous-режим на интерфейсе eth0
`dhclient eth0` - активировать интерфейс eth0 в dhcp-режиме.
`route -n` - вывести локальную таблицу маршрутизации
`route add -net 0/0 gw IP_Gateway` - задать ip-адрес шлюза по умолчанию (default gateway)
`route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1` - добавить статический маршрут в сеть 192.168.0.0/16 через шлюз с ip-адресом 192.168.1.1
`route del 0/0 gw IP_gateway` - удалить ip-адрес шлюза по умолчанию (default gateway)
`echo "1" > /proc/sys/net/ipv4/ip_forward` - разрешить пересылку пакетов (forwarding)
`hostname` - отобразить имя компьютера
`host example.org` - вывести IP хоста по его имени
`host 62.149.140.85` - вывести имя хоста по IP
`ip link show` - состояние всех интерфейсов
`ethtool eth0` - статистика интерфейса `eth0` с выводом такой информации, как поддерживаемые и текущие режимы соединения
`netstat -tupn` - вывести все установленные сетевые соединения
`netstat -tupln` - вывести список прослушиваемых портов
`tcpdump tcp port 80` - вывести весь трафик на TCP-порт 80 (нужен пакет `tcpdump`)
`lsof -P -i -n` - список процессов, подключенных к сети
`netstat -ntu | tail -n+3 | tr : ' ' | awk '{print $6}' | sort | uniq -c | sort -nr | less` - статистика соединений с сервером по IP
`sar -n DEV 1` - статистика использования сети по каждому интерфейсу (нужен пакет `sysstat`)
`whois ya.ru` - вывести информацию о домене (нужен пакет `whois`)
`whois 8.8.8.8` - вывести информацию об IP-адресе (нужен пакет `whois`)
`bunzip2 file.bz2` - распаковать файл 'file.gz'
`gunzip file.gz` - распаковать файл `file.gz`
`gzip file` или `bzip2 file` или `lzma file` - сжать файл 'file'
`lzma -e9 file` - сжать файл `file` с максимальной степенью сжатия (очень медленно)
`unrar x file.rar` - распаковать rar-архив
`tar -cvf archive.tar file1` - создать tar-архив archive.tar, содержащий файл `file1`
`tar -cvf archive.tar file1 file2 dir1` - создать tar-архив archive.tar, содержащий файлы `file1`, `file2` и `dir1`
`tar -tf archive.tar` - показать содержимое архива
`tar -xvf archive.tar` - распаковать архив
`tar -xvf archive.tar -C /tmp` - распаковать архив в /tmp
`tar -cvfj archive.tar.bz2 dir1` - создать архив и сжать его с помощью bzip2
`tar -xvfj archive.tar.bz2` - распаковать архив
`tar -cvfz archive.tar.gz dir1` - создать архив и сжать его с помощью gzip
`tar -xvfz archive.tar.gz` - распаковать архив
`tar -xf archive.tar etc` - распаковать из архива только каталог `etc`
`tar -xf archive.tar --wildcards --no-anchored '*.py'` - распаковать из архива только файлы с расширением `.py`
`zip file.zip file` - создать сжатый zip-архив
`zip -r archive.zip file1 file2 dir1` - создать сжатый zip-архив из нескольких файлов и/или каталогов
`unzip archive.zip` - распаковать zip-архив
`zless` - читать сжатый gz-файл (например, журнал), не распаковывая его. См. также `zcat`, `lzcat`, `xzcat`, `bzcat`
`zgrep foo` - искать шаблон `foo` в сжатом gz-файле, не распаковывая его. См. также `bzgrep`, `xzgrep`, `lzgrep`
`tar --selinux --xattrs -cpSvzf /mnt/home.$USER.tar.gz /home/$USER` - создать резервную копию данных текущего пользователя
`tar --selinux --xattrs -cpSvz /home/$USER | ssh root@host 'tar -xpSvzC /'` - перенести данные текущего пользователя на удалённый `host`
`используйте [[ ]] вместо [ ]` - `[[` - встроенная функция, которая быстрее, но работает только в Bash
`$!` - данная переменная содержит `PID` предыдущей задачи, запущенной в фоновом режиме
`$$` - данная переменная содержит `PID` текущего процесса командной оболочки
`$?` - данная переменная содержит код возврата предыдущей команды
`<команда> &> file` - перенаправить стандартный вывод и вывод ошибок в файл. Аналогично `<команда> > file 2>&1`
`<команда> |& grep` - выполняет поиск не только в стандартном выводе, но и в выводе ошибок
`<команда> | less` - команда less позволяет читать вывод команд, который не помещается на экран. Для поиска наберите `/`, для выхода - `q`
`<команда> |:` - быстрый способ избавиться от вывода команды. Более короткий аналог `>/dev/null`. Для того чтобы перенаправить весь вывод, включая ошибки, используйте `|&:`. Нельзя использовать в условии `if`, так как `:` является командой
`!<начало>` - запустить последнюю команду из истории, которая начинается так же. Например: `!ssh` - зайти по ssh на последний сервер
`type cmd` - проверить, существует ли такая команда. Всегда используйте `type` вместо `which`. так как `type` возвращает код ошибки, например, таким образом можно проверить существование команды ls: `type ls && echo OK`
`reset`	- восстанавливает повреждённый терминал. Если вы случайно перенаправили двоичный файл в терминал, он может перестать корректно функционировать. Команда `reset` сбрасывает терминал, не перезапуская командную оболочку
`timeout 1 sleep 10` - ограничить время выполнения команды. Если команда не завершилась за отведённое время, она завершится принудительно, а `timeout` вернёт ошибку
`time <команда>` - измерить время выполнения команды. Например: `time sleep 2`
`sudo !!` - запустить предыдущую команду от имени `root`. Если вы случайно выполнили команду от имени обычного пользователя, наберите `sudo !!`, чтобы выполнить эту же команду с привилегиями системного администратора
`sleep 2 & sleep 1 & sleep 3 & wait` - выполнить три команды параллельно и дождаться их завершения
`LD_LIBRARY_PATH=/opt/lib:$(pwd) <команда>` - выполнить команду, загружая динамические библиотеки в первую очередь из указанных каталогов
`f() { ls -l "$@" }` - используйте переменную `$@`, чтобы передать все аргументы командной строки без изменений
`>file` - создать пустой файл
`echo {1..10}` - выводит на экран числа от 1 до 10. Можно использовать для циклов
`echo ${@: -1}` - получить последний аргумент командной строки
`echo $((2+2*2)) $((0x17))` - простой калькулятор. Может конвертировать шестнадцатеричные и восьмеричные числа
`echo !([xX]*)` - вывести список файлов/каталогов, которые `не` начинаются с буквы `x` (шаблон с отрицанием)
`[[ -d "<каталог>" ]] && echo "Каталог существует"` - проверить, существует ли каталог
`diff <(sort file1) <(sort file2)` - сравнить два файла, не создавая временных
`cp filename{,.bak}` - используйте фигурные скобки для работы с аргументами. Данная команда создаст дубликат файла `filename` с расширением `.bak`, что аналогично команде `cp filename filename.bak`
`cat <<EOF > file` - записать в файл текст, введенный с терминала. Окончание ввода - строка EOF
`bind -P` - показать список всех сочетаний клавиш командной оболочки Bash
`2>&1` - перенаправление потока ошибок в стандартный поток вывода. Удобно для перенаправления в журнал или `/dev/null`
`. ~/.bashrc` - быстро (без перезапуска оболочки) перезагрузить `.bashrc`. Полезно для тестирования изменений в `.bashrc`. Так же можно загрузить любой скрипт, содержащий функции или псевдонимы
`bash -x script.sh` - печатает на экран команды, которые выполняются в данный момент. Полезно для отладки скриптов
`fc` - Ввести длинную и сложную команду, используя редактор `vim`
`[[ file1 -nt file2 ]] && echo "Файл file1 новее, чем file2"` - сравнить время изменения файлов
`< file grep foo` - поиск `foo` в `file`. Такой формат команды `grep` проще редактировать. То же самое, что `grep foo file`
`while read line; do echo $line; done < file` - цикл по всем строкам файла
`PATH=/bin <команда>` - установить переменную окружения `PATH` только для одной команды
`badblocks -v /dev/sda1` - проверить ext4-раздел `sda1` на наличие плохих блоков
`fsck /dev/sda1` - проверить/восстановить целостность файловой системы раздела `sda1`
`e2fsck -j /dev/sda1` - проверить/восстановить целостность файловой системы ext4 раздела `sda1` с указанием, что журнал расположен там же
`df -h` - отображает информацию о смонтированных разделах с отображением общего, доступного и используемого пространства
`ls -lSr | less` - выдаёт список файлов и каталогов с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр
`ls -RlSr | less` - выдаёт список файлов и каталогов рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр
`du -sh dir1` - подсчитывает и выводит размер, занимаемый каталогом `dir1`
`du -sk * | sort -rn` - отображает размеры и имена файлов и каталогов, с сортировкой по размеру
`rpm -qa --qf "%-15{SIZE}%{NVRA}\n" | sort -r` - показывает размер используемого дискового пространства, занимаемого rpm-пакетами, с сортировкой по размеру
`du -sh * | sort -h` - выводит файлы и каталоги, отсортированные по размеру
`df -P | column -t` - форматирует вывод команды `df` в удобном для просмотра виде
`apropos keyword` - выводит список команд, которые так или иначе относятся к ключевым словам. Полезно, когда вы знаете что делает программа, но не помните команду
`man ping` - открыть руководство по работе с программой, в данном случае - ping
`man ascii` - отобразить таблицу символов
`help alias` - выводит справку по внутренней функции `alias`. Для внутренних команд Bash используйте `help`, а не `man`
`whatis keyword` - отображает описание действий указанной программы
`gpg -c file1` - шифрует файл `file1` с помощью GNU Privacy Guard
`gpg file1.gpg` - дешифрует файл `file1` с помощью GNU Privacy Guard
`ldd /usr/bin/ssh` - вывести список библиотек, необходимых для работы ssh
`alias hh='history'` - назначить псевдоним `hh` команде history
`whereis ping` - вывести полный путь к исполняемому файлу программы и справки к ней
`bc -l` - продвинутый калькулятор в терминале
`echo 2^128 | bc` - возвести 2 в степень 128 (bc не имеет ограничений на количество разрядов)
`echo 'scale=1000; sqrt(2)' | bc -l` - рассчитать корень из 2 с точностью до 1000 знака после запятой
`xdg-open file` - открыть файл в программе по умолчанию. Например, текстовый файл открывается в текстовом редакторе, изображение - в программе просмотра изображений
`watch -n0,5 '<команда>'` - выполняет заданную команду каждые 0,5 сек
`read -s p; sha512sum <<< $p | base64 -w16 | nl` - "бумажник" для надежных паролей. Создает несколько сложных паролей, которые легко восстановить, запомнив один ключ
`printf "\e[1;32m";tr -c [:print:] \ </dev/urandom` - заставка "Матрица"
`openssl speed sha512` - простейший тест производительности процессора
`hexdump -C /bin/cat | less` - просмотр двоичного файла в виде hex-редактора
`screen -dm <команда>` - запустить команду в фоновом режиме, используя screen
`sed -i 8d ~/.ssh/known_hosts` - удалить восьмую строку из файла. Может использоваться для удаления определенной записи из `~/.ssh/known_hosts` в случае проблем с входом по ssh
`ssh-keygen; ssh-copy-id user@host; ssh user@host` - копирует идентификатор SSH на удаленный хост в `authorized_keys`. После выполнения этой команды можно будет заходить на хост `username@hostname` без пароля. Если у вас нет ключа, создайте его командой `ssh-keygen`
`ssh user@host 'bash -s' < local_script.sh` - выполняет локальный скрипт на удалённом хосте `host`
`scp -r user@host:/path/to/dir ~/dir` - рекурсивно копирует каталог с удаленного хоста
`seq 10 | summ` - команда `summ` суммирует строки. В данном примере подсчитывается сумма чисел от 1 до 10
`seq 2 99 | factor | awk -F: '$1==$2{print$1}'` - генератор простых чисел
`seq 2 99 | factor | grep -Po '(^\d+)(?=: \1)'` - генератор простых чисел
`seq 2 99 | factor | grep -v ' .* ' | cut -d: -f1` - генератор простых чисел
`setxkbmap -option grp:caps_toggle` - установить CapsLock клавишей переключения раскладки клавиатуры
`date '+%d.%m.%Y %H:%M:%S'` - дата и время в традиционном для России формате
`date +%s` - время в формате UNIX TIME
`xsel | wc -m` - быстрый способ подсчитать количество символов в выделенном мышью тексте (нужен пакет `xsel`)
`xsel` - команда `xsel` выводит текст, выделенный мышью (нужен пакет `xsel`). Удобно для последующей обработки текста из графических приложений
`openssl rand -base64 8` - сгенерировать стойкий случайный пароль
`openssl rand -base64 128 | fold -w16 | cat -n` - сгенерировать несколько стойких случайных паролей
`iptables -t filter -nL` или `iptables -nL` - отобразить все цепочки правил
`iptables -t nat -L` - отобразить все цепочки правил в NAT-таблице
`iptables -t filter -F или iptables -F` - очистить все цепочки правил в filter-таблице
`iptables -t nat -F` - очистить все цепочки правил в NAT-таблице
`iptables -t filter -X` - удалить все пользовательские цепочки правил в filter-таблице
`iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT` - позволить входящее подключение telnet'ом
`iptables -t filter -A OUTPUT -p tcp --dport http -j DROP` - блокировать исходящие HTTP-соединения
`iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT` - позволить "прокидывать" (forward) POP3-соединения
`iptables -t filter -A INPUT -j LOG --log-prefix "DROP INPUT"` - включить журналирование ядром пакетов, проходящих через цепочку INPUT, с добавлением к сообщению префикса "DROP INPUT"
`iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE` - включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми ip-адресами
`iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.0.0.2:22` - перенаправление пакетов, адресованных одному хосту, на другой хост
Для установки (а также удаления и обновления) пакетов из сетевых репозиториев используйте утилиту `yum`. В отличие от более низкоуровневой утилиты `rpm`, `yum` умеет автоматически устанавливать зависимости.

`yum install package_name` - установить пакет
`yum install -y package_name` - установить пакет без интерактивного предупреждения
`yum update` - обновить все пакеты, установленные в систему
`yum update package_name` - обновить пакет
`yum remove package_name` - удалить пакет
`yum list` - вывести список всех пакетов, установленных в систему
`yum grouplist` - вывести список групп пакетов
`yum search package_name` - найти пакет в репозитории
`yum clean packages` - очистить rpm-кэш, удалив закачанные пакеты
`yum clean headers` - удалить все заголовки файлов, которые система использует для разрешения зависимостей
`yum clean all` - очистить rpm-кэш, удалив закачанные пакеты и заголовки
`yum install '*'` - установить все пакеты из репозитория. `yum install *` - неправильно
`yum localinstall package.rpm` - установка пакета из файла. Никогда не используйте команду `rpm -ivh` для установки пакетов
`yum-config-manager --add-repo repository_url` - добавить в систему новый репозиторий по указанному адресу
`yum-config-manager --disable-repo repository_name` - выключить репозиторий
`yum-config-manager --enable-repo repository_name` - включить репозиторий
`dmesg` - журнал ядра, в котором можно обнаружить информацию о подключении новых устройств
`dstat` - улучшенный интерактивный монитор системы
`kill -1 98989` или `kill -HUP 98989` - заставить процесс с PID 98989 заново прочитать файл конфигурации
`kill -9 98989` или `kill -KILL 98989` - "убить" процесс с PID 98989 (без соблюдения целостности данных)
`killall -9 <команда>` - "убить" зависший процесс по имени команды. `Внимание!` Будут уничтожены все процессы с таким именем с потерей всех данных. Например: `killall -9 X`. Данный способ стоит использовать только в случае, если `killall -TERM` не помогает
`kill -TERM 98989` - корректно завершить процесс с PID 98989
`killall -TERM <команда>` - корректно завершить все процессы с указанным именем
`last reboot` - отобразить историю перезагрузок системы
`last user1` - отобразить историю регистрации пользователя user1 в системе и время его нахождения в ней
`less +F <журнал>` - данная команда позволяет наблюдать за файлом журнала в интерактивном режиме, аналогично `tail -f`
`lsmod` - вывести загруженные модули ядра
`lsof /home/user1` - отобразить список открытых файлов из каталога /home/user1
`lsof -p 98989` - отобразить список файлов, открытых процессом с PID 98989
`ps -eafw` - отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)
`ps -e -o pid,args --forest` - вывести PID-ы и процессы в виде дерева
`pstree` - отображает дерево процессов в системе
`pstree` - отобразить дерево процессов
`smartctl -i /dev/sda` - проверить доступность SMART на жёстком диске `/dev/sda`
`smartctl -A /dev/sda` - контроль состояния жёсткого диска `/dev/sda` через SMART
`smartctl -a /dev/sda` - вывод всей информации, доступной SMART, по устройству
`smartctl -t [short|long] /dev/sda` - запуск короткого|полного самотестирования
`strace -c ls >/dev/null` - вывести список системных вызовов, осуществлённых процессом ls
`strace -f -e open ls >/dev/null` - позволяет узнать список используемых процессом библиотек
`tail -f /var/log/messages` - наблюдать за журналом в режиме реального времени
`tail -F` - режим наблюдения за файлом. Полезно для мониторинга системных журналов
`tail /var/log/dmesg` - вывести десять последних записей из журнала загрузки ядра
`tail /var/log/messages` - вывести десять последних записей из системного журнала
`top` - отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)
`top -b | grep -w <процесс>` - мониторинг процессов с указанным именем
`watch -n1 'cat /proc/interrupts'` - отображать прерывания в режиме реального времени
Примечание. Современные команды `mount`/`umount` умеют автоматически определять тип файловой системы, поэтому его указывать не обязательно.

`mount /dev/sda2 /mnt/sda2` - монтирует раздел `sda2` в существующий каталог `/mnt/sda2`
`umount /dev/sda2` - размонтирует раздел `sda2`. Перед этим нужно покинуть каталог, в который он был примонтирован
`fuser -km /mnt/sda2` - принудительное размонтирование раздела, если он занят каким-либо процессом. Может привести к завершению процесса с потерей всех данных
`umount -n /mnt/sda2` - выполнить размонтирование без занесения информации в `/etc/mtab`. Полезно когда файл имеет атрибут "только чтение" или недостаточно места на диске
`mount /dev/fd0 /mnt/floppy` - монтировать флоппи-диск
`mount /dev/cdrom /mnt/cdrom` - монтировать CD или DVD
`mount -o loop file.iso /mnt/cdrom` - монтировать ISO-образ
`mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share` - монтировать сетевую файловую систему Windows (SMB/CIFS)
`mount -o bind /home/user/prg /var/ftp/user` - монтирует файл в файл или каталог в каталог (binding). Полезна, когда создать символьную ссылку невозможно, например, при работе ftp-сервера в "песочнице" (chroot) или NFS
`findmnt` - отобразить точки монтирования в наглядном виде, используйте вместо вызова команды `mount` без аргументов
`< file grep/sed/awk > result.txt` - общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в новый
`< file grep/sed/awk >> result.txt` - общий синтаксис выполнения действий по обработке содержимого файла и добавления результата в существующий файл (если файл не существует, он будет создан)
`sed -i 's/A/B/g' file` - общий синтаксис перезаписи файла `file` по сценарию `sed`

Внимание! Никогда не обрабатывайте текстовые файлы таким образом: `cat file | grep text > file`. Это приведёт к тому, что файл будет навсегда и без предупреждения удалён. Обрабатываемый файл и файл результата всегда должны быть различны. Единственная команда, позволяющая отредактировать файл безопасно - `sed` с аргументом `-i`.

!!!Поиск и замена

`grep Aug /var/log/messages` - из файла `/var/log/messages` вывести строки, содержащие "Aug"
`grep ^Aug /var/log/messages` - из файла `/var/log/messages` вывести строки, начинающиеся на "Aug"
`grep [0-9] /var/log/messages` - из файла `/var/log/messages` вывести строки, содержащие цифры
`grep Aug -R /var/log/*` - вывести на стандартное устройство вывода строки, содержащие "Aug", во всех файлах, находящихся в каталоге /var/log и ниже
`grep -A3 foo file` - отобразить дополнительные 3 строки после каждого найденного шаблона в файле
`grep -C3 foo file` - отобразить дополнительные 3 строки до и после каждого найденного шаблона `foo` в файле
`grep -c foo file` - вывести количество строк, совпадающих с шаблоном `foo`
`grep -e foo -e bar file` - вывести строки, совпадающие с шаблоном `foo` или с шаблоном `bar`
`grep foo -r --include='*.cpp' .` - рекурсивный поиск строки `foo` во всех cpp-файлах
`grep -v -e ^\\s*# -e ^$ .bashrc` - вывести файл `.bashrc`, удалив из него пустые строки и комментарии
`rgrep <строка>` - рекурсивный поиск строки во всех текстовых файлах текущего каталога
`egrep "foo|bar" /var/log/messages` - найти все сообщения, содержащие foo или bar
`sed 's/string1/string2/g'` - заменить "string1" на "string2", результат вывести в терминал
`sed -i.bak 's/A/B/g' file` - заменяет в файле A на B, сохраняя резервную копию с расширением `.bak`
`sed -i -e 's/A/B/g' -e 's/C/D/g' file` - выполнить серию замен в `file`
`sed -i -e 's,^/bin,/usr/bin,' -e 's@^/lib@/usr/lib@' file` - удобно заменить стандартный разделитель `sed` `/` на любой другой символ, например, `,` или `@`, чтобы заменять пути до файлов без экранирования
`sed -i '/^$/d' file` - удалить пустые строки в файле
`sed -i '/ *#/d; /^$/d' file` - удалить пустые строки и комментарии в файле
`sed -i -e '1d' file` - удалить первую строку
`sed -n '/string1/p'` - отобразить только строки, содержащие `string1`
`sed -e 's/ *$//'` - удалить пробелы в конце каждой строки
`sed -e 's/string1//g'` - удалить строку `string1` из текста
`sed -n '1,8p;5q'` - взять из файла с первой по восьмую строки и из них вывести первые пять
`sed -n '5p;5q'` - вывести пятую строку
`sed -e 's/0*/0/g'` - заменить последовательность из любого количества нулей одним нулём
`sed 's/'$'\x08''//g'` - удалить все символы с шестнадцатеричным кодом `08`. Таким образом можно очистить текст от любых спецсимволов
`pwd | sed 's!/! !'g` - в `sed` можно использовать альтернативный разделитель регулярного выражения, например `!`

!!!Обработка текстовых файлов

`cat example.txt | awk 'NR%2==1'` - при выводе содержимого файла не выводить чётные строки
`cat -n file1` - пронумеровать строки при выводе содержимого файла
`comm -1 file1 file2` - сравнить содержимое двух файлов, не отображая строки, принадлежащие файлу 'file1'
`comm -2 file1 file2` - сравнить содержимое двух файлов, не отображая строки, принадлежащие файлу 'file2'
`comm -3 file1 file2` - сравнить содержимое двух файлов, удаляя строки, встречающиеся в обоих файлах
`echo a b c | awk '{print $1,$3}'` - вывести первую и третью колонки, разделяя их по пробелам или символам табуляции
`echo a b c | awk '{print $1}'` - вывести первую колонку, разделяя колонки по пробелам или символам табуляции
`echo 'esempio' | tr '[:lower:]' '[:upper:]'` - преобразовать символы из нижнего регистра в верхний
`fold -sw$(tput cols)` - разбить слишком длинные строки текста так, чтобы они помещались в окно терминала
`paste -d\" /dev/null /etc/passwd /dev/null` - Оборачивает каждую строку файла в кавычки
`paste -d '+' file1 file2` - объединить содержимое file1 и file2 в виде таблицы с разделителем "+"
`paste file1 file2` - объединить содержимое `file1 и `file2` в виде таблицы: `строка 1` из `file1` = `строка 1 колонка 1-n`, `строка 1` из `file2` = `строка 1 колонка n+1-m`
`seq 100 | pr -T10` - вывести числа от 1 до 100 в 10 колонок
`seq 100 | pr -aT2s,` - последовательно вывести числа от 1 до 100 в 2 колонки, используя запятую в качестве разделителя
`seq 100 | pr -T10 -W$COLUMNS` - вывести числа от 1 до 100 в 10 колонок и растянуть по ширине терминала
`seq 100 | pr -T10 -W$(tput cols)` - вывести числа от 1 до 100 в 10 колонок и растянуть по ширине терминала
`shuf -n1 file` - выводит одну случайную строку из файла
`sort file1 file2 | uniq -d` - отсортировать содержимое двух файлов, отображая только повторяющиеся строки
`sort file1 file2 | uniq -u` - отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся)
`sort file1 file2 | uniq` - отсортировать содержимое двух файлов, не отображая повторов
`sort file1 file2` - отсортировать содержимое двух файлов
`tac file` - выводит строки файла в обратном порядке
`wc -L file` - выводит длину самой длинной строки в файле
`column -s, -t file.csv` - преобразовать csv-файл в таблицу, удобную для восприятия
`enca -c file` - автоматически определить кодировку файла file и вывести его в кодировке по умолчанию (UTF-8)
`iconv -l` - вывести список доступных кодировок
`iconv -f koi8-r file` - вывести на экран файл, закодированный в кодировке KOI8-R
`iconv -f utf8 -t koi8-r -o file.koi8 file` - конвертировать `file` в кодировку KOI8-R и записать в файл `file.koi8`
`reboot` - перезагрузка
`poweroff` - выключение
`shutdown -h now` - остановить систему
`shutdown -h hours:minutes &` - запланировать остановку системы на указанное время
`shutdown -c` - отменить запланированную по расписанию остановку системы
`shutdown -r now` или `reboot` - перезагрузить систему
`logout` - выйти из системы
`find /home/user1 -name '*.bin'` - найти все файлы и каталоги, имена которых оканчиваются на `.bin`. Поиск начать с `/home/user1`
`find -iname '*.cpp' | xargs cat | wc -l` - подсчитывает количество строк кода во всех cpp-файлах проекта
`find -name '*.bak' -delete` - удалить все файлы с расширением `bak` из текущего каталога и всех его подкаталогов
`find / -name file1` - найти файлы и каталоги с именем `file1`. Поиск начать с корня (`/`)
`find -name .git -prune -o -name '*.sh' -print` - найти файлы с расширением `sh`, игнорируя каталог `.git`
`find -name '*.py' -o -name '*.html'` - найти файлы с расширениями `py` и `html`
`find -name '*.py' -prune -o -print` - найти все файлы кроме `*.py`
`find -name '*.png' -exec cp --parents {} ../png_files \;` - найти все изображения png и скопировать их в `../png_files` с сохранением структуры
`find / -name '*.rpm' -print0 | xargs -0 chmod +r` - найти все файлы и каталоги, имена которых оканчиваются на `.rpm`, и изменить права доступа к ним
`find -name '*.rpm' -print0 | du -hc --files0-from=-` - найти все файлы по шаблону и подсчитать их суммарный размер
`find -name .svn | xargs rm -fr` - удалить все скрытые служебные каталоги системы контроля версий SVN
`find -print0 | xargs -0 <команда>` - если в именах файлов содержатся пробелы, `find+xargs` может работать некорректно. Для исправления ошибки добавьте параметр `-print0` к `find`, и `-0` к `xargs`
`find -type f \! -links 1` - найти в текущем каталоге все файлы, на которые есть хотя бы одна жёсткая ссылка
`find / -user user1` - найти файлы и каталоги, принадлежащие пользователю `user1`. Поиск начать с корня (`/`)
`find /usr/bin -type f -atime +100` - найти все файлы в `/usr/bin`, последний доступ к которым осуществлялся более 100 дней назад
`find /usr/bin -type f -mtime -10` - найти все файлы в `/usr/bin`, созданные или изменённые в течении последних 10 дней
`find | xargs -P$(nproc) -I{} <команда> {}` - выполнить команду над каждым файлом в многопоточном режиме, по 1 файлу за раз. Подходит для систем с несколькими процессорами
`find | xargs -P$(nproc) -n4 <команда>` - выполнить команду над каждым файлом в многопоточном режиме, по 4 файла за раз. Подходит для систем с несколькими процессорами
`find | xargs <команда>` - по возможности используйте `find+xargs` вместо `find -exec ... \;` - такой вариант работает быстрее за счёт объединения аргументов
`find / -xdev -name '*.rpm'` - найти все файлы и каталоги, имена которых оканчиваются на `.rpm`, игнорируя съёмные носители, такие как `cdrom`, `floppy` и т. п.
`locate "*.ps"` - найти все файлы, содержащие в имени `.ps`. Предварительно нужно установить пакет `mlocate` и выполнить команду `updatedb`
`whereis halt` - показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу `halt`
`which halt` - отображает полный путь к файлу `halt`
`type echo` - поиск программ, псевдонимов и функций командной оболочки. Рекомендуется к использованию вместо команд `which`, `whereis` и `locate`, т. к. является встроенной функцией Bash
`type -p find xargs > /dev/null && echo ok` - выведет `ok`, если в системе существуют команды `find` и `xargs`
`type -p some_cmd > /dev/null && echo ok` - простой способ проверить, существует ли такая команда, функция или псевдоним
`find -type f -print0 | xargs -0 -n8 -P$(nproc) file -F/ | grep -i '/[^/]*audio' | sed 's@/[^/]*$@@'` - найти все аудиофайлы
`find -type f -size -4k` - найти все файлы, размер которых меньше 4 килобайт
`find -type f -size +100M` - найти все файлы, размер которых больше 100 мегабайт
`find -type f -size 0 -delete` - найти и удалить все пустые файлы
`find -depth -empty` - найти все пустые каталоги
`find -depth -empty -delete` - найти и удалить все пустые каталоги
В операционную систему «ОСь» встроено множество дополнительных команд, облегчающих использование и администрирование системы. Многие команды имеют возможность автодополнения - используйте клавишу [TAB].

Основные дополнения командной строки операционной системы «ОСь»:

* цветное приглашение командной строки;
* приглашение командной строки меняет цвет с зелёного на красный, если предыдущая команда завершилась с ошибкой;
* команда ausearch подсвечивает журнал цветом;
* несколько полезных для повседневной работы псевдонимов;
* доработано автодополнение для множества утилит командной строки;
* утилиты для быстрого выполнения повседневных задач администрирования.

`myip` - вывести IP-адрес текущей машины
`mylevel` - вывести текущий мандатный уровень
`summ` - команда суммирует столбец из чисел, например, `seq 100 | summ`
`rgrep` - рекурсивный поиск подстроки во всех файлах текущего каталога
`ll` - вывести подробный список файлов (синоним для `ls -laFv --color=auto`)
`l.` - вывести список скрытых файлов (синоним для `ls -d .* --color=auto`)
`lz` - вывести список файлов и отобразить их мандатные атрибуты (синоним для `ls -ZaFv --color=auto`)
`rpmtop` - статистика rpm-пакетов по объёму занимаемого дискового пространства
`repeat` - повтор символа или подстроки указанное количество раз, например, `repeat 10 x`
`rpmqf` - определяет принадлежность файла или утилиты к rpm-пакету
`yum-alias` - загрузить набор псевдонимов для наиболее часто встречающихся вариантов использования команд `yum` и `rpm`
`groupadd group_name` - создать новую группу с именем group_name
`groupdel group_name` - удалить группу group_name
`groupmod -n new_group_name old_group_name` - переименовать группу old_group_name в new_group_name
`useradd -c "Nome Cognome" -g admin -d /home/user1 -s /bin/bash user1` - создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell'а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognome
`useradd user1` - создать пользователя user1
`userdel -r user1` - удалить пользователя user1 и его домашний каталог
`usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1` - изменить атрибуты пользователя
`passwd` - сменить пароль
`passwd user1` - сменить пароль пользователя user1 (только root)
`chage -E 2005-12-31 user1` - установить дату окончания действия учётной записи пользователя user1
`pwck` - проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow
`grpck` - проверяет корректность системных файлов учётных записей. Проверяется файл/etc/group
`newgrp [-] group_name` - изменяет первичную группу текущего пользователя. Если указать "-", ситуация будет идентичной той, в которой пользователь вышел из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd
`cat file` - вывести содержимое файла file
`tac file` - вывести содержимое файла file в обратном порядке (последняя строка становится первой и т.д.)
`less file` - вывод содержимого файла file с возможностью навигации. Полезно для чтения больших файлов
`tail file` - вывести последние 10 строк файла
`head -2 file` - вывести первые две строки файла file
`tail -2 file` - вывести последние две строки файла file
`tail -f /var/log/audit/audit.log` - выводить содержимое журнала по мере появления в нём текста. Полезное средство мониторинга
`echo "text" >> file` - добавить текст в конец файла
`curl example.com` - загрузить код сайта `example.com` и вывести его
`curl -s example.com` - "тихий режим" curl - в терминал не выводится прогремм загрузки
`wget example.com` - загрузить код сайта `example.com` и сохранить его в файл
`curl example.com > index.html` - загрузить код сайта `example.com` и сохранить его в файл
`<list xargs -n1 -P8 wget -q` - загрузить большой список мелких файлов в 8 потоков, что значительно быстрее традиционного `wget -i list`
`wget -r http://www.example.com` - загружает рекурсивно содержимое сайта http://www.example.com
`wget -c http://www.example.com/file.iso` - загрузить файл http://www.example.com/file.iso с возможностью останова и продолжения в последствии
`echo 'wget -c http://www.example.com/files.iso' | at 09:00` - начать закачку в указанное время
`ping <IP|host>` - проверить доступность узла по имени хоста или IP-адресу
`ping 10.1` - то же самое, что и `ping 10.0.0.1`
`rsync -rogpav --delete /home /tmp` - синхронизировать `/tmp` с `/home`
`rsync -rogpav -e ssh --delete /home ip_address:/tmp` - синхронизировать через SSH-туннель
`rsync -az -e ssh --delete ip_addr:/home/public /home/local` - синхронизировать локальный каталог с удалённым каталогом через ssh-туннель со сжатием
`rsync -az -e ssh --delete /home/local ip_addr:/home/public` - синхронизировать удалённый каталог с локальным каталогом через ssh-туннель со сжатием
`dd bs=1M if=/dev/sda | gzip | ssh user@ip_addr 'dd of=sda.gz'` - сделать "слепок" локального диска в файл на удалённом компьютере через ssh-туннель
`tar -Puf backup.tar /home/user` - создать инкрементальную резервную копию каталога `/home/user` в файл `backup.tar` с сохранением полномочий
`( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p'` - копирование содержимого `/tmp/local` на удалённый компьютер через ssh-туннель в `/home/share`
`( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p'` - копирование содержимого `/home` на удалённый компьютер через ssh-туннель в `/home/backup-home`
`tar cf - . | (cd /tmp/backup ; tar xf - )` - копирование одного каталога в другой с сохранением полномочий и линков
`find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents` - поиск в `/home/user1` всех файлов, имена которых оканчиваются на `.txt`, и копирование их в другой каталог
`find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2` - поиск в `/var/log` всех файлов, имена которых оканчиваются на `.log`, и создание bzip-архива из них
`dd if=/dev/sda of=mbr.img bs=512 count=1` - создать копию MBR (Master Boot Record) с `/dev/sda`
`dd if=/dev/sr0 of=cd.iso` - создать iso-образ CD-диска
`dd if=/dev/sda of=sda.backup` - создать резервную копию жёсткого диска. Для того чтобы восстановить диск с резервной копии, нужно поменять `if` и `of` местами: `dd of=/dev/sda if=sda.backup`
`nbtscan ip_addr` или `nmblookup -A ip_addr` - разрешить netbios-имя `nbtscan` (нужен пакет `samba`)
`smbclient -L ip_addr/hostname` - отобразить ресурсы, предоставленные в общий доступ на windows-машине
`smbget -Rr smb://ip_addr/share` - подобно `wget` может получить файлы с windows-машин через smb-протокол
`mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share` - смонтировать smb-ресурс, предоставленный на windows-машине, в локальную файловую систему
`arch` или `uname -m` - отобразить архитектуру компьютера
`nproc` - вывести количество логических ядер процессора
`uname -r` - отобразить используемую версию ядра ОС
`uname -a` - отобразить всю информацию о системе
`dmidecode -q` - показать аппаратные системные компоненты - (SMBIOS / DMI)
`hdparm -i /dev/sda` - вывести характеристики жёсткого диска
`hdparm -tT /dev/sda` - протестировать производительность чтения данных с жёсткого диска
`cat /proc/cpuinfo` - отобразить информацию о процессоре
`cat /proc/interrupts` - показать прерывания
`cat /proc/meminfo` - проверить использование памяти
`cat /proc/swaps` - показать файл(ы) подкачки
`cat /proc/version` - вывести версию ядра
`cat /proc/net/dev` - показать сетевые интерфейсы и статистику по ним
`cat /proc/mounts` - отобразить смонтированные файловые системы
`lspci -tv` - показать в виде дерева PCI-устройства
`lsusb -tv` - показать в виде дерева USB-устройства
`date` - вывести системную дату
`cal 2007` - вывести таблицу-календарь 2007-го года
`cal -3` - вывести таблицу-календарь на 3 месяца: предыдущий, текущий, следующий
`cal -y` - вывести таблицу-календарь на текущий год
`date 041217002007.00` - установить системные дату и время `ММДДЧЧммГГГГ.СС` (МесяцДеньЧасМинутыГод.Секунды)
`free -m` - показать состояние оперативной памяти в мегабайтах
`timedatectl` - подробная информация о текущих настройках даты и времени
`lsb_release -a` - информация о системе: версия, производитель и кодовое имя
`<Alt+.>` - используйте комбинацию клавиш `<Alt+.>`, чтобы подставить последний аргумент предыдущей команды
`<Ctrl+a>` - переместиться в начало команды. Аналог клавиши `Home`, полезно для ноутбуков, где клавиша `Home` может отсутствовать
`<Ctrl+c>` - прервать текущую задачу
`<Ctrl+d>` - прерывание многострочного ввода
`<Ctrl+e>` - переместиться в конец команды. Аналог клавиши `End`, полезно для ноутбуков, где клавиша `End` может отсутствовать
`<Ctrl+x, Ctrl+e>` - редактировать набранную команду в редакторе `$EDITOR`
`<Ctrl+l>` - нажмите `<Ctrl+l>`, чтобы очистить экран
`<Ctrl+r>` - запустить интерактивный поиск команды в истории
`<Ctrl+u>` - удалить весь текст до курсора
`<Ctrl+k>` - удалить весь текст после курсора
`<Ctrl+xx>` - перейти в начало/конец строки
`<Ctrl+w>` - удалить слово перед курсором
`<Alt+BackSpace>` - удалить слово перед курсором
`<Alt+d>` - удалить слово после курсора
`<Ctrl+z>` - приостановить текущую задачу. `bg` - перевести задачу в фоновый режим, `fg` - снова переключиться на задачу в интерактивный режим.
`<Tab>` - используйте табуляцию для автодополнения. Нажмите клавишу `<Tab>`, чтобы дополнить имя файла или команды. Во многих командах также работает автодополнение аргументов
`<PgUp>/<PgDn>` - используйте клавиши `<PgUp>/<PgDn>` для поиска в истории команд, начинающихся с текущей строки
`<Esc+.>` - Нажмите `Esc`, а затем `.`, чтобы подставить последний аргумент предыдущей команды. Аналогично `<Alt+.>`, может быть полезно на клавиатурах, где отсутствует клавиша `Alt`
`chattr +a file` - позволить открывать файл на запись только в режиме добавления
`chattr +c file` - позволяет ядру автоматически сжимать/разжимать содержимое файла
`chattr +d file` - указывает утилите `dump` игнорировать данный файл во время резервирования
`chattr +i file` - делает файл недоступным для любых изменений: редактирование, удаление, перемещение, переименование, создание жёстких ссылок на него
`chattr +s file` - позволяет сделать удаление файла безопасным, т. е. выставленный атрибут `s` говорит о том, что при удалении файла место, занимаемое файлом на диске, заполняется нулями, что предотвращает возможность восстановления данных
`chattr +S file` - указывает, что при сохранении изменений будет произведена синхронизация, как при выполнении команды `sync`
`chattr +u file` - данный атрибут указывает, что при удалении файла его содержимое будет сохранено и при необходимости пользователь сможет его восстановить
`lsattr` - показать атрибуты файлов
`ls -lh` - просмотр полномочий на файлы и каталоги в текущем каталоге
`ls /tmp | pr -T5 -W$COLUMNS` - вывести содержимое каталога `/tmp` и разделить вывод на пять колонок
`chmod 777 `dir` - дать полные права на каталог (аналогично `chmod ugo+rwx`)
`chmod go-rwx dir` - отобрать у группы и всех остальных все полномочия на каталог `dir`
`chown user file` - назначить владельцем файла `file` пользователя `user`
`chown -R user dir` - назначить рекурсивно владельцем каталога `dir` пользователя `user`
`chgrp group1 file` - сменить группу-владельца файла `file` на group1
`chown user:group1 file` - сменить владельца и группу владельца файла `file`
`find / -perm -u+s` - найти, начиная от корня, все файлы с выставленным SUID
`chmod u+s /bin/binary_file` - назначить SUID-бит файлу `/bin/binary_file`. Это даёт возможность любому пользователю запускать на выполнение файл с полномочиями владельца файла
`chmod u-s /bin/binary_file` - снять SUID-бит с файла `/bin/binary_file`
`chmod g+s /home/public` - назначить SGID-бит каталогу `/home/public`
`chmod g-s /home/public` - снять SGID-бит с каталога `/home/public`
`chmod o+t /home/public` - назначить STIKY-бит каталогу `/home/public`. Позволяет удалять файлы только их владельцам
`chmod o-t /home/public` - снять STIKY-бит с каталога `/home/public`
`chattr +i /etc/passwd` - запретить любые изменения в файле `/etc/passwd` (даже для root), что сделает невозможным добавление/удаление пользователей
`cd /home` - перейти в каталог `/home`
`cd ~user` - перейти в домашний каталог пользователя user
`cd` - перейти в домашний каталог
`cd ../..` - перейти в каталог двумя уровнями выше
`cd ..` - перейти в каталог уровнем выше
`cd -` - перейти в предыдущий каталог. Так можно быстро перемещаться между двумя важными каталогами
`cp -a dir1 dir2` - копировать каталог `dir1` в каталог `dir2`
`cp -a /tmp/dir1 .` - копировать каталог `dir1` со всем содержимым в текущий каталог
`cp dir/* .` - копировать все файлы каталога `dir` в текущий каталог
`cp file1 file2` - скопировать файл `file1` в файл `file2`
`ll` - сокращённый аналог команды `ls -l`
`ln file1 lnk1` - создать "жёсткую" (физическую) ссылку на файл
`ln -s file1 lnk1*` - создать символическую ссылку на файл или каталог
`ls *[0-9]*` - показать файлы и каталоги, содержащие в своих именах цифры
`ls -a` - показать скрытые файлы и каталоги в текущем каталоге
`ls *.@(cpp|[ch])` - вывести список файлов с расширениями `cpp`, `c` и `h`
`ls -d */` - выводит на экран только каталоги
`ls -F` - отобразить содержимое текущего каталога с добавлением к именам символов, характеризующих тип
`ls -l` - показать детализированное представление файлов и каталогов в текущем каталоге
`ls !(*.src).rpm` - вывести список всех rpm-пакетов, исключая src.rpm-пакеты
`echo !(foo|bar)` - вывести список всех файлов кроме `foo` и `bar`
`ls` - отобразить содержимое текущего каталога
`touch test` - создать в текущем каталоге пустой файл `test`
`mkdir dir1 dir2` - создать два каталога одновременно
`mkdir dir` - создать каталог с именем `dir`
`mkdir -p a/long/directory/path` - создаёт каталог со всеми вложенными подкаталогами, если не существует. Удобно для создания дерева файловой системы
`mkdir -p /tmp/dir1/dir2` - создать каталог с именем 'dir2', создав все промежуточные (`dir1`), если они не существуют
`mktemp -d` - команда безопасно создаёт временный каталог и печатает его имя
`mktemp` - команда безопасно создаёт временный файл и печатает его имя
`mv dir new_dir` - переименовать и/или переместить файл или каталог
`mv filename.{old,new}` - используйте фигурные скобки для работы с аргументами. Данная команда переименует файл `filename.old`, что аналогично команде `mv filename.old filename.new`
`pwd` - показать текущий каталог
`readlink -e file` - вывести полный путь до файла
`rename 'y/A-Z/a-z/' *` - Переименовать все файлы в текущем каталоге на нижний регистр
`rename 'y/ /_/' *` - Переименовать все файлы, заменив пробелы на нижнее подчёркивание
`rmdir dir` - удалить пустой каталог с именем `dir`
`rm -f file1` - удалить файл с именем `file1`
`rm -rf dir dir2` - удалить два каталога и, рекурсивно, их содержимое
`rm -rf dir` - удалить каталог с именем `dir` и, рекурсивно, всё его содержимое
`rsync --progress file1 file2` - копирование файла с отображением прогресса выполнения. Удобно для больших файлов
`touch -t 0712250000 fileditest` - модифицировать дату и время доступа и модификации файла. Если файла нет, создать его с указанными датой и временем (YYMMDDhhmm)
`sync` - сбросить буферы на диск. Полезно таким образом завершить запись данных на USB-диск перед его извлечением
`sync; echo 3 > /proc/sys/vm/drop_caches` - полностью сбросить буферы и кэш, тем самым освободив оперативную память. В нормальном режиме работы системы это делать не требуется, но может быть полезно в процессе отладки приложений, работающих с диском
`mkdir empty_dir && rsync -a --delete empty_dir/ huge_dir/` - быстро удалить каталог `huge_dir`, в котором много мелких файлов, это намного быстрее `rm -fr`
`fdisk -l` - информация о всех подключенных жёстких и сменных дисках
`mkfs /dev/sda1` - создать linux-файловую систему на разделе `sda1`
`mkfs.ext4 /dev/sda1` - создать файловую систему `ext4` на разделе `sda1`
`mkfs -t vfat 32 -F /dev/sda1` - создать файловую систему FAT32 на разделе `sda1`
`fdformat -n /dev/fd0` - форматирование флоппи-диска без проверки
`mkswap /dev/sda3` - создание swap-пространства на разделе `sda3`
`swapon /dev/sda3` - активировать swap-пространство, расположенное на разделе `sda3`
`swapon /dev/sda2 /dev/sdb3` - активировать swap-пространства, расположенные на разделах `sda2` и `sdb3`
@attr mls=1
@attr order=e
Данный раздел описывает настройку средств защиты ОС: работа с уровнями, категориями, передача меток средств защиты по сети.
При старте командной оболочки, инициализируются переменные окружения, которые можно посмотреть с&nbsp;помощью команды `env`, например:

• `DISPLAY`&nbsp;— переменная используется графической подсистемой `X11` и&nbsp;указывает на адрес X-сервера и&nbsp;номер используемого экрана;

• `EDITOR`&nbsp;— в&nbsp;этой переменной можно указать путь до программы-редактора текстовых файлов, которые будут вызываться запущенной программой;

• `HOME`&nbsp;— переменная содержит имя домашнего каталога текущего пользователя;

• `PATH`&nbsp;— Переменная окружения, содержащая список каталогов, разделённый символом `:`. Этот список просматривается при каждом запуске команды&nbsp;— в&nbsp;нём производится поиск исполненных файлов с&nbsp;соответствующим команде именем. Примером значения переменной окружения может быть `/bin:/usr/bin:/usr/local/bin`. Как правило, значение этой переменной различается для простого пользователя и&nbsp;администратора, чтобы разделить их рабочий инструментарий;

• `SHELL`&nbsp;— имя текущей программы оболочки;

• `TERM`&nbsp;— тип терминала, используемого в&nbsp;настоящий момент. Эта переменная анализируется программами для того, чтобы варьировать свой интерфейс в&nbsp;зависимости от возможностей терминала;

• `USER`&nbsp;— имя текущего пользователя;

• `_`&nbsp;— символ подчёркивания содержит имя последней команды, выполненной в&nbsp;командной оболочке.
Структура файловой системы организована в формате общепринятых имён файлов и каталогов, которые расположены в виде удобной логической структуры.
В данном разделе приведено краткое описание основных каталогов файловой системы:

* *Корневой каталог /*
Корневой каталог является основной входной точкой файловой системы. Все остальные файлы и каталоги располагаются внутри корневого каталога;
* */bin*
В каталоге `/bin` находятся основные часто используемые команды. Основное назначение данного каталога - возможность размещения базового каталога с бинарными файлами `/usr/bin` на другом разделе жёсткого диска, однако такая возможность обычно не используется;
* */dev*
Каталог `/dev `содержит файлы устройств, которые представляют собой интерфейс к драйверам периферийных устройств. В `/dev` находится несколько подкаталогов, в которых группируются файлы одного вида, например, `/dev/pts` содержит все виртуальные терминалы;
* */etc*
В данном каталоге расположены все системные конфигурационные файлы;
* */home*
Стандартный каталог для пользовательских домашних каталогов. Обычно домашний каталог принято создавать как `/home/<имя пользователя>`;
* */lib*
Данный каталог содержит основные библиотеки. В нём находятся только базовые из них, остальные библиотеки расположены в каталоге `/usr/lib64`;
* */misc*
В данный каталог происходит автоматическое монтирование службой `automount`. В частности, в каталог `/misc/cd` монтируется любой компакт-диск, если попытаться прочитать содержимое `/misc/cd`;
* */proc*
Специальный каталог, предоставляющий доступ к некоторым внутренним структурам ядра через файлы. Все файлы в каталоге `/proc `создаются в момент обращения к ним;
* */sbin*
В данном каталоге находятся основные программы, используемые для администрирования операционной системы;
* */usr*
Это самый большой каталог в системе, он содержит исполняемые файлы (`/usr/bin`), библиотеки (`/usr/lib64`), ресурсы приложений (`/usr/share`) и т. п.;
* */var*
Данный каталог предназначен для хранения временных файлов различных служб, например, печати. `/var/log` - важный каталог, хранящий файлы журналов; 
* */tmp*
Каталог для хранения временных файлов;
Для удаления записи LDAP выполните команду, заменив выделенные имена на соответствующие параметрам вашего домена.

@@@sh
ldapdelete -x -W -D "cn=*ldapadmin*,dc=*example*,dc=*ru*" "uid=*usertodelete*,ou=People,dc=*example*,dc=*ru*"
Enter LDAP Password: # введите пароль администратора LDAP
ldapdelete -x -W -D "cn=*ldapadmin*,dc=*example*,dc=*ru*" "cn=*grouptodelete*,ou=Group,dc=*example*,dc=*ru*"
Enter LDAP Password: # введите пароль администратора LDAP
@@@

<<seeAlso ldap>>
Чтобы узнать IP-адрес (или все имеющиеся адреса) текущего компьютера или сервера выполните команду `hostname -I` или просто `myip`.
<<tiddler tmpl-install with:"virt-manager">>
Выполните команду: 
```
virt-manager
```

! Создание виртуальной машины
Откроется графическое окно менеджера виртуальных машин.
В верхней панели нажмите на кнопку !img/Virt-manager/Создание VM.png!.  Появится окно `Новая виртуальная машина`. Далее будет предложено выбрать метод установки операционной системы.

Выберите метод установки ОС.

!img/Virt-manager/VM1.png!

Шаг 1
В примере выбрана установка - `Образ ISO`

!img/Virt-manager/VM2.png!

Шаг 2 

Выполните следующие шаги по созданию виртуальной машины:

* настройка памяти и процессоров;

!img/Virt-manager/VM3.png!

Шаг 3

* настройка пространства хранения данных, создание образа диска, выбор или создание дополнительного пространства данных;

!img/Virt-manager/VM4.png!

Шаг 4

* создание виртуальной машины;

!img/Virt-manager/VM5.png!

Шаг 5

Установите операционную систему на созданную виртуальную машину. 

!!! См.
* [[Установка системы]]
Для того, чтобы отключить («опустить») или включить («поднять») интерфейс, необходимо использовать команду `ifconfig`:

```
# ifconfig <интерфейс> up|down
```

Для запуска, остановки, перезапуска всех интерфейсов системы необходимо использовать службу `networking`:

```
# service networking start|stop|restart
```
В `systemd` объекты действий - «модули», которые являются ресурсами, и служба `systemd`  управляет ресурсами. Модули классифицируются по типу ресурса, который они представляют, и определяются с файлами, известными как файлы модулей. Тип каждого модуля может быть выведен из суффикса в конце файла.
Для задач управления служат модули, которые имеют файлы модулей с суффиксом `.service`. Хотя в большинстве команд управления службами  фактически можно отказаться от суффикса `.service`, поскольку `systemd ` определяет, что эти команды работают с управлением сервисом.

! Запуск и остановка служб
Для запуска службы `systemd` выполните команду: 
```
sudo systemctl start application.service
```
Для остановки текущей службы выполните команду:
```
sudo systemctl stop application.service
```

! Перезапуск и перезагрузка служб.
Чтобы  перезагрузить файлы конфигурации (без перезапуска), выполните команду `reload`:
```
sudo systemctl restart application.service
```
Если нет информации о наличии у службы функции для перезагрузки конфигурации, выполните команду перезагрузки или перезапуска. Это  перезагрузит конфигурацию на месте. В противном случае служба будет перезапущена для формирования новой конфигурации.
```
sudo systemctl reload-or-restart application.servicesystemd
```

! Включение и отключение служб
Чтобы запустить службу при загрузке, используйте команду `enable`:
```
sudo systemctl enable application.service
```
Это создаст символическую ссылку из копии файла службы (обычно в `/lib /systemd/system` или `/etc/systemd/system`) в место на диске, где `systemd` ищет файлы автозапуска (обычно `/etc/systemd/ system /some_target.target.wants`).
Чтобы отключить запуск службы автоматически, введите команду:
```
sudo systemctl disable application.service
```
Это приведет к удалению символической ссылки, указывающей, что служба должна запускаться автоматически.
systemctl list-unit-files --type=target

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


! Проверка состояния служб
Чтобы проверить статус службы в системе, введите команду:
```
systemctl status fierwalld.service
```
Будет выведена информация о состоянии службы, иерархии групп и несколько первых строк журнала.
```
firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Чт 2017-06-15 14:22:17 MSK; 4 days agosystemd
     Docs: man:firewalld(1)
 Main PID: 772 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─772 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

июн 15 14:22:16 user.local systemd[1]: Starting firewalld - dynamic fi....
июн 15 14:22:17 user.local systemd[1]: Started firewalld - dynamic fir....
Unit service.service could not be found.
Hint: Some lines were ellipsized, use -l to show in full.
```
Информация описывает текущее состояние приложения, уведомляет о любых проблемах и любых действиях, которые могут потребоваться.

Существуют также методы проверки определенных состояний. Например, чтобы проверить, активен ли данный элемент (работает), введите команду `is-active`:
```
systemctl is-active firewalld.service 
```
Появится подобный вывод:
```
active
```

! Обзор состояния системы
Существует несколько команд `systemctl`, которые предоставляют информацию об общем состоянии системы.

*Список активных блоков*
Чтобы просмотреть список всех активных модулей в системе, выполните команду `list-units`:
```
systemctl list-units
```
Будет выведен список всех модулей, которые в настоящее время активны в системе. Вывод будет выглядеть примерно так:
```
UNIT                                      LOAD   ACTIVE SUB     DESCRIPTION
atd.service                               loaded active running ATD daemon
avahi-daemon.service                      loaded active running Avahi mDNS/DNS-SD Stack
dbus.service                              loaded active running D-Bus System Message Bus
dcron.service                             loaded active running Periodic Command Scheduler
dkms.service                              loaded active exited  Dynamic Kernel Modules System
getty@tty1.service                        loaded active running Getty on tty1

... 
```

* UNIT - модуль системы `systemd`;
* LOAD - анализируется ли конфигурация модуля системой `systemd`. Конфигурация загруженных модулей хранится в памяти;
* ACTIVE - сводное состояние о том, активен ли модуль;
* SUB - это состояние более низкого уровня, которое указывает более подробную информацию о модуле; 
* DESCRIPTION - краткое текстовое описание того, что делает модуль.

Поскольку команда `list-units` показывает по умолчанию только активные модули, все вышеперечисленные записи будут отображаться «загружены» в столбце `LOAD` и «активны» в столбце `ACTIVE`. Этот дисплей фактически отображает поведение `systemctl` по умолчанию при вызове без дополнительных команд и  если вызвать `systemctl` без аргументов информация будет та же.
Для вывода дополнительной информации добавьте  к команде `systemctl` дополнительные флаги. Например, чтобы увидеть все модули, которые `systemd` загрузила (или попыталась загрузить), независимо от того, активны ли они в данный момент, используйте флаг `--all`:
```
systemctl list-units --all
```
Команда с флагом `--all` покажет любой модуль, который система загрузила или попыталась загрузить, независимо от ее текущего состояния в системе. После запуска некоторые модули становятся неактивными, а некоторые модули, которые пытались загрузить, не найдены на диске.

Для фильтрации этих результатов используйте другие флаги. Например, флаг `--state =` для указания состояний `LOAD`, `ACTIVE` или `SUB`. Флаг `--all` используется, чтобы `systemctl` позволял отображать неактивные модули:
```
systemctl list-units --all --state=inactive
```
Другим распространенным фильтром является флаг `--type =`. При использовании `systemctl` с флагом `--type =` будут отображаться только модули, указанные после флага . Например, чтобы видеть только активные сервисные модули, выполните команду:
```
systemctl list-units --type=service
```
*Список всех файловых блоков*
Команда `list-units ` отображает только модули, которые `systemd` попыталась разобрать и загрузить в память. Поскольку `systemd` будет читать модули выборочно, то не все доступные модули в системе будут отображены. Чтобы просмотреть каждый доступный модульный файл в пределах путей `systemd`, в том числе и те, которые `systemd` не пыталась загрузить, выполните команду `list-unit-files`:
```
systemctl list-unit-files
```
Вывод состоит из двух столбцов: файла модуля и состояния и будет выглядеть примерно так:

```
UNIT FILE                                     STATE   
proc-sys-fs-binfmt_misc.automount             static  
dev-hugepages.mount                           static  
dev-mqueue.mount                              static  
proc-fs-nfsd.mount                            static  
proc-sys-fs-binfmt_misc.mount                 static  
sys-fs-fuse-connections.mount                 static  
sys-kernel-config.mount                       static  
sys-kernel-debug.mount                        static  
tmp.mount                                     disabled
var-lib-nfs-rpc_pipefs.mount                  static  
brandbot.path                                 disabled
cups.path                                     enabled 
notification-daemon-config.path               enabled 
systemd-ask-password-console.path             static  
systemd-ask-password-plymouth.path            static  
systemd-ask-password-wall.path                static  
session-1.scope                               static  
session-c1.scope                              static  
accounts-daemon.service                       enabled 
alsa-restore.service                          static  
alsa-state.service                            static  
alsa-store.service                            static  

...
```
 
*Примечание.* `static` означает, что файл модуля не содержит раздел «установка», который используется для включения модуля. Таким образом, эти модули не могут быть включены. Обычно это означает, что модуль выполняет одноразовое действие или используется только как зависимость от другого устройства и не должно запускаться само по себе.

*Отображение файла модуля*
Чтобы отобразить файл модуля, который `systemd` загрузила в свою систему, используйте команду `cat`. Например, чтобы увидеть единичный файл службы планирования `atd`, выполните команду:
```
systemctl cat atd.service
```
Результатом является файл модуля, который известен текущему, запущенному процессу `systemd`. Это важно, если файлы модулей были недавно модифицированы, или переопределены некоторые параметры в фрагменте файла модуля:
```
[Unit]
Description=Job spooling tools
After=syslog.target systemd-user-sessions.service

[Service]
EnvironmentFile=/etc/sysconfig/atd
ExecStart=/usr/sbin/atd -f $OPTS
IgnoreSIGPIPE=no

[Install]
WantedBy=multi-user.target
```
*Отображение зависимостей*
Чтобы увидеть дерево зависимостей модуля, используйте команду `list-dependencies`:
```
systemctl list-dependencies sshd.service
```
Вывод будет подобным:
```
sshd.service
● ├─sshd-keygen.service
● ├─system.slice
● └─basic.target
●   ├─alsa-restore.serviceFor example, to reboot the system, you can usually type:
●   ├─alsa-state.service
●  

```
Рекурсивные зависимости отображаются только для `.target` модулей, которые указывают состояния системы. Чтобы рекурсивно перечислить все зависимости, включите флаг `--all`.

Чтобы показать обратные зависимости, добавьте в команду флаг `--reverse`. Для отображения модулей, которые зависят от указанного модуля, от начала  до конца, соответственно, используйте флаги `--before` и `--after`.

*Проверка свойств модуля*
Чтобы увидеть низкоуровневые свойства модуля, используйте команду `show`. Это отобразит список свойств, заданных для указанного модуля.
```
systemctl show sshd.service
```
Вывод:

```
Type=notify
Restart=on-failure
NotifyAccess=main
RestartUSec=42s
TimeoutStartUSec=1min 30s
TimeoutStopUSec=1min 30s
WatchdogUSec=0
...
```
Чтобы отобразить одно свойство, передайте флаг `--p` с именем свойства. Например, чтобы увидеть конфликты, которые имеет узел `sshd.service`, введите:
```
systemctl show sshd.service -p Conflicts
```
Вывод:
```
Conflicts=shutdown.target
```
*Редактирование файлов модуля*
`systemctl` предоставляет встроенные механизмы для редактирования и изменения файлов модулей.
Команда редактирования по умолчанию откроет фрагмент файла модуля для рассматриваемого модуля:
```
sudo systemctl edit nginx.service
```
Это будет пустой файл, который можно использовать для переопределения или добавления директив в определении модуля. Каталог будет создан в каталоге `/etc/systemd/system`, который содержит имя модуля с добавлением `.d` Например, для `nginx.service` будет создан каталог `nginx.service.d`.

Внутри этого каталога будет создан фрагмент с именем `override.conf`. Когда модуль загружается, `system`d будет в памяти объединять фрагмент переопределения с полным файлом модуля. Директивы фрагмента будут иметь приоритет над теми, что указаны в исходном файле модуля.

Если вы хотите отредактировать полный файл модуля вместо создания фрагмента, вы можете передать флаг `--full`:
```
sudo systemctl edit --full nginx.service
```
Это загрузит текущий файл модуля в редактор, где его можно будет изменить. При выходе из редактора, измененный файл будет записан в `/etc/systemd/system`, что будет иметь приоритет над определением модуля системы (обычно это находится в `/lib/systemd/system`).

Для удаления добавленных дополнений, удалите каталог конфигурации `.d` или модифицированный служебный файл из `/etc/systemd/system`. Например, чтобы удалить фрагмент, введите:
```
sudo rm -r /etc/systemd/system/nginx.service.d
```
Чтобы удалить полностью модифицированный файл модуля введите:
```
sudo rm /etc/systemd/system/nginx.service
```
После удаления файла или каталога перезагрузите процесс `systemd`, чтобы он больше не ссылался на эти файлы и не возвращался обратно к использованию системных копий. Для этого выполните команду:
```
sudo systemctl daemon-reload
```
*Настройка состояния системы (уровень запуска) с помощью целей*

Цели - это специальные файлы модулей, которые описывают состояние системы или точку синхронизации. Файлы, которые определяют цели, могут быть идентифицированы по их суффиксу, который в этом случае является `.target`. Цели используются для группировки модулей.
Этот механизм используется для  приведения системы в определенные состояния, так же как и другие системы инициализации, используют уровни запуска. 
Например, есть `swap.target`, который используется для указания того, что `swap` готов к использованию. Модули, которые являются частью этого процесса, могут синхронизироваться с этой целью, указывая в их конфигурации, что они `WantedBy =` или `RequiredBy = swap.target`. Модули, для которых требуется своп, могут указывать это условие, используя спецификации `Wants =`, `Requires =` и `After =`.

*Получение и настройка цели по умолчанию*
Служба `systemd` имеет цель по умолчанию, которая активируется  при загрузке системы. Выполнение последовательности зависимостей от этой  цели приведет систему в необходимое состояние. Чтобы найти цель по умолчанию, введите:
```
systemctl get-default
```
Вывод:
```
multi-user.target
```
Для установки другой цели по умолчанию используйте команду `set-default`. Например, в системе есть графический рабочий стол и необходимо, чтобы система загружалась по умолчанию. Для изменения цели выполните команду:
```
sudo systemctl set-default graphical.target

```
*Список доступных целей*
Выполните команду:
```
systemctl list-unit-files --type=target
```
В отличие от уровней запуска, несколько целей могут быть активны одновременно. Чтобы увидеть все активные цели, выполните команду:
```
systemctl list-units --type=target
```
*Изолирующие цели*
Можно запустить все модули, связанные с целью, и остановить все модули, которые не являются частью дерева зависимостей. Для этого используется команда `isolate`. 

Например, в системе с графической средой и с активной `graphical.target`, можно отключить графическую систему и перевести систему в состояние многопользовательской командной строки, изолировав `multi-user.target`. Поскольку `graphical.target` зависит от `multi-user.target`, но не наоборот, все графические модули будут остановлены.

Перед выполнением этой процедуры проверьте  зависимости целевого объекта, который необходимо изолировать, чтобы не остановить жизненно важные службы:
```
systemctl list-dependencies multi-user.target
```
Выделите цель, выполнив команду:
```
sudo systemctl isolate multi-user.target
```
*Использование ярлыков для важных событий*

Например, чтобы вывести систему в режим спасения (однопользовательский),используйте команду `rescue` вместо изоляции `rescue.target`:
```
sudo systemctl rescue
```
Чтобы остановить систему, используйте команду `halt`:
```
sudo systemctl halt
```
Чтобы полностью завершить работу системы, используйте команду отключения питания `poweroff`:
```
sudo systemctl poweroff
```
Для перезапуска системы используйте команду перезагрузки `reboot`:
```
sudo systemctl reboot
```
Например, чтобы перезагрузить систему, введите:
```
sudo reboot
```
! Управление systemd на удаленной машине

`Systemd` позволяет управлять удаленной машиной по `SSH`. Для управления используйте команду:

```
systemctl —host user_name@host_name command
```
где `user_name` – имя пользователя, `host_name` – имя хоста, которым осуществляется удаленное управление, а `command` – выполняемая команда `systemd`.
Чтобы включить мониторинг системы <<tiddler tmpl-install with:sysstat>>
<<tiddler tmpl-install with:vsftpd>>

С помощью текстового редактора vi отредактируйте конфигурационный файл, для этого выполните команду:
```
sudo vi /etc/vsftpd/vsftpd.conf
```
Отредактированный конфигурационный файл должен выглядеть следующим образом:

```
# строка 12: запретить доступ анонимным пользователям
anonymous_enable=NO
# строка 82,83: раскомментировать (разрешить режим ascii)
ascii_upload_enable=YES
ascii_download_enable=YES
# строка 100, 101: раскомментировать ( включить chroot )
chroot_local_user=YES
chroot_list_enable=YES
# строка 103: раскомментировать ( указать список chroot )
chroot_list_file=/etc/vsftpd/chroot_list
# строка 109: раскомментировать
ls_recurse_enable=YES
# строка 114: изменить ( если использовать IPv4 )
listen=YES
# строка 123: изменить ( выключить при ненадобности)
listen_ipv6=NO
# добавить в конце
# указать корневой каталог (если не указать, домашний каталог пользователей станет домашним каталогом FTP)
local_root=public_html
# использовать местное время
use_localtime=YES
```
Для этого выполните команды:
```
sudo vi /etc/vsftpd/chroot_list
# добавьте пользователей, в домашних каталогах которых вы разрешаете chroot
testuser
```
Перезапустите службу, добавьте старт службы при загрузке системы:
```
sudo systemctl start vsftpd
sudo systemctl enable vsftpd 

```

 <<tiddler tmpl-firewall-service with:ftp>>
Включите переключатель SELinux, выполнив команду:
```
sudo setsebool -P ftpd_full_access on 
```
<<tiddler tmpl-install with:phpldapadmin>>

Отредактируйте параметры phpldapadmin.

```php
sudo vi /etc/phpldapadmin/config.php

# найдите строку 397 и раскомментируйте её, строку 398 закомментируйте:
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');
```

Разрешите доступ из вашей подсети, `10.0.0.0` нужно заменить на вашу подсеть.

```sh
sudo vi /etc/httpd/conf.d/phpldapadmin.conf
    # замените Require local на следующую строку:
    Require ip 10.0.0.0/24
```

<<tiddler tmpl-restart-service with:httpd>>

<<tiddler tmpl-firewall-service with:http>>

Выполните вход, набрав в адресной строке вашего бразуера `http://<имя сервера или IP>/ldapadmin/`, введите в качестве логина `cn=ldapadmin,dc=example,dc=ru`, заменив `ldapadmin`, `example`, `ru` в соответствии с собственными настройками домена. Введите пароль администратора LDAP.

<<seeAlso ldap>>
Находится в [[Программе установки|Программа установки]]

Внимание! *Все* данные и файловые системы с жёсткого диска будут безвозвратно удалены! Заблаговременно сделайте резервную копию важных данных!

Установка ОС без участия администратора. Жёсткий диск компьютера будет полностью отформатирован и разбит на разделы автоматически. После установки необходимо произвести первичную [[настройку системы|Настройка системы]]. Пароли *загрузчика*, пользователей *root* и *user*: *12345678*
Находится в [[Программе установки|Программа установки]].

Интерактивный графический диалог с администратором позволяет детально настроить процесс установки ОС. На экран выводятся пункты меню, которые можно настроить перед установкой. Пункты меню, которые ожидают действий администратора, помечены оранжевой иконкой с восклицательным знаком. Остальные пункты меню уже настроены по умолчанию, но их параметры могут быть изменены.

[img[img/installer/InstallTarget.png]] 

Для изменения параметров любого из пунктов меню, выберите его и следуйте указаниям мастера установки. После настройки нажмите на кнопку "Готово". Повторите эти действия для всех параметров, которые вы хотите изменить.
В правом верхнем углу окна программы установки отображается иконка раскладки клавиатуры. Её можно использовать для изменения языка ввода, так же для изменения языка ввода можно использовать клавишу "Caps Lock".

[[Автоматическое разбиение диска|Автоматическое разбиение диска в графическом режиме]]
[[Самостоятельное разбиение диска|Самостоятельное разбиение диска в графическом режиме]]
[[Разбиение диска для установки на компьютер с ОС Linux|Разбиение диска для установки на компьютер с ОС Linux]]
[[Разбиение диска для установки на компьютер с ОС Windows|Разбиение диска для установки на компьютер с ОС Windows]]

После завершения установки нажать на кнопку "Перезагрузка", компьютер перезагрузится.
После установки необходимо произвести первичную [[настройку системы|Настройка системы]].
@attr order=e
Необходимо:

* установленный в систему менеджер виртуальных машин;
* [[загрузочный USB-носитель|Создание загрузочного USB-носителя]], [[загрузочный DVD-диск|Создание загрузочного DVD-диска]] или <<tiddler tmpl-get-iso>>.

Создать и настроить виртуальную машину, используя руководство менеджера виртуальных машин и технические требования ОС:

# Частота процессора не менее	1 ГГц.
# Минимальные требования к размеру оперативной памяти	1 Гбайт на одно ядро процессора.
# Минимальное свободное место на диске	10 Гбайт.

В свойствах виртуальной машины подключить: USB-носитель, или DVD-диск, или iso-образ. Запустить виртуальную машину, установить ОС с помощью [[программы установки|Программа установки]].
@attr mls=1
Для установки ОС по сети, необходимо:

* [[загрузочный USB-носитель|Создание загрузочного USB-носителя]] либо [[загрузочный DVD-диск|Создание загрузочного DVD-диска]];
* компьютер, подключённый к сети Интернет.

Вставьте USB-носитель (DVD-диск) в USB-порт (оптический привод) компьютера, на котором нужно установить ОС и выполните настройку BIOS на загрузку с USB-носителя (оптического привода), после чего перезагрузите компьютер.

<<tiddler tmpl-boot-bios>>

Загрузится программа установки, в которой необходимо выбрать "Установка ОС в графическом режиме", после проверки USB-носителя (DVD-диска) загрузится графическая оболочка установки. Выберите пункт меню "Источник установки" и далее "В сети". В ниспадающем меню выбрать `http://`, в строку адреса ввести путь до репозитория ОС, например: `downloads.os-rt.ru/os-rt-latest/x86_64/`.

По необходимости настройте остальные пункты главного меню программы установки и нажмите "Начать установку". Установите пароль для root и создайте пользователей (пользователей можно создать после установки системы).

После завершения установки нажать на кнопку "Перезагрузка", компьютер перезагрузится.
После установки необходимо произвести первичную [[настройку системы|Настройка системы]].

Примечание. Аналогичная установка есть в режиме "Установка ОС в режиме командной строки".
Находится в [[Программе установки|Программа установки]].

Режим интерактивного графического диалога с администратором. Используется базовый видеодрайвер, позволяющий установить ОС на компьютер с неподдерживаемым видеоадаптером.

После выбора режима и загрузки программа установки проверит целостность носителя и отобразит графический интерфейс. Процесс интерактивного диалога программы и администратора аналогичен диалогу режима [[Установка ОС в графическом режиме.|Установка ОС в графическом режиме]]
@attr order=b
Выполните [[настройку BIOS|Настройка BIOS]] на загрузку системы с оптического привода, вставьте [[загрузочный DVD-диск|Создание загрузочного DVD-диска]] в оптический привод компьютера, на котором нужно установить ОС, после чего перезагрузите компьютер. После перезагрузки [[программа установки|Программа установки]] предложит установить ОС несколькими способами.

<<tiddler tmpl-boot-bios>>
@attr order=c
После [[создания загрузочного носителя|Создание загрузочного USB-носителя]], вставьте носитель в USB-порт компьютера, на котором нужно установить ОСб и выполните [[настройку BIOS|Настройка BIOS]] на загрузку с USB-носителя, после чего перезагрузите компьютер. После перезагрузки [[программа установки|Программа установки]] предложит установить ОС несколькими способами.

Внимание! Использовать *только перечисленные* варианты установки:
[[Установка ОС в графическом режиме]]
[[Установка ОС с базовым видеодрайвером]]
[[Настройка и установка ОС в режиме командной строки]]
Автоматические режимы установки удаляют *все* данные на USB-носителе!

<<tiddler tmpl-boot-bios>>
Операционная система состоит из ядра, набора системных утилит и пользовательских программ. Физически все эти компоненты представляют собой файлы на жёстком диске. Таким образом, добавление новых программ и функциональных возможностей в операционную систему сводится к копированию необходимых для этого файлов: исполняемых, конфигурационных, ресурсов. Удаление программы соответственно сводится к удалению тех же самых файлов. Чтобы упростить процедуру установки, удаления и обновления ПО, в системе установлены пакетные менеджеры: они контролируют, какие файлы нужно добавить или удалить.

Внимание! *Никогда не устанавливайте в операционную систему приложения путем простого копирования файлов. Это может привести к фатальному повреждению операционной системы. Используйте RPM-пакеты и менеджер пакетов YUM для установки программ.*

Менеджер управления пакетами yum представляет собой оболочку для *rpm*, обеспечивающую работу с репозиториями с автоматическим разрешением зависимостей. В качестве источников пакетов утилита *yum* использует репозитории, настроить которые системный администратор может при помощи конфигурационных файлов, располагающихся в каталоге */etc/yum.repos.d*. Типы репозиториев: 

* локальный репозиторий - располагается на локальном запоминающем устройстве или диске (CD, DVD); 
* внешний репозиторий - располагается в сети.

Для работы с *yum* необходимо, чтобы были настроены один или несколько репозиториев, в ОС настроен локальный репозиторий (*media.repo*), который по умолчанию и находится в каталоге */etc/yum.repos.d*. Все необходимые программы для ОС находятся на диске дистрибутива. Для доступа к локальному репозиторию необходимо вставить диск с дистрибутивом ОС в привод DVD. Можно подключать и другие репозитории для установки сертифицированного ПО, отсутствующего в ОС.

*П р и м е ч а н и е.* Для подключения (настройки) репозиториев необходимы
права системного администратора.
*1. yum*
   Утилита yum позволяет выполнять основные операции по установке и удалению программ, которые оформлены в виде специальных архивов, называемых па-
кетами. Отличительными особенностями данной программы являются:
* возможность разрешения зависимостей;
* поддержка репозиториев;
* автоматическая работа с несколькими источниками пакетов одновременно.
   Все необходимые программы для ОС находятся на диске дистрибутива. Для
установки нужного пакета необходимо вставить диск с дистрибутивом ОС в привод DVD и выполнить следующую команду от имени системного администратора:
```
sudo yum install <имя пакета>
```
Отдельный файл rpm-пакета устанавливается в систему с помощью команды:
```
sudo yum localinstall <имя файла.rpm>
```
Программа-установщик по возможности определит и разрешит все необходимые зависимости, а в случае неудачи выдаст список отсутствующих зависимостей.
Обновление системы ОС производится командой:
```
sudo yum update
```
Для обновления ОС необходимо иметь в приводе DVD диск с обновлениями или подключиться к серверу с доступными пакетами обновления.
Для того чтобы обновить только конкретный пакет, нужно выполнить команду:
```
sudo yum update <имя пакета>
```
*2. Создание и использование репозитория для yum*
```
sudo yum-config-manager --disable <имя>
```


2.1 Настройка репозитория с помощью iso-образа:

    1. Загрузите последний iso-образ с сайта * http://os-rt.ru*
    2. `mount -o loop /path/to/OS-RT-image.iso /misc/cd ` (подставить путь до загруженного образа)
    3. `yum clean all`
    4. Репозиторий готов к работе.

2.2 Настройка репозитория с DVD-ROM:

    1. Вставьте диск в привод компьютера
    2. `mount /dev/sr0 /misc/cd`
    3. `yum clean all`
    4. Репозиторий готов к работе.

Репозиторий можно использовать для раздачи пакетов в закрытой сети

Для использования в закрытой сети можно разместить на сетевом диске NFS iso-образ, который далее монтировать описанным выше способом.

Для быстрого доступа к NFS-разделам установите пакет *autofs*, после чего сетевые папки будут доступны по пути */net/<hostname>/<sharename>*.

*3. rpm*

Утилита *rpm* предназначена для управления пакетами и может использоваться для выполнения различных операций над ними: поиск установленных пакетов, просмотр информации о пакетах, установка, обновление и удаление отдельных пакетов. Программа может использоваться для быстрой установки и обновления одиночных пакетов, но не годится для пакетов со множеством зависимостей, так как не выполняет разрешение зависимостей. В таком случае лучше воспользоваться программой *yum*.


Запрос и проверка пакетов: 

```
rpm -q|--query [<параметры выбора>] [<параметры запроса>]
```

Установка, обновление и удаление пакетов: 

```
rpm -i|--install [<параметры установки>] <файл...>
```

Примеры.

Выводит список всех пакетов в системе:

```
rpm -qa
```

Поиск пакета среди установленных в системе.

```
rpm -qa | grep '^coreutils'
```

Выводит информацию о пакете. Используйте Tab для автодополнения имени пакета.

```
rpm -qi grep
```

Выводит список файлов, принадлежащих пакету.

```
rpm -ql grep
```

Выводит имя пакета, которому принадлежит данный файл.

```
rpm -qf /bin/pwd
```

Для получения подробной информации наберите команду `man rpm`.

*4. Удаление пакетов - сирот*

В процессе установки и удаления программ с помощью команды `yum`, может сформироваться набор пакетов, установленных как зависимости, но на текущий момент от этих пакетов ничего не зависит.

Пакеты-сироты образуются следующим образом:

 1. Устанавливается пакет A, который требует для своей работы пакеты B и C, которые также устанавливаются как зависимости пакета A;

 2. Пакет A удаляется (например за ненадобностью или он был установлен по ошибке). При этом yum не удаляет зависимости B и C;

 3. Если от пакетов B и C больше не зависит ни один пакет в системе и они не являются самостоятельными приложениями, то пакеты B и C становятся пакетами-сиротами.

Пакеты-сироты автоматически не удаляются, но системный администратор может периодически отслеживать их.

Для просмотра списка пакетов-сирот выполните команду:

```
package-cleanup --quiet --leaves --exclude-bin
```

Параметр *--exclude-bin* сохранит пакеты, в которых есть полезные программы (выводит только служебные пакеты). Если этот параметр опустить, будут также выведены программы, которые могут выполнять полезные функции, например, офисные программы, хотя от этих пакетов ничего не зависит.

Для того чтобы удалить эти пакеты, выполните следующую команду от имени системного администратора:

```
sudo yum remove $(package-cleanup --quiet --leaves --exclude-bin) 
```

*5. Управление репозиториями*

 Репозитории представляют собой текстовые конфигурационные файлы и находятся в каталоге */etc/yum.repos.d*. Утилита *yum* считывает все файлы, расположенные в этом каталоге и составляет из них единый список репозиториев, которые будут использоваться при операциях над пакетами. Системный администратор может добавить репозиторий несколькими способами:

* вручную создать файл в каталоге */etc/yum.repos.d* и заполнить его в соответствии с параметрами репозитория;

* добавить репозиторий при помощи утилиты *yum-config-manager*.

Расширением по умолчанию для конфигурационных файлов репозиториев является *.repo.*

*5.1. Конфигурационный файл репозитория*

Репозитории сохраняются в конфигурационных файлах стандартного формата.

*[<имя>]* Обозначает раздел, в контексте репозиториев обозначает начало нового репозитория с указанным именем. В одном файле можно перечислить несколько репозиториев, но для удобства рекомендуется разделять репозитории на несколько конфигурационных файлов.

*параметр=значение* Стандартная пара параметра и значения.

Рассмотрим основные параметры репозитория.

*name* Произвольное полное название репозитория для удобства администратора.

*baseurl* Адрес репозитория. Может быть файлом (формат `file://<путь>`), или удалённым адресом FTP/HTTP (формат `ftp://<адрес> или http://<адрес> соответственно`). Параметр обязателен.

*enabled* Определяет, включён ли репозиторий. Если репозиторий выключен, *yum* будет игнорировать его. Допустимые значения: 0 (выключен) или 1 (включён). Параметр необязателен и по умолчанию. репозиторий считается включённым.

*gpgcheck* Проверяет электронную цифровую подпись пакета. Допустимые значения: 0 (проверка выключена) или 1 (проверка включена).

Для того чтобы добавить в систему новый репозиторий создайте файл */etc/yum.repos.d/<имя>.repo* следующего содержания:


```
[<имя>]
name=<полное название репозитория>
baseurl=<адрес репозитория>
gpgckeck=0
```

*5.2. Создание репозитория с помощью команды yum-config-manager*

Для того чтобы создать новый репозиторий выполните команду:

```
# yum-config-manager --add-repo <адрес репозитория>
```
Команда автоматически создаст необходимый файл и заполнит недостающие поля.

Для того чтобы включить репозиторий выполните команду

```
# yum-config-manager --enable <имя>
```

Вместо имени можно использовать шаблон. Например:

```
# yum-config-manager --enable repo*
```

Все репозитории, имя которых начинается с *«repo»* будут включены.

Для того чтобы выключить репозиторий выполните команду

```
# yum-config-manager --disable <имя>
```

Аналогично предыдущему примеру в качестве имени можно использовать шаблон.
Выполните действия описанные  в разделе:
[[Программа установки|Программа установки]]
[[Установка ОС в графическом режиме|Установка ОС в графическом режиме]]
[img[img/Raid/Raid-1.png]] 
[img[img/Raid/Raid-2.png]] 
[img[img/Raid/Raid-3.png]]
[img[img/Raid/Raid-4.png]] 
[img[img/Raid/Raid-5.png]] 
[img[img/Raid/Raid-6.png]] 
Для установки пакета выполните команду:
@@@
sudo yum install *название пакета*
@@@

@attr order=b
@attr alias=install-os
!!!Загрузка системы

:Скачайте <<tiddler tmpl-get-iso>>. Данный установочный образ нужно [[записать на DVD-диск|Создание загрузочного DVD-диска]] любым приложением для записи дисков или на [[USB-носитель|Создание загрузочного USB-носителя]] подходящего размера.

!!!Подготовка к установке

Внимание! Перед установкой ОС на компьютер рекомендуется выполнить резервную копию важных данных с данного компьютера.

Выполните [[настройку BIOS|Настройка BIOS]] на загрузку системы с оптического привода, вставьте загрузочный DVD-диск в оптический привод компьютера, на котором нужно установить ОС, после чего перезагрузите компьютер. Для установки с USB-носителя, BIOS нужно настроить на загрузку с USB-диска, вставить [[изготовленный загрузочный USB-носитель|Создание загрузочного USB-носителя]] и перезагрузить компьютер.

После перезагрузки программа установки предложит установить ОС несколькими способами. Выберите пункт "Установка ОС в графическом режиме" (по умолчанию).

Примечание. Некоторые BIOS позволяют указывать загрузочный диск вручную, в таком случае нужно при перезагрузке компьютера нажать соответствующую клавишу (как правило, `F10-F12`). Описание назначения клавиш выбора вариантов загрузки и входа в BIOS см. в документации на аппаратное обеспечение.

!!!Установка ОС

Интерактивный графический диалог с администратором позволяет детально настроить процесс установки ОС. На экран выводятся пункты меню, которые можно настроить перед установкой. Пункты меню, которые ожидают действий администратора, помечены оранжевой иконкой с восклицательным знаком. Остальные пункты меню уже настроены по умолчанию наиболее оптимальным образом, но их параметры могут быть изменены.

[img[img/installer/InstallTarget.png]] 

Для изменения параметров любого из пунктов меню, выберите его и следуйте указаниям мастера установки. После настройки нажмите на кнопку `Готово`. Повторите эти действия для всех параметров, которые вы хотите изменить.

В правом верхнем углу окна программы установки отображается иконка раскладки клавиатуры. Её можно использовать для изменения языка ввода, так же для изменения языка ввода можно использовать клавишу `Caps Lock`.

!!!!Выбор места установки

Для начинающих пользователей рекомендуется использовать автоматическое разбиение диска.

Для автоматического создания разделов выберите "Система", "Место установки", в появившемся окне убедитесь что установлен параметр "Создать разделы автоматически". После завершения изменений нажимаем на кнопку "Готово", система готова к установке. Если на компьютере уже установлена операционная система, программа установки предупредит об этом и предложит удалить один или несколько дисковых разделов. Нажмите "Освободить все", чтобы полностью очистить диск.

Внимание! *Все* данные и файловые системы с жёсткого диска будут безвозвратно удалены! Заблаговременно сделайте резервную копию важных данных!

!!!!Установка пакетов

Нажмите на кнопку "Начать установку". Начнётся процедура установки пакетов, которая занимает 10-20 минут. Пока система устанавливается, введите пароль для root и создайте пользователей (пользователей можно будет создать после установки системы). После завершения установки компьютер нужно перезагрузить. 

!!!Настройка системы

<<tagging настройка>>

!!! См. также

<<tagging установка sortBy: order>>
Когда система загружается, один из сценариев инициализации запускает приложение `hwclock` для того, чтобы скопировать текущее значение аппаратных часов (hardware clock) в системное время (system clock). Утилита `hwclock` предполагает что аппаратные часы установлены в местное время (local time) до тех пор пока она не будет выполнена с ключом `-utc` (универсальное время, UTC).

По умолчанию система использует универсальное время (UTC). Для того чтобы использовать локальное время, запустите команду:

`# timedatectl set-local-rtc yes`
По умолчанию ОС устанавливает московский часовой пояс. Убедиться в этом можно с помощью следующей команды:

```sh
timedatectl 
...
       Time zone: Europe/Moscow (MSK, +0300)
```

Изменить часовой пояс можно следующей командой:

@@@
timedatectl set-timezone *TIMEZONE*
@@@

Посмотреть список доступных часовых поясов:

```
timedatectl list-timezones
```
На некоторых современных системах установка может не работать из-за режима UEFI. Если система не устанавливается или не удаётся разбить жёсткие диски, попробуйте войти в BIOS и выключить подсистему UEFI (переключиться на режим Legacy).
На современных компьютерах в BIOS поддерживается так называемый режим "быстрого старта", в котором система загружается быстрее обычного, пропуская некоторые шаги инициализации BIOS. Особенностью такого режима является невозможность выполнить вход в BIOS.

Если при загрузке компьютера не удалось выполнить вход в BIOS, попробуйте следующие варианты:

* удерживайте клавишу Shift при загрузке системы;
* удерживайте кнопку выключения питания более 10 секунд;
* отсоедините шнур питания от компьютера на несколько минут.

Если ничего из вышеперечисленного не произошло, выполните сброс BIOS в соответствии с документацией производителя оборудования.
*mail*

Утилита *mail* позволяет обмениваться пользователям почтой. Некоторые программы, например, *cron*, могут отправлять пользователю почтовые сообщения, информирующие об успехе выполнения заданий.

Отправка почты:

```
mail <адресат>
```

Адресат указывается аналогично команде` write`, однако адресат получит сообщение в свой почтовый ящик, а на терминал выводится лишь уведомление о наличии новых писем. Прочитать сообщение нужно вручную.

После запуска команда `mail` выводит сообщение:

```
Subject:
```
и переходит в состояние ожидания ввода. Отправитель должен ввести тему сообщения, затем нажать клавишу *Enter* и вводить текст сообщения. Текст сообщения может состоять из нескольких строк и должен заканчиваться нажатием в начале строки комбинации клавиш *Ctrl+D*. После этого `mail` выводит сообщение:

```
Сс:
```

в ответ на которое можно ввести имя пользователя, которому посылается копия сообщения. Если копия посылаться не должна - нажать клавишу *Enter* для продолжения.

Чтение почты:

```
mail
```

Если для пользователя нет почты, то после запуска команда `mail` выводит сообщение:

```
No mail for <имя пользователя>
```

и завершается.

Если почта есть, то `mail `выводит список имеющихся сообщений, в котором указан статус сообщения, отправитель, дата и время и тема сообщения. После этого `mail` печатает символ *«&»* - приглашение ко вводу внутренних команд `mail`.

Основные внутренние команды:

*`p` - печать текущего сообщения; сразу после запуска текущим является последнее сообщение;
* `<число>` - установка номера текущего сообщения и печать текущего сообщения;
* `+` - установка текущим следующего сообщения и печать текущего сообщения;
* `R` - формирование и посылка ответа на текущее сообщение;
* `d` - отметка текущего сообщения как удаленного; реальное удаление произойдет после выхода;
* `u` - отмена всех отметок об удалении;
* `s` - сохранение текущего сообщения в файле mailbox;
* `x` - окончание работы и выход;
* `?` - получение подсказки по внутренним командам.
Утилита *mesg* предназначена для настройки приёма сообщений, отправленных другими пользователями командой `write`

Формат команды:

```
mesg [-yn]
```

Параметр `-y` - разрешает приём сообщений, `-n` - запрещает. Запуск команды без параметров выводит текущее состояние разрешения о приёме сообщений.
*write*

Утилита *write* передаёт сообщение другому пользователю.

Формат команды:

```
write <адресат>
```

Адресат - имя пользователя или имя пользователя в сети в формате `<пользователь>@<сервер>`. Команда работает в интерактивном режиме, после выполнения команды пользователь вводит сообщение, завершая ввод сочетанием клавиш *Ctrl+D*. Сообщение появится на терминале адресата.
Для манипулирования файлами из командной строки в ОС используются утилиты, перечисленные в данном разделе.

!!! ls

Утилита `ls` служит для вывода на экран списка имен файлов и подкаталогов текущего каталога.

Если команда `ls` запущена без параметров, то выводятся только имена файлов текущего каталога. Если нужно просмотреть содержимое другого каталога, надо указать полный или относительный путь к каталогу.

Пример:

```
ls /
bin   dev  home   lib  mnt   proc     sbin srv  tmp  var
boot  etc  media  opt  root  sys  usr
```

Кроме того, утилита `ls` выводит не только список файлов и каталогов, но и их атрибуты. Для того чтобы отобразить список файлов с атрибутами, используется команда `ls -l`:

```
ls -l /
итого 166
drwxr-xr-x   2 root root   3520 Авг  1 13:36 bin
drwxr-xr-x   3 root root   1144 Авг  2 10:31 boot
drwxr-xr-x  18 root root   3720 Авг  3 15:11 dev
drwxr-xr-x 116 root root   8096 Авг  3 16:01 etc
...
```

Длинный формат вывода команды `ls` с параметром `-l` нуждается в дополнительном пояснении. Вывод команды разбивается на колонки:

# Первый столбец отображает дискреционные права доступа в символьном виде. Первый символ обозначает тип файла:
** `-` (дефис) - обычный файл;
** `d` - каталог;
** `b` - блочное устройство;
** `c` - символьное устройство;
** `l` - символическая ссылка;
** `p` - именованный канал;
** `s` - сокет.
# Второй столбец для каталогов отображает количество объектов внутри каталога, а для файла - количество жёстких ссылок.
# Третий столбец - имя пользователя владельца файла;
# Четвертый столбец - имя группы владельца файла;
# Пятый столбец - размер файла в байтах. Для каталогов данный столбец отображает не суммарный размер файлов внутри этого каталога, а размер самого каталога, который он занимает на диске;
# Шестой столбец - месяц последнего изменения файла;
# Седьмой столбец - день последнего изменения файла;
# Восьмой столбец - время последнего изменения файла;
# Девятый столбец - имя файла.

Если включена цветовая индикация, цвета файлов означают следующее:

* синий - каталог;
* зелёный - с правом на исполнение;
* жёлтый - файл устройства;
* красный - архив;
* фиолетовый - изображение;
* светло-голубой - мультимедийный файл;
* светло-голубой с символом `->` - ссылка, после стрелки отображается путь, на который указывает ссылка.

Подробнее - man:ls.

!!! lsattr

Команда `lsattr` позволяет просмотреть расширенные атрибуты, установленные с помощью команды `chattr`. В выходных данных команды `lsattr` используются те же буквы, что и в команде `chattr`.

Формат команды:

```
lsattr [-Rad] [<файл...>]
```

Подробнее - man:lsattr.

!!! mkdir

Утилита `mkdir` создает новый каталог. Параметр `-p` указывает на необходимость создания полной цепочки каталогов, которых ещё не существует.

Формат команды:

```
mkdir [<параметры>] <каталог...>
```

Параметры:

* `-m`, `--mode=режим` - установить код доступа (как в man:chmod);
* `-p`, `--parents` - не выдавать ошибок, если такой каталог уже существует, создавать родительские каталоги, если необходимо;
* `-v`, `--verbose` - печатать сообщение о каждом созданном каталоге;
* `-Z`, `--context=<контекст>` - установить контекст безопасности КСЗ для каждого создаваемого каталога равным `<контекст>`.

Примеры.

Создание каталога `newdir`:

```
mkdir newdir
```

Создание цепочки катологов:

```
mkdir many/nested/dirs
```

Создание каталогов dir1 и dir2:

```
mkdir dir{1,2}
```

Подробнее: man:mkdir.

!!! mknod

Специальные файлы блочных или символьных устройств, а также именованные каналы можно создать при помощи команды `mknod`.

Формат команды:

```
mknod [<параметры>] <имя> {bc} <основной номер> <второстепенный номер>
mknod [<параметры>] имя p
```

`mknod` создает файлы трёх типов: именованный канал, специальный файл символьного или блочного устройства. Специальный файл записывается в файловой системе с помощью трёх параметров: одного логического и двух целых. Логический параметр говорит о том, является ли специальный файл символьным или блочным. Два целых параметра задают основной и второстепенный номера устройства. Таким образом, специальный файл практически не занимает места на диске и используется только для общения с операционной системой, а не для хранения данных. Часто специальные файлы ссылаются на аппаратные устройства (диск, ленточное устройство, терминал, принтер) или на службы операционной системы (`/dev/null`, `/dev/random`). Специальные блочные файлы обычно ссылаются на устройства, подобные диску (где данные могут быть получены с помощью номера блока, и, например, такие устройства может иметь кэш блоков). Все другие устройства представлены специальными символьными файлами. Аргумент, следующий за аргументом имя, задает тип файла, который необходимо создать:

* p - для именованного канала;
* b - для блочного специального файла;
* c - для символьного специального файла.

Когда создается специальный блочный или символьный файл, то после типа файла должны быть указаны основной и второстепенный номера устройства (в десятичной или восьмеричной форме с ведущим нулем). По умолчанию значением прав доступа к созданным файлам становится 0666 (a+rw).

Параметры:

-m права, --mode=права 

Значение прав доступа к создаваемым файлам становится равным по величине значению аргумента права; оно может иметь как символьную форму (например, rwx), так и восьмеричную (например, 0777).

В отличие от специальных файлов устройств, создаваемых операционной системой в каталоге /dev (который является специальной файловой системой devtmpfs, хранящейся в оперативной памяти), программа mknod позволяет создавать специальные файлы в обычной файловой системе, что обеспечивает сохранение назначенных им дискреционных прав доступа (в том числе списков прав доступа - ACL),

Подробнее: man:mknod.
@attr order=9
|!Утилита|!Описание|
|man:ifup|Подключение интерфейса|
|man:ifdown|Отключение интерфейса|
|man:ifconfig|Настройка параметров интерфейса|
|man:route|Настройка маршрутизации|
|man:ip|Утилита, совмещающая возможности ifconfig и route|
|man:arp|Управление arp-таблицей|
|man:ethtool|Настройка производительности сетевой карты|
|man:hostname|Настройка имени хоста|
|man:ping|Проверка доступности узлов сети|
|man:traceroute|Трассировка маршрута до узла|
|man:dig|Диагностика DNS|
|man:nslookup|Выполнение DNS-запросов|
|man:host|Определение доменного имени узла|
|man:dhclient|Управление клиентом DHCP|
|man:netstat|Отображение информации о сети|
Наиболее простой и быстрый способ создания пользователя с уровнем доступа предоставляет утилита *z-adm*. Для добавления пользователя *user1* выполните команду:

```
# z-adm user add user1
```

Появится приглашение для ввода пароля пользователя - введите пароль нового пользователя и повторите его. Дождитесь окончания работы команды и появления на экране фразы об успешном добавлении пользователя в систему.

Для подробной информации выполните команду:

```
# z-adm user
```
*П р и м е ч а н и е.* Утилита *z-adm user* представляет собой объединение стандартных утилит *useradd*, *passwd* и *semanage*. При необходимости системный администратор может выполнить все эти действия вручную.

Создание пользователей происходит с помощью программы *useradd*. Для добавления пользователя выполните эту команду, указав в качестве параметра имя нового пользователя:

```
# useradd <имя нового пользователя>
```

Программа создаст домашний каталог пользователя в каталоге */home* и выполнит регистрацию нового пользователя в системе.

После создания пользователя необходимо задать ему пароль. Для изменения пароля пользователя используется команда `passwd`:

```
# passwd <имя пользователя, которому нужно изменить пароль>
<введите новый пароль пользователя>
<повторите ввод пароля>
```
Для удаления пользователя используйте команду `userdel`:

```
# userdel <имя существующего пользователя>
```

Для изменения параметров уже существующего пользователя используется команда `usermod`.

Изменить фамилию, имя и отчество пользователя, его офис и телефон позволяет команда `chfn`, которая работает в интерактивном режиме.

!!! Обмен сообщениями

Так как операционная система многопользовательская, в ней предусмотрен обмен сообщениями между пользователями, работающими в системе.
Обмен сообщениями производится с помощью утилит:

-*write*;
-*mail*;
-*mesg*.

!!! См. также

* [[Утилита mail]]
* [[Утилита write]]
* [[Утилита mesg]]
Существуют два разных набора файлов конфигурации: для клиентских программ (`ssh`, `scp` и `sftp`), и для сервера (`службы sshd`).
Общесистемная информация о конфигурации `SSH` хранится в каталоге `/ etc / ssh /`. Информация о конфигурации `SSH` для конкретного пользователя хранится в `~ / .ssh /` в домашнем каталоге пользователя.

<<slider "" "Системные файлы конфигурации SSH" "Системные файлы конфигурации">>

<<slider "" "Пользовательские файлы конфигурации SSH" "Пользовательские файлы конфигурации">>
Файлы устройств - специальные файлы, располагающиеся в каталоге `/dev`. Однако, в отличие от обычных файлов, специальные файлы устройств являются указателями на соответствующие драйверы устройств в ядре.

Работа с устройствами через файлы - одна из возможностей ОС.

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

Устройства `/dev/*` не являются фактически существующими и записанными на постоянный носитель файлами. 

Это виртуальная файловая система ядра, которая создаётся в оперативной памяти каждый раз при загрузке ОС. 

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

Тем не менее, виртуальная файловая система обладает всеми атрибутами настоящей файловой системы, что позволяет назначать устройствам дискреционные метки.

Назначение дискреционных прав доступа и списков прав доступа (`ACL`) осуществляется командами `chmod`, `chown`, `setfacl`.

Для того чтобы дискреционные метки сохранялись и после перезагрузки системы, достаточно команды, изменяющие их, разместить в файле `/etc/rc.local`.

Например, если добавить в файл `/etc/rc.local` строку:

```
setfacl -m u:test_user:rwx /dev/random
```

устройству `/dev/random` будет назначаться запись `ACL `при каждой загрузке операционной системы, избавляя от необходимости делать это каждый раз вручную.

!!! П р и м е ч а н и е. 

При изменении типов, уровней или других параметров устройств, система может перестать загружаться или корректно функционировать. 

Изменение прав доступа устройств возможно, но не является штатным.

!!! См. также

* [[Блочные устройства]]
* [[Символьные устройства]]
* [[Некоторые специальные устройства]]
!!! См. также

* [[Работа с файлами и каталогами]]
* [[Обычные файлы]]
* [[Каталоги]]
* [[Файлы устройств]]
* [[Именованные каналы]]
* [[Символьные ссылки]]
* [[Сокеты]]
* [[Структура файловой системы]]
* [[Утилиты для работы с файлами и каталогами]]
Это очень быстрый метод резервирования, целью которого является защита некоторых важных данных или миграция данных на другую физическую машину с переустановкой системы. Перед началом резервирования нужно оценить объём данных (команды `df -h` и `du -sh`) и определить, какие из важных каталогов нужно резервировать, а также составить список установленных пакетов для их последующего восстановления.

Далее нужно изучить каталоги, которые, содержат ценную информацию.

;/etc
:Файл с параметрами системы. Системные администраторы часто вносят сюда изменения связанные с настройкой сети, межсетевого экрана, сетевых служб.
;/var
:В /var хранятся базы данных служб: почта, [[планировщик задач|Планировщик задач cron]], СУБД, веб-сервер и т. п. Следует учитывать, что в каталоге /var хранится много подкаталогов, которые не нуждаются в резервном копировании (они перечислены в примере ниже). Поэтому следует резервировать только самые важные из них: `/var/www /var/spool`, если это сервер, в /var/lib могут находиться базы данных, включая базу данных пакетов RPM.
;/usr/local, /opt
:Некоторые программы, установленные через `make install`, попадают в `/usr/local`, а также существуют приложения с собственным установщиком, которые сохраняются в `/opt`. Они не отслеживаются пакетным менеджером, поэтому могут быть утеряны. Следует проверить эти каталоги на предмет наличия ценных файлов.
;/home
:Файлы пользователей. Следует учитывать, что сами учётные записи пользователей и пароли хранятся в `/etc`.
;/root
:Домашний каталог пользователя root.
;/boot
:Ядро системы и параметры ядра. Если в параметры ядра особых изменений не вносилось, лучше исключить этот каталог.

Остальные каталоги - на усмотрение администратора, если таковые были созданы. Воспользуйтесь командами `ll /`, `du -sh /*` чтобы ничего не забыть. Если каталог занимает подозрительно много места - следует его проверить.

Каталоги и файлы, которые точно не следует архивировать: `/proc /dev /var/cache /var/run /var/lock /tmp /var/tmp /sys /srv /selinux /mnt /media Trash .cache`. Можно игнорировать /var/log, если информация в журналах не важна, например, на персональном компьютере.

Внимание! При *миграции* на другую физическую машину нужно исключить также пути `/etc/fstab /var/lib/rpm /var/lib/yum`. Перезапись /etc/fstab приведёт к невозможности загрузить компьютер, так как тома имеют иную маркировку, а базы данных rpm и yum не соответствуют новой установке. В случае частичного резервирования лучше указать явно те файлы, которые были изменены или представляют определенную ценность. При обычном резервном копировании эти файлы нужно сохранять для восстановления повреждённых.

!!!Последовательность действий частичного копирования (без корневого каталога)

Рассмотрим пример, когда резервируются только самые важные файлы каталоги. Подразумевается, что внешний носитель для хранения резервной копии подготовлен, примонтирован в каталог /backups и на нём достаточно свободного места.

Составляем изменённых конфигурационных файлов для резервирования:

```sh
rpm -Va | grep ^..5 | cut -c 14- > /tmp/backup-list
```

Команда rpm найдёт все изменённые файлы конфигурации кроме некоторых самых важных - их нужно указать явно. Список каталогов для резервирования:

```
cat >> /tmp/backup-list
/var/www
/var/spool/cron
/home
/root
/etc/sysconfig
/etc/passwd
/etc/shadow
/etc/group
/my_custom_dir
Ctrl+D
```

Список для исключения корзины и кэша пользователя:

```
cat > /tmp/exclude-list
Trash
.cache
Ctrl+D
```

Составляем список пакетов, чтобы полностью восстановить инсталляцию из репозитория (как правило, нужно при миграции). Файл расположен в каталоге /root, который числится в списке резервного копирования.

```sh
rpm -qa --qf '%{N}\n' > /root/package-list.bak
```

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

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

```sh
tar -cpSvz --selinux --xattrs --ignore-failed-read -X /tmp/exclude-list -T /tmp/backup-list -f /backups/$(hostname)-$(date +%F).tar.gz
```

!!!Последовательность действий восстановления из резервной копии

Данный алгоритм можно использовать как для восстановления состояния уже ранее архивированной машины, так и для переноса данных на другую (миграция). Предварительно нужно смонтировать источник резервных копий в каталог `/backups`.

```sh
cd /
tar -xpSvzf /backups/<имя резервной копии>.tar.gz
```

Очень часто из архива резервной копии нужно восстановить только определённый файл или каталог. В таком случае можно несколько ускорить процесс восстановления, указав, какой каталог нужно разархивировать, например, восстановить только каталог `etc`: `tar -xpSvzf /backups/<имя резервной копии>.tar.gz etc`

При миграции следует установить недостающие пакеты:

```sh
cat /etc/package-list.bak | xargs yum install -y
```

!!!См. также

* `man tar`
<<list filter "[tag[tar]] [ignore[^Частичное резервирование и миграция системы с помощью tar$]]">>
В случае, когда система "зависла", не реагируя ни на какие команды, единственным выходом является перезагрузка кнопкой Reset или выключение питания.

Однако перед нажатием кнопки Reset существует способ избежать порчи важных данных. Для того чтобы синхронизировать буферы ОС с диском, нажмите сочетание клавиш `Alt+SysRq+s`. Система среагирует на прерывание и выполнит последний сброс данных на диск. В терминале должны появиться следующие строчки:

```
sysrq: SysRq : Emergency Sync
Emergency Sync complete
```

После аварийного сброса данных на диск можно выполнить перезагрузку компьютера с помощью кнопки Reset или кнопки выключения питания.
@attr order=f
Ядро операционной системы «ОСь» основано на ядре Linux и поддерживает все его стандартные параметры.

!!!Подразделы

<<tagging ядро>>