os:lpic-1:101
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
os:lpic-1:101 [23.08.2022 11:48] – [Расширенные права доступа (ACL)] viacheslav | os: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 | ||
+ | |||
+ | 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:// | ||
+ | |||
+ | <WRAP round tip 60%> | ||
+ | Данная страница является конспектом лекций Кирилла Семаева [[https:// | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ====== Topic 101: System Architecture ====== | ||
+ | ===== 101.1 Determine and configure hardware settings ===== | ||
+ | <WRAP round box 70%> | ||
+ | Weight: 2 | ||
+ | |||
+ | Description: | ||
+ | |||
+ | <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 half column> | ||
+ | The following is a partial list of the used files, terms and utilities: | ||
+ | |||
+ | * /sys/ | ||
+ | * /proc/ | ||
+ | * /dev/ | ||
+ | * modprobe | ||
+ | * lsmod | ||
+ | * lspci | ||
+ | * lsusb | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | === /sys/ - все устройства, | ||
+ | **/ | ||
+ | **/ | ||
+ | **/ | ||
+ | **/ | ||
+ | **/ | ||
+ | |||
+ | === /proc/ - информация о запущенных процессах, | ||
+ | Создаётся во время загрузки системы, | ||
+ | <code bash> | ||
+ | cat / | ||
+ | cat / | ||
+ | cat / | ||
+ | echo 1000000 > / | ||
+ | cat / | ||
+ | echo 1 > / | ||
+ | </ | ||
+ | |||
+ | === /dev/ - информация об устройствах === | ||
+ | **/dev/sd** буква - жёсткий диск\\ | ||
+ | **/dev/sd** буква номер - раздел диска\\ | ||
+ | **/dev/sr** номер (/dev/scd номер) - CD-ROM\\ | ||
+ | **/ | ||
+ | **/ | ||
+ | **/dev/lp** номер - принтеры\\ | ||
+ | **/ | ||
+ | **/ | ||
+ | **/ | ||
+ | |||
+ | == Команды вывода перечня устройств == | ||
+ | **lsmod** - о модулях ядра\\ | ||
+ | **lspci** - об устройствах PCI\\ | ||
+ | **lspcmcia** - об устр. PCMCIA\\ | ||
+ | **lsusb** - об устр. USB\\ | ||
+ | **lshal** - база устройств HAL (сейчас не исп.)\\ | ||
+ | **lshw** - детально о комплектующих | ||
+ | |||
+ | == Управление модулями ядра == | ||
+ | **lsmod** - информация о модулях ядра\\ | ||
+ | **modinfo** - инф. о конкретном модуле\\ | ||
+ | **rmmod** - удаление модуля (тупое)\\ | ||
+ | **insmod** - установка модуля (тупая)\\ | ||
+ | **modprobe** - " | ||
+ | |||
+ | <code bash> | ||
+ | modinfo e1000 # например, | ||
+ | rmmod e1000 # тупо удалить модуль | ||
+ | insmod e1000 # вставить модуль (будет ошибка, | ||
+ | modprobe e1000 # вставить модуль, | ||
+ | </ | ||
+ | |||
+ | === Взаимодействие с CPU === | ||
+ | **IRQ** - механизм прерываний | ||
+ | <code bash> | ||
+ | cat / | ||
+ | </ | ||
+ | **IO адреса** - обмен информацией между устройствами и процессором | ||
+ | <code bash> | ||
+ | cat / | ||
+ | cat /proc/iomem # как выглядит в памяти | ||
+ | </ | ||
+ | **DMA** - обращение устройств к ОЗУ минуя процессор | ||
+ | <code bash> | ||
+ | cat /proc/dma | ||
+ | </ | ||
+ | === Основные интерфейсы === | ||
+ | **PATA** - параллельный\\ | ||
+ | **SATA** - последовательный\\ | ||
+ | **SCSI** - стандарт передачи данных\\ | ||
+ | **SAS** - замена SCSI | ||
+ | |||
+ | **blkid** - просмотр смонтированных устройств и их ID. | ||
+ | |||
+ | https:// | ||
+ | ===== 101.2 Boot the system ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 3 | ||
+ | |||
+ | Description: | ||
+ | |||
+ | <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 half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * dmesg | ||
+ | * BIOS | ||
+ | * bootloader | ||
+ | * kernel | ||
+ | * initramfs | ||
+ | * init | ||
+ | * SysVinit | ||
+ | * systemd | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === Порядок загрузки системы === | ||
+ | - BIOS/UEFI - запуск системы | ||
+ | - MBR/GPT - 1-я стадия загрузки | ||
+ | - LILO/GRUB - 2-я стадия загрузки (загрузчик) | ||
+ | - Linux kernel - запуск ядра ОС (инициализация устройств и т. п.) | ||
+ | - Init - пользовательская среда | ||
+ | |||
+ | В Ubuntu нажатие Shift вызывает меню загрузки. Клавиша I показывает скрипт загрузки. Пример параметров загрузки ядра - ro quiet splash $vt_handoff | ||
+ | <code bash> | ||
+ | dmesg # вывод сообщений ядра (все) | ||
+ | cat / | ||
+ | </ | ||
+ | |||
+ | **pstree** - команда вывода дерева запущенных процессов | ||
+ | |||
+ | === Каталог /boot === | ||
+ | Ядра, initRAM-диски (для загрузки)\\ | ||
+ | **/ | ||
+ | |||
+ | https:// | ||
+ | |||
+ | ===== 101.3 Change runlevels / boot targets and shutdown or reboot system ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 3 | ||
+ | |||
+ | Description: | ||
+ | <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 half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * / | ||
+ | * shutdown | ||
+ | * init | ||
+ | * / | ||
+ | * telinit | ||
+ | * systemd | ||
+ | * systemctl | ||
+ | * / | ||
+ | * / | ||
+ | * wall | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | ==== Init в стиле SysV ==== | ||
+ | Процесс запуска инициализации системы на одном из заданных уровней запуска (runlevel) | ||
+ | |||
+ | **Уровни загрузки: | ||
+ | 0 - выключение\\ | ||
+ | 1 - однопользовательский режим\\ | ||
+ | 2 - Debian/ | ||
+ | 3 - Redhat/Suse по умолчанию текстовый режим\\ | ||
+ | 4 - Wildcard (программируемый режим, можно поставить что угодно)\\ | ||
+ | 5 - Redhat/Suse (GUI)\\ | ||
+ | 6 - перезагрузка | ||
+ | |||
+ | <code bash> | ||
+ | runlevel # вывести текущий уровень загрузки | ||
+ | telinit 1 # перейти в однопользовательский режим (без перезагрузки) | ||
+ | </ | ||
+ | |||
+ | **/ | ||
+ | **/ | ||
+ | **/ | ||
+ | |||
+ | <code bash> | ||
+ | # перезапуск сетевой службы | ||
+ | sudo / | ||
+ | # или | ||
+ | service network restart | ||
+ | </ | ||
+ | |||
+ | **Основные команды: | ||
+ | **init** - управление инициализацией\\ | ||
+ | **telinit** - управление процессом init\\ | ||
+ | **wall** - вывод сообщения пользователям системы\\ | ||
+ | **halt** - выключение компьютера\\ | ||
+ | **reboot** - перезагрузка\\ | ||
+ | **shutdown** - запланированное выключение\\ | ||
+ | **service** // | ||
+ | |||
+ | https:// | ||
+ | |||
+ | ==== Init в стиле Systemd ==== | ||
+ | Процесс запуска инициализации системы в ускоренном режиме за счёт распараллеливания потоков | ||
+ | |||
+ | **Unit** - модули, | ||
+ | * .service - службы\\ | ||
+ | * .mount - точки монтирования\\ | ||
+ | * .device - устройства\\ | ||
+ | * .socket - сокеты\\ | ||
+ | * .target - цели | ||
+ | |||
+ | **/ | ||
+ | **/ | ||
+ | |||
+ | <code bash> | ||
+ | systemctl list-units # показать все модули | ||
+ | systemctl --failed # сбойные модули | ||
+ | systemctl list-units --type=service # службы | ||
+ | systemctl status cron # состояние crond | ||
+ | systemctl stop cron # остановить crond | ||
+ | systemctl start cron # запустить crond | ||
+ | </ | ||
+ | |||
+ | **Цели (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 # установить по умолчанию | ||
+ | </ | ||
+ | |||
+ | <WRAP round info 60%> | ||
+ | Старые команды telinit и runlevel также сохранены в целях совместимости | ||
+ | </ | ||
+ | |||
+ | **journald** - служба журналирования | ||
+ | <code bash> | ||
+ | journalctl -f # журнал в реальном времени | ||
+ | journalctl -n 10 # последние 10 событий | ||
+ | journalctl _UID=0 # по ID пользователя | ||
+ | </ | ||
+ | |||
+ | Работа с питанием: | ||
+ | **systemctl reboot|poweroff|suspend|hibernate|hybrid-sleep** | ||
+ | |||
+ | Работа со службами: | ||
+ | **systemctl start|stop|reload|restart|status** //unit// | ||
+ | |||
+ | https:// | ||
+ | |||
+ | ==== Init в стиле Upstart ==== | ||
+ | Процесс запуска инициализации системы на основе отслеживания событий (служб и задач), | ||
+ | |||
+ | Upstart оперирует службами и задачами (services, tasks). Служба перезапускается в случае сбоя, задача - нет. | ||
+ | |||
+ | **/ | ||
+ | |||
+ | **initctl** - утилита управления upstart. | ||
+ | |||
+ | Команды telinit и runlevel работают так же, как и с SysV. | ||
+ | |||
+ | Управление службами: | ||
+ | <code bash> | ||
+ | status ufw # состояние файрволла ufw | ||
+ | stop ufw # остановить ufw | ||
+ | start ufw # запустить ufw | ||
+ | initctl show-config # вывод информации о задачах | ||
+ | initctl check-config # проверка конфигурации | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | |||
+ | ====== Topic 102: Linux Installation and Package Management ====== | ||
+ | ===== 102.1 Design hard disk layout ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 2 | ||
+ | |||
+ | Description: | ||
+ | <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 half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * / (root) filesystem | ||
+ | * /var filesystem | ||
+ | * /home filesystem | ||
+ | * /boot filesystem | ||
+ | * swap space | ||
+ | * mount points | ||
+ | * partitions | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Следующие папки могут быть смонтированы как отдельные разделы жёсткого диска: | ||
+ | * **/** - корень, | ||
+ | * **/boot** - загрузочный раздел (≈100 МБ) | ||
+ | * **/home** - домашние папки | ||
+ | * **/root** - домашняя папка суперпользователя | ||
+ | * **/etc** - конфигурация системы и её компонентов | ||
+ | * **/opt** - ПО сторонних поставщиков | ||
+ | * **/var** - изменяющиеся данные (логи и т. п.) | ||
+ | * **/usr** - пакеты программ, | ||
+ | * **/tmp** - временные файлы | ||
+ | |||
+ | * **swap** - никуда не монтируется | ||
+ | |||
+ | === /boot === | ||
+ | **abi-[version]** - бинарный интерфейс приложений\\ | ||
+ | **config-[version]** - конфиг ядра\\ | ||
+ | **grub** - папка загрузчика\\ | ||
+ | **initrd.img-[version]** - временная файловая система в ОЗУ\\ | ||
+ | **memtest** - утилита проверки ОЗУ\\ | ||
+ | **System.map-[version]** - карта символов ядра (аппаратных адресов)\\ | ||
+ | **vmlinuz-[version]** - сжатое ядро ОС | ||
+ | |||
+ | |||
+ | ==== Разбиение дисков на разделы и форматирование ==== | ||
+ | На диске может быть только 4 основных раздела, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Нумерация логических разделов начинается с 5, т. е. минимальный номер логического раздела - sda5, цифры 1-4 зарезервированы под основные разделы. | ||
+ | |||
+ | **fdisk** - разбиение жёсткого диска\\ | ||
+ | **mkfs** - создание файловой системы | ||
+ | <code bash> | ||
+ | # иногда сначала нужно поменять тип раздела, | ||
+ | mkfs.ext4 /dev/sdb5 # создать файловую систему ext4 на разделе sdb5 | ||
+ | mkfs.ntfs /dev/sdb5 # создать файловую систему ntfs на разделе sdb5 | ||
+ | </ | ||
+ | |||
+ | **swapon** и **swapoff** - работа с разделом подкачки\\ | ||
+ | **/ | ||
+ | **mkswap** - создание раздела или файла подкачки | ||
+ | <code bash> | ||
+ | # смонтировать раздел sdb5 в папку /folder | ||
+ | # работает до перезагрузки; | ||
+ | mount /dev/sdb5 /folder | ||
+ | # отмонтировать | ||
+ | umount /folder | ||
+ | </ | ||
+ | |||
+ | ==== Linux Volume Manager (LVM) - система управления томами ==== | ||
+ | {{: | ||
+ | <code bash> | ||
+ | pvdisplay # показать Physical Volumes | ||
+ | vgdisplay # показать Volume Groups | ||
+ | lvdisplay # показать Logical Volumes | ||
+ | </ | ||
+ | |||
+ | При создании разделов на физических дисках (до LVM, командой fdisk) нужно указывать их тип как 8e (Linux LVM). Затем создаются: | ||
+ | <code bash> | ||
+ | # " | ||
+ | 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 / | ||
+ | mkfs.ext4 / | ||
+ | </ | ||
+ | |||
+ | Можно изменить размер логического тома, например | ||
+ | <code bash> | ||
+ | lvresize -L 4G / | ||
+ | # далее нужно увеличивать файловую систему | ||
+ | resize2fs / | ||
+ | </ | ||
+ | |||
+ | Также можно удалять, | ||
+ | |||
+ | https:// | ||
+ | https:// | ||
+ | http:// | ||
+ | |||
+ | Расширить раздел | ||
+ | <code bash> | ||
+ | fd | ||
+ | lvextend -l +100%FREE / | ||
+ | resize2fs / | ||
+ | </ | ||
+ | https:// | ||
+ | ===== 102.2 Install a boot manager ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 2 | ||
+ | |||
+ | Description: | ||
+ | <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 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 | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | LiLo, Grub - старые, | ||
+ | |||
+ | === MBR (Master boot record) === | ||
+ | - главная загрузочная запись, | ||
+ | <code bash> | ||
+ | # посмотреть, | ||
+ | fdisk -l | ||
+ | # скопировать 1-й блок жёсткого диска в 512 байт, т. е., MBR | ||
+ | dd if=/dev/sda of=/ | ||
+ | </ | ||
+ | |||
+ | === LiLo === | ||
+ | <code bash> | ||
+ | apt-get install lilo # установить LiLo | ||
+ | liloconfig # создаёт / | ||
+ | </ | ||
+ | В конфиге в параметр **boot = / | ||
+ | <code bash> | ||
+ | # Выяснить ID диска / | ||
+ | ls / | ||
+ | </ | ||
+ | |||
+ | === Grub legacy === | ||
+ | Настройки лежат в /boot/grub | ||
+ | === Grub === | ||
+ | <code bash> | ||
+ | # Установка на /dev/sda | ||
+ | grub-install /dev/sda | ||
+ | # Версия | ||
+ | grub-install --version | ||
+ | |||
+ | # Конфиг: | ||
+ | # / | ||
+ | # /etc/grub.d - скрипты на shell, параметры указаны по очереди применения 00_, 10_, 20_ и т. д. | ||
+ | update-grub # применить изменения после изменения настроек | ||
+ | |||
+ | sudo grub-mkconfig -o / | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ===== 102.3 Manage shared libraries ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 1 | ||
+ | |||
+ | Description: | ||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | Key Knowledge Areas: | ||
+ | |||
+ | * Identify shared libraries | ||
+ | * Identify the typical locations of system libraries | ||
+ | * Load shared libraries | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * ldd | ||
+ | * ldconfig | ||
+ | * / | ||
+ | * LD_LIBRARY_PATH | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | // | ||
+ | |||
+ | // | ||
+ | // | ||
+ | |||
+ | **/lib** - библиотеки, | ||
+ | **/ | ||
+ | **/ | ||
+ | **/ | ||
+ | <code bash> | ||
+ | ldconfig # обновить кэш библиотек | ||
+ | ldd /bin/ls # какие библиотеки использует команда ls? | ||
+ | </ | ||
+ | Добавить библиотеки вручную - добавить путь в **/ | ||
+ | <code bash> | ||
+ | export LD_LIBRARY_PATH=/ | ||
+ | ldconfig | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ===== 102.4 Use Debian package management ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 3 | ||
+ | |||
+ | Description: | ||
+ | <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, | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * / | ||
+ | * dpkg | ||
+ | * dpkg-reconfigure | ||
+ | * apt-get | ||
+ | * apt-cache | ||
+ | * aptitude | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === 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 # реконфигурация пакета | ||
+ | </ | ||
+ | |||
+ | **/ | ||
+ | |||
+ | === apt === | ||
+ | Более удобная программа работы с пакетами | ||
+ | |||
+ | **apt-get** - скачивание и установка пакетов\\ | ||
+ | **apt-cache** - поиск пакетов\\ | ||
+ | **aptitude** - управление пакетами с опцией псевдографики\\ | ||
+ | **/ | ||
+ | |||
+ | <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 # зависимости от конкретного пакета | ||
+ | </ | ||
+ | |||
+ | === aptitude === | ||
+ | По умолчанию не установлен, | ||
+ | |||
+ | Выбрать пакет для установки - кнопка +, установить - g, выйти - q. | ||
+ | |||
+ | === / | ||
+ | main - основные пакеты, | ||
+ | |||
+ | https:// | ||
+ | ===== 102.5 Use RPM and YUM package management ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 3 | ||
+ | |||
+ | Description: | ||
+ | <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, | ||
+ | * Determine what files a package provides, as well as find which package a specific file comes from | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * rpm | ||
+ | * rpm2cpio | ||
+ | * / | ||
+ | * / | ||
+ | * yum | ||
+ | * yumdownloader | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | === RPM === | ||
+ | То же самое, что dpkg в Debian. | ||
+ | <code bash> | ||
+ | rpm --help # помощь | ||
+ | rpm -iv # установить пакет, verbose mode | ||
+ | rpm -e # удалить пакет | ||
+ | rpm -K # проверка подписи пакета | ||
+ | rpm -Vv # проверка файлов в пакете, | ||
+ | rpm -qi # информация пакета | ||
+ | rpm -qd # документация | ||
+ | </ | ||
+ | |||
+ | **rpm2cpio** - разбор пакета на двоичные файлы | ||
+ | <code bash> | ||
+ | rpm2cpio any.rpm > any.cpio | ||
+ | </ | ||
+ | === YUM === | ||
+ | **/ | ||
+ | |||
+ | <code bash> | ||
+ | yum --help # помощь | ||
+ | yum install # установить пакет | ||
+ | yum remove # удалить | ||
+ | yum upgrade # обновить | ||
+ | yum search # найти | ||
+ | yumdownloader # скачивание пакетов вместе с зависимостями | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ====== Topic 103: GNU and Unix Commands ====== | ||
+ | ===== 103.1 Work on the command line ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 4 | ||
+ | |||
+ | Description: | ||
+ | <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 half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * bash | ||
+ | * echo | ||
+ | * env | ||
+ | * export | ||
+ | * pwd | ||
+ | * set | ||
+ | * unset | ||
+ | * man | ||
+ | * uname | ||
+ | * history | ||
+ | * .bash_history | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | === bash === | ||
+ | <code bash> | ||
+ | cat /etc/passwd # узнать используемую оболочку | ||
+ | ls -a # список файлов, | ||
+ | / | ||
+ | ~/.profile # настройки конкретного профиля | ||
+ | ~/.bashrc # настройки bash | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | echo # вывод информации в консоль | ||
+ | cat > info # интерактивный режим записи информации в файл | ||
+ | env # показать переменные | ||
+ | pwd # показать текущее местоположение | ||
+ | export # внести заданную переменную в системные | ||
+ | unset # удалить переменную из системных | ||
+ | uname # вывести системную информацию | ||
+ | file # информация о файле | ||
+ | whatis # информация о программе | ||
+ | history # история команд | ||
+ | man -k http # вывести список мануалов по ключевому слову | ||
+ | exec ls -a # выполнить ls -a, игнорируя настройки оболочки и выгружая её | ||
+ | # чтобы загрузить оболочку обратно, | ||
+ | bash | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ===== 103.2 Process text streams using filters ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 3 | ||
+ | |||
+ | Description: | ||
+ | <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 half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * cat | ||
+ | * cut | ||
+ | * expand | ||
+ | * fmt | ||
+ | * head | ||
+ | * join | ||
+ | * less | ||
+ | * nl | ||
+ | * od | ||
+ | * paste | ||
+ | * pr | ||
+ | * sed | ||
+ | * sort | ||
+ | * split | ||
+ | * tail | ||
+ | * tr | ||
+ | * unexpand | ||
+ | * uniq | ||
+ | * wc | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | <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 / | ||
+ | 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 / | ||
+ | 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 # подсчёт количества строк, слов и символов | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ===== 103.3 Perform basic file management ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 4 | ||
+ | |||
+ | Description: | ||
+ | <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 half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * cp | ||
+ | * find | ||
+ | * mkdir | ||
+ | * mv | ||
+ | * ls | ||
+ | * rm | ||
+ | * rmdir | ||
+ | * touch | ||
+ | * tar | ||
+ | * cpio | ||
+ | * dd | ||
+ | * file | ||
+ | * gzip | ||
+ | * gunzip | ||
+ | * bzip2 | ||
+ | * xz | ||
+ | * file globbing | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | <code bash> | ||
+ | touch # создание файла и смена времени доступа | ||
+ | mkdir # создать папку | ||
+ | cp # копирование | ||
+ | cp -R folder1 folder2 # копировать папку рекурсивно | ||
+ | mv # перенести (переименовать) | ||
+ | rm -rf # удалить форсированно и рекурсивно | ||
+ | rmdir # удаление папок | ||
+ | file # определение типа файла | ||
+ | find . -name " | ||
+ | find . -size +5M # найти в текущей папке всё, что больше 5 МБ | ||
+ | find . -type f # найти в текущей папке все файлы | ||
+ | </ | ||
+ | |||
+ | === Маски символов === | ||
+ | ***** - всё, что угодно\\ | ||
+ | **?** - один любой символ\\ | ||
+ | **!** - не\\ | ||
+ | **[ac]** - a или c\\ | ||
+ | **[a-c]** - a,b,c | ||
+ | |||
+ | === Архивация === | ||
+ | <code bash> | ||
+ | ls | cpio -o > ../ | ||
+ | cpio -id < ../ | ||
+ | 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 # разжать и распаковать | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ===== 103.4 Use streams, pipes and redirects ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 4 | ||
+ | |||
+ | Description: | ||
+ | <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 half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * tee | ||
+ | * xargs | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | Stdin (0) - ввод\\ | ||
+ | Stdout (1) - вывод\\ | ||
+ | Stderr (2) - вывод ошибки | ||
+ | |||
+ | < | ||
+ | > - передать в | ||
+ | >> - дописать в | ||
+ | < - взять из | ||
+ | | - отправить следующей команде | ||
+ | </ | ||
+ | |||
+ | 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 " | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ===== 103.5 Create, monitor and kill processes ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 4 | ||
+ | |||
+ | Description: | ||
+ | <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 half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * & | ||
+ | * bg | ||
+ | * fg | ||
+ | * jobs | ||
+ | * kill | ||
+ | * nohup | ||
+ | * ps | ||
+ | * top | ||
+ | * free | ||
+ | * uptime | ||
+ | * pgrep | ||
+ | * pkill | ||
+ | * killall | ||
+ | * screen | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | **fg** - активный режим (foreground)\\ | ||
+ | **bg** - фоновый режим (background)\\ | ||
+ | **nohup** - оставлять процесс работающим после выхода пользователя из системы\\ | ||
+ | **ps** - инф. об активных процессах\\ | ||
+ | **pstree** - дерево процессов\\ | ||
+ | **pgrep** - поиск процессов\\ | ||
+ | **pkill** - завершение процессов\\ | ||
+ | **top** - диспетчер задач, можно завершать процессы\\ | ||
+ | **free** - загрузка оперативной памяти\\ | ||
+ | **uptime** - время работы, | ||
+ | **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 | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ===== 103.6 Modify process execution priorities ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 2 | ||
+ | |||
+ | Description: | ||
+ | <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 half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * nice | ||
+ | * ps | ||
+ | * renice | ||
+ | * top | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Приоритет от -20 (максимальный) до +19 (минимальный).\\ | ||
+ | **nice** - выставить приоритет\\ | ||
+ | **renice** - изменить приоритет | ||
+ | <code bash> | ||
+ | ps alx # в столбике NI (nice) показывается приоритет | ||
+ | ps -eo user, | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ===== 103.7 Search text files using regular expressions ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 2 | ||
+ | |||
+ | Description: | ||
+ | <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 half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * grep | ||
+ | * egrep | ||
+ | * fgrep | ||
+ | * sed | ||
+ | * regex(7) | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | **%%\< | ||
+ | **%%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 # вывести строки, | ||
+ | grep -i w file.txt # вывести строки, | ||
+ | grep ^p file.txt # вывести строки, | ||
+ | grep e$ file.txt # вывести строки, | ||
+ | grep .o file.txt # вывести строки, | ||
+ | egrep ' | ||
+ | egrep ' | ||
+ | fgrep c$ file.txt # вывести строки, | ||
+ | rgrep word * # найти слово word во всех файлах, | ||
+ | sed -e '/ | ||
+ | sed -re '/ | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ===== 103.8 Perform basic file editing operations using vi ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 3 | ||
+ | |||
+ | Description: | ||
+ | <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 half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * vi | ||
+ | * /, ? | ||
+ | * h,j,k,l | ||
+ | * i, o, a | ||
+ | * c, d, p, y, dd, yy | ||
+ | * ZZ, :w!, :q!, :e! | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | **Навигация: | ||
+ | **%%←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:// | ||
+ | ====== Topic 104: Devices, Linux Filesystems, | ||
+ | ===== 104.1 Create partitions and filesystems ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 2 | ||
+ | |||
+ | Description: | ||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | Key Knowledge Areas: | ||
+ | |||
+ | * Manage MBR partition tables | ||
+ | * Use various mkfs commands to create various filesystems such as: | ||
+ | * ext2/ | ||
+ | * XFS | ||
+ | * VFAT | ||
+ | * Awareness of ReiserFS and Btrfs | ||
+ | * Basic knowledge of gdisk and parted with GPT | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * fdisk | ||
+ | * gdisk | ||
+ | * parted | ||
+ | * mkfs | ||
+ | * mkswap | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | === Сделать раздел подкачки === | ||
+ | С помощью fdisk разметить место и выбрать ID раздела (82) (см. занятие [[os: | ||
+ | <code bash> | ||
+ | mkswap /dev/sdb2 | ||
+ | swapon /dev/sdb2 # задействовать раздел подкачки в системе | ||
+ | swapon -s # посмотреть разделы swap | ||
+ | swapoff /dev/sdb2 # выключить раздел подкачки | ||
+ | </ | ||
+ | |||
+ | === 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 | ||
+ | </ | ||
+ | |||
+ | === Совместимые с Windows разделы === | ||
+ | Надо изменить тип раздела в fdisk, например, | ||
+ | <code bash> | ||
+ | mkfs.vfat /dev/sdb1 | ||
+ | mkfs.ntfs /dev/sdb1 | ||
+ | </ | ||
+ | |||
+ | === GPT === | ||
+ | fdisk не работает с GPT и не работает с разделами больше 2 ТБ. Для этого используется gdisk. | ||
+ | <code bash> | ||
+ | gdisk /dev/sdb | ||
+ | # опция " | ||
+ | </ | ||
+ | |||
+ | === parted === | ||
+ | Очень мощная утилита по работе с дисками и разделами. | ||
+ | |||
+ | gparted - графическая утилита. | ||
+ | |||
+ | https:// | ||
+ | ===== 104.2 Maintain the integrity of filesystems ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 2 | ||
+ | |||
+ | Description: | ||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | Key Knowledge Areas: | ||
+ | |||
+ | * Verify the integrity of filesystems | ||
+ | * Monitor free space and inodes | ||
+ | * Repair simple filesystem problems | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * du | ||
+ | * df | ||
+ | * fsck | ||
+ | * e2fsck | ||
+ | * mke2fs | ||
+ | * debugfs | ||
+ | * dumpe2fs | ||
+ | * tune2fs | ||
+ | * XFS tools (such as xfs_metadump and xfs_info) | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | <code bash> | ||
+ | df -h # показать место на дисках (ключ -h - показать в понятном виде) | ||
+ | df -i # показать inode - метки файлов (индексные дескрипторы) | ||
+ | du -h # показать список папок с их размерами (рекурсивно) | ||
+ | du -h --summarize # показать список папок с их размерами (нерекурсивно) | ||
+ | ls -l # размер файлов и папок в текущем каталоге | ||
+ | ls -i # номера inode | ||
+ | </ | ||
+ | |||
+ | === Починка файловой системы === | ||
+ | Сначала нужно размонтировать раздел, | ||
+ | <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 | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ===== 104.3 Control mounting and unmounting of filesystems ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 3 | ||
+ | |||
+ | Description: | ||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | Key Knowledge Areas: | ||
+ | |||
+ | * Manually mount and unmount filesystems | ||
+ | * Configure filesystem mounting on bootup | ||
+ | * Configure user mountable removable filesystems | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * /etc/fstab | ||
+ | * /media/ | ||
+ | * mount | ||
+ | * umount | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | **mount** // | ||
+ | **umount** устройство\\ | ||
+ | или\\ | ||
+ | **umount** // | ||
+ | |||
+ | === /etc/fstab: === | ||
+ | // | ||
+ | |||
+ | **Тип файловой системы** - можно написать auto для автоопределения\\ | ||
+ | **options** - непример, | ||
+ | **dump** - сохранять ли файлы автоматически при внезапном отключении питания\\ | ||
+ | **pass** - параметры проверки файловой системы | ||
+ | |||
+ | Стандартные папки для монтирования: | ||
+ | **/mnt** - для дисков\\ | ||
+ | **/media** - для съёмных носителей | ||
+ | |||
+ | Наиболее надёжный способ монтирования - по UUID, так как порт подключения может поменяться. | ||
+ | <code bash> | ||
+ | blkid /dev/sdb1 # посмотреть UUID раздела | ||
+ | eject # команда, | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ===== 104.4 Manage disk quotas ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 1 | ||
+ | |||
+ | Description: | ||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | Key Knowledge Areas: | ||
+ | |||
+ | * Set up a disk quota for a filesystem | ||
+ | * Edit, check and generate user quota reports | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * quota | ||
+ | * edquota | ||
+ | * repquota | ||
+ | * quotaon | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | **quotaon** - включение квоты\\ | ||
+ | **quotaoff** - отключение квоты\\ | ||
+ | **edquota** - редактирование квоты\\ | ||
+ | **repquota** - отчёты по квотам | ||
+ | <code bash> | ||
+ | sudo apt-get install quota # установить функционал квотирования | ||
+ | </ | ||
+ | В опциях монтирования /etc/fstab у раздела, | ||
+ | |||
+ | <code bash> | ||
+ | sudo quotacheck -cug /mnt/hdd # создать конфигурационные файлы квотирования в /mnt/hdd | ||
+ | sudo edquota -u user # задать квоту для user (-g - для группы) | ||
+ | </ | ||
+ | |||
+ | === Файл настройки квот === | ||
+ | **blocks** - сколько занято места\\ | ||
+ | **soft** - мягкая квота (допускает превышение в течение 1 недели)\\ | ||
+ | **hard** - жёсткая квота, превышения не допускает\\ | ||
+ | **inodes** - кол-во файлов и папок в системе, | ||
+ | для inodes тоже есть квоты soft и hard | ||
+ | |||
+ | <code bash> | ||
+ | edquota -t # изменить временной лимит для превышения мягких квот | ||
+ | quotaon /mnt/hdd # включить квоты | ||
+ | repquota /mnt/hdd # показать отчёт по квотам | ||
+ | </ | ||
+ | |||
+ | **warnquota** - шлёт письма пользователям, | ||
+ | |||
+ | https:// | ||
+ | ===== 104.5 Manage file permissions and ownership ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 3 | ||
+ | |||
+ | Description: | ||
+ | <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 half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * chmod | ||
+ | * umask | ||
+ | * chown | ||
+ | * chgrp | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | **chown** - задать владельца\\ | ||
+ | **chgrp** - задать группу владельцев\\ | ||
+ | **chmod** - задать права доступа\\ | ||
+ | |||
+ | В отличие от винды, в линуксе у объекта файловой системы может быть не только владелец, | ||
+ | |||
+ | <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: | ||
+ | sudo chown -R user: | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | |||
+ | ==== Права ==== | ||
+ | eXecute=1, Write=2, Read=4 | ||
+ | ^ Число | ||
+ | | 0 | Нет прав | ||
+ | | 1 | Execute | ||
+ | | 2 | Write | ||
+ | | 3 | Write, execute | ||
+ | | 4 | Read | ||
+ | | 5 | Read, execute | ||
+ | | 6 | Read, write | ||
+ | | 7 | Read, write, execute | ||
+ | |||
+ | Права на объект выглядят так:\\ | ||
+ | **rwxrwxrwx, | ||
+ | Например, | ||
+ | |||
+ | <WRAP round info 60%> | ||
+ | Если дать права на папку только **rw,** то зайти в неё будет нельзя - для этого нужно дать право **x.** | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | chmod 750 file.txt # полные права владельцу, | ||
+ | chmod u+w file.txt # дать право записи владельцу (user) | ||
+ | chmod go-x file.txt # отобрать право выполнения у группы и остальных | ||
+ | chmod -x file.txt # отобрать право выполнения файла у всех | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ==== Маска ==== | ||
+ | **umask** - маска создания файлов и папок, т. е., с какими правами будут создаваться файлы и папки от имени данного пользователя. | ||
+ | |||
+ | Маска указывается по принципу вычитания из максимальных прав (777 для папки и 666 для файла).\\ | ||
+ | **umask 022** - все папки будут создаваться с разрешением 755 (777-022), т. е., %%rwxr-xr-x%%\\ | ||
+ | **umask 754** - все папки будут создаваться с разрешением 023 (777-754), т. е., %%----w--wx%% | ||
+ | |||
+ | Параметр UMASK убран из / | ||
+ | <code bash> | ||
+ | # Сделать права по умолчанию 702 (для папок) и 602 (для файлов) | ||
+ | # действует до перезагрузки | ||
+ | umask 075 | ||
+ | </ | ||
+ | |||
+ | Чтобы сделать желаемое значение umask постоянным, | ||
+ | |||
+ | https:// | ||
+ | ==== Специальные биты ==== | ||
+ | **suid** - бит запуска от имени владельца (любой, | ||
+ | **sgid** - бит запуска от имени группы владельцев. Устанавливается для файлов и папок. Если на папке установлен sgid, то все вложенные объекты будут иметь ту же группу владельцев.\\ | ||
+ | **sticky** - бит защиты содержимого. Устанавливается для папок. Если установлен, | ||
+ | |||
+ | === Значения спец. битов === | ||
+ | **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 # обнулить спец. биты | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | |||
+ | В связи с выставленными битами появляются // | ||
+ | * EUID - эффективный идентификатор пользователя, | ||
+ | uid=1000(user) gid=1001(user) euid=0(root) groups=1001(user), | ||
+ | * EGID - эффективный идентификатор группы. Процесс с битом SGID выполнится с правами текущего пользователя и группой владельца.< | ||
+ | uid=1000(user) gid=1001(user) egid=0(root) groups=1001(user), | ||
+ | |||
+ | Есть ещё RUID - настоящий идентификатор пользователя, | ||
+ | <code bash> | ||
+ | ls -l /bin/passwd | ||
+ | -rwsr-xr-x 1 root root 59976 Mar 14 11:59 /bin/passwd | ||
+ | </ | ||
+ | У '' | ||
+ | |||
+ | ==== Расширенные права доступа (ACL) ==== | ||
+ | <code bash> | ||
+ | # Проверить, | ||
+ | cat / | ||
+ | ... | ||
+ | CONFIG_EXT4_FS_POSIX_ACL=y | ||
+ | ... | ||
+ | # Установить средства управления | ||
+ | apt install acl -y | ||
+ | |||
+ | # Дать права ещё одному пользователю на файл | ||
+ | setfacl -m u: | ||
+ | |||
+ | # Проверить | ||
+ | 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: | ||
+ | group::r-- | ||
+ | mask::rw- | ||
+ | other::r-- | ||
+ | |||
+ | # Сразу несколько разрешений за раз | ||
+ | setfacl -m g: | ||
+ | |||
+ | # Удалить разрешение | ||
+ | setfacl -x u:testuser file.txt | ||
+ | |||
+ | # Удалить все расширенные права | ||
+ | setfacl -b file.txt | ||
+ | </ | ||
+ | |||
+ | === О параметре mask === | ||
+ | Например, | ||
+ | <code bash> | ||
+ | # Применить маску: | ||
+ | chmod 000 / | ||
+ | # Эффективные права: | ||
+ | getfacl / | ||
+ | # file: tmp/ | ||
+ | # owner: root | ||
+ | # group: root | ||
+ | user::--- | ||
+ | user: | ||
+ | user: | ||
+ | user: | ||
+ | user: | ||
+ | user: | ||
+ | group:: | ||
+ | mask::--- | ||
+ | other::--- | ||
+ | </ | ||
+ | Маска - это максимально разрешённые права для всех пользователей, | ||
+ | <code bash> | ||
+ | # Установить маску в r-x (обратите внимание на двойное двоеточие) | ||
+ | setfacl -m m::r-x / | ||
+ | </ | ||
+ | |||
+ | === Стандартные права === | ||
+ | Если для папки задать стандартные права ACL, то все создаваемые объекты в ней будут наследовать те же права. | ||
+ | <code bash> | ||
+ | # После применения команды всё, что создаст testuser в папке, будет иметь права rw | ||
+ | setfacl -m default: | ||
+ | </ | ||
+ | |||
+ | === Выгрузка-восстановление ACL === | ||
+ | <code bash> | ||
+ | # Выгрузка | ||
+ | cd /tmp/data | ||
+ | getfacl -R * > ~/ | ||
+ | |||
+ | # Восстановление | ||
+ | setfacl --restore=~/ | ||
+ | </ | ||
+ | |||
+ | ===== 104.6 Create and change hard and symbolic links ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 2 | ||
+ | |||
+ | Description: | ||
+ | <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 half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * ln | ||
+ | * ls | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | // | ||
+ | |||
+ | Inode содержит следующие свойства: | ||
+ | * владелец | ||
+ | * права | ||
+ | * размер | ||
+ | * время последней модификации | ||
+ | * время создания | ||
+ | * группа | ||
+ | * местонахождение файла | ||
+ | |||
+ | Имени файла inode не содержит. Вывести информацию из inode можно с помощью '' | ||
+ | <code bash> | ||
+ | stat / | ||
+ | File: / | ||
+ | Size: 3028 Blocks: 8 IO Block: 4096 | ||
+ | Device: fd00h/ | ||
+ | Access: (0644/ | ||
+ | Access: 2022-08-04 19: | ||
+ | Modify: 2022-02-23 08: | ||
+ | Change: 2022-08-04 19: | ||
+ | | ||
+ | </ | ||
+ | |||
+ | На вид файлы и жёсткие ссылки между собой в консоли не различаются. Можно понять, | ||
+ | <code bash> | ||
+ | ls -li # вывести список файлов с отображением inode | ||
+ | </ | ||
+ | Результат выполнения команды для файла file.txt, на который создана жёсткая ссылка hardlink.txt: | ||
+ | < | ||
+ | 550097 -rwxr--r-- 2 user user 243 авг 19 21:53 file.txt | ||
+ | 550097 -rwxr--r-- 2 user user 243 авг 19 21:53 hardlink.txt | ||
+ | </ | ||
+ | Первое число - 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 в домашней папке). | ||
+ | # Нужно указывать полный путь к объектам, | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | ===== 104.7 Find system files and place files in the correct location ===== | ||
+ | <WRAP round box 100%> | ||
+ | Weight: 2 | ||
+ | |||
+ | Description: | ||
+ | <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 half column> | ||
+ | Terms and Utilities: | ||
+ | |||
+ | * find | ||
+ | * locate | ||
+ | * updatedb | ||
+ | * whereis | ||
+ | * which | ||
+ | * type | ||
+ | * / | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | === FHS === | ||
+ | FHS - это File System Hierarchy Standard, т. е., стандартная иерархия файловой системы. | ||
+ | |||
+ | **/bin** - базовые бинарники команд\\ | ||
+ | **/boot** - файлы загрузчика\\ | ||
+ | **/dev** - устройства (devices)\\ | ||
+ | **/etc** - конфигурация ПК (конфиг. файлы)\\ | ||
+ | **/home** - домашние папки\\ | ||
+ | **/lib** - библиотеки и модули ядра\\ | ||
+ | **/proc** - информация о работающей системе (процессы)\\ | ||
+ | **/media** - монтирование съёмных носителей (флешки, | ||
+ | **/mnt** - для монтирования носителей\\ | ||
+ | **/opt** - пакеты доп. ПО\\ | ||
+ | **/root** - домашняя папка root\\ | ||
+ | **/sbin** - настройки основных компонентов системы\\ | ||
+ | **/srv** - данные для системных служб\\ | ||
+ | **/tmp** - временные файлы\\ | ||
+ | **/usr** - бинарники пользователей\\ | ||
+ | **/var** - часто меняющиеся данные (логи, почта и т. п.) | ||
+ | |||
+ | === Команды === | ||
+ | **grep** - поиск по содержимому\\ | ||
+ | **find** - поиск файлов по свойствам\\ | ||
+ | <code bash> | ||
+ | find / -name mail # искать объекты с именем mail (точное соответствие) | ||
+ | find / -user user # найти всё, относящееся к user | ||
+ | </ | ||
+ | **locate** - быстрый поиск файлов, | ||
+ | <code bash> | ||
+ | sudo updatedb # обновить индекс принудительно | ||
+ | locate mail # показать всё включающее слово mail | ||
+ | </ | ||
+ | |||
+ | **which** - поиск команды\\ | ||
+ | <code bash> | ||
+ | which ls # путь к команде ls в файловой системе | ||
+ | </ | ||
+ | **type** - вывод точной команды\\ | ||
+ | <code bash> | ||
+ | type ls # вывести параметры запуска команды ls из её расположения в файловой системе | ||
+ | </ | ||
+ | **whereis** - поиск команды, | ||
+ | <code bash> | ||
+ | whereis ls # похоже на which, но подробнее + доп. функционал | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | |||
+ | ===== Изменения в exam-101 от 10 февраля 2015 ===== | ||
+ | |||
+ | https:// |