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.
Эта страница является кратким конспектом лекций Кирилла Семаева LPIC-1 (exam 102) или "Базовые навыки по администрированию Linux"
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.
Key Knowledge Areas:
The following is a partial list of the used files, terms and utilities:
/etc/profile
- файл глобальных настроек профиля. Читает нижестоящие файлы/каталоги:/etc/bash.bashrc
(или /etc/bashrc
) - загрузка псевдонимов и функций (для неинтерактивного фхода)/etc/profile.d/*.sh
- папка скриптов~/.bash_profile
, ~/.bash_login
, ~/.bash_logout
, ~/.bash_profile
→ ~/.bashrc
- личные настройки пользователя.
/etc/skel
- набор файлов, копирующихся в новый профиль пользователя.
# Псевдонимы - аналоги команд с разными ключами alias ls='ls --color=auto' # Функция - код, вызываемый короткой комадой function whattime() { echo "It's $(date +%R) o'clock" }
Изменения файла .bashrc
или аналогичного применяются после запуска новой оболочки. Можно либо перелогиниться, либо запустить bash
ещё раз.
Добавление аргументов к функции (про позиционные параметры $1, $2 и т. д. $0 - имя функции)
https://youtu.be/-FKG3WGB6dw
# вывести все переменные и функции set # вывести переменные среды env # Обычные переменные существуют только в рамках текущей сессии weather="The weather is fine" # Сделать из обычной переменной переменную среды (действует в текущей и в дочерних сессиях) export weather # Убрать переменную unset weather # Чтобы переменная работала постоянно, надо её добавить в .profile или аналогичные # PATH - места, где система ищет исполняемые файлы, чтобы не указывать полного имени при запуске. # Добавить папку: PATH=$PATH:/home/user/exec
Weight: 4
Description: Candidates should be able to customize existing scripts, or write simple new Bash scripts.
Key Knowledge Areas:
Terms and Utilities:
test
- проверка файлов, числовых и строковых значений и т. д. На выходе даёт 0 (true) или не 0 (false), сохраняющееся в переменной $?
.
test 5 -gt 2 [ 5 -gt 2 ] # как вариант echo $? 1 # нет, 5 не больше 2 [ "text" = "text2" ] # равны ли строки test -x file.txt # есть ли права на выполнение [ -e /home/user ] # существует ли домашний каталог user
Подстановка команд работает по принципу функций, результат работы команды является аргументом или значением переменной.
X = $(ls -a) # или X = `ls -a`
Условия и циклы
#!/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
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.
Key Knowledge Areas:
Terms and Utilities:
-- Создать БД 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;
Weight: 2
Description: Candidates should be able to install and configure X11.
Key Knowledge Areas:
Terms and Utilities:
X Window System - стандартная графическая подсистема для отрисовки и перемещения окон и взаимодействия с устройствами ввода, база для графических сред (KDE, Gnome и прочие). X11 позволяет подключаться к себе, т. е., выводить изображение на удалённый монитор, причём, монитор в данном случае считается «сервером», а комп с x11 - «клиентом».
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-адреса этого сервера
Конфигурационный файл X11 лежит стандартно в /etc/X11
, но в современных дистрибутивах может быть по-другому, например, в Убунте конфиги лежат в /etc/share/X11/xorg.conf.d/
.
xwininfo # вывод информации об окне xdpyinfo # вывод информации об X-сервере в целом
Приложение «терминал» в графическом интерфейсе - это не настоящая консоль, а её эмулятор (команда tty
выдаёт /dev/pts/0, т. е., псевдотерминал). Реальную консоль можно вызвать с помощью Ctrl+Alt+F1
(/dev/tty1). C F1 по F6 - это консоли, а на седьмой консоли Ctrl+Alt+F7
уже висит сам графический интерфейс (стандартное положение GUI для многих дистрибутивов).
# В 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
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).
Key Knowledge Areas:
Terms and Utilities:
Display manager - это окно входа в систему (не оболочка).
# Установить 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
Weight: 1
Description: Demonstrate knowledge and awareness of accessibility technologies.
Key Knowledge Areas:
Terms and Utilities:
Weight: 5
Description: Candidates should be able to add, remove, suspend and change user accounts.
Key Knowledge Areas:
Terms and Utilities:
Стандартные файлы:
/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 и т. д.)
chage -l username # посмотреть свойства учётки username chage -E 2020-08-05 username # учётка истекает 5 авг 2020 chage -E -1 username # снять ограничение срока действия учётки getent passwd username # вывод строки с username из /etc/passwd
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.
Key Knowledge Areas:
Terms and Utilities:
# Пользовательский cron crontab -e # вывести crontab -l # Пользовательский крон хранится как файл /var/spool/cron/<username>
/etc/cron.deny
- список тех, кому запрещён доступ к крону. Остальные могут пользоваться.
/etc/cron.allow
- ТОЛЬКО ЭТИ пользователи могут пользоваться кроном, остальным запрещено. Если файл пустой, то крон разрешен только для root.
Если пользователь есть в обоих списках, то разрешение имеет больший приоритет, чем запрет.
/etc/anacron
- асинхронный планировщик, умеет запускать пропущенные задания. Полезен, когда нужно выполнять задания на нерегулярно работающем компьютере. Синтаксис отличается от стандартного крона.
# интервал (дни), задержка запуска (мин), имя, команда 1 5 cron.daily run-parts --report /etc/cron.daily @monthly 15 cron.monthly run-parts --report /etc/cron.monthly
Самый мелкий интервал - 1 день. @monthly
- переменная «каждый месяц», т. к. в месяцах разное кол-во дней. Anacron проверяет, когда последний раз запускалась задача с этим именем (файлы в /var/spool/anacron
), и если интервал превышает заданный, то после указанной задержки задача запускается. Задержка нужна, чтобы всё не стартовало одновременно.
В каталогах /etc/cron.{daily,monthly,weekly}
есть файл 0anacron
, что указывает на то, что анакрон имеет приоритет и выполняется в первую очередь. Когда в системе есть анакрон, то ежедневные, еженедельные и ежемесячные задания начинают выполняться анакроном, а не кроном, что исключает двойное выполнение задач. Так в Debian/Ubuntu. В некоторых дистрибутивах наоборот - крон имеет больший приоритет.
Планировщик разовых задач. Стандартно в комплект не входит, нужно ставить отдельно - sudo apt install at
.
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
У at также есть возможность создать файлы /etc/at.deny
и /etc/at.allow
по аналогии с кроном.
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.
Key Knowledge Areas:
Terms and Utilities:
$LANG
- основная настройка языка
LC_ALL
- перезапись всех языковых настроек
locale
- вывод текущих настроек
LANG=C
- стандартная кодировка
Некоторые кодировки:
ASCII - 128 основных символов
ISO-8859 - большинство латинских символов
Windows-1251 - кириллические символы
UTF-8 - юникод
iconv - конвертер кодировок
iconv --list # вывод всех поддерживаемых кодировок iconv -f UTF-8 -t ASCII /etc/fstab
# установить время 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
Weight: 3
Description: Candidates should be able to properly maintain the system time and synchronize the clock via NTP.
Key Knowledge Areas:
Terms and Utilities:
Аппаратное время - время часов на материнской плате. При запуске это время передаётся системному времени.
Команда date
выводит системное время, sudo hwclock
- аппаратное.
После двукратного «подведения стрелок» аппаратных часов создаётся файл /etc/adjtime
, где отражается расхождение аппаратных часов с точным временем, после чего можно командой sudo hwclock –adjust
подвести аппаратные часы, не указывая точного времени, т. к. поправка уже известна.
# Задать аппаратное время 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
https://www.ntppool.org/ru/use.html
https://www.ntppool.org/zone/ru
# Синхронизировать часы с пулом sudo ntpdate 2.ru.pool.ntp.org # Раньше нужно было создавать задачу в кроне для синхронизации часов командой ntpdate, # сейчас можно использовать демон ntpd (он может быть и сервером точного времени). sudo apt install ntp vi /etc/ntp.conf # внести туда нужные пулы/сервера по необходимости sudo systemctl restart ntp ntpq -pn # статистика
После установки ntpd команда ntpdate работать уже не будет, выдавая сообщение «the NTP socket is in use».
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.
Key Knowledge Areas:
Terms and Utilities:
Формат конфигурации syslog - «источник.приоритет назначение». Чистый syslog сейчас почти не используется, есть более современные варианты, например, rsyslog.
# Критические события ядра 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
После изменений нужно перезапустить/перечесть syslog - sudo service syslog reload
.
Чтобы сервер мог принимать логи с удалёной машины, нужно в файле /etc/sysconfig/syslog
добавить опцию -r
в SYSLOGD OPTIONS
.
# Создать событие logger -p user.warn "Don't touch the red button!"
klogd - демон записи логов ядра (в современных системах логи ядра пишутся по-другому). Перехватывает все сообщения, относящиеся к ядру.
# klogd в урезанном виде в современных системах входит в состав busybox-syslogd apt install busybox-syslogd # сообщения ядра выгрузить в файл klogd -o -f kernel.log
logrotate - очистка/архивация логов. Общий файл конфигурации - /etc/logrotate.conf
, отдельные файлы для разных сервисов кладутся в /etc/logrotate.d
.
/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 # конец скрипта }
Система журналирования 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
.
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 # выгружать логи на удалённую машину
Быстрый сервис обработки логов, принимающий информацию из разных источников и отдающий по разным путям назначения. По сравнению с syslog у rsyslog есть мощная фильтрация и поддержка протокола TCP. Конфигурация - /etc/rsyslog.conf
, доп. конфиги - /etc/rsyslog.d/*.conf
.
Ещё одна мощная альтернатива syslog, может работать как централизованный сервер сбора логов, но также и как локальный демон. На Убунте, чтобы использовать syslog-ng, надо сказать journald, чтобы он пересылал логи туда (удалить journald невозможно, т. к. он является частью системы инициализации systemd).
apt install syslog-ng # файл конфигурации vi /etc/syslog-ng/syslog-ng.conf
https://www.ekzorchik.ru/2013/03/ubuntu-12-syslog-zyxel-keenetic-lite-logs/
https://manpages.ylsoftware.com/ru/syslog-ng.conf.5.html
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.
Key Knowledge Areas:
Terms and Utilities:
Все используют более-менее один и тот же синтаксис sendmail.
# 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 # выйти
Файл ~/.forward
- для пересылки. Содержит логин пользователя, на который будет идти почтовая переадресация.
sendmail emulation layer commands - если написать man sendmail
без установленного sendmail, то покажется справка по совместимым командам.
mailq
- очередь. Удаление писем из очереди postfix
Weight: 2
Description: Candidates should be able to manage print queues and user print jobs using CUPS and the LPD compatibility interface.
Key Knowledge Areas:
Terms and Utilities:
На десктопах CUPS предустановлен, на сервере нужно ставить:
apt install cups
systemctl start cups
systemctl enabled cups
Веб-интерфейс изначально настроен на адрес localhost:631 (пускает только с самого сервера).
# Разрешить удалённый вход на веб-интерфейс cupsctl --remote-any echo "ServerAlias *" >> /etc/cups/cupsd.conf # С любого имени systemctl restart cups # Добавить админа (здесь: пользователь cupsadmin) usermod -aG lpadmin cupsadmin
Управление печатью. Базовая настройка
Управление печатью. Очереди и задания печати.
Weight: 4
Description: Candidates should demonstrate a proper understanding of TCP/IP network fundamentals.
Key Knowledge Areas:
Terms and Utilities:
Weight: 4
Description: Candidates should be able to view, change and verify configuration settings on client hosts.
Key Knowledge Areas:
Terms and Utilities:
/etc/hostname
- имя узла
/etc/hosts
- БД имён и IP-адресов
/etc/resolv.conf
- настройки DNS. Напрямую редактировать нельзя, для этого есть файлы /etc/resolvconf/resolv.conf.d/{head,base,tail}
.
# Применить изменения в resolv.conf sudo resolvconf -u
/etc/nsswitch.conf
- настройки NSS (Name Service Switch, какие поставщики услуг имен должны использоваться для каждого типа поиска - имён хостов, паролей и т. д.).
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 # добавить адрес
Weight: 4
Description: Candidates should be able to troubleshoot networking issues on client hosts.
Key Knowledge Areas:
Terms and Utilities:
host - запрос напрямую на DNS-сервер
dig - запрос на DNS-сервер (более подробно)
traceroute, tracepath - отобразить маршрут до указанного адреса
netstat - вывод информации о сети
netcat (алиас - nc) - установка соединений
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
Weight: 2
Description: Candidates should be able to configure DNS on a client host.
Key Knowledge Areas:
Terms and Utilities:
getent - вывод значений из текстовых баз данных ( group, gshadow, hosts, netgroup, networks, passwd и т. д.)
getent hosts getent hosts ya.ru
Weight: 3
Description: Candidates should know how to review system configuration to ensure host security in accordance with local security policies.
Key Knowledge Areas:
Terms and Utilities:
# поиск файлов с рутовым 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
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 - постоянные ограничения
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
# переход в учётку 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 (хотя автоматического перехода туда не происходит)
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)
# кто вошёл в систему 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/0 10.1.2.129 Mon11 0.00s 0.17s 0.00s w who # вариант 2 user pts/0 2022-09-19 11:04 (10.1.2.129) who -b # время загрузки системы who -qH # логины тех, кто вошёл в систему who -aH # вся информация users # кто вошёл в систему одной строкой last # список входов в систему last reboot # список загрузок системы sudo lastb # список неудачных входов в систему
Weight: 3
Description: Candidates should know how to set up a basic level of host security.
Key Knowledge Areas:
Terms and Utilities:
# Если создать файл /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
Суперсервер - процесс, управляющий всеми остальными процессами (inetd). Inetd слушает сокеты, и при необходимости запускает другие демоны для обработки запросов. Это экономит ресурсы, т. к. не нужно запускать сразу все демоны.
Конф. файл - /etc/inetd.conf
. Синтаксис:
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 - аргументы
В каталог /etc/inetd.d
(нужно создать, если его нет) можно добавить конфигурации для отдельных служб. Inetd устарел и не используется, замена - xinetd, обладающий рядом преимуществ.
/etc/hosts.allow
- перечень узлов, которым разрешено подключаться к службам системы
/etc/hosts.deny
- узлы, которым запрещено.
Логика та же, что и у cron.allow/deny - у allow приоритет.
Weight: 3
Description: The candidate should be able to use public key techniques to secure data and communication.
Key Knowledge Areas:
Terms and Utilities:
Шифрование с открытым ключом - генерируется 2 ключа: открытый (им данные шифруются, его можно дать кому угодно), и закрытый (им данные расшифровываются).
При подключении к какому-либо серверу по ssh первый раз выдаётся вопрос, продолжать ли подключение к узлу с таким-то отпечатком (fingerprint - хэш открытого ключа). Если ответить утвердительно, открытый ключ удалённого сервера будет помещён в файл ~/.ssh/known_hosts
.
Этот открытый ключ будет доверенным только для текущего пользователя. Чтобы добавить открытый ключ для системы в целом, нужно скопировать ключ в файл /etc/ssh/ssh_known_hosts
.
RSA - криптоалгоритм с открытым ключом для подписи и шифрования.
DSA - криптоалгоритм с открытым ключом только для подписи.
# подключиться по 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
# Подключение по 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
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