====== 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]] Данная страница является конспектом лекций Кирилла Семаева [[https://www.youtube.com/playlist?list=PLmxB7JSpraiep6kr802UDqiAIU-76nGfc|LPIC-1 (exam 101) или "Администрирование Linuх, первая ступень"]] https://www.youtube.com/watch?v=rKCu-tfL730 ====== Topic 101: System Architecture ====== ===== 101.1 Determine and configure hardware settings ===== Weight: 2 Description: Candidates should be able to determine and configure fundamental system hardware. 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 The following is a partial list of the used files, terms and utilities: * /sys/ * /proc/ * /dev/ * modprobe * lsmod * lspci * lsusb === /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, изменения хранятся до конца сеанса. 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 # разрешить переадресацию === /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** - "умное" удаление и добавление модулей, вместе с зависимостями modinfo e1000 # например, инфо по модулю сетевой карты Intel rmmod e1000 # тупо удалить модуль insmod e1000 # вставить модуль (будет ошибка, т. к. зависимости не удовлетворены) modprobe e1000 # вставить модуль, удовлетворив зависимости === Взаимодействие с CPU === **IRQ** - механизм прерываний cat /proc/interrupts **IO адреса** - обмен информацией между устройствами и процессором cat /proc/ioports # по портам cat /proc/iomem # как выглядит в памяти **DMA** - обращение устройств к ОЗУ минуя процессор cat /proc/dma === Основные интерфейсы === **PATA** - параллельный\\ **SATA** - последовательный\\ **SCSI** - стандарт передачи данных\\ **SAS** - замена SCSI **blkid** - просмотр смонтированных устройств и их ID. https://www.youtube.com/watch?v=7nLd_qyCL9U ===== 101.2 Boot the system ===== Weight: 3 Description: Candidates should be able to guide the system through the booting process. 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 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 dmesg # вывод сообщений ядра (все) cat /var/log/dmesg # только сообщения загрузки **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 ===== 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. 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 Terms and Utilities: * /etc/inittab * shutdown * init * /etc/init.d/ * telinit * systemd * systemctl * /etc/systemd/ * /usr/lib/systemd/ * wall ==== Init в стиле SysV ==== Процесс запуска инициализации системы на одном из заданных уровней запуска (runlevel) **Уровни загрузки:**\\ 0 - выключение\\ 1 - однопользовательский режим\\ 2 - Debian/Ubuntu по умолчанию\\ 3 - Redhat/Suse по умолчанию текстовый режим\\ 4 - Wildcard (программируемый режим, можно поставить что угодно)\\ 5 - Redhat/Suse (GUI)\\ 6 - перезагрузка runlevel # вывести текущий уровень загрузки telinit 1 # перейти в однопользовательский режим (без перезагрузки) **/etc/inittab** - уровни загрузки, задан уровень по умолчанию, как реагировать на Ctrl+Alt+Delete и т. п.\\ **/etc/init.d** - папка скриптов, запускающих определённые службы **/etc/init.d/rc** номер - скрипты соответствующего уровня загрузки # перезапуск сетевой службы sudo /etc/init.d/network restart # или service network restart **Основные команды:**\\ **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** - управляемые юниты 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 | Перезагрузка | systemctl list-units --type=target # узнать запущенные таргеты systemctl isolate name.target # переключиться на другой таргет systemctl set-default -f name.target # установить по умолчанию Старые команды telinit и runlevel также сохранены в целях совместимости **journald** - служба журналирования 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://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. Управление службами: status ufw # состояние файрволла ufw stop ufw # остановить ufw start ufw # запустить ufw initctl show-config # вывод информации о задачах initctl check-config # проверка конфигурации https://www.youtube.com/watch?v=55-BtqZfqOI ====== Topic 102: Linux Installation and Package Management ====== ===== 102.1 Design hard disk layout ===== Weight: 2 Description: Candidates should be able to design a disk partitioning scheme for a Linux system. 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 Terms and Utilities: * / (root) filesystem * /var filesystem * /home filesystem * /boot filesystem * swap space * mount points * partitions Следующие папки могут быть смонтированы как отдельные разделы жёсткого диска: * **/** - корень, самый большой раздел * **/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** - создание файловой системы # иногда сначала нужно поменять тип раздела, см. список (fdi sk опция l) mkfs.ext4 /dev/sdb5 # создать файловую систему ext4 на разделе sdb5 mkfs.ntfs /dev/sdb5 # создать файловую систему ntfs на разделе sdb5 **swapon** и **swapoff** - работа с разделом подкачки\\ **/etc/fstab** - конфигурационный файл монтирования файловых систем при загрузке системы\\ **mkswap** - создание раздела или файла подкачки # смонтировать раздел sdb5 в папку /folder # работает до перезагрузки; чтобы работало постоянно, надо редактировать файл /etc/fstab mount /dev/sdb5 /folder # отмонтировать umount /folder ==== Linux Volume Manager (LVM) - система управления томами ==== {{:os:lvm1.png?direct&600|}} pvdisplay # показать Physical Volumes vgdisplay # показать Volume Groups lvdisplay # показать Logical Volumes При создании разделов на физических дисках (до LVM, командой fdisk) нужно указывать их тип как 8e (Linux LVM). Затем создаются: # "физические разделы" 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 Можно изменить размер логического тома, например lvresize -L 4G /dev/vg_test/lv2 # увеличить размер тома lv2 до 4 ГБ # далее нужно увеличивать файловую систему resize2fs /dev/vg_test/lv2 Также можно удалять, переносить логические тома, изменять размеры, делать снимки (snapshots). https://www.youtube.com/watch?v=x0sWtN5Mv3Q\\ https://help.ubuntu.ru/wiki/lvm\\ http://xgu.ru/wiki/LVM Расширить раздел fd lvextend -l +100%FREE /dev/server1-vg/root resize2fs /dev/server1-vg/root https://access.redhat.com/documentation/ru-ru/red_hat_enterprise_linux/6/html/logical_volume_manager_administration/index ===== 102.2 Install a boot manager ===== Weight: 2 Description: Candidates should be able to select, install and configure a boot manager. 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 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 - старые, Grub2 - новый. === MBR (Master boot record) === - главная загрузочная запись, первые 512 байт диска. # посмотреть, где загрузчик fdisk -l # скопировать 1-й блок жёсткого диска в 512 байт, т. е., MBR dd if=/dev/sda of=/root/backup.mbr bs=512 count=1 === LiLo === apt-get install lilo # установить LiLo liloconfig # создаёт /etc/lilo.conf В конфиге в параметр **boot = /dev/disk/by-id/** нужно добавить диск, с которого нужно грузиться # Выяснить ID диска /dev/disk/by-id ls /dev/disk/by-id === Grub legacy === Настройки лежат в /boot/grub === Grub === # Установка на /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 # создать типовую конфигурацию загрузчика https://www.youtube.com/watch?v=vu-iLpJI9P0 ===== 102.3 Manage shared libraries ===== Weight: 1 Description: Candidates should be able to determine the shared libraries that executable programs depend on and install them when necessary. Key Knowledge Areas: * Identify shared libraries * Identify the typical locations of system libraries * Load shared libraries Terms and Utilities: * ldd * ldconfig * /etc/ld.so.conf * LD_LIBRARY_PATH //Библиотека// - набор функций, используемые программами. //Статические библиотеки// - в составе дистрибутива той или иной программы (нет проблем совместимости, но увеличивает размер дистрибутивов)\\ //Динамические библиотеки// - сидят в памяти (могут использоваться сразу несколькими программами) **/lib** - библиотеки, используемые программами в /bin\\ **/usr/lib** - библиотеки, используемые программами в usr/bin\\ **/etc/ld.so.conf** - список путей к библиотекам\\ **/etc/ld.so.cache** - кэш библиотек\\ ldconfig # обновить кэш библиотек ldd /bin/ls # какие библиотеки использует команда ls? Добавить библиотеки вручную - добавить путь в **/etc/ld.so.conf** или export LD_LIBRARY_PATH=/opt/some_soft/lib # после этого нужно обновить кэш: ldconfig https://www.youtube.com/watch?v=O2fhM_uKZ6k ===== 102.4 Use Debian package management ===== Weight: 3 Description: Candidates should be able to perform package management using the Debian package tools. 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) Terms and Utilities: * /etc/apt/sources.list * dpkg * dpkg-reconfigure * apt-get * apt-cache * aptitude === dpkg === Утилита управления пакетами в Debian-системах 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 # реконфигурация пакета **/etc/dpkg/dpkg.cfg** - настройки dpkg === apt === Более удобная программа работы с пакетами **apt-get** - скачивание и установка пакетов\\ **apt-cache** - поиск пакетов\\ **aptitude** - управление пакетами с опцией псевдографики\\ **/etc/apt/sources.list** - список репозиториев 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 === По умолчанию не установлен, то же самое, что и 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 ===== Weight: 3 Description: Candidates should be able to perform package management using RPM and YUM tools. 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 Terms and Utilities: * rpm * rpm2cpio * /etc/yum.conf * /etc/yum.repos.d/ * yum * yumdownloader === RPM === То же самое, что dpkg в Debian. rpm --help # помощь rpm -iv # установить пакет, verbose mode rpm -e # удалить пакет rpm -K # проверка подписи пакета rpm -Vv # проверка файлов в пакете, verbose mode rpm -qi # информация пакета rpm -qd # документация **rpm2cpio** - разбор пакета на двоичные файлы rpm2cpio any.rpm > any.cpio === YUM === **/etc/yum.repos.d/** - перечень репозиториев yum --help # помощь yum install # установить пакет yum remove # удалить yum upgrade # обновить yum search # найти yumdownloader # скачивание пакетов вместе с зависимостями https://www.youtube.com/watch?v=AWc_9Cv6xnQ ====== Topic 103: GNU and Unix Commands ====== ===== 103.1 Work on the command line ===== Weight: 4 Description: Candidates should be able to interact with shells and commands using the command line. The objective assumes the Bash shell. 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 Terms and Utilities: * bash * echo * env * export * pwd * set * unset * man * uname * history * .bash_history === bash === cat /etc/passwd # узнать используемую оболочку ls -a # список файлов, в т. ч. скрытые /etc/profile # глобальные настройки оболочки, "PS1=" - это вид значка командной строки ~/.profile # настройки конкретного профиля ~/.bashrc # настройки bash echo # вывод информации в консоль cat > info # интерактивный режим записи информации в файл env # показать переменные pwd # показать текущее местоположение export # внести заданную переменную в системные unset # удалить переменную из системных uname # вывести системную информацию file # информация о файле whatis # информация о программе history # история команд man -k http # вывести список мануалов по ключевому слову exec ls -a # выполнить ls -a, игнорируя настройки оболочки и выгружая её # чтобы загрузить оболочку обратно, выполнить bash https://www.youtube.com/watch?v=7BuRI0Vk0Ys ===== 103.2 Process text streams using filters ===== Weight: 3 Description: Candidates should should be able to apply filters to text streams. 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 Terms and Utilities: * cat * cut * expand * fmt * head * join * less * nl * od * paste * pr * sed * sort * split * tail * tr * unexpand * uniq * wc 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 # подсчёт количества строк, слов и символов https://www.youtube.com/watch?v=0-TxcLYHtjY ===== 103.3 Perform basic file management ===== Weight: 4 Description: Candidates should be able to use the basic Linux commands to manage files and directories. 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 Terms and Utilities: * cp * find * mkdir * mv * ls * rm * rmdir * touch * tar * cpio * dd * file * gzip * gunzip * bzip2 * xz * file globbing touch # создание файла и смена времени доступа mkdir # создать папку cp # копирование cp -R folder1 folder2 # копировать папку рекурсивно mv # перенести (переименовать) rm -rf # удалить форсированно и рекурсивно rmdir # удаление папок file # определение типа файла find . -name "In*" # найти в текущей папке всё, начинающееся на In find . -size +5M # найти в текущей папке всё, что больше 5 МБ find . -type f # найти в текущей папке все файлы === Маски символов === ***** - всё, что угодно\\ **?** - один любой символ\\ **!** - не\\ **[ac]** - a или c\\ **[a-c]** - a,b,c === Архивация === 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 # разжать и распаковать https://www.youtube.com/watch?v=mYyamfWx7IU ===== 103.4 Use streams, pipes and redirects ===== 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. 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 Terms and Utilities: * tee * xargs Stdin (0) - ввод\\ Stdout (1) - вывод\\ Stderr (2) - вывод ошибки > - передать в >> - дописать в < - взять из | - отправить следующей команде Tee - отправить и в файл, и на stdout\\ Xargs - передать на ввод команде построчно 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 # последовательно удалить найденные текстовые файлы https://www.youtube.com/watch?v=_ifAXPfgW9I ===== 103.5 Create, monitor and kill processes ===== Weight: 4 Description: Candidates should be able to perform basic process management. 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 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** - время работы, показывает load average (загрузка последнюю минуту, пять минут, 15 минут)\\ **screen** - управление сессиями. Ctrl+a - рабочий режим, d - свернуть текущий скрин, screen -r - вернуться в скрин, exit - завершить скрин. 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://www.youtube.com/watch?v=Y4W_rJStNSA ===== 103.6 Modify process execution priorities ===== Weight: 2 Description: Candidates should should be able to manage process execution priorities. 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 Terms and Utilities: * nice * ps * renice * top Приоритет от -20 (максимальный) до +19 (минимальный).\\ **nice** - выставить приоритет\\ **renice** - изменить приоритет 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 https://www.youtube.com/watch?v=4GovHRq6S7g ===== 103.7 Search text files using regular expressions ===== 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. Key Knowledge Areas: * Create simple regular expressions containing several notational elements * Use regular expression tools to perform searches through a filesystem or file content 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** - потоковый текстовый редактор 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 https://www.youtube.com/watch?v=5UAVMSiMnnk ===== 103.8 Perform basic file editing operations using vi ===== 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. Key Knowledge Areas: * Navigate a document using vi * Use basic vi modes * Insert, edit, delete, copy and find text 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://www.youtube.com/watch?v=ocln2_AJ4vo ====== Topic 104: Devices, Linux Filesystems, Filesystem Hierarchy Standard ====== ===== 104.1 Create partitions and filesystems ===== 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. 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 Terms and Utilities: * fdisk * gdisk * parted * mkfs * mkswap === Сделать раздел подкачки === С помощью fdisk разметить место и выбрать ID раздела (82) (см. занятие [[os:lpic-1#design_hard_disk_layout|102.1]]). Предположим, это раздел /dev/sdb2. Затем выполнить команду mkswap /dev/sdb2 swapon /dev/sdb2 # задействовать раздел подкачки в системе swapon -s # посмотреть разделы swap swapoff /dev/sdb2 # выключить раздел подкачки === mkfs === 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, например, тип "c" (FAT32 LBA), затем отформатировать, например mkfs.vfat /dev/sdb1 mkfs.ntfs /dev/sdb1 === GPT === fdisk не работает с GPT и не работает с разделами больше 2 ТБ. Для этого используется gdisk. gdisk /dev/sdb # опция "o" создаёт разметку GPT === parted === Очень мощная утилита по работе с дисками и разделами. gparted - графическая утилита. https://www.youtube.com/watch?v=38lr_DjHpA0 ===== 104.2 Maintain the integrity of filesystems ===== Weight: 2 Description: Candidates should be able to maintain a standard filesystem, as well as the extra data associated with a journaling filesystem. Key Knowledge Areas: * Verify the integrity of filesystems * Monitor free space and inodes * Repair simple filesystem problems Terms and Utilities: * du * df * fsck * e2fsck * mke2fs * debugfs * dumpe2fs * tune2fs * XFS tools (such as xfs_metadump and xfs_info) df -h # показать место на дисках (ключ -h - показать в понятном виде) df -i # показать inode - метки файлов (индексные дескрипторы) du -h # показать список папок с их размерами (рекурсивно) du -h --summarize # показать список папок с их размерами (нерекурсивно) ls -l # размер файлов и папок в текущем каталоге ls -i # номера inode === Починка файловой системы === Сначала нужно размонтировать раздел, который нужно проверить (как, собственно, это происходит и под виндой). 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://www.youtube.com/watch?v=cKmQ9ik-gVc ===== 104.3 Control mounting and unmounting of filesystems ===== Weight: 3 Description: Candidates should be able to configure the mounting of a filesystem. Key Knowledge Areas: * Manually mount and unmount filesystems * Configure filesystem mounting on bootup * Configure user mountable removable filesystems Terms and Utilities: * /etc/fstab * /media/ * mount * umount **mount** //устройство точка_монтирования_(папка)//\\ **umount** устройство\\ или\\ **umount** //точка_монтирования_(папка)// === /etc/fstab: === //устройство точка_монтирования тип_файловой_системы options dump pass// **Тип файловой системы** - можно написать auto для автоопределения\\ **options** - непример, rw,user,auto,noexec - чтение-запись, право монтирования под обычным пользователем, монтировать при загрузке, нельзя запускать исполняемые файлы\\ **dump** - сохранять ли файлы автоматически при внезапном отключении питания\\ **pass** - параметры проверки файловой системы Стандартные папки для монтирования:\\ **/mnt** - для дисков\\ **/media** - для съёмных носителей Наиболее надёжный способ монтирования - по UUID, так как порт подключения может поменяться. blkid /dev/sdb1 # посмотреть UUID раздела eject # команда, безопасно отключает флешку (после отмонтирования) https://www.youtube.com/watch?v=wPfN3xT-vFQ ===== 104.4 Manage disk quotas ===== Weight: 1 Description: Candidates should be able to manage disk quotas for users. Key Knowledge Areas: * Set up a disk quota for a filesystem * Edit, check and generate user quota reports Terms and Utilities: * quota * edquota * repquota * quotaon **quotaon** - включение квоты\\ **quotaoff** - отключение квоты\\ **edquota** - редактирование квоты\\ **repquota** - отчёты по квотам sudo apt-get install quota # установить функционал квотирования В опциях монтирования /etc/fstab у раздела, где будет применяться квотирование, нужно дописать usrquota, grpquota. sudo quotacheck -cug /mnt/hdd # создать конфигурационные файлы квотирования в /mnt/hdd sudo edquota -u user # задать квоту для user (-g - для группы) === Файл настройки квот === **blocks** - сколько занято места\\ **soft** - мягкая квота (допускает превышение в течение 1 недели)\\ **hard** - жёсткая квота, превышения не допускает\\ **inodes** - кол-во файлов и папок в системе, созданных пользователем\\ для inodes тоже есть квоты soft и hard edquota -t # изменить временной лимит для превышения мягких квот quotaon /mnt/hdd # включить квоты repquota /mnt/hdd # показать отчёт по квотам **warnquota** - шлёт письма пользователям, превысившим квоту https://www.youtube.com/watch?v=8NgLmmeulvY ===== 104.5 Manage file permissions and ownership ===== Weight: 3 Description: Candidates should be able to control file access through the proper use of permissions and ownerships. 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 Terms and Utilities: * chmod * umask * chown * chgrp **chown** - задать владельца\\ **chgrp** - задать группу владельцев\\ **chmod** - задать права доступа\\ В отличие от винды, в линуксе у объекта файловой системы может быть не только владелец, но одновременно с тем и группа владельцев. По умолчанию при создании пользователя создаётся одноимённая группа. Владельца и группу владельцев показывает команда ''ls -l''. 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 # задать владельца и группу владельцев для папки рекурсивно 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 группе, остальным - только чтение. Если дать права на папку только **rw,** то зайти в неё будет нельзя - для этого нужно дать право **x.** chmod 750 file.txt # полные права владельцу, rx группе, остальным ничего chmod u+w file.txt # дать право записи владельцу (user) chmod go-x file.txt # отобрать право выполнения у группы и остальных chmod -x file.txt # отобрать право выполнения файла у всех 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 # Сделать права по умолчанию 702 (для папок) и 602 (для файлов) # действует до перезагрузки umask 075 Чтобы сделать желаемое значение 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 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://www.youtube.com/watch?v=tfMwyQIfjM4 В связи с выставленными битами появляются //эффективные идентификаторы.// * EUID - эффективный идентификатор пользователя, изменяется для процессов (не для пользователя) с битом SUIDid uid=1000(user) gid=1001(user) euid=0(root) groups=1001(user),10(wheel),48(docker),443(sudo) * EGID - эффективный идентификатор группы. Процесс с битом SGID выполнится с правами текущего пользователя и группой владельца.$ id uid=1000(user) gid=1001(user) egid=0(root) groups=1001(user),10(wheel),48(docker),443(sudo) Есть ещё RUID - настоящий идентификатор пользователя, остающийся неизменным. Показательный пример - утилита ''passwd'', с помощью которой можно поменять пароль. ls -l /bin/passwd -rwsr-xr-x 1 root root 59976 Mar 14 11:59 /bin/passwd У ''passwd'' установлен SUID, поэтому, меняя пароль, ''passwd'' выполняется от рута. Но чтобы таким образом нельзя было менять пароли у всех учёток в системе, ''passwd'' проверяет RUID пользователя. ==== Расширенные права доступа (ACL) ==== # Проверить, включена ли поддержка в конфигурации ядра 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 === О параметре mask === Например, есть подозрения, что файл содержит вирус, и нужно предотвратить его запуск, убрав все ACL (опция ''–remove-all''). Но если потом выяснится, что файл безопсен, надо будет раздавать все права обратно, это неудобно. Поэтому можно применить маску, чтобы заблокировать файл, но сохранить ACL, чтобы потом можно было бы легко вернуть всё обратно. # Применить маску: 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::--- Маска - это максимально разрешённые права для всех пользователей, она перекрывает ACL. Маску можно обновить командами ''chmod'' или ''setfacl'', но можно редактировать и саму маску. # Установить маску в r-x (обратите внимание на двойное двоеточие) setfacl -m m::r-x /tmp/testfile.txt === Стандартные права === Если для папки задать стандартные права ACL, то все создаваемые объекты в ней будут наследовать те же права. # После применения команды всё, что создаст testuser в папке, будет иметь права rw setfacl -m default:u:testuser:rw /tmp/data === Выгрузка-восстановление ACL === # Выгрузка cd /tmp/data getfacl -R * > ~/tmp_data.acl # Восстановление setfacl --restore=~/tmp_data.acl ===== 104.6 Create and change hard and symbolic links ===== Weight: 2 Description: Candidates should be able to create and manage hard and symbolic links to a file. Key Knowledge Areas: * Create links * Identify hard and/or soft links * Copying versus linking files * Use links to support system administration tasks Terms and Utilities: * ln * ls //Жёсткая ссылка// - это ссылка на определённое место на жёстком диске, соответственно, имеет тот же самый inode (индексный дескриптор), что и оригинальный файл. На папку жёсткая ссылка не создаётся. Также, невозможно сделать жёсткую ссылку на объект в другой файловой системе. Если насоздавать жёстких ссылок на файл, а потом удалить оригинал, то содержимое этого файла будет доступно до тех пор, пока существует хоть одна жёсткая ссылка. По сути, само название файла - это и есть жёсткая ссылка на некое содержимое. Inode содержит следующие свойства: * владелец * права * размер * время последней модификации * время создания * группа * местонахождение файла Имени файла inode не содержит. Вывести информацию из inode можно с помощью ''stat''. 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: - На вид файлы и жёсткие ссылки между собой в консоли не различаются. Можно понять, что несколько объектов ссылаются на одно и то же содержимое - по одинаковому inode и по счётчику справа от прав доступа: 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, он одинаковый. После перечисления прав - кол-во ссылок (две). У //мягкой// (или //символической//) ссылки свой inode, она ориентируется на имя объекта, т. е., если переименовать файл, то мягкая ссылка перестанет работать. Мягкие ссылки могут находиться в разных файловых системах. Иногда это свойство используется, чтобы быстро решить проблему нехватки места на диске: можно добавить диск, перенести на него данные и создаь символическую ссылку из старого местоположения в новое. 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://www.youtube.com/watch?v=U-8Zl2QyseQ ===== 104.7 Find system files and place files in the correct location ===== Weight: 2 Description: Candidates should be thoroughly familiar with the Filesystem Hierarchy Standard (FHS), including typical file locations and directory classifications. 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 Terms and Utilities: * find * locate * updatedb * whereis * which * type * /etc/updatedb.conf === 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** - поиск файлов по свойствам\\ find / -name mail # искать объекты с именем mail (точное соответствие) find / -user user # найти всё, относящееся к user **locate** - быстрый поиск файлов, не ищет на смонтированных устройствах, в /tmp, /var/spool и т. п. Конфиг locate - /etc/updatedb.conf. Работает с индексом файлов, создающимся командой find по запланированному заданию раз в день. sudo updatedb # обновить индекс принудительно locate mail # показать всё включающее слово mail **which** - поиск команды\\ which ls # путь к команде ls в файловой системе **type** - вывод точной команды\\ type ls # вывести параметры запуска команды ls из её расположения в файловой системе **whereis** - поиск команды, исходников и мануала whereis ls # похоже на which, но подробнее + доп. функционал https://www.youtube.com/watch?v=EijSRcnBSNM ===== Изменения в exam-101 от 10 февраля 2015 ===== https://www.youtube.com/watch?v=PMN11huPMzo