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) или "Администрирование Linuх, первая ступень"
Weight: 2
Description: Candidates should be able to determine and configure fundamental system hardware.
Key Knowledge Areas:
The following is a partial list of the used files, terms and utilities:
/sys/devices/ - все устройства ядра
/sys/bus/ - перечень шин
/sys/drivers/ - каталоги драйверов
/sys/block/ - каталоги блочных устройств
/sys/class/ - группировка устройств по классам
Создаётся во время загрузки системы, количество файлов в этом каталоге зависит от конфигурации системы. Для работы нужны права 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/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 # вставить модуль, удовлетворив зависимости
IRQ - механизм прерываний
cat /proc/interrupts
IO адреса - обмен информацией между устройствами и процессором
cat /proc/ioports # по портам cat /proc/iomem # как выглядит в памяти
DMA - обращение устройств к ОЗУ минуя процессор
cat /proc/dma
PATA - параллельный
SATA - последовательный
SCSI - стандарт передачи данных
SAS - замена SCSI
blkid - просмотр смонтированных устройств и их ID.
Weight: 3
Description: Candidates should be able to guide the system through the booting process.
Key Knowledge Areas:
Terms and Utilities:
В Ubuntu нажатие Shift вызывает меню загрузки. Клавиша I показывает скрипт загрузки. Пример параметров загрузки ядра - ro quiet splash $vt_handoff
dmesg # вывод сообщений ядра (все) cat /var/log/dmesg # только сообщения загрузки
pstree - команда вывода дерева запущенных процессов
Ядра, initRAM-диски (для загрузки)
/boot/grub - каталог загрузчика GRUB
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:
Terms and Utilities:
Процесс запуска инициализации системы на одном из заданных уровней запуска (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
Процесс запуска инициализации системы в ускоренном режиме за счёт распараллеливания потоков
Unit - модули, которыми оперирует Systemd:
/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
Процесс запуска инициализации системы на основе отслеживания событий (служб и задач), которые принимаются от любых системных процессов. Обратно совместим с 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 # проверка конфигурации
Weight: 2
Description: Candidates should be able to design a disk partitioning scheme for a Linux system.
Key Knowledge Areas:
Terms and Utilities:
Следующие папки могут быть смонтированы как отдельные разделы жёсткого диска:
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
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
Weight: 2
Description: Candidates should be able to select, install and configure a boot manager.
Key Knowledge Areas:
The following is a partial list of the used files, terms and utilities:
LiLo, Grub - старые, Grub2 - новый.
- главная загрузочная запись, первые 512 байт диска.
# посмотреть, где загрузчик fdisk -l # скопировать 1-й блок жёсткого диска в 512 байт, т. е., MBR dd if=/dev/sda of=/root/backup.mbr bs=512 count=1
apt-get install lilo # установить LiLo liloconfig # создаёт /etc/lilo.conf
В конфиге в параметр boot = /dev/disk/by-id/ нужно добавить диск, с которого нужно грузиться
# Выяснить ID диска /dev/disk/by-id ls /dev/disk/by-id
Настройки лежат в /boot/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 # создать типовую конфигурацию загрузчика
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:
Terms and Utilities:
Библиотека - набор функций, используемые программами.
Статические библиотеки - в составе дистрибутива той или иной программы (нет проблем совместимости, но увеличивает размер дистрибутивов)
Динамические библиотеки - сидят в памяти (могут использоваться сразу несколькими программами)
/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
Weight: 3
Description: Candidates should be able to perform package management using the Debian package tools.
Key Knowledge Areas:
Terms and Utilities:
Утилита управления пакетами в 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-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 # зависимости от конкретного пакета
По умолчанию не установлен, то же самое, что и apt-get, только с псевдографикой.
Выбрать пакет для установки - кнопка +, установить - g, выйти - q.
main - основные пакеты, поддерживаемые производителем, restricted - частично свободное ПО, universe - неподдерживаемое производителем ПО, multiverse - закрытое ПО.
Weight: 3
Description: Candidates should be able to perform package management using RPM and YUM tools.
Key Knowledge Areas:
Terms and Utilities:
То же самое, что 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
/etc/yum.repos.d/ - перечень репозиториев
yum --help # помощь yum install # установить пакет yum remove # удалить yum upgrade # обновить yum search # найти yumdownloader # скачивание пакетов вместе с зависимостями
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:
Terms and Utilities:
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
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 # вывод содержимого файла на экран 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 # подсчёт количества строк, слов и символов
Weight: 4
Description: Candidates should be able to use the basic Linux commands to manage files and directories.
Key Knowledge Areas:
Terms and Utilities:
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 # разжать и распаковать
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:
Terms and Utilities:
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 # последовательно удалить найденные текстовые файлы
Weight: 4
Description: Candidates should be able to perform basic process management.
Key Knowledge Areas:
Terms and Utilities:
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
Weight: 2
Description: Candidates should should be able to manage process execution priorities.
Key Knowledge Areas:
Terms and Utilities:
Приоритет от -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
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:
Terms and Utilities:
\<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
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:
Terms and Utilities:
Навигация:
←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 - выйти и сохранить
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:
Terms and Utilities:
С помощью fdisk разметить место и выбрать ID раздела (82) (см. занятие 102.1). Предположим, это раздел /dev/sdb2. Затем выполнить команду
mkswap /dev/sdb2 swapon /dev/sdb2 # задействовать раздел подкачки в системе swapon -s # посмотреть разделы swap swapoff /dev/sdb2 # выключить раздел подкачки
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
Надо изменить тип раздела в fdisk, например, тип «c» (FAT32 LBA), затем отформатировать, например
mkfs.vfat /dev/sdb1 mkfs.ntfs /dev/sdb1
fdisk не работает с GPT и не работает с разделами больше 2 ТБ. Для этого используется gdisk.
gdisk /dev/sdb # опция "o" создаёт разметку GPT
Очень мощная утилита по работе с дисками и разделами.
gparted - графическая утилита.
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:
Terms and Utilities:
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
Weight: 3
Description: Candidates should be able to configure the mounting of a filesystem.
Key Knowledge Areas:
Terms and Utilities:
mount устройство точка_монтирования_(папка)
umount устройство
или
umount точка_монтирования_(папка)
устройство точка_монтирования тип_файловой_системы options dump pass
Тип файловой системы - можно написать auto для автоопределения
options - непример, rw,user,auto,noexec - чтение-запись, право монтирования под обычным пользователем, монтировать при загрузке, нельзя запускать исполняемые файлы
dump - сохранять ли файлы автоматически при внезапном отключении питания
pass - параметры проверки файловой системы
Стандартные папки для монтирования:
/mnt - для дисков
/media - для съёмных носителей
Наиболее надёжный способ монтирования - по UUID, так как порт подключения может поменяться.
blkid /dev/sdb1 # посмотреть UUID раздела eject # команда, безопасно отключает флешку (после отмонтирования)
Weight: 1
Description: Candidates should be able to manage disk quotas for users.
Key Knowledge Areas:
Terms and Utilities:
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 - шлёт письма пользователям, превысившим квоту
Weight: 3
Description: Candidates should be able to control file access through the proper use of permissions and ownerships.
Key Knowledge Areas:
Terms and Utilities:
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 # задать владельца и группу владельцев для папки рекурсивно
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 # отобрать право выполнения файла у всех
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
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
В связи с выставленными битами появляются эффективные идентификаторы.
id uid=1000(user) gid=1001(user) euid=0(root) groups=1001(user),10(wheel),48(docker),443(sudo)
$ 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 пользователя.
# Проверить, включена ли поддержка в конфигурации ядра 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
Например, есть подозрения, что файл содержит вирус, и нужно предотвратить его запуск, убрав все 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
# Выгрузка 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:
Terms and Utilities:
Жёсткая ссылка - это ссылка на определённое место на жёстком диске, соответственно, имеет тот же самый 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 в домашней папке). # Нужно указывать полный путь к объектам, на которые даётся ссылка.
Weight: 2
Description: Candidates should be thoroughly familiar with the Filesystem Hierarchy Standard (FHS), including typical file locations and directory classifications.
Key Knowledge Areas:
Terms and Utilities:
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, но подробнее + доп. функционал