Инструменты пользователя

Инструменты сайта


os:lpic-1:102

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

os:lpic-1:102 [23.09.2022 17:02] – [107.2 Automate system administration tasks by scheduling jobs] viacheslavos:lpic-1:102 [30.07.2024 19:21] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== LPIC-1 Exam 102 ======
 +Exam Objectives Version: Version 4.0
 +
 +Exam Codes: 102-400  or  LX0-104 (these exams are identical; passing either exam will count as the 102 exam toward your LPIC-1)
 +
 +About Objective Weights: Each objective is assigned a weighting value. The weights indicate the relative importance of each objective on the exam. Objectives with higher weights will be covered in the exam with more questions.
 +
 +[[https://www.lpi.org/our-certifications/exam-102-objectives|LPIC-1 Exam 102 objectives]]
 +
 +<WRAP round tip 80%>
 +Эта страница является кратким конспектом лекций Кирилла Семаева [[https://www.youtube.com/playlist?list=PLmxB7JSpraieH3aScuPs7h77cSEQvPi2A|LPIC-1 (exam 102) или "Базовые навыки по администрированию Linux"]]
 +</WRAP>
 +====== Topic 105: Shells, Scripting and Data Management ======
 +===== 105.1 Customize and use the shell environment =====
 +<WRAP round box 75%>
 +Weight: 4
 +
 +Description: Candidates should be able to customize shell environments to meet users’ needs. Candidates should be able to modify global and user profiles.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Set environment variables (e.g. PATH) at login or when spawning a new shell
 +  * Write Bash functions for frequently used sequences of commands
 +  * Maintain skeleton directories for new user accounts
 +  * Set command search path with the proper directory
 +</WRAP>
 +<WRAP half column>
 +The following is a partial list of the used files, terms and utilities:
 +
 +  * source
 +  * /etc/bash.bashrc
 +  * /etc/profile
 +  * env
 +  * export
 +  * set
 +  * unset
 +  * ~/.bash_profile
 +  * ~/.bash_login
 +  * ~/.profile
 +  * ~/.bashrc
 +  * ~/.bash_logout
 +  * function
 +  * alias
 +  * lists
 +</WRAP></WRAP></WRAP>
 +  * ''/etc/profile'' - файл глобальных настроек профиля. Читает нижестоящие файлы/каталоги:
 +    * ''/etc/bash.bashrc'' (или ''/etc/bashrc'') - загрузка псевдонимов и функций (для неинтерактивного фхода)
 +    * ''/etc/profile.d/*.sh'' - папка скриптов
 +  * По порядку: ''~/.bash_profile'', ''~/.bash_login'', ''~/.bash_logout'', ''~/.bash_profile'' -> ''~/.bashrc'' - личные настройки пользователя.
 +
 +''/etc/skel'' - набор файлов, копирующихся в новый профиль пользователя.
 +
 +https://youtu.be/T6ZLxDm8C3w
 +
 +<code bash>
 +# Псевдонимы - аналоги команд с разными ключами
 +alias ls='ls --color=auto'
 +# Функция - код, вызываемый короткой комадой
 +function whattime() {
 +echo "It's $(date +%R) o'clock"
 +}
 +</code>
 +Изменения файла ''.bashrc'' или аналогичного применяются после запуска новой оболочки. Можно либо перелогиниться, либо запустить ''bash'' ещё раз.
 +
 +https://youtu.be/wCQqwFupaUc
 +
 +Добавление аргументов к функции (про позиционные параметры $1, $2 и т. д. $0 - имя функции)\\
 +https://youtu.be/-FKG3WGB6dw
 +
 +<code bash>
 +# вывести все переменные и функции
 +set
 +# вывести переменные среды
 +env
 +# Обычные переменные существуют только в рамках текущей сессии
 +weather="The weather is fine"
 +# Сделать из обычной переменной переменную среды (действует в текущей и в дочерних сессиях)
 +export weather
 +# Убрать переменную
 +unset weather
 +# Чтобы переменная работала постоянно, надо её добавить в .profile или аналогичные
 +
 +# PATH - места, где система ищет исполняемые файлы, чтобы не указывать полного имени при запуске.
 +# Добавить папку:
 +PATH=$PATH:/home/user/exec
 +</code>
 +https://youtu.be/vuONh8G8FGs
 +===== 105.2 Customize or write simple scripts =====
 +<WRAP round box 100%>
 +Weight: 4
 +
 +Description: Candidates should be able to customize existing scripts, or write simple new Bash scripts.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Use standard sh syntax (loops, tests)
 +  * Use command substitution
 +  * Test return values for success or failure or other information provided by a command
 +  * Perform conditional mailing to the superuser
 +  * Correctly select the script interpreter through the shebang (#!) line
 +  * Manage the location, ownership, execution and suid-rights of scripts
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * for
 +  * while
 +  * test
 +  * if
 +  * read
 +  * seq
 +  * exec
 +
 + </WRAP></WRAP>
 +</WRAP>
 +
 +''test'' - проверка файлов, числовых и строковых значений и т. д. На выходе даёт 0 (true) или не 0 (false), сохраняющееся в переменной ''$?''.
 +<code bash>
 +test 5 -gt 2
 +[ 5 -gt 2 ] # как вариант
 +echo $?
 +1 # нет, 5 не больше 2
 +
 +[ "text" = "text2" ] # равны ли строки
 +test -x file.txt # есть ли права на выполнение
 +[ -e /home/user ] # существует ли домашний каталог user
 +</code>
 +
 +Подстановка команд работает по принципу функций, результат работы команды является аргументом или значением переменной.
 +<code bash>
 +X = $(ls -a)
 +# или
 +X = `ls -a`
 +</code>
 +
 +Условия и циклы
 +<code bash>
 +#!/bin/bash
 +
 +echo "How are you?"
 +read VALUE
 +if [ $VALUE = "fine" ]
 +  then
 +    echo "Great!"
 +  else
 +    echo "It's a pity..."
 +fi
 +
 +# Цикл FOR
 +for x in 1 3 7
 +# for x in `seq 3 8`
 +do
 +echo $x
 +done
 +
 +# Цикл WHILE
 +x=1
 +while [ $x -le 5 ]
 +do
 +echo $x
 +x=$(($x+1))
 +done
 +
 +echo "Type everything or type STOP to stop"
 +x="start"
 +while [ $x != "STOP" ]
 +do
 +read x
 +echo $x
 +done
 +
 +</code>
 +===== 105.3 SQL data management =====
 +<WRAP round box 100%>
 +Weight: 2
 +
 +Description: Candidates should be able to query databases and manipulate data using basic SQL commands. This objective includes performing queries involving joining of 2 tables and/or subselects.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Use of basic SQL commands
 +  * Perform basic data manipulation
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * insert
 +  * update
 +  * select
 +  * delete
 +  * from
 +  * where
 +  * group by
 +  * order by
 +  * join
 +</WRAP></WRAP></WRAP>
 +
 +<code sql>
 +-- Создать БД
 +CREATE DATABASE cars;
 +-- Переключиться на эту базу
 +USE cars;
 +-- Создать таблицы new и used со столбцами с соотв. типами данных
 +CREATE TABLE new (brand VARCHAR(10), model VARCHAR(10), year YEAR, price INT);
 +CREATE TABLE used (brand VARCHAR(10), model VARCHAR(10), year YEAR, price INT);
 +-- Показать имеющиеся таблицы в БД
 +SHOW TABLES;
 +-- Свойства таблицы new
 +DESCRIBE new;
 +
 +-- Импорт из файла
 +-- Файл (разделитель TAB):
 +Ford    Focus    2011    500000
 +Lada    Granta   2015    350000
 +Hyundai Getz     2010    270000
 +-- Включить возможность импорта с локальной машины от рута
 +mysql --local-infile=1 -u root
 +-- Выбрать базу
 +USE cars;
 +-- Импорт
 +LOAD DATA LOCAL INFILE "new.txt" INTO TABLE new;
 +-- Посмотреть данные таблицы
 +SELECT * FROM new;
 +-- Вставить строку в таблицу (здесь без цены, вместо неё будет NULL)
 +INSERT INTO new (brand, model, year) VALUES ('Mercedes','Benz','2006')
 +-- Выбор
 +SELECT model FROM new;
 +SELECT * FROM new WHERE brand="Lada" AND year="2015";
 +-- Удалить строки, где модель Getz
 +DELETE FROM new WHERE model='Getz'
 +-- Редактировать: сделать модель Solaris у всех Hyundai
 +UPDATE new SET model='Solaris' WHERE model='Hyundai';
 +-- Объединение: вывод информации из нескольких таблиц с условием
 +SELECT * FROM new JOIN used ON new.brand = used.brand
 +-- Сортировка по цене
 +SELECT * FROM new ORDER BY price;
 +-- Группировка
 +SELECT * FROM new GROUP BY brand;
 +</code>
 +====== Topic 106: User Interfaces and Desktops ======
 +===== 106.1 Install and configure X11 =====
 +<WRAP round box 100%>
 +Weight: 2
 +
 +Description: Candidates should be able to install and configure X11.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Verify that the video card and monitor are supported by an X server
 +  * Awareness of the X font server
 +  * Basic understanding and knowledge of the X Window configuration file
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * /etc/X11/xorg.conf
 +  * xhost
 +  * DISPLAY
 +  * xwininfo
 +  * xdpyinfo
 +  * X
 +
 + </WRAP></WRAP>
 +</WRAP>
 +X Window System - стандартная графическая подсистема для отрисовки и перемещения окон и взаимодействия с устройствами ввода, база для графических сред (KDE, Gnome и прочие). X11 позволяет подключаться к себе, т. е., выводить изображение на удалённый монитор, причём, монитор в данном случае считается "сервером", а комп с x11 - "клиентом".
 +
 +<code bash>
 +sudo apt install xorg # установить X11 (в Ubuntu)
 +sudo X -configure # создать конфигурационный файл
 +cat /var/log/Xorg.0.log # логи
 +startx # запустить X11
 +exit # выйти
 +less xorg.conf.new # см. конфиг
 +# Section "serverLayout" - что есть в наличии: экран, клавиатура, мышь и т. д.
 +# Section "Files" - пути к шрифтам. Раньше, когда отрисовка шрифтов была ресурсоёмкой, существовали X Font Servers,
 +# т. е., вместо пути были IP-адреса этого сервера
 +</code>
 +Конфигурационный файл X11 лежит стандартно в ''/etc/X11'', но в современных дистрибутивах может быть по-другому, например, в Убунте конфиги лежат в ''/etc/share/X11/xorg.conf.d/''.
 +<code bash>
 +xwininfo # вывод информации об окне
 +xdpyinfo # вывод информации об X-сервере в целом
 +</code>
 +
 +Приложение "терминал" в графическом интерфейсе - это не настоящая консоль, а её эмулятор (команда ''tty'' выдаёт /dev/pts/0, т. е., псевдотерминал). Реальную консоль можно вызвать с помощью ''Ctrl+Alt+F1'' (/dev/tty1). C F1 по F6 - это консоли, а на седьмой консоли ''Ctrl+Alt+F7'' уже висит сам графический интерфейс (стандартное положение GUI для многих дистрибутивов).
 +
 +<code bash>
 +# В GUI переменная монитора показывает, что он локальный и нулевой
 +echo $DISPLAY
 +:0
 +# Если перейти в реальную консоль и запустить там startx и терминал (Ctrl+Alt+t), то дисплей будет другим
 +echo $DISPLAY
 +:1.0
 +# Если в этой консоли поменять значение $DISPLAY на 0, то запускаемые программы будут отображаться на нулевом дисплее
 +export DISPLAY=:0.0
 +firefox # отобразится на нулевом дисплее.
 +# Если закрыть X11, то firefox на нулевом дисплее тоже схлопнется.
 +
 +xhost +192.168.1.99 # разрешить удалённым приложениям использовать этот монитор
 +DISPLAY=192.168.1.88:0.0 # на машине 192.168.1.99 использовать монитор 0 компа 192.168.1.88
 +
 +</code>
 +===== 106.2 Setup a display manager =====
 +<WRAP round box 100%>
 +Weight: 1
 +
 +Description: Candidates should be able to describe the basic features and configuration of the LightDM display manager. This objective covers awareness of the display managers XDM (X Display Manger), GDM (Gnome Display Manager) and KDM (KDE Display Manager).
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Basic configuration of LightDM
 +  * Turn the display manager on or off
 +  * Change the display manager greeting
 +  * Awareness of XDM, KDM and GDM
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * lightdm
 +  * /etc/lightdm/
 +
 + </WRAP></WRAP>
 +</WRAP>
 +Display manager - это окно входа в систему (не оболочка).
 +<code bash>
 +# Установить
 +apt install gdm # kdm xdm
 +# Настройки хранятся в
 +cat /etc/X11/default-display-manager
 +/usr/sbin/gdm
 +# Можно отредактировать файл default-display-manager непосредственно, но удобнее запустить
 +dpkg-reconfigure kdm # можно написать любой установленный, окно выбора всё равно одно и то же
 +
 +# Отключить, добавив в runlevel уровень 2 в соотв. файлах
 +vi /etc/init/kdm.conf
 +vi /etc/init/gdm.conf
 +# с xdm по-другому
 +sudo update-rc.d -f xdm remove
 +</code>
 +===== 106.3 Accessibility =====
 +<WRAP round box 100%>
 +Weight: 1
 +
 +Description: Demonstrate knowledge and awareness of accessibility technologies.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Basic knowledge of keyboard accessibility settings (AccessX)
 +  * Basic knowledge of visual settings and themes
 +  * Basic knowledge of assistive technology (ATs)
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * Sticky/Repeat Keys
 +  * Slow/Bounce/Toggle Keys
 +  * Mouse Keys
 +  * High Contrast/Large Print Desktop Themes
 +  * Screen Reader
 +  * Braille Display
 +  * Screen Magnifier
 +  * On-Screen Keyboard
 +  * Gestures (used at login, for example GDM)
 +  * Orca
 +  * GOK
 +  * emacspeak
 +</WRAP></WRAP></WRAP>
 +
 +====== Topic 107: Administrative Tasks ====== 
 +===== 107.1 Manage user and group accounts and related system files =====
 +<WRAP round box 100%>
 +Weight: 5
 +
 +Description: Candidates should be able to add, remove, suspend and change user accounts.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Add, modify and remove users and groups
 +  * Manage user/group info in password/group databases
 +  * Create and manage special purpose and limited accounts
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * /etc/passwd
 +  * /etc/shadow
 +  * /etc/group
 +  * /etc/skel/
 +  * chage
 +  * getent
 +  * groupadd
 +  * groupdel
 +  * groupmod
 +  * passwd
 +  * useradd
 +  * userdel
 +  * usermod
 +
 + </WRAP></WRAP>
 +</WRAP>
 +Стандартные файлы:
 +  * ''/etc/passwd'' - имя_пользователя:пароль:UID:GID:сведения:домашняя_папка:оболочка
 +  * ''/etc/group'' - имя_группы:пароль:GID:члены_группы
 +
 +Пароль группы - редко используемая возможность, он спрашивается, если пользователь меняет членство в группе или если группе с паролем даны права на папку.
 +
 +Стандартные файлы плохи тем, что к ним имеют доступ все, и пароли, несмотря на то, что они зашифрованы, уязвимы. Для защиты придумали теневые файлы (в стандартных идёт ссылка "x" вместо реального зашифрованного пароля).
 +  * ''/etc/shadow'' - имя_пользователя : пароль : время_после_смены_пароля : мин_срок_действия_пароля : макс._срок_действия_пароля : срок_предупреждения : время_работы_с_истёкшим_паролем : срок_для блокировки_пароля
 +  * ''/etc/gshadow'' - имя_группы:пароль:GID:члены_группы
 +
 +''useradd'' - добавить пользователя\\
 +''usermod'' - изменить учётную запись пользователя\\
 +''userdel'' - удалить пользователя\\
 +''groupadd'' - добавить группу\\
 +''groupmod'' - изменить группу\\
 +''groupdel'' - удалить группу\\
 +''chage'' - не путать с ''change''. ''chage'' - это "изменить возраст": срок действия пароля/учётки и т. д.\\
 +''getent'' - вывод значений из текстовых баз данных ( group, gshadow, hosts, netgroup, networks, passwd и т. д.)
 +<code bash>
 +chage -l username # посмотреть свойства учётки username
 +chage -E 2020-08-05 username # учётка истекает 5 авг 2020
 +chage -E -1 username # снять ограничение срока действия учётки
 +
 +getent passwd username # вывод строки с username из /etc/passwd
 +</code>
 +===== 107.2 Automate system administration tasks by scheduling jobs =====
 +<WRAP round box 100%>
 +Weight: 4
 +
 +Description: Candidates should be able to use cron or anacron to run jobs at regular intervals and to use at to run jobs at a specific time.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Manage cron and at jobs
 +  * Configure user access to cron and at services
 +  * Configure anacron
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * /etc/cron.{d,daily,hourly,monthly,weekly}/
 +  * /etc/at.deny
 +  * /etc/at.allow
 +  * /etc/crontab
 +  * /etc/cron.allow
 +  * /etc/cron.deny
 +  * /var/spool/cron/
 +  * crontab
 +  * at
 +  * atq
 +  * atrm
 +  * anacron
 +  * /etc/anacrontab
 +
 + </WRAP></WRAP>
 +</WRAP>
 +<code bash>
 +# Пользовательский cron
 +crontab -e
 +# вывести
 +crontab -l
 +# Пользовательский крон хранится как файл /var/spool/cron/<username>
 +</code>
 +''/etc/cron.deny'' - список тех, кому запрещён доступ к крону. Остальные могут пользоваться.\\
 +''/etc/cron.allow'' - ТОЛЬКО ЭТИ пользователи могут пользоваться кроном, остальным запрещено. Если файл пустой, то крон разрешен только для root.\\
 +Если пользователь есть в обоих списках, то разрешение имеет больший приоритет, чем запрет.
 +
 +==== anacron ====
 +''/etc/anacron'' - асинхронный планировщик, умеет запускать пропущенные задания. Полезен, когда нужно выполнять задания на нерегулярно работающем компьютере. Синтаксис отличается от стандартного крона.
 +<code bash>
 +# интервал (дни), задержка запуска (мин), имя, команда
 +1     cron.daily   run-parts --report /etc/cron.daily
 +@monthly 15   cron.monthly   run-parts --report /etc/cron.monthly
 +</code>
 +Самый мелкий интервал - 1 день. ''@monthly'' - переменная "каждый месяц", т. к. в месяцах разное кол-во дней. Anacron проверяет, когда последний раз запускалась задача с этим именем (файлы в ''/var/spool/anacron''), и если интервал превышает заданный, то после указанной задержки задача запускается. Задержка нужна, чтобы всё не стартовало одновременно.
 +
 +В каталогах ''/etc/cron.{daily,monthly,weekly}'' есть файл ''0anacron'', что указывает на то, что анакрон имеет приоритет и выполняется в первую очередь. Когда в системе есть анакрон, то ежедневные, еженедельные и ежемесячные задания начинают выполняться анакроном, а не кроном, что исключает двойное выполнение задач. Так в Debian/Ubuntu. В некоторых дистрибутивах наоборот - крон имеет больший приоритет.
 +==== at ====
 +Планировщик разовых задач. Стандартно в комплект не входит, нужно ставить отдельно - ''sudo apt install at''.
 +<code bash>
 +at 15:00 # в 15 ч
 +at now +20 minute # через 20 мин
 +at 21:30 03/15/2020 # в 21:30 15 марта 2020
 +at 21:30 tomorrow # в 21:30 завтра
 +# после нажатия на Enter нужно ввести путь к файлу
 +
 +atq # вывести список существующих задач
 +
 +atrm 1 # удалить задачу №1
 +</code>
 +У at также есть возможность создать файлы ''/etc/at.deny'' и ''/etc/at.allow'' по аналогии с кроном.
 +
 +===== 107.3 Localisation and internationalisation =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: Candidates should be able to localize a system in a different language than English. As well, an understanding of why LANG=C is useful when scripting.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Configure locale settings and environment variables
 +  * Configure timezone settings and environment variables
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * /etc/timezone
 +  * /etc/localtime
 +  * /usr/share/zoneinfo/
 +  * LC_*
 +  * LC_ALL
 +  * LANG
 +  * TZ
 +  * /usr/bin/locale
 +  * tzselect
 +  * timedatectl
 +  * date
 +  * iconv
 +  * UTF-8
 +  * ISO-8859
 +  * ASCII
 +  * Unicode
 +</WRAP></WRAP>
 +</WRAP>
 +''$LANG'' - основная настройка языка\\
 +''LC_ALL'' - перезапись всех языковых настроек\\
 +''locale'' - вывод текущих настроек\\
 +''LANG=C'' - стандартная кодировка
 +
 +Некоторые кодировки:\\
 +ASCII - 128 основных символов\\
 +ISO-8859 - большинство латинских символов\\
 +Windows-1251 - кириллические символы\\
 +UTF-8 - юникод
 +
 +iconv - конвертер кодировок
 +
 +<code bash>
 +iconv --list # вывод всех поддерживаемых кодировок
 +iconv -f UTF-8 -t ASCII /etc/fstab
 +</code>
 +
 +==== Дата, часовой пояс ====
 +<code bash>
 +# установить время 21 мая 1995 г, 19:45
 +sudo date 052119451995
 +# выбор часового пояса
 +tzselect
 +# посмотреть текущий часовой пояс
 +cat /etc/timezone
 +# список зон
 +ls /usr/share/zoneinfo
 +# Если сделать символическую ссылку из /usr/share/zoneinfo в /etc/localtime,
 +# то это также установит соответственный часовой пояс
 +sudo ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
 +# декодировать файл зоны для просмотра в человеческом виде
 +zdump /etc/localtime
 +# ещё один способ (Ubuntu)
 +sudo dpkg-reconfigure tzdata
 +</code>
 +
 +====== Topic 108: Essential System Services ======
 +===== 108.1 Maintain system time =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: Candidates should be able to properly maintain the system time and synchronize the clock via NTP.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Set the system date and time
 +  * Set the hardware clock to the correct time in UTC
 +  * Configure the correct timezone
 +  * Basic NTP configuration
 +  * Knowledge of using the pool.ntp.org service
 +  * Awareness of the ntpq command
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * /usr/share/zoneinfo/
 +  * /etc/timezone
 +  * /etc/localtime
 +  * /etc/ntp.conf
 +  * date
 +  * hwclock
 +  * ntpd
 +  * ntpdate
 +  * pool.ntp.org
 +
 + </WRAP></WRAP>
 +</WRAP>
 +//Аппаратное время// - время часов на материнской плате. При запуске это время передаётся //системному времени//.\\
 +Команда ''date'' выводит системное время, ''sudo hwclock'' - аппаратное.
 +
 +После двукратного "подведения стрелок" аппаратных часов создаётся файл ''/etc/adjtime'', где отражается расхождение аппаратных часов с точным временем, после чего можно командой ''sudo hwclock --adjust'' подвести аппаратные часы, не указывая точного времени, т. к. поправка уже известна.
 +<code bash>
 +# Задать аппаратное время
 +sudo hwclock --set --date="01/01/2021 13:45"
 +# Синхронизировать аппаратные часы с системными
 +sudo hwclock -w
 +# Использовать локальное время вместо UTC (в /etc/adjtime будет LOCAL)
 +sudo hwclock --localtime -w
 +# Вернуть UTC
 +sudo hwclock -u -w
 +</code>
 +
 +==== NTP ====
 +https://www.ntppool.org/ru/use.html\\
 +https://www.ntppool.org/zone/ru
 +<code bash>
 +# Синхронизировать часы с пулом
 +sudo ntpdate 2.ru.pool.ntp.org
 +# Раньше нужно было создавать задачу в кроне для синхронизации часов командой ntpdate,
 +# сейчас можно использовать демон ntpd (он может быть и сервером точного времени).
 +sudo apt install ntp
 +vi /etc/ntp.conf # внести туда нужные пулы/сервера по необходимости
 +sudo systemctl restart ntp
 +ntpq -pn # статистика
 +</code>
 +После установки ntpd команда ntpdate работать уже не будет, выдавая сообщение "the NTP socket is in use".
 +
 +
 +===== 108.2 System logging =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: Candidates should be able to configure the syslog daemon. This objective also includes configuring the logging daemon to send log output to a central log server or accept log output as a central log server. Use of the systemd journal subsystem is covered. Also, awareness of rsyslog and syslog-ng as alternative logging systems is included.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Configuration of the syslog daemon
 +  * Understanding of standard facilities, priorities and actions
 +  * Configuration of logrotate
 +  * Awareness of rsyslog and syslog-ng
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * syslog.conf
 +  * syslogd
 +  * klogd
 +  * /var/log/
 +  * logger
 +  * logrotate
 +  * /etc/logrotate.conf
 +  * /etc/logrotate.d/
 +  * journalctl
 +  * /etc/systemd/journald.conf
 +  * /var/log/journal/
 +
 + </WRAP></WRAP>
 +</WRAP>
 +Формат конфигурации syslog - "источник.приоритет назначение". Чистый syslog сейчас почти не используется, есть более современные варианты, например, rsyslog.
 +<file bash /etc/syslog.conf>
 +# Критические события ядра
 +kern.crit /var/log/kernel
 +# все информационные события (и более серьёзные), кроме mail, authpriv и cron
 +*.info;mail.none;authpriv.none;cron.none /var/log/messages
 +# "-" перед путём значит, что кэш журнала держится в памяти и периодически сбрасывается на диск.
 +# Часть журналов может потеряться при внезапном отказе системы, но это сильно ускоряет работу.
 +mail.* -/var/log/maillog
 +# Все пользователи получат сообщение о чрезвычайном событии
 +*.emerg *
 +# Отправлять пользовательские логи на удалённый сервер
 +user.* @192.168.1.77
 +</file>
 +После изменений нужно перезапустить/перечесть syslog - ''sudo service syslog reload''.
 +
 +Чтобы сервер мог принимать логи с удалёной машины, нужно в файле ''/etc/sysconfig/syslog'' добавить опцию ''-r'' в ''SYSLOGD OPTIONS''.
 +
 +<code bash>
 +# Создать событие
 +logger -p user.warn "Don't touch the red button!"
 +</code>
 +
 +==== Ротация логов ====
 +klogd - демон записи логов ядра (в современных системах логи ядра пишутся по-другому). Перехватывает все сообщения, относящиеся к ядру.
 +<code bash>
 +# klogd в урезанном виде в современных системах входит в состав busybox-syslogd
 +apt install busybox-syslogd
 +# сообщения ядра выгрузить в файл
 +klogd -o -f kernel.log
 +</code>
 +
 +logrotate - очистка/архивация логов. Общий файл конфигурации - ''/etc/logrotate.conf'', отдельные файлы для разных сервисов кладутся в ''/etc/logrotate.d''.
 +<file bash /etc/logrotate.d/ufw>
 +/var/log/ufw.log # с каким файлом/файлами работаем
 +{
 +        rotate 4 # хранить 4 файла
 +        weekly # ротация еженедельно
 +        missingok # В случае отсутствия файла журнала перейти к обработке следующего, не выдавая сообщения об ошибке
 +        notifempty # нет ротации, если лог пустой
 +        compress # сжимать
 +        delaycompress # сжимать не сразу, а 2-й архив (здесь - недельной давности)
 +        sharedscripts # выполнять скрипт 1 раз, даже если логов несколько (например, /var/log/*.log)
 +        postrotate # скрипт после ротации
 +                [ -x /usr/lib/rsyslog/rsyslog-rotate ] && /usr/lib/rsyslog/rsyslog-rotate || true
 +        endscript # конец скрипта
 +}
 +</file>
 +
 +==== journald ====
 +Система журналирования systemd, используемая в большинстве современных ОС Linux.\\
 +Хранение данных в файлах ''/run/log/journal'' (в памяти), ''/var/log/journal''. Логи бинарные, поэтому просто так в консоли их посмотреть нельзя.
 +
 +Уровни событий:\\
 +0 - EMERG\\
 +1 - ALERT\\
 +2 - CRIT\\
 +3 - ERR\\
 +4 - WARNING\\
 +5 - NOTICE\\
 +6 - INFO\\
 +7 - DEBUG
 +
 +Файл настроек - ''/etc/systemd/journald.conf''.
 +<code bash>
 +journalctl -b # показать все события с момента загрузки
 +journalctl --since 15:30 --until 15:35:15 # показать за интервал
 +journalctl --since yesterday --until now
 +journalctl -u networking.service # события службы сети
 +journalctl -k # события ядра
 +journalctl -p err -b # только ошибки с момента загрузки
 +journalctl -n 20 # последние 20
 +journalctl -f # в реальном времени
 +journalctl --disk-usage # сколько места занимает на диске
 +journalctl --vacuum-size=5G # занимать максимально 5 ГБ
 +journalctl --vacuum-time=1years # хранить максимум 1 год
 +
 +systemd-journal-remote --url https://host:port # забирать логи с удалённой машины
 +systemd-journal-upload --url https://host:port # выгружать логи на удалённую машину
 +</code>
 +
 +==== rsyslog ====
 +Быстрый сервис обработки логов, принимающий информацию из разных источников и отдающий по разным путям назначения. По сравнению с syslog у rsyslog есть мощная фильтрация и поддержка протокола TCP. Конфигурация - ''/etc/rsyslog.conf'', доп. конфиги - ''/etc/rsyslog.d/*.conf''.
 +
 +==== syslog-ng ====
 +Ещё одна мощная альтернатива syslog, может работать как централизованный сервер сбора логов, но также и как локальный демон. На Убунте, чтобы использовать syslog-ng, надо сказать journald, чтобы он пересылал логи туда (удалить journald невозможно, т. к. он является частью системы инициализации systemd).
 +<code bash>
 +apt install syslog-ng
 +
 +# файл конфигурации
 +vi /etc/syslog-ng/syslog-ng.conf
 +</code>
 +https://www.ekzorchik.ru/2013/03/ubuntu-12-syslog-zyxel-keenetic-lite-logs/\\
 +https://manpages.ylsoftware.com/ru/syslog-ng.conf.5.html
 +===== 108.3 Mail Transfer Agent (MTA) basics =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: Candidates should be aware of the commonly available MTA programs and be able to perform basic forward and alias configuration on a client host. Other configuration files are not covered.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Create e-mail aliases
 +  * Configure e-mail forwarding
 +  * Knowledge of commonly available MTA programs (postfix, sendmail, qmail, exim) (no configuration)
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * ~/.forward
 +  * sendmail emulation layer commands
 +  * newaliases
 +  * mail
 +  * mailq
 +  * postfix
 +  * sendmail
 +  * exim
 +  * qmail
 +
 + </WRAP></WRAP>
 +</WRAP>
 +  * sendmail - один из старейших почтовых серверов, сложен в настройке
 +  * qmail - более безопасный аналог sendmail
 +  * exim - рассчитан на постоянное подключение к интернету, несложен в настройке
 +  * postfix - легковесный и простой в настройке
 +Все используют более-менее один и тот же синтаксис sendmail.
 +<code bash>
 +# mailutils - утилиты для работы с почтой
 +sudo apt install mailutils
 +
 +# /etc/aliases (в postfix) - псевдонимы в формате "псевдоним: реальный получатель"
 +postmaster: root
 +# применение изменений псевдонимов
 +sudo newaliases
 +
 +# написать письмо постмастеру
 +mail postmaster
 +Cc:
 +Subject: Test 1
 +Body text
 +Body text
 +# Ctrl+d, чтобы отправить письмо
 +
 +# прочесть сообщение
 +mail # затем выбрать номер
 +d # удалить сообщение
 +q # выйти
 +</code>
 +
 +Файл ''~/.forward'' - для пересылки. Содержит логин пользователя, на который будет идти почтовая переадресация.
 +
 +sendmail emulation layer commands - если написать ''man sendmail'' без установленного sendmail, то покажется справка по совместимым командам.
 +
 +''mailq'' - очередь. [[https://val-khmyrov.blogspot.com/2012/10/postfix.html|Удаление писем из очереди postfix]]
 +===== 108.4 Manage printers and printing =====
 +<WRAP round box 100%>
 +Weight: 2
 +
 +Description: Candidates should be able to manage print queues and user print jobs using CUPS and the LPD compatibility interface.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Basic CUPS configuration (for local and remote printers)
 +  * Manage user print queues
 +  * Troubleshoot general printing problems
 +  * Add and remove jobs from configured printer queues
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * CUPS configuration files, tools and utilities
 +  * /etc/cups/
 +  * lpd legacy interface (lpr, lprm, lpq)
 +</WRAP></WRAP></WRAP>
 +
 +На десктопах CUPS предустановлен, на сервере нужно ставить:
 +<code bash>
 +apt install cups
 +systemctl start cups
 +systemctl enabled cups
 +</code>
 +Веб-интерфейс изначально настроен на адрес localhost:631 (пускает только с самого сервера).
 +<code bash>
 +# Разрешить удалённый вход на веб-интерфейс
 +cupsctl --remote-any
 +echo "ServerAlias *" >> /etc/cups/cupsd.conf # С любого имени
 +systemctl restart cups
 +# Добавить админа (здесь: пользователь cupsadmin)
 +usermod -aG lpadmin cupsadmin
 +</code>
 +
 +[[https://www.youtube.com/watch?v=nhlnT6JGAbc|Управление печатью. Базовая настройка]]\\
 +[[https://www.youtube.com/watch?v=hHfRs_2uKgY|Управление печатью. Очереди и задания печати.]]
 +====== Topic 109: Networking Fundamentals ======
 +===== 109.1 Fundamentals of internet protocols =====
 +<WRAP round box 100%>
 +Weight: 4
 +
 +Description: Candidates should demonstrate a proper understanding of TCP/IP network fundamentals.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Demonstrate an understanding of network masks and CIDR notation
 +  * Knowledge of the differences between private and public “dotted quad” IP addresses
 +  * Knowledge about common TCP and UDP ports and services (20, 21, 22, 23, 25, 53, 80, 110, 123, 139, 143, 161, 162, 389, 443, 465, 514, 636, 993, 995)
 +  * Knowledge about the differences and major features of UDP, TCP and ICMP
 +  * Knowledge of the major differences between IPv4 and IPv6
 +  * Knowledge of the basic features of IPv6
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * /etc/services
 +  * IPv4, IPv6
 +  * Subnetting
 +  * TCP, UDP, ICMP
 +
 + </WRAP></WRAP>
 +</WRAP>
 +
 +===== 109.2 Basic network configuration =====
 +<WRAP round box 100%>
 +Weight: 4
 +
 +Description: Candidates should be able to view, change and verify configuration settings on client hosts.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Manually and automatically configure network interfaces
 +  * Basic TCP/IP host configuration
 +  * Setting a default route
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * /etc/hostname
 +  * /etc/hosts
 +  * /etc/nsswitch.conf
 +  * ifconfig
 +  * ifup
 +  * ifdown
 +  * ip
 +  * route
 +  * ping
 +
 + </WRAP></WRAP>
 +</WRAP>
 +''/etc/hostname'' - имя узла\\
 +''/etc/hosts'' - БД имён и IP-адресов
 +
 +''/etc/resolv.conf'' - настройки DNS. Напрямую редактировать нельзя, для этого есть файлы ''/etc/resolvconf/resolv.conf.d/{head,base,tail}''.\\
 +<code bash>
 +# Применить изменения в resolv.conf
 +sudo resolvconf -u
 +</code>
 +
 +''/etc/nsswitch.conf'' - настройки NSS (Name Service Switch, какие поставщики услуг имен должны использоваться для каждого типа поиска - имён хостов, паролей и т. д.).
 +
 +<code bash>
 +sudo ifdown eth0 # выкл сетевуху
 +sudo ifup eth0 # вкл сетевуху
 +# поменять IP-адрес (временно, т. к. в /etc/network/interfaces ничего не меняется)
 +sudo ifconfig eth0 192.168.0.111
 +sudo ifconfig eth0 netmask 255.255.0.0 # изменить маску подсети
 +sudo ifconfig eth0 hw ether <MAC-address> # изменить мак-адрес
 +
 +route # список маршрутов
 +sudo route del default # удалить маршрут по умолчанию
 +sudo route add default gw 192.168.1.254 # прописать маршрут по умолчанию
 +
 +ip addr # показать IP-адреса
 +sudo ip link set eth0 down # выкл
 +sudo ip link set eth0 up # вкл
 +sudo ip -4 address flush eth0 # удалить адрес IPv4
 +sudo ip address add 192.168.1.10/24 eth0 # добавить адрес
 +</code>
 +===== 109.3 Basic network troubleshooting =====
 +<WRAP round box 100%>
 +Weight: 4
 +
 +Description: Candidates should be able to troubleshoot networking issues on client hosts.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Manually and automatically configure network interfaces and routing tables to include adding, starting, stopping, restarting, deleting or reconfiguring network interfaces
 +  * Change, view, or configure the routing table and correct an improperly set default route manually
 +  * Debug problems associated with the network configuration
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * ifconfig
 +  * ip
 +  * ifup
 +  * ifdown
 +  * route
 +  * host
 +  * hostname
 +  * dig
 +  * netstat
 +  * ping
 +  * ping6
 +  * traceroute
 +  * traceroute6
 +  * tracepath
 +  * tracepath6
 +  * netcat
 +
 + </WRAP></WRAP>
 +</WRAP>
 +host - запрос напрямую на DNS-сервер\\
 +dig - запрос на DNS-сервер (более подробно)\\
 +traceroute, tracepath - отобразить маршрут до указанного адреса\\
 +netstat - вывод информации о сети\\
 +netcat (алиас - nc) - установка соединений
 +<code bash>
 +netstat -tu # TCP- и UDP-порты
 +netstat -ntu # без DNS-имён
 +netstat -ntup # + PID процессов
 +netstat -s # статистика пакетов
 +netstat -r # аналог команды route
 +
 +nc -v www.yandex.ru 443 # подключиться к порту 443 (как telnet)
 +nc -lvp 50000 # слушать порт 50000
 +nc -vnz -w 1 192.168.1.10 50-500 # просканировать порты с 50 по 500
 +</code>
 +===== 109.4 Configure client side DNS =====
 +<WRAP round box 100%>
 +Weight: 2
 +
 +Description: Candidates should be able to configure DNS on a client host.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Query remote DNS servers
 +  * Configure local name resolution and use remote DNS servers
 +  * Modify the order in which name resolution is done
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * /etc/hosts
 +  * /etc/resolv.conf
 +  * /etc/nsswitch.conf
 +  * host
 +  * dig
 +  * getent
 +</WRAP></WRAP></WRAP>
 +getent - вывод значений из текстовых баз данных ( group, gshadow, hosts, netgroup, networks, passwd и т. д.)
 +<code bash>
 +getent hosts
 +getent hosts ya.ru
 +</code>
 +====== Topic 110: Security ======
 +===== 110.1 Perform security administration tasks =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: Candidates should know how to review system configuration to ensure host security in accordance with local security policies.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Audit a system to find files with the suid/sgid bit set
 +  * Set or change user passwords and password aging information
 +  * Being able to use nmap and netstat to discover open ports on a system
 +  * Set up limits on user logins, processes and memory usage
 +  * Determine which users have logged in to the system or are currently logged in
 +  * Basic sudo configuration and usage
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * find
 +  * passwd
 +  * fuser
 +  * lsof
 +  * nmap
 +  * chage
 +  * netstat
 +  * sudo
 +  * /etc/sudoers
 +  * su
 +  * usermod
 +  * ulimit
 +  * who, w, last
 +
 + </WRAP></WRAP>
 +</WRAP>
 +==== Поиск файлов с повышенными правами ====
 +<code bash>
 +# поиск файлов с рутовым SUID
 +sudo find / -user root -perm -u+s # либо -perm +4000
 +# поиск файлов с рутовым SGID
 +sudo find / -group root -perm -g+s # либо -perm +2000
 +# поиск файлов с SUID или SGID
 +sudo find / -perm /u+s,g+s
 +# поиск файлов с SUID и SGID
 +sudo find / -perm -u+s,g+s
 +</code>
 +
 +==== Ограничения учётки ====
 +<code bash>
 +sudo usermod -L <username> # заблокировать учётку
 +sudo usermod -U <username> # разблокировать
 +sudo mkhomedir_helper <username> # создать домашний каталог, если его нет
 +
 +sudo chage -l <username> # список сроков действия
 +sudo chage <username> # мастер настройки сроков действия учётки и пароля
 +# /etc/login.defs - значения по умолчанию
 +
 +ulimit -a # список ограничений (макс. кол-во процессов, размер файла и т. д.)
 +ulimit -f 0 # установить лимит размера файла в 0 (создать файл не получится)
 +# ulimit действует только в рамках текущей сессии
 +# /etc/security/limits.conf - постоянные ограничения
 +</code>
 +
 +==== Поиск открытых портов ====
 +<code bash>
 +netstat -tuna
 +
 +# apt install nmap -y
 +nmap 192.168.1.222
 +
 +# lsof - list of open files, но умеет показывать и открытые порты, довольно подробно
 +sudo lsof -i
 +# поиск файлов, занятых процессом dnsmasq
 +sudo lsof -c dnsmasq
 +# поиск процессов, использующих 53 порт
 +sudo lsof -i:53
 +
 +# fuser - поиск процессов, которые используют файлы и сокеты
 +fuser -v . # найти процессы в текущем каталоге
 +fuser -v 53/tcp # найти процессы, использующие TCP-порт 53
 +</code>
 +
 +==== su, sudo ====
 +<code bash>
 +# переход в учётку root, набирая ЕГО пароль
 +su
 +# Чтобы постоянно не переходить
 +su -c 'vi /etc/resolv.conf'
 +# выполнение с повыш. привилегиями (если есть на это право), набирая СВОЙ пароль
 +sudo vi /etc/resolv.conf
 +# права работать с sudo - в /etc/sudoers, руками его править не рекомендуется
 +sudo visudo # безопасное редактирование /etc/sudoers
 +# Вид строк
 +root    ALL=(ALL:ALL) ALL
 +# root может с любого узла=(от имени любого пользователя:или любой группы) выполнять любую команду
 +
 +sudo -s # переход в режим root, как su, но домашний каталог (cd ~) остаётся пользовательским
 +# после su домашний каталог меняется на /root (хотя автоматического перехода туда не происходит)
 +</code>
 +https://www.8host.com/blog/redaktirovanie-fajla-sudoers-v-ubuntu-i-centos/\\
 +[[https://wiki.archlinux.org/title/Sudo_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)]]
 +
 +==== Статус пользователей в системе ====
 +<code bash>
 +# кто вошёл в систему
 +w # вариант 1
 + 15:43:31 up 7 days, 9 min,  1 user,  load average: 0.06, 0.13, 0.16
 +USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
 +user     pts/   10.1.2.129      Mon11    0.00s  0.17s  0.00s w
 +who # вариант 2
 +user     pts/       2022-09-19 11:04 (10.1.2.129)
 +
 +who -b # время загрузки системы
 +who -qH # логины тех, кто вошёл в систему
 +who -aH # вся информация
 +
 +users # кто вошёл в систему одной строкой
 +last # список входов в систему
 +last reboot # список загрузок системы
 +sudo lastb # список неудачных входов в систему
 +</code>
 +
 +
 +===== 110.2 Setup host security =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: Candidates should know how to set up a basic level of host security.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Awareness of shadow passwords and how they work
 +  * Turn off network services not in use
 +  * Understand the role of TCP wrappers
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * /etc/nologin
 +  * /etc/passwd
 +  * /etc/shadow
 +  * /etc/xinetd.d/
 +  * /etc/xinetd.conf
 +  * /etc/inetd.d/
 +  * /etc/inetd.conf
 +  * /etc/inittab
 +  * /etc/init.d/
 +  * /etc/hosts.allow
 +  * /etc/hosts.deny
 +
 + </WRAP></WRAP>
 +</WRAP>
 +<code bash>
 +# Если создать файл /etc/nologin, то в систему не сможет войти никто, кроме root
 +# Перед этим надо 10 раз подумать, т. к. в большинстве современных ОС вход под root отключен
 +sudo touch /etc/nologin
 +
 +nmap localhost # список сетевых служб
 +# Остановить службу
 +sudo /etc/unut.d/ssh stop # или
 +sudo service stop ssh # или
 +sudo systemctl stop ssh # вариант с systemd
 +
 +# выключить службу
 +sudo systemctl disable ssh
 +# до systemd нужно было смотреть runlevel в файле /etc/inittab, а потом выключать службу примерно так:
 +chkconfig --level 5 sshd off
 +</code>
 +
 +===== Обработка сетевых запросов =====
 +Суперсервер - процесс, управляющий всеми остальными процессами (inetd). Inetd слушает сокеты, и при необходимости запускает другие демоны для обработки запросов. Это экономит ресурсы, т. к. не нужно запускать сразу все демоны.\\
 +Конф. файл - ''/etc/inetd.conf''. Синтаксис:
 +<code>
 +service-name - имя службы
 +socket-type - тип сокета, например, stream или dgram
 +protocol - TCP, UDP И т. д.
 +{wait/nowait}[/max-child[/max-connections-per-ip-per-minute]] - ждать/не ждать, макс. кол-во экземпляров, соединений в минуту
 +user - от чьего имени работает демон
 +server-program - путь к демону
 +server-program-arguments - аргументы
 +</code>
 +В каталог ''/etc/inetd.d'' (нужно создать, если его нет) можно добавить конфигурации для отдельных служб. Inetd устарел и не используется, замена - xinetd, обладающий рядом преимуществ.
 +
 +''/etc/hosts.allow'' - перечень узлов, которым разрешено подключаться к службам системы\\
 +''/etc/hosts.deny'' - узлы, которым запрещено.\\
 +Логика та же, что и у cron.allow/deny - у allow приоритет.
 +===== 110.3 Securing data with encryption =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: The candidate should be able to use public key techniques to secure data and communication.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Perform basic OpenSSH 2 client configuration and usage
 +  * Understand the role of OpenSSH 2 server host keys
 +  * Perform basic GnuPG configuration, usage and revocation
 +  * Understand SSH port tunnels (including X11 tunnels)
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * ssh
 +  * ssh-keygen
 +  * ssh-agent
 +  * ssh-add
 +  * ~/.ssh/id_rsa and id_rsa.pub
 +  * ~/.ssh/id_dsa and id_dsa.pub
 +  * /etc/ssh/ssh_host_rsa_key and ssh_host_rsa_key.pub
 +  * /etc/ssh/ssh_host_dsa_key and ssh_host_dsa_key.pub
 +  * ~/.ssh/authorized_keys
 +  * ssh_known_hosts
 +  * gpg
 +  * ~/.gnupg/
 +</WRAP></WRAP>
 +</WRAP>
 +Шифрование с открытым ключом - генерируется 2 ключа: открытый (им данные шифруются, его можно дать кому угодно), и закрытый (им данные расшифровываются).
 +
 +При подключении к какому-либо серверу по ssh первый раз выдаётся вопрос, продолжать ли подключение к узлу с таким-то отпечатком ([[https://ru.wikipedia.org/wiki/%D0%9E%D1%82%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BB%D1%8E%D1%87%D0%B0|fingerprint]] - хэш открытого ключа). Если ответить утвердительно, открытый ключ удалённого сервера будет помещён в файл ''~/.ssh/known_hosts''.
 +
 +Этот открытый ключ будет доверенным только для текущего пользователя. Чтобы добавить открытый ключ для системы в целом, нужно скопировать ключ в файл ''/etc/ssh/ssh_known_hosts''.
 +
 +RSA - криптоалгоритм с открытым ключом для подписи и шифрования.\\
 +DSA - криптоалгоритм с открытым ключом только для подписи.
 +
 +<code bash>
 +# подключиться по ssh с именем user
 +ssh user@192.168.1.9
 +# создать пару ключей
 +ssh-keygen
 +# передать открытый ключ на удалённый сервер
 +ssh-copy-id -i .ssh/id_rsa.pub user@192.168.1.9
 +# Открытый ключ копируется в файл .ssh/authorized_keys
 +# Если при создании ключей была задана парольная фраза, то при подключении будет спрашивать её, а не пароль
 +# Чтобы запомнить парольную фразу, нужен ssh-agent
 +ssh-agent bash # запустить bash от агента
 +ssh-add .ssh/id_rsa # добавить закрытый ключ в агент
 +# сгенерировать ключи для машины в целом (srv_rsa и srv_rsa.pub)
 +sudo ssh-keygen -f /etc/ssh/srv_rsa
 +</code>
 +
 +==== Туннели SSH ====
 +<code bash>
 +# Подключение по localport через ssh_server на any_server:remoteport
 +ssh ssh_server -NL localport:any_server:remoteport
 +ssh 192.168.1.9 -NL 12345:87.250.250.242:80
 +# Теперь, если на локальной машине обратиться к http://localhost:12345, то откроется ya.ru
 +
 +# Возможность запускать приложения на удалённом сервере, чтобы они отображались локально
 +# На сервере должен быть GUI
 +ssh -X 192.168.1.9
 +nautilus # Проводник сервера покажется локально
 +
 +# копирование файла по ssh
 +scp file.txt admin@192.168.1.9:/home/admin
 +</code>
 +
 +==== Шифрование файлов ====
 +<code bash>
 +gpg --gen-key
 +# после генерации в папке .gnupg образуются 2 ключа: secring.gpg и pubring.gpg
 +gpg --list-key # вывести список ключей
 +gpg --export <keyname> > gpg.pub # экспорт открытого ключа
 +scp gpg.pub admin@192.168.1.9:/home/admin # копировать ключ на удалённый сервер
 +# на удалённом сервере
 +gpg --import gpg.pub
 +gpg --out file.enc --recipient 'Petya Mokin' --encrypt file.txt
 +# Далее перекинуть file.enc на локальный сервер с закрытым ключом
 +# на локальном сервере
 +gpg --out file.txt --decrypt file.enc
 +</code>
 +
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki