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

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


os:lpic-1:101

Содержание

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.

LPIC-1 Exam 101 objectives

Данная страница является конспектом лекций Кирилла Семаева 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/ - каталоги блочных устройств
/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

Порядок загрузки системы

  1. BIOS/UEFI - запуск системы
  2. MBR/GPT - 1-я стадия загрузки
  3. LILO/GRUB - 2-я стадия загрузки (загрузчик)
  4. Linux kernel - запуск ядра ОС (инициализация устройств и т. п.)
  5. 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 основных раздела, если нужно больше разделов - один раздел делается расширенным и в нём создаются логические разделы. Расширенный нужно делать только один, так как могут быть проблемы с тем, чтобы прочитать содержимое диска где-то ещё.

Нумерация логических разделов начинается с 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) - система управления томами

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 - слова, начинающиеся с text
text\> - слова, заканчивающиеся на 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) (см. занятие 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
Значения при выставлении нужной комбинации битов суммируются.

Например,
4755 - установлен suid
6750 - установлены suid и sgid
3764 - установлены 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 - эффективный идентификатор пользователя, изменяется для процессов (не для пользователя) с битом SUID
    id
    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

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

os/lpic-1/101.txt · Последнее изменение: 23.05.2024 11:02 — viacheslav

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki