Руководство администратора
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>>
Kernel panic (англ.: тревога, сбой в ядре) - сообщение о критической ошибке ядра операционной системы, после которой операционная система не может продолжать дальнейшую работу. На экран выводится последнее сообщение об ошибке, которое можно записать или сфотографировать, после чего необходимо перезагрузить компьютер.
!!! См. также

* [[Установка 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
...
...

```
<<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 и создайте пользователей (пользователей можно создать после установки системы).
После завершения установки нажать на кнопку "Перезагрузка", компьютер перезагрузится.

После установки необходимо произвести первичную [[настройку системы|Настройка системы]].
!!! См. также

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для продолжения работы выберите один из разделов в меню "Содержание" или воспользуйтесь [[поиском|Поиск]].
@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!
При работе с современным оборудованием 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`.

Данный режим предназначен для аварийной загрузки. Для загрузки в режиме 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
```
Служба межсетевого экрана управляет группами правил при помощи так называемых зон. Зоны – это наборы правил, которые управляют трафиком на основе уровня доверия к той или иной сети. Зоны присваиваются сетевым интерфейсам и управляют поведением межсетевого экрана. Список всех допустимых зон по-умолчанию:

```
# 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
```
Команда `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
```

`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`. После внесения изменений машину нужно перезагрузить.
@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`.
Список часто используемых системными администраторами устройств:

* `/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` для редактирования параметров загрузчика.
Обычный файл - наиболее распространённый объект в операционной системе, который содержит данные в некотором формате.

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

Например, обычные текстовые файлы могут открываться практически любой программой или командой, предназначенной для работы с текстом: `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
```

Видно, к каким устройствам примонтированы папки, видны метки, объёмы устройств.
@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].

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

!!!См. также

* [[Параметры ядра]]
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`
и т. п.
Находится в [[Программе установки|Программа установки]].

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

Установка ОС со *всеми пакетами* без участия администратора. После установки необходимо произвести первичную [[настройку системы|Настройка системы]]. Пароли *загрузчика*, пользователей *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
```
|!Файл|!Описание|
|`~/.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
```
Проверка доступности узла в сети или наличия доступа в интернет выполняется при помощи команды `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!

Варианты установки:
[[Установка ОС в графическом режиме|Установка ОС в графическом режиме]]
[[Установка ОС с базовым видеодрайвером|Установка ОС с базовым видеодрайвером]]
[[Установка ОС в режиме командной строки|Настройка и установка ОС в режиме командной строки]]
[[Установка ОС в автоматическом режиме|Установка ОС в автоматическом режиме]]
[[Полная установка ОС в автоматическом режиме|Полная установка ОС в автоматическом режиме]] (пункт "Другие варианты установки").

Дополнительные режимы:
[[Загрузка с жёсткого диска|Загрузка с жёсткого диска]]
[[Восстановление установленной системы|Восстановление установленной системы]] (пункт "Решение проблем").
[[Запуск проверки памяти|Проверка памяти]] (пункт "Решение проблем").
[[Редактирование параметров загрузки|Редактирование параметров загрузки]]
Команда `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
```
@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

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

```js
# useradd -S staff_u -G wheel <adminname>
# passwd <adminname>
```

Далее после входа в систему этим пользователем, он сможет выполнять задачи администратора следующим образом:

`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
```
Для того чтобы создать раздел в `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
```
Сокеты - одна из форм межпроцессного взаимодействия, также могут использоваться для доступа к сети. Многие системные службы работают через сокеты, что обеспечивает сетевую прозрачность.
@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` - полностью сбросить буферы и кэш, тем самым освободив оперативную память. В нормальном режиме работы системы это делать не требуется, но может быть полезно в процессе отладки приложений, работающих с диском
`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
Данный раздел описывает настройку средств защиты ОС: работа с уровнями, категориями, передача меток средств защиты по сети.
Структура файловой системы организована в формате общепринятых имён файлов и каталогов, которые расположены в виде удобной логической структуры.
В данном разделе приведено краткое описание основных каталогов файловой системы:

* *Корневой каталог /*
Корневой каталог является основной входной точкой файловой системы. Все остальные файлы и каталоги располагаются внутри корневого каталога;
* */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`.
Для того, чтобы отключить («опустить») или включить («поднять») интерфейс, необходимо использовать команду `ifconfig`:

```
# ifconfig <интерфейс> up|down
```

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

```
# service networking start|stop|restart
```
Чтобы включить мониторинг системы <<tiddler tmpl-install with:sysstat>>
<<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 <имя>
```

Аналогично предыдущему примеру в качестве имени можно использовать шаблон.

@attr order=b
!!!Загрузка системы

:Скачайте <<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 ядро>>