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

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


os:lpic-1:101

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
os:lpic-1:101 [23.08.2022 10:58] – [Расширенные права доступа (ACL)] viacheslavos:lpic-1:101 [30.07.2024 19:21] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== LPIC-1 Exam 101 ======
 +Exam Objectives Version: Version 4.0
  
 +Exam Codes: 101-400  or  LX0-103 (these exams are identical; passing either exam will count as the 101 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-101-objectives|LPIC-1 Exam 101 objectives]]
 +
 +<WRAP round tip 60%>
 +Данная страница является конспектом лекций Кирилла Семаева [[https://www.youtube.com/playlist?list=PLmxB7JSpraiep6kr802UDqiAIU-76nGfc|LPIC-1 (exam 101) или "Администрирование Linuх, первая ступень"]]
 +</WRAP>
 +
 +https://www.youtube.com/watch?v=rKCu-tfL730
 +====== Topic 101: System Architecture ======
 +===== 101.1 Determine and configure hardware settings =====
 +<WRAP round box 70%>
 +Weight: 2
 +
 +Description: Candidates should be able to determine and configure fundamental system hardware.
 +
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Tools and utilities to list various hardware information (e.g. lsusb, lspci, etc.)
 +  * Tools and utilities to manipulate USB devices
 +  * Conceptual understanding of sysfs, udev, dbus
 +</WRAP>
 +<WRAP half column>
 +The following is a partial list of the used files, terms and utilities:
 +
 +  * /sys/
 +  * /proc/
 +  * /dev/
 +  * modprobe
 +  * lsmod
 +  * lspci
 +  * lsusb
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +=== /sys/ - все устройства, точка монтирования файловой системы sysfs ===
 +**/sys/devices/** - все устройства ядра\\
 +**/sys/bus/** - перечень шин\\
 +**/sys/drivers/** - каталоги драйверов\\
 +**/sys/block/** - каталоги [[https://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%BE%D1%87%D0%BD%D0%BE%D0%B5_%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%BE|блочных устройств]]\\
 +**/sys/class/** - группировка устройств по классам
 +
 +=== /proc/ - информация о запущенных процессах, файловая система procfs ===
 +Создаётся во время загрузки системы, количество файлов в этом каталоге зависит от конфигурации системы. Для работы нужны права root, изменения хранятся до конца сеанса.
 +<code bash>
 +cat /proc/cpuinfo # информация о процессоре
 +cat /proc/mounts # показать все смонтированные ФС
 +cat /proc/sys/fs/file-max # показать макс. возможное кол-во открытых файлов в системе
 +echo 1000000 > /proc/sys/fs/file-max # установить кол-во открываемых файлов на 1 млн.
 +cat /proc/sys/net/ipv4/ip_forward # разрешено ли переадресовывать пакеты между сетевыми интерфейсами
 +echo 1 > /proc/sys/net/ipv4/ip_forward # разрешить переадресацию
 +</code>
 +
 +=== /dev/ - информация об устройствах ===
 +**/dev/sd** буква - жёсткий диск\\
 +**/dev/sd** буква номер - раздел диска\\
 +**/dev/sr** номер (/dev/scd номер) - CD-ROM\\
 +**/dev/eth** номер - Сетевые интерфейсы Ethernet\\
 +**/dev/wlan** номер - Сетевые интерфейсы Wireless\\
 +**/dev/lp** номер - принтеры\\
 +**/dev/video** номер - устройства изображений, камеры, фотоаппараты и т. д.\\
 +**/dev/bus/usb/000/номер** - Устройство на шине USB 1-го контроллера (000)\\
 +**/dev/dsp** - звуковой вывод
 +
 +== Команды вывода перечня устройств ==
 +**lsmod** - о модулях ядра\\
 +**lspci** - об устройствах PCI\\
 +**lspcmcia** - об устр. PCMCIA\\
 +**lsusb** - об устр. USB\\
 +**lshal** - база устройств HAL (сейчас не исп.)\\
 +**lshw** - детально о комплектующих
 +
 +== Управление модулями ядра ==
 +**lsmod** - информация о модулях ядра\\
 +**modinfo** - инф. о конкретном модуле\\
 +**rmmod** - удаление модуля (тупое)\\
 +**insmod** - установка модуля (тупая)\\
 +**modprobe** - "умное" удаление и добавление модулей, вместе с зависимостями
 +
 +<code bash>
 +modinfo e1000 # например, инфо по модулю сетевой карты Intel
 +rmmod e1000 # тупо удалить модуль
 +insmod e1000 # вставить модуль (будет ошибка, т. к. зависимости не удовлетворены)
 +modprobe e1000 # вставить модуль, удовлетворив зависимости
 +</code>
 +
 +=== Взаимодействие с CPU ===
 +**IRQ** - механизм прерываний
 +<code bash>
 +cat /proc/interrupts
 +</code>
 +**IO адреса** - обмен информацией между устройствами и процессором
 +<code bash>
 +cat /proc/ioports # по портам
 +cat /proc/iomem # как выглядит в памяти
 +</code>
 +**DMA** - обращение устройств к ОЗУ минуя процессор
 +<code bash>
 +cat /proc/dma
 +</code>
 +=== Основные интерфейсы ===
 +**PATA** - параллельный\\
 +**SATA** - последовательный\\
 +**SCSI** - стандарт передачи данных\\
 +**SAS** - замена SCSI
 +
 +**blkid** - просмотр смонтированных устройств и их ID.
 +
 +https://www.youtube.com/watch?v=7nLd_qyCL9U
 +===== 101.2 Boot the system =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: Candidates should be able to guide the system through the booting process.
 +
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Provide common commands to the boot loader and options to the kernel at boot time
 +  * Demonstrate knowledge of the boot sequence from BIOS to boot completion
 +  * Understanding of SysVinit and systemd
 +  * Awareness of Upstart
 +  * Check boot events in the log files
 +</WRAP>
 +
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * dmesg
 +  * BIOS
 +  * bootloader
 +  * kernel
 +  * initramfs
 +  * init
 +  * SysVinit
 +  * systemd
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +
 +=== Порядок загрузки системы ===
 +  - BIOS/UEFI - запуск системы
 +  - MBR/GPT - 1-я стадия загрузки
 +  - LILO/GRUB - 2-я стадия загрузки (загрузчик)
 +  - Linux kernel - запуск ядра ОС (инициализация устройств и т. п.)
 +  - Init - пользовательская среда
 +
 +В Ubuntu нажатие Shift вызывает меню загрузки. Клавиша I показывает скрипт загрузки. Пример параметров загрузки ядра - ro quiet splash $vt_handoff
 +<code bash>
 +dmesg # вывод сообщений ядра (все)
 +cat /var/log/dmesg # только сообщения загрузки
 +</code>
 +
 +**pstree** - команда вывода дерева запущенных процессов
 +
 +=== Каталог /boot ===
 +Ядра, initRAM-диски (для загрузки)\\
 +**/boot/grub** - каталог загрузчика GRUB
 +
 +https://www.youtube.com/watch?v=UeRg_PMeaWM
 +
 +===== 101.3 Change runlevels / boot targets and shutdown or reboot system =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: Candidates should be able to manage the SysVinit runlevel or systemd boot target of the system. This objective includes changing to single user mode, shutdown or rebooting the system. Candidates should be able to alert users before switching runlevels / boot targets and properly terminate processes. This objective also includes setting the default SysVinit runlevel or systemd boot target. It also includes awareness of Upstart as an alternative to SysVinit or systemd.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Set the default runlevel or boot target
 +  * Change between runlevels / boot targets including single user mode
 +  * Shutdown and reboot from the command line
 +  * Alert users before switching runlevels / boot targets or other major system events
 +  * Properly terminate processes
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * /etc/inittab
 +  * shutdown
 +  * init
 +  * /etc/init.d/
 +  * telinit
 +  * systemd
 +  * systemctl
 +  * /etc/systemd/
 +  * /usr/lib/systemd/
 +  * wall
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +==== Init в стиле SysV ====
 +Процесс запуска инициализации системы на одном из заданных уровней запуска (runlevel)
 +
 +**Уровни загрузки:**\\
 +0 - выключение\\
 +1 - однопользовательский режим\\
 +2 - Debian/Ubuntu по умолчанию\\
 +3 - Redhat/Suse по умолчанию текстовый режим\\
 +4 - Wildcard (программируемый режим, можно поставить что угодно)\\
 +5 - Redhat/Suse (GUI)\\
 +6 - перезагрузка
 +
 +<code bash>
 +runlevel # вывести текущий уровень загрузки
 +telinit 1 # перейти в однопользовательский режим (без перезагрузки)
 +</code>
 +
 +**/etc/inittab** - уровни загрузки, задан уровень по умолчанию, как реагировать на Ctrl+Alt+Delete и т. п.\\
 +**/etc/init.d** - папка скриптов, запускающих определённые службы
 +**/etc/init.d/rc** номер - скрипты соответствующего уровня загрузки
 +
 +<code bash>
 +# перезапуск сетевой службы
 +sudo /etc/init.d/network restart
 +# или
 +service network restart
 +</code>
 +
 +**Основные команды:**\\
 +**init** - управление инициализацией\\
 +**telinit** - управление процессом init\\
 +**wall** - вывод сообщения пользователям системы\\
 +**halt** - выключение компьютера\\
 +**reboot** - перезагрузка\\
 +**shutdown** - запланированное выключение\\
 +**service** //service_name// start|stop|reload|restart
 +
 +https://www.youtube.com/watch?v=Din9N0xAuFs
 +
 +==== Init в стиле Systemd ==== 
 +Процесс запуска инициализации системы в ускоренном режиме за счёт распараллеливания потоков
 +
 +**Unit** - модули, которыми оперирует Systemd:\\
 +  * .service - службы\\
 +  * .mount - точки монтирования\\
 +  * .device - устройства\\
 +  * .socket - сокеты\\
 +  * .target - цели
 +
 +**/usr/lib/systemd** - юниты по умолчанию\\
 +**/etc/systemd** - управляемые юниты
 +
 +<code bash>
 +systemctl list-units # показать все модули
 +systemctl --failed # сбойные модули
 +systemctl list-units --type=service # службы
 +systemctl status cron # состояние crond
 +systemctl stop cron # остановить crond
 +systemctl start cron # запустить crond
 +</code>
 +
 +**Цели (targets), соответствующие уровням загрузки SysV**\\
 +^ Runlevel ^ Target ^ Описание ^
 +| 0 | poweroff.target | Выключение |
 +| 1 | rescue.target | Однопользовательский режим |
 +| 2,4 | multi-user.target | Настраиваемые режимы |
 +| 3 | multi-user.target | Многопользовательский режим |
 +| 5 | graphical.target | Графический режим |
 +| 6 | reboot.target | Перезагрузка |
 +
 +<code bash>
 +systemctl list-units --type=target # узнать запущенные таргеты
 +systemctl isolate name.target # переключиться на другой таргет
 +systemctl set-default -f name.target # установить по умолчанию
 +</code>
 +
 +<WRAP round info 60%>
 +Старые команды telinit и runlevel также сохранены в целях совместимости
 +</WRAP>
 +
 +**journald** - служба журналирования
 +<code bash>
 +journalctl -f # журнал в реальном времени
 +journalctl -n 10 # последние 10 событий
 +journalctl _UID=0 # по ID пользователя
 +</code>
 +
 +Работа с питанием:\\
 +**systemctl reboot|poweroff|suspend|hibernate|hybrid-sleep**
 +
 +Работа со службами:\\
 +**systemctl start|stop|reload|restart|status** //unit//
 +
 +https://www.youtube.com/watch?v=0IQHR6g4zLA
 +
 +==== Init в стиле Upstart ====
 +Процесс запуска инициализации системы на основе отслеживания событий (служб и задач), которые принимаются от любых системных процессов. Обратно совместим с SysV и схож с ним.
 +
 +Upstart оперирует службами и задачами (services, tasks). Служба перезапускается в случае сбоя, задача - нет.
 +
 +**/etc/init** - каталог файлов-заданий (jobs), которые имеют расширение *.conf. Запускаются по условиям (например, по событию power-status-changed запускается задание shutdown.conf, где прописана команда выключения компьютера shutdown -h).
 +
 +**initctl** - утилита управления upstart.
 +
 +Команды telinit и runlevel работают так же, как и с SysV.
 +
 +Управление службами:
 +<code bash>
 +status ufw # состояние файрволла ufw
 +stop ufw # остановить ufw
 +start ufw # запустить ufw
 +initctl show-config # вывод информации о задачах
 +initctl check-config # проверка конфигурации
 +</code>
 +
 +https://www.youtube.com/watch?v=55-BtqZfqOI
 +
 +====== Topic 102: Linux Installation and Package Management ======
 +===== 102.1 Design hard disk layout =====
 +<WRAP round box 100%>
 +Weight: 2
 +
 +Description: Candidates should be able to design a disk partitioning scheme for a Linux system.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Allocate filesystems and swap space to separate partitions or disks
 +  * Tailor the design to the intended use of the system
 +  * Ensure the /boot partition conforms to the hardware architecture requirements for booting
 +  * Knowledge of basic features of LVM
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * / (root) filesystem
 +  * /var filesystem
 +  * /home filesystem
 +  * /boot filesystem
 +  * swap space
 +  * mount points
 +  * partitions
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +
 +Следующие папки могут быть смонтированы как отдельные разделы жёсткого диска:
 +  * **/** - корень, самый большой раздел
 +  * **/boot** - загрузочный раздел (≈100 МБ)
 +  * **/home** - домашние папки
 +  * **/root** - домашняя папка суперпользователя
 +  * **/etc** - конфигурация системы и её компонентов
 +  * **/opt** - ПО сторонних поставщиков
 +  * **/var** - изменяющиеся данные (логи и т. п.)
 +  * **/usr** - пакеты программ, документация, исходный код ядра (чаще всего смонтирована read only)
 +  * **/tmp** - временные файлы
 +
 +  * **swap** - никуда не монтируется
 +
 +=== /boot ===
 +**abi-[version]** - бинарный интерфейс приложений\\
 +**config-[version]** - конфиг ядра\\
 +**grub** - папка загрузчика\\
 +**initrd.img-[version]** - временная файловая система в ОЗУ\\
 +**memtest** - утилита проверки ОЗУ\\
 +**System.map-[version]** - карта символов ядра (аппаратных адресов)\\
 +**vmlinuz-[version]** - сжатое ядро ОС
 +
 +
 +==== Разбиение дисков на разделы и форматирование ====
 +На диске может быть только 4 основных раздела, если нужно больше разделов - один раздел делается расширенным и в нём создаются логические разделы. Расширенный нужно делать только один, так как могут быть проблемы с тем, чтобы прочитать содержимое диска где-то ещё.
 +
 +{{:os:hdd-partitions-linux.png?direct&600|}}
 +
 +Нумерация логических разделов начинается с 5, т. е. минимальный номер логического раздела - sda5, цифры 1-4 зарезервированы под основные разделы.
 +
 +**fdisk** - разбиение жёсткого диска\\
 +**mkfs** - создание файловой системы
 +<code bash>
 +# иногда сначала нужно поменять тип раздела, см. список (fdi sk опция l)
 +mkfs.ext4 /dev/sdb5 # создать файловую систему ext4 на разделе sdb5
 +mkfs.ntfs /dev/sdb5 # создать файловую систему ntfs на разделе sdb5
 +</code>
 +
 +**swapon** и **swapoff** - работа с разделом подкачки\\
 +**/etc/fstab** - конфигурационный файл монтирования файловых систем при загрузке системы\\
 +**mkswap** - создание раздела или файла подкачки
 +<code bash>
 +# смонтировать раздел sdb5 в папку /folder
 +# работает до перезагрузки; чтобы работало постоянно, надо редактировать файл /etc/fstab
 +mount /dev/sdb5 /folder
 +# отмонтировать
 +umount /folder
 +</code>
 +
 +==== Linux Volume Manager (LVM) - система управления томами ====
 +{{:os:lvm1.png?direct&600|}}
 +<code bash>
 +pvdisplay # показать Physical Volumes
 +vgdisplay # показать Volume Groups
 +lvdisplay # показать Logical Volumes
 +</code>
 +
 +При создании разделов на физических дисках (до LVM, командой fdisk) нужно указывать их тип как 8e (Linux LVM). Затем создаются:
 +<code bash>
 +# "физические разделы" LVM
 +pvcreate /dev/sdb1
 +pvcreate /dev/sdb2
 +# группа томов
 +vgcreate vg_test /dev/sdb1 /dev/sdb2
 +# логические тома (в данном случае размером в 2 ГБ)
 +lvcreate -n lv1 -L 2G vg_test
 +lvcreate -n lv2 -L 2G vg_test
 +# отформатировать логические тома в ext4
 +mkfs.ext4 /dev/vg_test/lv1
 +mkfs.ext4 /dev/vg_test/lv2
 +</code>
 +
 +Можно изменить размер логического тома, например
 +<code bash>
 +lvresize -L 4G /dev/vg_test/lv2 # увеличить размер тома lv2 до 4 ГБ
 +# далее нужно увеличивать файловую систему
 +resize2fs /dev/vg_test/lv2
 +</code>
 +
 +Также можно удалять, переносить логические тома, изменять размеры, делать снимки (snapshots).
 +
 +https://www.youtube.com/watch?v=x0sWtN5Mv3Q\\
 +https://help.ubuntu.ru/wiki/lvm\\
 +http://xgu.ru/wiki/LVM
 +
 +Расширить раздел
 +<code bash>
 +fd
 +lvextend -l +100%FREE /dev/server1-vg/root
 +resize2fs /dev/server1-vg/root
 +</code>
 +https://access.redhat.com/documentation/ru-ru/red_hat_enterprise_linux/6/html/logical_volume_manager_administration/index
 +===== 102.2 Install a boot manager =====
 +<WRAP round box 100%>
 +Weight: 2
 +
 +Description: Candidates should be able to select, install and configure a boot manager.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Providing alternative boot locations and backup boot options
 +  * Install and configure a boot loader such as GRUB Legacy
 +  * Perform basic configuration changes for GRUB 2
 +  * Interact with the boot loader
 +</WRAP>
 +
 +<WRAP half column>
 +The following is a partial list of the used files, terms and utilities:
 +
 +  * menu.lst, grub.cfg and grub.conf
 +  * grub-install
 +  * grub-mkconfig
 +  * MBR
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +
 +LiLo, Grub - старые, Grub2 - новый.
 +
 +=== MBR (Master boot record) ===
 + - главная загрузочная запись, первые 512 байт диска.
 +<code bash>
 +# посмотреть, где загрузчик
 +fdisk -l
 +# скопировать 1-й блок жёсткого диска в 512 байт, т. е., MBR
 +dd if=/dev/sda of=/root/backup.mbr bs=512 count=1
 +</code>
 +
 +=== LiLo ===
 +<code bash>
 +apt-get install lilo # установить LiLo
 +liloconfig # создаёт /etc/lilo.conf
 +</code>
 +В конфиге в параметр **boot = /dev/disk/by-id/** нужно добавить диск, с которого нужно грузиться
 +<code bash>
 +# Выяснить ID диска /dev/disk/by-id
 +ls /dev/disk/by-id
 +</code>
 +
 +=== Grub legacy ===
 +Настройки лежат в /boot/grub
 +=== Grub ===
 +<code bash>
 +# Установка на /dev/sda
 +grub-install /dev/sda
 +# Версия
 +grub-install --version
 +
 +# Конфиг: /boot/grub/grub.cfg, руками не редактируется, генерируется командой grub-config
 +# /etc/default/grub - настройки по умолчанию, можно редактировать
 +# /etc/grub.d - скрипты на shell, параметры указаны по очереди применения 00_, 10_, 20_ и т. д.
 +update-grub # применить изменения после изменения настроек
 +
 +sudo grub-mkconfig -o /boot/grub/grub.cfg # создать типовую конфигурацию загрузчика
 +</code>
 +
 +https://www.youtube.com/watch?v=vu-iLpJI9P0
 +===== 102.3 Manage shared libraries =====
 +<WRAP round box 100%>
 +Weight: 1
 +
 +Description: Candidates should be able to determine the shared libraries that executable programs depend on and install them when necessary.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Identify shared libraries
 +  * Identify the typical locations of system libraries
 +  * Load shared libraries
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * ldd
 +  * ldconfig
 +  * /etc/ld.so.conf
 +  * LD_LIBRARY_PATH
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +
 +//Библиотека// - набор функций, используемые программами.
 +
 +//Статические библиотеки// - в составе дистрибутива той или иной программы (нет проблем совместимости, но увеличивает размер дистрибутивов)\\
 +//Динамические библиотеки// - сидят в памяти (могут использоваться сразу несколькими программами)
 +
 +**/lib** - библиотеки, используемые программами в /bin\\
 +**/usr/lib** - библиотеки, используемые программами в usr/bin\\
 +**/etc/ld.so.conf** - список путей к библиотекам\\
 +**/etc/ld.so.cache** - кэш библиотек\\
 +<code bash>
 +ldconfig # обновить кэш библиотек
 +ldd /bin/ls # какие библиотеки использует команда ls?
 +</code>
 +Добавить библиотеки вручную - добавить путь в **/etc/ld.so.conf** или
 +<code bash>
 +export LD_LIBRARY_PATH=/opt/some_soft/lib # после этого нужно обновить кэш:
 +ldconfig
 +</code>
 +
 +https://www.youtube.com/watch?v=O2fhM_uKZ6k
 +===== 102.4 Use Debian package management =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: Candidates should be able to perform package management using the Debian package tools.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Install, upgrade and uninstall Debian binary packages
 +  * Find packages containing specific files or libraries which may or may not be installed
 +  * Obtain package information like version, content, dependencies, package integrity and installation status (whether or not the package is installed)
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * /etc/apt/sources.list
 +  * dpkg
 +  * dpkg-reconfigure
 +  * apt-get
 +  * apt-cache
 +  * aptitude
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +
 +=== dpkg ===
 +Утилита управления пакетами в Debian-системах
 +<code bash>
 +dpkg --help # справка
 +dpkg -l # перечень пакетов в системе
 +dpkg -L # перечень файлов в пакетах
 +dpkg -s firefox # статус пакета firefox
 +dpkg -p firefox # информация о пакете firefox, описание
 +dpkg -S # поиск пакета, содержащего данный файл
 +dpkg -i # установка пакета (без зависимостей)
 +dpkg -I # информация о пакете в файле .deb
 +dpkg -r # простое удаление пакета
 +dpkg -P # удаление пакета вместе с конфигурационными файлами
 +dpkg-reconfigure # реконфигурация пакета
 +</code>
 +
 +**/etc/dpkg/dpkg.cfg** - настройки dpkg
 +
 +=== apt ===
 +Более удобная программа работы с пакетами
 +
 +**apt-get** - скачивание и установка пакетов\\
 +**apt-cache** - поиск пакетов\\
 +**aptitude** - управление пакетами с опцией псевдографики\\
 +**/etc/apt/sources.list** - список репозиториев
 +
 +<code bash>
 +apt-get --help # справка
 +apt-get update # обновить список пакетов из репозиториев
 +apt-get upgrade # обновить пакеты в системе
 +apt-get install # установить программу
 +apt-get remove # удалить программу без зависимостей
 +apt-get autoremove # удалить незадействованные зависимости
 +apt-cache search # поиск информации
 +apt-cache show # информация о конкретном пакете
 +apt-cache depends # зависимости конкретного пакета
 +apt-cache rdepends # зависимости от конкретного пакета
 +</code>
 +
 +=== aptitude ===
 +По умолчанию не установлен, то же самое, что и apt-get, только с псевдографикой.
 +
 +Выбрать пакет для установки - кнопка +, установить - g, выйти - q.
 +
 +=== /etc/apt/sources.list ===
 +main - основные пакеты, поддерживаемые производителем, restricted - частично свободное ПО, universe - неподдерживаемое производителем ПО, multiverse - закрытое ПО.
 +
 +https://www.youtube.com/watch?v=_zgRUYLJa4w
 +===== 102.5 Use RPM and YUM package management =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: Candidates should be able to perform package management using RPM and YUM tools.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Install, re-install, upgrade and remove packages using RPM and YUM
 +  * Obtain information on RPM packages such as version, status, dependencies, integrity and signatures
 +  * Determine what files a package provides, as well as find which package a specific file comes from
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * rpm
 +  * rpm2cpio
 +  * /etc/yum.conf
 +  * /etc/yum.repos.d/
 +  * yum
 +  * yumdownloader
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +=== RPM ===
 +То же самое, что dpkg в Debian.
 +<code bash>
 +rpm --help # помощь
 +rpm -iv # установить пакет, verbose mode
 +rpm -e # удалить пакет
 +rpm -K # проверка подписи пакета
 +rpm -Vv # проверка файлов в пакете, verbose mode
 +rpm -qi # информация пакета
 +rpm -qd # документация
 +</code>
 +
 +**rpm2cpio** - разбор пакета на двоичные файлы
 +<code bash>
 +rpm2cpio any.rpm > any.cpio
 +</code>
 +=== YUM ===
 +**/etc/yum.repos.d/** - перечень репозиториев
 +
 +<code bash>
 +yum --help # помощь
 +yum install # установить пакет
 +yum remove # удалить
 +yum upgrade # обновить
 +yum search # найти
 +yumdownloader # скачивание пакетов вместе с зависимостями
 +</code>
 +
 +https://www.youtube.com/watch?v=AWc_9Cv6xnQ
 +====== Topic 103: GNU and Unix Commands ======
 +===== 103.1 Work on the command line =====
 +<WRAP round box 100%>
 +Weight: 4
 +
 +Description: Candidates should be able to interact with shells and commands using the command line. The objective assumes the Bash shell.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Use single shell commands and one line command sequences to perform basic tasks on the command line
 +  * Use and modify the shell environment including defining, referencing and exporting environment variables
 +  * Use and edit command history
 +  * Invoke commands inside and outside the defined path
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * bash
 +  * echo
 +  * env
 +  * export
 +  * pwd
 +  * set
 +  * unset
 +  * man
 +  * uname
 +  * history
 +  * .bash_history
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +=== bash ===
 +<code bash>
 +cat /etc/passwd # узнать используемую оболочку
 +ls -a # список файлов, в т. ч. скрытые
 +/etc/profile # глобальные настройки оболочки, "PS1=" - это вид значка командной строки
 +~/.profile # настройки конкретного профиля
 +~/.bashrc # настройки bash
 +</code>
 +
 +<code bash>
 +echo # вывод информации в консоль
 +cat > info # интерактивный режим записи информации в файл
 +env # показать переменные
 +pwd # показать текущее местоположение
 +export # внести заданную переменную в системные
 +unset # удалить переменную из системных
 +uname # вывести системную информацию
 +file # информация о файле
 +whatis # информация о программе
 +history # история команд
 +man -k http # вывести список мануалов по ключевому слову
 +exec ls -a # выполнить ls -a, игнорируя настройки оболочки и выгружая её
 +# чтобы загрузить оболочку обратно, выполнить
 +bash
 +</code>
 +
 +https://www.youtube.com/watch?v=7BuRI0Vk0Ys
 +===== 103.2 Process text streams using filters =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: Candidates should should be able to apply filters to text streams.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +Send text files and output streams through text utility filters to modify the output using standard UNIX commands found in the GNU textutils package
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * cat
 +  * cut
 +  * expand
 +  * fmt
 +  * head
 +  * join
 +  * less
 +  * nl
 +  * od
 +  * paste
 +  * pr
 +  * sed
 +  * sort
 +  * split
 +  * tail
 +  * tr
 +  * unexpand
 +  * uniq
 +  * wc
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +<code bash>
 +cat # вывод содержимого файла на экран
 +cat hello1.txt hello2.txt > hello3.txt # слить содержимое двух файлов в третий
 +rm # удаление файла
 +cut # вырезать часть из файла
 +cut -c 2,3,4,5,10 hello.txt # вывести файл hello.txt без 2-го, 3-го и т. д. символов
 +expand # заменить символы табуляции на пробелы (расстояние сохраняется)
 +fmt # форматирование вывода
 +fmt -w 10 hello.txt # выводить строки не больше 10 символов (слова не режет, переносит по пробелам)
 +head # просмотр начала файла
 +head -n 3 /var/log/syslog # первые 3 строчки
 +od # конвертер в другой формат
 +od hello.txt # конвертация в восьмеричный код
 +join # объединение строк по общим полям
 +join 1.txt 2.txt # вывести содержимое двух файлов, не повторяя то, что у них общего
 +less # постраничный вывод файлов
 +nl # нумерация строк
 +paste # объединение файлов построчно
 +pr # вывод файла в виде для печати
 +sed # мощный неинтерактивный текстовый редактор
 +sort # сортировка строк, без ключей - в алфавитном порядке
 +sort -r hello.txt # сортировать в обратном алфавитном порядке
 +split # разбиение файлов
 +split -l 2 hello.txt # разбить hello.txt на 2 части
 +split -b 2 hello.txt # разбить hello.txt на части по 5 байт
 +tail # антипод head
 +tail -f /var/log/syslog # показывать лог в реальном времени
 +tr -t A-Z a-z # заменить все заглавные буквы на строчные
 +tr -t l L # заменить все l на L
 +tr -d l # удалить все буквы l
 +tr -s l # объединить соседние буквы l в одну
 +unexpand # антипод expand, пробелы в табуляцию
 +uniq # вывод только уникальных строк
 +uniq -c hello.txt # подсчитать повторы строк
 +uniq -d hello.txt # показать только дубли
 +uniq -u hello.txt # показать только уникальные строки
 +wc # подсчёт количества строк, слов и символов
 +</code>
 +
 +https://www.youtube.com/watch?v=0-TxcLYHtjY
 +===== 103.3 Perform basic file management =====
 +<WRAP round box 100%>
 +Weight: 4
 +
 +Description: Candidates should be able to use the basic Linux commands to manage files and directories.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Copy, move and remove files and directories individually
 +  * Copy multiple files and directories recursively
 +  * Remove files and directories recursively
 +  * Use simple and advanced wildcard specifications in commands
 +  * Using find to locate and act on files based on type, size, or time
 +  * Usage of tar, cpio and dd
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * cp
 +  * find
 +  * mkdir
 +  * mv
 +  * ls
 +  * rm
 +  * rmdir
 +  * touch
 +  * tar
 +  * cpio
 +  * dd
 +  * file
 +  * gzip
 +  * gunzip
 +  * bzip2
 +  * xz
 +  * file globbing
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +<code bash>
 +touch # создание файла и смена времени доступа
 +mkdir # создать папку
 +cp # копирование
 +cp -R folder1 folder2 # копировать папку рекурсивно
 +mv # перенести (переименовать)
 +rm -rf # удалить форсированно и рекурсивно
 +rmdir # удаление папок
 +file # определение типа файла
 +find . -name "In*" # найти в текущей папке всё, начинающееся на In
 +find . -size +5M # найти в текущей папке всё, что больше 5 МБ
 +find . -type f # найти в текущей папке все файлы
 +</code>
 +
 +=== Маски символов ===
 +***** - всё, что угодно\\
 +**?** - один любой символ\\
 +**!** - не\\
 +**[ac]** - a или c\\
 +**[a-c]** - a,b,c
 +
 +=== Архивация ===
 +<code bash>
 +ls | cpio -o > ../test.cpio # запаковать все файлы в текущей папке в архив test.cpio уровнем выше
 +cpio -id < ../test.cpio # распаковать обратно
 +dd if=/dev/sdb of=drive.img # снять образ диска sdb
 +
 +gzip drive.img # запаковать (оригинал затрётся)
 +gunzip drive.img.gz # распаковать (архив затрётся)
 +bzip2 drive.img # запаковать (оригинал затрётся)
 +bunzip2 drive.img.bz2 # распаковать (архив затрётся)
 +xz drive.img # запаковать (оригинал затрётся)
 +unxz drive.img.gz # распаковать (архив затрётся)
 +
 +tar cvfz archive.tar.gz folder # заархивировать folder со сжатием
 +tar xvfz archive.tar.gz # разжать и распаковать
 +</code>
 +
 +https://www.youtube.com/watch?v=mYyamfWx7IU
 +===== 103.4 Use streams, pipes and redirects =====
 +<WRAP round box 100%>
 +Weight: 4
 +
 +Description: Candidates should be able to redirect streams and connect them in order to efficiently process textual data. Tasks include redirecting standard input, standard output and standard error, piping the output of one command to the input of another command, using the output of one command as arguments to another command and sending output to both stdout and a file.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Redirecting standard input, standard output and standard error
 +  * Pipe the output of one command to the input of another command
 +  * Use the output of one command as arguments to another command
 +  * Send output to both stdout and a file
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * tee
 +  * xargs
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +Stdin (0) - ввод\\
 +Stdout (1) - вывод\\
 +Stderr (2) - вывод ошибки
 +
 +<code>
 +> - передать в
 +>> - дописать в
 +< - взять из
 +| - отправить следующей команде
 +</code>
 +
 +Tee - отправить и в файл, и на stdout\\
 +Xargs - передать на ввод команде построчно
 +
 +<code bash>
 +wc < file1.txt # посчитать строки в файле
 +ls > list.txt # записать листинг в файл
 +cat >> list.txt # добавить листинг в конец файла
 +ls folder 2> error.txt # записать ошибку выполнения команды в файл
 +ls folder > list.txt 2> error.txt # записать листинг в файл, а если будет ошибка, то записать её в другой файл
 +ls | grep r # вывести все имена с буквой r
 +ls | tee list.txt # вывести результат и на экран, и в файл
 +find . -name "*.txt" | xargs rm -f # последовательно удалить найденные текстовые файлы
 +</code>
 +
 +https://www.youtube.com/watch?v=_ifAXPfgW9I
 +===== 103.5 Create, monitor and kill processes =====
 +<WRAP round box 100%>
 +Weight: 4
 +
 +Description: Candidates should be able to perform basic process management.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Run jobs in the foreground and background
 +  * Signal a program to continue running after logout
 +  * Monitor active processes
 +  * Select and sort processes for display
 +  * Send signals to processes
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * &
 +  * bg
 +  * fg
 +  * jobs
 +  * kill
 +  * nohup
 +  * ps
 +  * top
 +  * free
 +  * uptime
 +  * pgrep
 +  * pkill
 +  * killall
 +  * screen
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +
 +**fg** - активный режим (foreground)\\
 +**bg** - фоновый режим (background)\\
 +**nohup** - оставлять процесс работающим после выхода пользователя из системы\\
 +**ps** - инф. об активных процессах\\
 +**pstree** - дерево процессов\\
 +**pgrep** - поиск процессов\\
 +**pkill** - завершение процессов\\
 +**top** - диспетчер задач, можно завершать процессы\\
 +**free** - загрузка оперативной памяти\\
 +**uptime** - время работы, показывает load average (загрузка последнюю минуту, пять минут, 15 минут)\\
 +**screen** - управление сессиями. Ctrl+a - рабочий режим, d - свернуть текущий скрин, screen -r - вернуться в скрин, exit - завершить скрин.
 +
 +<code bash>
 +sleep 1000 & # запустить процесс в фоновом режиме (амперсанд)
 +jobs # вывести выполняющиеся процессы в текущей сессии
 +fg 1 # переключить первый процесс в активный режим
 +# Ctrl+z - остановить выполнение процесса
 +bg 1 # перевести процесс в фоновый режим
 +ps aux # все процессы всех пользователей (снапшот)
 +kill 1234 # убить процесс 1234
 +killall # грохнуть все процессы текущего пользователя
 +nohup sleep 1000 # запустить процесс, независимый от сессии пользователя
 +pgrep sleep -l # все процессы sleep с номерами
 +pkill sleep # убить все процессы sleep
 +screen -S yandex ping ya.ru # создать скрин с именем yandex, где пингуется ya.ru
 +screen -r yandex # вернуться в скрин yandex
 +</code>
 +
 +https://www.youtube.com/watch?v=Y4W_rJStNSA
 +===== 103.6 Modify process execution priorities =====
 +<WRAP round box 100%>
 +Weight: 2
 +
 +Description: Candidates should should be able to manage process execution priorities.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Know the default priority of a job that is created
 +  * Run a program with higher or lower priority than the default
 +  * Change the priority of a running process
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * nice
 +  * ps
 +  * renice
 +  * top
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +
 +Приоритет от -20 (максимальный) до +19 (минимальный).\\
 +**nice** - выставить приоритет\\
 +**renice** - изменить приоритет
 +<code bash>
 +ps alx # в столбике NI (nice) показывается приоритет
 +ps -eo user,pid,pcpu,nice,comm # список процессов с приоритетами
 +nice sleep 5000 & # запустить sleep с приоритетом 10 (приоритет по умолчанию)
 +nice -n 19 sleep 5000 & # sleep с приоритетом 19
 +nice -n -20 sleep 5000 & # sleep с высшим приоритетом
 +# (отрицательные значения может ставить только привилегированный пользователь)
 +renice 5 -p 2572 # изменить приоритет процесса 2572 на 5
 +renice 15 -u userok # изменить приоритет процессов пользователя userok
 +</code>
 +
 +https://www.youtube.com/watch?v=4GovHRq6S7g
 +===== 103.7 Search text files using regular expressions =====
 +<WRAP round box 100%>
 +Weight: 2
 +
 +Description: Candidates should be able to manipulate files and text data using regular expressions. This objective includes creating simple regular expressions containing several notational elements. It also includes using regular expression tools to perform searches through a filesystem or file content.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Create simple regular expressions containing several notational elements
 +  * Use regular expression tools to perform searches through a filesystem or file content
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * grep
 +  * egrep
 +  * fgrep
 +  * sed
 +  * regex(7)
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +
 +**%%\<text%%** - слова, начинающиеся с text\\
 +**%%text\>%%** - слова, заканчивающиеся на text\\
 +**%%^%%** - начало строки\\
 +**%%$%%** - конец строки\\
 +**%%[a-z]%%** - диапазон от a до z\\
 +**%%[^t]%%** - не буква t\\
 +**%%\[%%** - читать символ [ буквально\\
 +**%%.%%** - любой символ\\
 +**%%a|z%%** - a или z
 +
 +**grep** - поиск по выражению\\
 +**egrep** - расширенный grep\\
 +**fgrep** - быстрый grep, не понимает регулярных выражений\\
 +**rgrep** - рекурсивный grep\\
 +**sed** - потоковый текстовый редактор
 +
 +<code bash>
 +grep -n w file.txt # вывести строки, содержащие букву w, и их номера
 +grep -i w file.txt # вывести строки, содержащие буквы W или w
 +grep ^p file.txt # вывести строки, начинающиеся на букву p
 +grep e$ file.txt # вывести строки, заканчивающиеся на букву e
 +grep .o file.txt # вывести строки, содержащие букву o после любого символа
 +egrep '^(b|d)' file.txt # вывести строки, начинающиеся на b или d
 +egrep '^([a-k]|[A-K])' file.txt # вывести строки, начинающиеся на любую букву с a по k, в т. ч. заглавные
 +fgrep c$ file.txt # вывести строки, содержащие c$ (fgrep не понимает рег. выражений)
 +rgrep word * # найти слово word во всех файлах, в т. ч. в подпапках
 +sed -e '/s/oo/aa/' file.txt # вывести file.txt, заменив в словах oo на aa
 +sed -re '/s/^(B|b)/C/' file.txt # вывести file.txt, заменив первую букву B или b на C
 +</code>
 +
 +https://www.youtube.com/watch?v=5UAVMSiMnnk
 +===== 103.8 Perform basic file editing operations using vi =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: Candidates should be able to edit text files using vi. This objective includes vi navigation, basic vi modes, inserting, editing, deleting, copying and finding text.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Navigate a document using vi
 +  * Use basic vi modes
 +  * Insert, edit, delete, copy and find text
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * vi
 +  * /, ?
 +  * h,j,k,l
 +  * i, o, a
 +  * c, d, p, y, dd, yy
 +  * ZZ, :w!, :q!, :e!
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +
 +**Навигация:**\\
 +**%%←h ↓j ↑k l→%%**\\
 +**%%b e%%** - начало и конец файла\\
 +**%%( )%%** - начало и конец предложения\\
 +**%%{ }%%** - начало и конец абзаца\\
 +**%%^ $%%** - начало и конец строки\\
 +**%%1G G%%** - начало и конец файла
 +
 +**i** - режим вставки (insert) перед текущим символом\\
 +**Esc** - выход из режима\\
 +**a** - режим добавления (append?), после текущего символа\\
 +**o** - вставить новую строку\\
 +**s** - замена символа
 +
 +**yy** - скопировать строку\\
 +**yw** - скопировать слово\\
 +**yl** - скопировать символ\\
 +**dd** - вырезать строку\\
 +**dw** - вырезать слово\\
 +**dl** - вырезать символ\\
 +**p** - вставить\\
 +**cw** - редактирование конкретного слова
 +
 +**d$** - удалить до конца строки (сочетание предыдущих клавиш)\\
 +**h}** - скопировать текст до конца абзаца
 +
 +**/** - искать ниже\\
 +**?** - искать выше\\
 +**N** и **n** - продолжить поиск
 +
 +**:e** - отменить изменения\\
 +**:w** - записать изменения\\
 +**:q** - выйти из файла\\
 +**:q!** или **ZQ** - выйти без сохранения\\
 +**:wq** или **ZZ** - выйти и сохранить
 +
 +https://www.youtube.com/watch?v=ocln2_AJ4vo
 +====== Topic 104: Devices, Linux Filesystems, Filesystem Hierarchy Standard ======
 +===== 104.1 Create partitions and filesystems =====
 +<WRAP round box 100%>
 +Weight: 2
 +
 +Description: Candidates should be able to configure disk partitions and then create filesystems on media such as hard disks. This includes the handling of swap partitions.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Manage MBR partition tables
 +  * Use various mkfs commands to create various filesystems such as:
 +  * ext2/ext3/ext4
 +  * XFS
 +  * VFAT
 +  * Awareness of ReiserFS and Btrfs
 +  * Basic knowledge of gdisk and parted with GPT
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * fdisk
 +  * gdisk
 +  * parted
 +  * mkfs
 +  * mkswap
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +=== Сделать раздел подкачки ===
 +С помощью fdisk разметить место и выбрать ID раздела (82) (см. занятие [[os:lpic-1#design_hard_disk_layout|102.1]]). Предположим, это раздел /dev/sdb2. Затем выполнить команду
 +<code bash>
 +mkswap /dev/sdb2
 +swapon /dev/sdb2 # задействовать раздел подкачки в системе
 +swapon -s # посмотреть разделы swap
 +swapoff /dev/sdb2 # выключить раздел подкачки
 +</code>
 +
 +=== mkfs ===
 +<code bash>
 +mkfs -t ext2 /dev/sdb1 # отформатировать раздел в ext2
 +mkfs.ext2 /dev/sdb1 # то же самое
 +# файловая система xfs
 +sudo apt-get install xfsprogs # установить поддержку xfs в систему
 +mkfs.xfs /dev/sdb1 # отформатировать раздел в xfs
 +# reiserfs
 +sudo apt-get install reiserfsprogs # установить поддержку reiserfs в систему
 +mkfs.reiserfs /dev/sdb1 # отформатировать раздел в reiserfs
 +# btrfs
 +sudo apt-get install btrfs-tools # установить поддержку btrfs в систему
 +mkfs.btrfs /dev/sdb1 # отформатировать раздел в btrfs
 +</code>
 +
 +=== Совместимые с Windows разделы ===
 +Надо изменить тип раздела в fdisk, например, тип "c" (FAT32 LBA), затем отформатировать, например
 +<code bash>
 +mkfs.vfat /dev/sdb1
 +mkfs.ntfs /dev/sdb1
 +</code>
 +
 +=== GPT ===
 +fdisk не работает с GPT и не работает с разделами больше 2 ТБ. Для этого используется gdisk.
 +<code bash>
 +gdisk /dev/sdb
 +# опция "o" создаёт разметку GPT
 +</code>
 +
 +=== parted ===
 +Очень мощная утилита по работе с дисками и разделами.
 +
 +gparted - графическая утилита.
 +
 +https://www.youtube.com/watch?v=38lr_DjHpA0
 +===== 104.2 Maintain the integrity of filesystems =====
 +<WRAP round box 100%>
 +Weight: 2
 +
 +Description: Candidates should be able to maintain a standard filesystem, as well as the extra data associated with a journaling filesystem.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Verify the integrity of filesystems
 +  * Monitor free space and inodes
 +  * Repair simple filesystem problems
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * du
 +  * df
 +  * fsck
 +  * e2fsck
 +  * mke2fs
 +  * debugfs
 +  * dumpe2fs
 +  * tune2fs
 +  * XFS tools (such as xfs_metadump and xfs_info)
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +<code bash>
 +df -h # показать место на дисках (ключ -h - показать в понятном виде)
 +df -i # показать inode - метки файлов (индексные дескрипторы)
 +du -h # показать список папок с их размерами (рекурсивно)
 +du -h --summarize # показать список папок с их размерами (нерекурсивно)
 +ls -l # размер файлов и папок в текущем каталоге
 +ls -i # номера inode
 +</code>
 +
 +=== Починка файловой системы ===
 +Сначала нужно размонтировать раздел, который нужно проверить (как, собственно, это происходит и под виндой).
 +<code bash>
 +fsck /dev/sdb1
 +fsck -t ext4 /dev/sdb1 # указать ext4 принудительно
 +
 +# для xfs нужно запускать xfs_check, fsck не может запустить проверку
 +xfs_check /dev/sdb1 # если ничего не пишет - всё в порядке
 +xfs_repair /dev/sdb1 # команда проверки и восстановления раздела
 +xfs_info /dev/sdb1 # информация о разделе xfs
 +xfs_metadump /dev/sdb1 dump.file # сделать дамп в файл
 +
 +debugfs -w /dev/sdb1 # отладчик файловой системы, режим записи
 +# ls - показать файлы с inode (debugfs)
 +# rm file.txt - удалить файл (debugfs)
 +# lsdel - показать удалённые файлы (debugfs)
 +# undel <12> test.txt - восстановить inode 12 в файл test.txt (debugfs)
 +
 +dumpe2fs /dev/sdb1 > dump.txt # сделать дамп всей информации о файловой системе
 +mke2fs -t ext2 /dev/sdb1 # переделать файловую систему в ext2
 +tune2fs -O has_journal /dev/sdb1 # включить журнал в файловой системе на /dev/sdb1
 +tune2fs -O ^has_journal /dev/sdb1 # удалить журнал в файловой системе на /dev/sdb1
 +</code>
 +
 +https://www.youtube.com/watch?v=cKmQ9ik-gVc
 +===== 104.3 Control mounting and unmounting of filesystems =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: Candidates should be able to configure the mounting of a filesystem.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Manually mount and unmount filesystems
 +  * Configure filesystem mounting on bootup
 +  * Configure user mountable removable filesystems
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * /etc/fstab
 +  * /media/
 +  * mount
 +  * umount
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +
 +**mount** //устройство точка_монтирования_(папка)//\\
 +**umount** устройство\\
 +или\\
 +**umount** //точка_монтирования_(папка)//
 +
 +=== /etc/fstab: ===
 +//устройство точка_монтирования тип_файловой_системы options dump pass//
 +
 +**Тип файловой системы** - можно написать auto для автоопределения\\
 +**options** - непример, rw,user,auto,noexec - чтение-запись, право монтирования под обычным пользователем, монтировать при загрузке, нельзя запускать исполняемые файлы\\
 +**dump** - сохранять ли файлы автоматически при внезапном отключении питания\\
 +**pass** - параметры проверки файловой системы
 +
 +Стандартные папки для монтирования:\\
 +**/mnt** - для дисков\\
 +**/media** - для съёмных носителей
 +
 +Наиболее надёжный способ монтирования - по UUID, так как порт подключения может поменяться.
 +<code bash>
 +blkid /dev/sdb1 # посмотреть UUID раздела
 +eject # команда, безопасно отключает флешку (после отмонтирования)
 +</code>
 +
 +https://www.youtube.com/watch?v=wPfN3xT-vFQ
 +===== 104.4 Manage disk quotas =====
 +<WRAP round box 100%>
 +Weight: 1
 +
 +Description: Candidates should be able to manage disk quotas for users.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Set up a disk quota for a filesystem
 +  * Edit, check and generate user quota reports
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * quota
 +  * edquota
 +  * repquota
 +  * quotaon
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +**quotaon** - включение квоты\\
 +**quotaoff** - отключение квоты\\
 +**edquota** - редактирование квоты\\
 +**repquota** - отчёты по квотам
 +<code bash>
 +sudo apt-get install quota # установить функционал квотирования
 +</code>
 +В опциях монтирования /etc/fstab у раздела, где будет применяться квотирование, нужно дописать usrquota, grpquota.
 +
 +<code bash>
 +sudo quotacheck -cug /mnt/hdd # создать конфигурационные файлы квотирования в /mnt/hdd
 +sudo edquota -u user # задать квоту для user (-g - для группы)
 +</code>
 +
 +=== Файл настройки квот ===
 +**blocks** - сколько занято места\\
 +**soft** - мягкая квота (допускает превышение в течение 1 недели)\\
 +**hard** - жёсткая квота, превышения не допускает\\
 +**inodes** - кол-во файлов и папок в системе, созданных пользователем\\
 +для inodes тоже есть квоты soft и hard
 +
 +<code bash>
 +edquota -t # изменить временной лимит для превышения мягких квот
 +quotaon /mnt/hdd # включить квоты
 +repquota /mnt/hdd # показать отчёт по квотам
 +</code>
 +
 +**warnquota** - шлёт письма пользователям, превысившим квоту
 +
 +https://www.youtube.com/watch?v=8NgLmmeulvY
 +===== 104.5 Manage file permissions and ownership =====
 +<WRAP round box 100%>
 +Weight: 3
 +
 +Description: Candidates should be able to control file access through the proper use of permissions and ownerships.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Manage access permissions on regular and special files as well as directories
 +  * Use access modes such as suid, sgid and the sticky bit to maintain security
 +  * Know how to change the file creation mask
 +  * Use the group field to grant file access to group members
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * chmod
 +  * umask
 +  * chown
 +  * chgrp
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +**chown** - задать владельца\\
 +**chgrp** - задать группу владельцев\\
 +**chmod** - задать права доступа\\
 +
 +В отличие от винды, в линуксе у объекта файловой системы может быть не только владелец, но одновременно с тем и группа владельцев. По умолчанию при создании пользователя создаётся одноимённая группа. Владельца и группу владельцев показывает команда ''ls -l''.
 +
 +<code bash>
 +sudo chown user file.txt # задать владельца user для файла file.txt
 +sudo chgrp testers file.txt # задать группу testers для файла file.txt
 +sudo chown :testers file.txt # то же самое
 +sudo chown user:testers file.txt # задать для файла сразу и владельца, и группу владельцев
 +sudo chown -R user:testers folder # задать владельца и группу владельцев для папки рекурсивно
 +</code>
 +
 +https://www.youtube.com/watch?v=uKZDV8TsXGQ
 +
 +==== Права ====
 +eXecute=1, Write=2, Read=4
 +^  Число  ^  Разрешение  ^  Символ  ^
 +|  0  | Нет прав      %%---%%  |
 +|  1  | Execute      %%--x%%  |
 +|  2  | Write      -w-  |
 +|  3  | Write, execute      -wx  |
 +|  4  | Read      %%r--%%  |
 +|  5  | Read, execute      r-x  |
 +|  6  | Read, write      rw-  |
 +|  7  | Read, write, execute      rwx  |
 +
 +Права на объект выглядят так:\\
 +**rwxrwxrwx,** первые три разрешения относятся к владельцу, вторые - к группе, третьи - к остальным.\\
 +Например, **%%rwxrw-r--%%** - это полные права владельцу, rw группе, остальным - только чтение.
 +
 +<WRAP round info 60%>
 +Если дать права на папку только **rw,** то зайти в неё будет нельзя - для этого нужно дать право **x.**
 +</WRAP>
 +
 +<code bash>
 +chmod 750 file.txt # полные права владельцу, rx группе, остальным ничего
 +chmod u+w file.txt # дать право записи владельцу (user)
 +chmod go-x file.txt # отобрать право выполнения у группы и остальных
 +chmod -x file.txt # отобрать право выполнения файла у всех
 +</code>
 +
 +https://www.youtube.com/watch?v=PNBs3RowwGc
 +==== Маска ====
 +**umask** - маска создания файлов и папок, т. е., с какими правами будут создаваться файлы и папки от имени данного пользователя.
 +
 +Маска указывается по принципу вычитания из максимальных прав (777 для папки и 666 для файла).\\
 +**umask 022** - все папки будут создаваться с разрешением 755 (777-022), т. е., %%rwxr-xr-x%%\\
 +**umask 754** - все папки будут создаваться с разрешением 023 (777-754), т. е., %%----w--wx%%
 +
 +Параметр UMASK убран из /etc/profile, и управляется либо модулем pam_umask, либо /etc/login.defs
 +<code bash>
 +# Сделать права по умолчанию 702 (для папок) и 602 (для файлов)
 +# действует до перезагрузки
 +umask 075
 +</code>
 +
 +Чтобы сделать желаемое значение umask постоянным, надо редактировать файл /etc/login.defs
 +
 +https://www.youtube.com/watch?v=kxZ8et90yYo
 +==== Специальные биты ====
 +**suid** - бит запуска от имени владельца (любой, кто работает с объектом, будет работать от имени владельца объекта). Устанавливается для файлов. Пример применения - /bin/ping. Так как доступ к сетевой карте ограничен, на /bin/ping установлен suid, чтобы все пользователи могли от имени root запускать ping.\\
 +**sgid** - бит запуска от имени группы владельцев. Устанавливается для файлов и папок. Если на папке установлен sgid, то все вложенные объекты будут иметь ту же группу владельцев.\\
 +**sticky** - бит защиты содержимого. Устанавливается для папок. Если установлен, то только владелец или root может удалить содержимое этой папки __вне зависимости от выданных прав__.
 +
 +=== Значения спец. битов ===
 +**SUID=4, SGID=2, sticky=1**\\
 +Значения при выставлении нужной комбинации битов суммируются.
 +
 +Например,\\
 +**__4__**755 - установлен suid\\
 +**__6__**750 - установлены suid и sgid\\
 +**__3__**764 - установлены sticky и sgid
 +
 +<code bash>
 +chmod u+s file.txt # установить suid (s на пользователя)
 +chmod g+s file.txt # установить sgid (s на группу)
 +chmod o+t file.txt # установить sticky (t на остальных)
 +stat file.txt # вывести статистику по файлу
 +chmod 0755 file.txt # обнулить спец. биты
 +</code>
 +
 +https://www.youtube.com/watch?v=tfMwyQIfjM4
 +
 +В связи с выставленными битами появляются //эффективные идентификаторы.//
 +  * EUID - эффективный идентификатор пользователя, изменяется для процессов (не для пользователя) с битом SUID<code>id
 +uid=1000(user) gid=1001(user) euid=0(root) groups=1001(user),10(wheel),48(docker),443(sudo)</code>
 +  * EGID - эффективный идентификатор группы. Процесс с битом SGID выполнится с правами текущего пользователя и группой владельца.<code>$ id
 +uid=1000(user) gid=1001(user) egid=0(root) groups=1001(user),10(wheel),48(docker),443(sudo)</code>
 +
 +Есть ещё RUID - настоящий идентификатор пользователя, остающийся неизменным. Показательный пример - утилита ''passwd'', с помощью которой можно поменять пароль.
 +<code bash>
 +ls -l /bin/passwd
 +-rwsr-xr-x 1 root root 59976 Mar 14 11:59 /bin/passwd
 +</code>
 +У ''passwd'' установлен SUID, поэтому, меняя пароль, ''passwd'' выполняется от рута. Но чтобы таким образом нельзя было менять пароли у всех учёток в системе, ''passwd'' проверяет RUID пользователя.
 +
 +==== Расширенные права доступа (ACL) ====
 +<code bash>
 +# Проверить, включена ли поддержка в конфигурации ядра
 +cat /boot/config* | grep _ACL
 +...
 +CONFIG_EXT4_FS_POSIX_ACL=y
 +...
 +# Установить средства управления
 +apt install acl -y
 +
 +# Дать права ещё одному пользователю на файл
 +setfacl -m u:testuser:rw file.txt
 +
 +# Проверить
 +ls -l # в конце строки с правами появляется +
 +-rw-rw-r--+ 1 root root    0 Aug 23 12:55 file.txt
 +
 +getfacl file.txt
 +# file: file.txt
 +# owner: root
 +# group: root
 +user::rw-
 +user:testuser:rw-
 +group::r--
 +mask::rw-
 +other::r--
 +
 +# Сразу несколько разрешений за раз
 +setfacl -m g:testgroup:rw,o:r file.txt
 +
 +# Удалить разрешение
 +setfacl -x u:testuser file.txt
 +
 +# Удалить все расширенные права
 +setfacl -b file.txt
 +</code>
 +
 +=== О параметре mask ===
 +Например, есть подозрения, что файл содержит вирус, и нужно предотвратить его запуск, убрав все ACL (опция ''–remove-all''). Но если потом выяснится, что файл безопсен, надо будет раздавать все права обратно, это неудобно. Поэтому можно применить маску, чтобы заблокировать файл, но сохранить ACL, чтобы потом можно было бы легко вернуть всё обратно.
 +<code bash>
 +# Применить маску:
 +chmod 000 /tmp/testfile.txt  
 +# Эффективные права:
 +getfacl /tmp/testfile.txt  
 +# file: tmp/testfile.txt
 +# owner: root
 +# group: root
 +user::---
 +user:homer:rwx    #effective:---
 +user:bart:r--     #effective:---
 +user:marge:rwx    #effective:---
 +user:lisa:rw-     #effective:---
 +user:maggie:r--   #effective:---
 +group::r--        #effective:---
 +mask::---
 +other::---
 +</code>
 +Маска - это максимально разрешённые права для всех пользователей, она перекрывает ACL. Маску можно обновить командами ''chmod'' или ''setfacl'', но можно редактировать и саму маску.
 +<code bash>
 +# Установить маску в r-x (обратите внимание на двойное двоеточие)
 +setfacl -m m::r-x /tmp/testfile.txt
 +</code>
 +
 +=== Стандартные права ===
 +Если для папки задать стандартные права ACL, то все создаваемые объекты в ней будут наследовать те же права.
 +<code bash>
 +# После применения команды всё, что создаст testuser в папке, будет иметь права rw
 +setfacl -m default:u:testuser:rw /tmp/data
 +</code>
 +
 +=== Выгрузка-восстановление ACL ===
 +<code bash>
 +# Выгрузка
 +cd /tmp/data
 +getfacl -R * > ~/tmp_data.acl
 +
 +# Восстановление
 +setfacl --restore=~/tmp_data.acl
 +</code>
 +
 +===== 104.6 Create and change hard and symbolic links =====
 +<WRAP round box 100%>
 +Weight: 2
 +
 +Description: Candidates should be able to create and manage hard and symbolic links to a file.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Create links
 +  * Identify hard and/or soft links
 +  * Copying versus linking files
 +  * Use links to support system administration tasks
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * ln
 +  * ls
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +//Жёсткая ссылка// - это ссылка на определённое место на жёстком диске, соответственно, имеет тот же самый inode (индексный дескриптор), что и оригинальный файл. На папку жёсткая ссылка не создаётся. Также, невозможно сделать жёсткую ссылку на объект в другой файловой системе. Если насоздавать жёстких ссылок на файл, а потом удалить оригинал, то содержимое этого файла будет доступно до тех пор, пока существует хоть одна жёсткая ссылка. По сути, само название файла - это и есть жёсткая ссылка на некое содержимое.
 +
 +Inode содержит следующие свойства:
 +  * владелец
 +  * права
 +  * размер
 +  * время последней модификации
 +  * время создания
 +  * группа
 +  * местонахождение файла
 +
 +Имени файла inode не содержит. Вывести информацию из inode можно с помощью ''stat''.
 +<code bash>
 +stat /etc/adduser.conf
 +  File: /etc/adduser.conf
 +  Size: 3028            Blocks: 8          IO Block: 4096   regular file
 +Device: fd00h/64768d    Inode: 262820      Links: 1
 +Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
 +Access: 2022-08-04 19:35:23.811558808 +0000
 +Modify: 2022-02-23 08:50:28.000000000 +0000
 +Change: 2022-08-04 19:34:02.423663772 +0000
 + Birth: -
 +</code>
 +
 +На вид файлы и жёсткие ссылки между собой в консоли не различаются. Можно понять, что несколько объектов ссылаются на одно и то же содержимое - по одинаковому inode и по счётчику справа от прав доступа: 
 +<code bash>
 +ls -li # вывести список файлов с отображением inode
 +</code>
 +Результат выполнения команды для файла file.txt, на который создана жёсткая ссылка hardlink.txt:\\
 +<code>
 +550097 -rwxr--r-- 2 user user  243 авг 19 21:53 file.txt
 +550097 -rwxr--r-- 2 user user  243 авг 19 21:53 hardlink.txt
 +</code>
 +Первое число - inode, он одинаковый. После перечисления прав - кол-во ссылок (две).
 +
 +У //мягкой// (или //символической//) ссылки свой inode, она ориентируется на имя объекта, т. е., если переименовать файл, то мягкая ссылка перестанет работать. Мягкие ссылки могут находиться в разных файловых системах. Иногда это свойство используется, чтобы быстро решить проблему нехватки места на диске: можно добавить диск, перенести на него данные и создаь символическую ссылку из старого местоположения в новое.
 +
 +<code bash>
 +ln file.txt hard # сделать жёсткую ссылку на file.txt
 +ln -s file.txt soft # сделать мягкую ссылку на file.txt (-s - soft, symbolic)
 +ln -s file.txt Folder/ # мягкая ссылка создастся, но будет нерабочей, т. к.
 +# команда выполняется в папке, а там нет file.txt.
 +# Если не указывать имя ссылки, то она будет с тем же именем, что и объект.
 +ln -s ~/file.txt Folder/ # так - сработает (если file.txt в домашней папке).
 +# Нужно указывать полный путь к объектам, на которые даётся ссылка.
 +</code>
 +
 +https://www.youtube.com/watch?v=U-8Zl2QyseQ
 +===== 104.7 Find system files and place files in the correct location =====
 +<WRAP round box 100%>
 +Weight: 2
 +
 +Description: Candidates should be thoroughly familiar with the Filesystem Hierarchy Standard (FHS), including typical file locations and directory classifications.
 +<WRAP group>
 +<WRAP half column>
 +Key Knowledge Areas:
 +
 +  * Understand the correct locations of files under the FHS
 +  * Find files and commands on a Linux system
 +  * Know the location and purpose of important file and directories as defined in the FHS
 +</WRAP>
 +<WRAP half column>
 +Terms and Utilities:
 +
 +  * find
 +  * locate
 +  * updatedb
 +  * whereis
 +  * which
 +  * type
 +  * /etc/updatedb.conf
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +=== FHS ===
 +FHS - это File System Hierarchy Standard, т. е., стандартная иерархия файловой системы.
 +
 +**/bin** - базовые бинарники команд\\
 +**/boot** - файлы загрузчика\\
 +**/dev** - устройства (devices)\\
 +**/etc** - конфигурация ПК (конфиг. файлы)\\
 +**/home** - домашние папки\\
 +**/lib** - библиотеки и модули ядра\\
 +**/proc** - информация о работающей системе (процессы)\\
 +**/media** - монтирование съёмных носителей (флешки, CDs и т. п.)\\
 +**/mnt** - для монтирования носителей\\
 +**/opt** - пакеты доп. ПО\\
 +**/root** - домашняя папка root\\
 +**/sbin** - настройки основных компонентов системы\\
 +**/srv** - данные для системных служб\\
 +**/tmp** - временные файлы\\
 +**/usr** - бинарники пользователей\\
 +**/var** - часто меняющиеся данные (логи, почта и т. п.)
 +
 +=== Команды ===
 +**grep** - поиск по содержимому\\
 +**find** - поиск файлов по свойствам\\
 +<code bash>
 +find / -name mail # искать объекты с именем mail (точное соответствие)
 +find / -user user # найти всё, относящееся к user
 +</code>
 +**locate** - быстрый поиск файлов, не ищет на смонтированных устройствах, в /tmp, /var/spool и т. п. Конфиг locate - /etc/updatedb.conf. Работает с индексом файлов, создающимся командой find по запланированному заданию раз в день.
 +<code bash>
 +sudo updatedb # обновить индекс принудительно
 +locate mail # показать всё включающее слово mail
 +</code>
 +
 +**which** - поиск команды\\
 +<code bash>
 +which ls # путь к команде ls в файловой системе
 +</code>
 +**type** - вывод точной команды\\
 +<code bash>
 +type ls # вывести параметры запуска команды ls из её расположения в файловой системе
 +</code>
 +**whereis** - поиск команды, исходников и мануала
 +<code bash>
 +whereis ls # похоже на which, но подробнее + доп. функционал
 +</code>
 +
 +https://www.youtube.com/watch?v=EijSRcnBSNM
 +
 +===== Изменения в exam-101 от 10 февраля 2015 =====
 +
 +https://www.youtube.com/watch?v=PMN11huPMzo

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki