Uploaded by s.d.i.1.9.8.4

Linux - Командная строка [2022.09.13]

advertisement
---=== linux - cli ===--• Respect the privacy of others:
Уважайте частную жизнь других.
• Think before you type:
Подумайте, прежде чем печатать.
• With great power comes great responsibility:
С большой властью приходит большая ответственность.
==================================================================================
Структура документа:
==================================================================================
• ADM [iso] #Редактирование и сборка ISO-Live-CD-USB:
- СОЗДАНИЕ ISO-ОБРАЗОВ;
- SQUASHFS;
- ROOTFS;
- AUFS.
---------------------------------------------------------------------------------• ADM [dev] #Работа с физическими и логическими БУ:
- ИНФОРМАЦИЯ О ДИСКОВОМ ПРОСТРАНСТВЕ;
- РАБОТА С ФИЗИЧЕСКИМИ ТОМАМИ;
- РАБОТА С ЛОГИЧЕСКИМИ ТОМАМИ;
- РАБОТА С ФС ФИЗИЧЕСКИХ И ЛОГИЧЕСКИХ ТОМОВ;
- ВОССТАНОВЛЕНИЕ ДАННЫХ С БЛОЧНЫХ УСТРОЙСТВ;
- МОНТИРОВАНИЕ БЛОЧНЫХ УСТРОЙСТВ;
- ШИФРОВАНИЕ КОНТЕЙНЕРОВ, ФИЗИЧЕСКИХ И ЛОГИЧЕСКИХ ТОМОВ;
- КОПИРОВАНИЕ БЛОЧНЫХ УСТРОЙСТВ.
---------------------------------------------------------------------------------• ADM [dev|file] #Работа с директориями и файлами:
- ВЫВОД ИНФОРМАЦИИ О ФАЙЛАХ И ДИРЕКТОРИЯХ;
- ОПЕРАЦИИ С ДИРЕКТОРИЯМИ И ФАЙЛАМИ;
- АРХИВАЦИЯ ДАННЫХ.
---------------------------------------------------------------------------------• ADM [init] #Системы инициализации:
- ПРОСМОТР ИНФОРМАЦИИ О УРОВНЯХ ЗАПУСКА;
- INIT;
- SYSTEMD;
- CHROOT.
---------------------------------------------------------------------------------• ADM [proc] #Системная информация и управление процессами:
- ИНФОРМАЦИЯ О ЖЕЛЕЗЕ;
- ИНФОРМАЦИЯ О СИСТЕМЕ И ПРОЦЕССАХ;
- ИНФОРМАЦИЯ О ОПЕРАТИВНОЙ ПАМЯТИ И РАЗДЕЛЕ ПОДКАЧКИ;
- УПРАВЛЕНИЕ ПРОЦЕССАМИ;
- АНАЛИЗ СИСТЕМЫ.
---------------------------------------------------------------------------------• ADM [sec] #Безопасность:
- SELINUX;
- TRIPWIRE;
- VIRUS;
- ROOTKIT;
- MALWARE.
---------------------------------------------------------------------------------• ADM [scheduler] #Планировшик заданий:
- AT;
- CRON;
- ANACRON;
- INCRON;
- SYSTEMD.
---------------------------------------------------------------------------------• ADM [user] #Работа с пользователями и группами:
- ИНФОРМАЦИЯ О ПОЛЬЗОВАТЕЛЯХ;
- УПРАВЛЕНИЕ ПОЛЬЗОВАТЕЛЯМИ И ГРУППАМИ;
- УПРАВЛЕНИЕ ПРАВАМИ ПОЛЬЗОВАТЕЛЕЙ;
- SUDO.
---------------------------------------------------------------------------------• ADM [time] #Работа с системным и аппаратным временем.
---------------------------------------------------------------------------------• ADM [net] #Работа с ЛВС:
- БАЗОВАЯ ИНФОРМАЦИЯ О СЕТЕВЫХ РЕСУРСАХ;
- НАСТРОЙКА И РАБОТА С СЕТЕВЫМИ РЕСУРСАМИ;
- WiFi;
- СОЗДАНИЕ И РАБОТА С ШИФРОВАННЫМИ КАНАЛАМИ СВЯЗИ;
- PORTKNOCKING;
- МОНИТОРИНГ СЕТЕВЫХ РЕСУРСОВ;
- ДИАГНОСТИКА СЕТИ;
- DNSLOOKUP UTILS;
- ЗАПРОС И ЗАГРУЗКА ДАННЫХ В|ИЗ СЕТИ;
- FIREWALL.
---------------------------------------------------------------------------------• ADM [pm] #Пакетные менеджеры:
- RHEL-ПОДОБНЫЕ ДИСТРИБУТИВЫ;
- DEBIAN-ПОДОБНЫЕ ДИСТРИБУТИВЫ.
---------------------------------------------------------------------------------• ADM [print] #Печать:
- АДМИНИСТРИРОВАНИЕ CUPS;
- ВЫВОД ДОКУМЕНТОВ НА ПЕЧАТЬ И УПРАВЛЕНИЕ ОЧЕРЕДЯМИ.
---------------------------------------------------------------------------------• ADM [log] #Логирование системной информации.
---------------------------------------------------------------------------------• ADM [mon] #Мониторинг.
---------------------------------------------------------------------------------• ADM [terminal] #Настройка терминала и работа в нем:
- СПИСОК СУЩЕСТВУЮЩИХ ТЕРМИНАЛОВ;
- ОСНОВЫ СИНТАКСИСА ПРИ РАБОТЕ В КОНСОЛИ;
- НАСТРОЙКА КОНСОЛИ;
- РАБОТА В КОНСОЛИ;
- КОДИРОВКА КЛАВИШ;
- КОНСОЛЬНЫЙ ФАЙЛОВЫЙ МЕНЕДЖЕР;
- ТЕРМИНАЛЬНЫЙ МУЛЬТИПЛЕКСОР;
- РАЗНОЕ.
---------------------------------------------------------------------------------• ADM [GRUB] #Загрузчик Linux:
- РАЗНОВИДНОСТИ;
- ЭТАПЫ ЗАГРУЗКИ;
- HOTKEYS;
- КОНСОЛЬ ЗАГРУЗЧИКА;
- КОМАНДЫ GRUB;
- КОНФИГУРАЦИОННЫЕ ФАЙЛЫ;
- ВОССТАНОВЛЕНИЕ ЗАГРУЗЧИКА С ДВУМЯ УСТАНОВЛЕННЫМИ ОС;
- УСТАНОВКА ПАРОЛЯ НА ЗАГРУЗЧИК.
---------------------------------------------------------------------------------• TXT #Работа с текстом:
- ТЕКСТОВЫЙ РЕДАКТОР VIM;
- ТЕКСТОВЫЙ РЕДАКТОР NANO;
- РЕДАКТИРОВАНИЕ ТЕКСТА;
- ПРОСМОТОРЩИКИ [CBA|DJVU|EPUB|FB2|PDF|PS|..].
---------------------------------------------------------------------------------• MEDIA #Почта, интернет, музыка, видео, изображения, ... :
- POST;
- WWW;
- MUSIC;
- VIDEO;
- PICTURE;
- CAD.
---------------------------------------------------------------------------------• GUI #Графический интерфейс:
- GNOME;
- WM.
---------------------------------------------------------------------------------• MAN #Справочная информация:
- КРАТКАЯ СПРАВКА ПО ПРОГРАММАМ;
- ДОКУМЕНТАЦИЯ И МАНЫ.
---------------------------------------------------------------------------------• ETC #Разное.
==================================================================================
ПРИЛОЖЕНИЕ I ..... ОСНОВНЫЕ ДИРЕКТОРИИ.
==================================================================================
ПРИЛОЖЕНИЕ II .... ОСНОВНЫЕ СИСТЕМНЫЕ ФАЙЛЫ.
==================================================================================
ПРИЛОЖЕНИЕ III ... ОСНОВНЫЕ СИСТЕМНЫЕ ПОЛЬЗОВАНЕЛИ И ГРУППЫ.
==================================================================================
ПРИЛОЖЕНИЕ IV .... СТАНДАРТНЫЕ ИМЕНА УСТРОЙСТВ /dev/*.
==================================================================================
ПРИЛОЖЕНИЕ V ..... ФАЙЛОВЫЕ СИСТЕМЫ.
==================================================================================
ПРИЛОЖЕНИЕ VI .... ЗАПУСК СИСТЕМЫ.
==================================================================================
ПРИЛОЖЕНИЕ VII ... SYSTEMD [юниты].
==================================================================================
ПРИЛОЖЕНИЕ VIII .. BASH.
==================================================================================
ПРИЛОЖЕНИЕ IX .... ЛВС.
==================================================================================
ПРИЛОЖЕНИЕ X ..... ЛИТЕРАТУРА.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [iso] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# ADM [iso] - СОЗДАНИЕ ISO-ОБРАЗОВ:
---------------------------------------------------------------------------------# (genisoimage) создание ISO-образа диска в формате ISO9660/Joliet/HFS:
genisoimage -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -input-charset utf-8 -J -R -V "NameNewDiskISO" -o
/path/to/new.iso /newiso/ #генерация нового iso-образа диска.
• опции программы:
-A #application_id с максимальной длиной 128 символов;
-b #файлы загрузчика;
-c #каталог загрузчика;
-e #задать образ EFI загрузчика;
-J #включает поддержку Jollet (возможность запуска диска на WinOS);
-l #задает возможность использования имени диска длиной 31 символ;
-L #разрешает имена согласно ISO9660;
-o #адрес файла в который будет записан образ;
-r #то же что и -R + сквозное чтение файлов и директорий (uid=0, gid=0);???
-R #включает поддержку протокола Rock Ridge;
-T #создать файл TRANS.TBL (для распознавания файловых имен);
-v #вывод информационных сообщений;
-vv #подробный вывод информационных сообщений;
-V #задает метку диска;
-boot-info-table #поддержка информационной таблицы о диске (56 байт);
-boot-load-size #размер загрузочной области;
-cache-inodes #кэширование инодов;
-eltorito-alt-boot #использовать обновленные параметры El Torito boot;
-joliet-long #использование имен длиной 103 символа в формате юникод;
-no-emul-boot #отключает эмуляцию диска.
---------------------------------------------------------------------------------# (isohybrid) создание загрузочной записи на ISO-образе:
isohybrid /path/to/new.iso #создание загрузочной записи MBR для iso-образа или уже записанного USB (BIOS-загрузка).
• опции программы:
-h #задать геометрию головок (по умолчанию 64);
-s #задать геометрию секторов (по умолчанию 32);
-e #задать номер раздела (1-4);
-o #задать смещение раздела (по умолчанию нет);
-t #задать тип раздела (по умолчанию 0x17);
-i #задать ID для MBR (по умолчанию рандомом);
-b file #создать загрузочную запись MBR из file (для BIOS-загрузки);
-u #создать загрузочную запись EFI (для UEFI-загрузки);
-m #создать загрузочную запись Apple (MACBOOK);
-v #вывод информации и ошибок;
--forcehd0 #задать ID диска 0;
--ctrlhd0 #задать ID диска 0 при нажатии клавиши Ctrl;
--partok #разрешить загрузки внутри разделов.
==================================================================================
# ADM [iso] - SQUASHFS:
---------------------------------------------------------------------------------# (unsquashfs) распаковка образа *.squashfs:
unsquashfs filesystem.squashfs #распаковка образа *.squashfs.
• опции программы:
-d #задать путь для распаковки (по умолчанию squashfs-root);
-n #не выводить прогрессбар;
-p #задать номер процессора;
-i #вывод информации по инодам образа;
-li #вывод списка файлов образа с информацией по инодам;
-l #вывод списка файлов образа;
-ll #вывод списка файлов образа с атрибутами;
-f #использовать существующие папки вместо попыток создать новые;
-s #вывод информации о суперблоках ФС;
-e, ef #задать список директорий и файлов куда извлекать;????
-da #задать размер очереди данных (по умолчанию 256 MB);
-fr #задать размер фрагмента очереди (по умолчанию 256 MB);
-r #использовать регулярные выражения (по умолчанию глоббинг).
---------------------------------------------------------------------------------# (mksquashfs) создание образа *.squashfs:
mksquashfs squashfs-root *.squashfs -b 1024k -comp xz -Xbcj x86 -e boot -noappend -always-use-fragments #создание нового образа *.squashfs.
• опции программы:
-all-root #объединить все файлы целевой ФС в ветвь (UID=o, GID=o);
-always-use-fragments #разделить все файлы размером больше блока на фрагменты;
-b [block size] #задать размер блока ФС, н-р 512, 1024, 2048, 4069, 8192, 16384, 32768 (32 Кб по умолчанию);
-be #запускает big endian ФС;
-le #запускает little endian ФС;
-check-data #активирует дополнительные проверки ФС;
-comp #задать компрессию:
gzip #по умолчанию;
lzma #не поддерживается ядром;
lzo;
lz4;
xz:
-Xbcj #задать фильтры компрессии:
x86;
arm;
armthumb;
powerpc;
sparc;
ia64.
-e [file 1] ([file 2]) #задает, какие файлы и/или директории нужно опустить из создаваемой ФС;
-ef [file] #указывает файл, который содержит перечень файлов/директорий, которые нужно исключить;
-force-gid [GID] #устанавливает все групповые ID в целевой ФС в [GID] (может быть указано имя или число)
-force-uid [UID] #устанавливает все пользовательские ID в целевой ФС в [UID] (может быть указано имя или число);
-info #выдает файлы, их оригинальный размер и степень сжатия после добавления в ФС;
-keep-as-directory #если исходный текст представляет из себя одну директорию, сделать эту директорию субдиректорией ветви в созданной ФС;
-noappend #перезаписать уже существующую сжатую ФС;
-no-duplicates #не обнаруживает/удаляет одинаковые имена файлов;
-noD #не сжимать данные;
-noF #не сжимать фрагменты;
-no-fragments #не создавать фрагментарные блоки;
-noI #не сжимать таблицу узлов;
-nopad #не паковать пакеты 4 Кб полученную файловую систему во множественные
-root-becomes [name] #может быть использована в процессе присоединения к уже существующей сжатой ФС (это создаст новый корень и [имя] директорию, которая будет содержать
все пресуществующие файлы/директории);
-version #выдает сообщение о версии, авторских правах и лицензии.
---------------------------------------------------------------------------------# (squashfuse) монтирование архивов *.squashfs:
squashfuse -o allow_other *.squashrs /mnt #смонтировать архив *.squashfs в /mnt для доступа всем пользователям.
• опции программы:
-d #включить режим отладки (без использования -f);
-f #перевести вывод в фон;
-o allow_other #разрешить доступ всем;
-o allow_root #разрешить доступ только root.
---------------------------------------------------------------------------------# ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ ОБРАЗОВ *.squashfs:
mount -t squashfs -o loop /path/to/*.squashfs /mnt/arh #монтирование образа *.squashfs в /mnt/arh.
/path/to/*.squashfs /path/to/mountpoint squashfs ro defaults 0 0 #автомонтирование архива *.squashfs в fstab.
==================================================================================
# ADM [iso] - ROOTFS:
---------------------------------------------------------------------------------==================================================================================
# ADM [iso] - AUFS:
---------------------------------------------------------------------------------==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [dev] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# ADM [dev] - ИНФОРМАЦИЯ О ДИСКОВОМ ПРОСТРАНСТВЕ:
---------------------------------------------------------------------------------# различная информация о блочных устройствах:
• вывод информации:
cat /proc/partitions #блочные устройства;
cat /proc/mounts #смонтированные файловые системы (mounts);
cat /proc/mdstat #RAID (mdadm);
cat /proc/swaps #просмотр используемых разделов подкачки;
ls -l /dev | grep -E 'sd|hd' #вывод всех блочных устройств (b - блок);
ls -l /dev/sd* #вывод всех блочных устройств (b - блок);
file -s /dev/sdxN #вывод информации о блочном устройстве;
/dev/hdx #IDE hdd, CD/DVD-ROM;
/dev/sdx #SCSI, SATA, USB-hdd;
/dev/mdx #Software RAID.
• таблицы разделов:
- MBR #устаревшая таблица разделов:
поддерживает диски до 2 Тб;
primary #первичных разделов может быть не более четырех;
extended #расширенных разделов может быть бесконечное множество.
- GPT #новая таблица разделов:
поддерживает диски до 9 Зб;
поддерживает более четырех primary разделов (до 256);
использует GUID (буквенные имена) для идентификации дисков;
использует новую систему адресации LBA, вместо устаревшей CHS;
служебная информация GPT дублируется в начале и конце диска;
GPT имеет автоматическое восстановление при повреждении;
проверяет контрольные сумы, что позволяет обнаружить модификацию таблицы разделов;
поддерживает Unicode, а следовательно кириллические имена;
необходимо обязательное наличие UEFI при использовании GPT с Windows.
• BIOS-Boot #спецтом для таблицы разделов GPT и BIOS Legacy:
- точка монтирования #нет;
- тип #без ФС;
- описание #контейнер для ядра GRUB2, который необходим, если Linux устанавливается на GPT-диск, и если микропрограмма BIOS настроена в режиме Legacy (не EFI);
- размер #1-2 МБ.
• тестирование производительности дисков:
time
time
time
• файлы
dd if=/dev/sdxN of=/dev/null bs=1024k count=500 #15.78 sec;
dd if=/dev/zero of=/home/user/file bs=1024k count=500 #17.85 sec;
dd if=/dev/zero of=/mpoint/tmpfs bs=1024k count=500 #1.7 sec.
и директории:
/sys/class/block/sdb/queue/physical_block_size #размер физического блока БУ;
/sys/class/block/sdb/queue/logical_block_size #размер логического блока БУ;
/etc/mke2fs.conf #конфигурационный файл для ФС ext[3|4].
---------------------------------------------------------------------------------# (lsblk) вывод информации о физических и логических блочных устройствах:
lsblk -f #вывод подробной информации, включая UUID;
lsblk -m #вывод информации о владельцах и разрешениях;
lsblk -p #вывод полного пути устройств;
lsblk -S #вывод SCSI информации устройства;
lsblk -t #вывод топологии устройств.
lsblk -o column1,column2,... #задание списка информ-столбцов через запятую.
---------------------------------------------------------------------------------# (df) вывод информации об объеме смонтированных дисков:
df -Th /dev/sdxN #вывод информации об объеме диска sdxN;
df -Th #вывод информации об объеме всех локально подключенных дисков;
df -Tha #вывод информации об объеме всех дисков в системе.
• опции программы:
-T #вывести информацию о типе ФС диска;
-a #вывести информацию обо всех дисках в системе;
-i #выводит информацию о дескрипторах (инодах);
-h #информацию выводить в K/M/G/.. байтах.
---------------------------------------------------------------------------------# (hexdump) просмотр содержимого дисков и файлов:
hexdump -C /dev/sdxN #вывод /dev/sdxN в шестнадцатеричном формате.
• опции программы:
-d #вывод в десятичном виде;
-o #вывод в восьмеричном виде;
-C #вывод в ASCII+шестнадцатеричном виде.
==================================================================================
# RAID:
---------------------------------------------------------------------------------• наиболее часто используемые RADI:
- RAID 1 #Mirror (создаёт зеркальную копию диска);
- RAID 5 #:
- RAID 6 #:
- RAID 10 #.
• особенности:
- рекомендуется использовать диски одного производителя, модели, партии.
---------------------------------------------------------------------------------# (mdadm) работа с RAID:
• использование - СОЗДАНИЕ RAID МАССИВА ДЛЯ ХРАНЕНИЯ ДАННЫХ:
mdadm --create RAID#100GB --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 #создание RAID1 на дисках sdb1 sdc1 под данные;
mdadm -D /dev/md127 #вывод информации по заданному RADI (md127);
sudo -i #зайти под root;
cd /etc
echo 'DEVICE /dev/hd*[0-9] /dev/sd*[0-9]' > mdadm.conf #создать mdadm.conf со списком разделов RAID (для разделов);
mdadm --detail --scan >> mdadm.conf #дописать в mdadm.conf параметры устройства (для разделов);
echo 'DEVICE /dev/hd[a-z] /dev/sd*[a-z]' > mdadm.conf #создать mdadm.conf со списком разделов RAID (для физических дисков);
mdadm --examine --scan --config=mdadm.conf >> mdadm.conf #дописать в mdadm.conf параметры устройства (для физических дисков);
mkfs.ext4 /dev/md127 #форматировать массив;
vi /etc/fstab #подключать массив с данными при загрузке ОС:
/dev/md127
/data
ext4
defaults
0 2
• использование - ВОССТАНОВЛЕНИЕ RAID МАССИВА ДЛЯ ХРАНЕНИЯ ДАННЫХ:
mdadm /dev/md127 --add /dev/sdb1 #добавить недостающий диск в массив.
==================================================================================
# ADM [dev] - РАБОТА С ФИЗИЧЕСКИМИ ТОМАМИ:
---------------------------------------------------------------------------------# (fdisk):
fdisk /dev/sdxN #работа с блочным устройством /dev/sdxN.
• опции программы:
-b #задать размер физического и логического секторов;
-B #не стирать загрузочный сектор при создании нового раздела;????
-c #режим совместимости dos или nodos (по умолчанию);
-L #подцветка вывода (auto, always или newer), по умолчанию auto;
-l #вывести таблицу разделов;
-o #поля вывода;
-t #принимать только указанные типы таблиц разделов;
-u #отображение: цилиндры 'cylinders' или сектора 'sectors' (по умолчанию);
-s #отобразить размер устройства в 512-байтовых секторах [устарело];
-w #wipe signatures (auto, always или newer);????
-W #wipe signatures from new partitions (auto, always или newer);????
-C #задать количество цилиндров;
-H #задать количество головок;
-S #задать количество секторов на дорожку;
-V #вывести версию программы.
• интерактивные ключи:
a #установить признак загрузочного раздела;
b #редактировать метки bsd диска;
c #переключить флаг совместности с dos;
d #удалить раздел;
F #просмотр информации о свободном месте;
g #создать новую таблицу разделов GPT;
G #создать новую таблицу разделов SGI (IRIX);
i #просмотр информации о разделе;
I #загрузить разметку из файла сценария sfdisk;
l #показать список известных типов раздела;
m #вызов справки;
M #вход в наследственный/гибридный MBR;
n #добавить раздел;
o #создать новую таблицу разделов DOS;
O #записать разметку в файл сценария sfdisk;
p #вывести таблицу разделов;
s #создать новую таблицу разделов Sun;
q #выйти без сохранения изменений;
t #изменить тип раздела;
u #изменение единиц измерения экрана/содержимого;
v #проверить таблицу разделов;
w #записать таблицу разделов на диск и выйти;
x #дополнительные возможности (для MBR):
b #перемещение начала данных раздела;
c #изменить количество цилиндров;
d #показать данные первого сектора диска (первые 512 байт);
D #показать данные загрузочной таблицы;
f #исправить очередность разделов;
h #изменить количество головок;
i #изменить UUID;
m #вызов справки;
p #вывести таблицу разделов;
q #выйти из программы без сохранения;
r #вернуться в предыдущее меню;
s #изменить количество секторов на дорожку;
v #проверить таблицу разделов.
x #дополнительные возможности (для GPT):
i #изменить GUID диска;
n #изменить имя раздела;
u #изменить UUID раздела;
l #задать новую длину блока таблицы адресации LBA;????
M #вход в наследственный/гибридный MBR;
A #установить флаг LegacyBIOSBootable;
B #установить флаг NoBlockIOProtocol;
R #установить флаг RequiredParticion;
S #установить биты специфичности GUID;
p #вывести таблицу разделов;
v #проверить таблицу разделов;
d #показать данные первого сектора диска (первые 512 байт);
D #показать данные загрузочной таблицы;
f #исправить очередность разделов;
m #вызов справки;
q #выйти из программы без сохранения;
r #вернуться в предыдущее меню.
• особенности:
fdisk #используется при работе с дисками до 2Тб.
---------------------------------------------------------------------------------# (sfdisk) создание BackUp'ов:
sfdisk -d /dev/sda > part_table #создание BackUp'а;
sfdisk /dev/sda < part_table #восстановление BackUp'а.
---------------------------------------------------------------------------------# (parted) работа с блочными устройствами:
parted -l #вывод информации по всем доступным БУ;
parted /dev/sdxN #начать работу с БУ sdxN.
• опции программы:
-a [none|cy|min|opt] #выравнивание новых разделов;
-l #вывод списка всех доступных БУ;
-m #вывод в машинном формате;
-s #не запрашивать вмешательство пользователя.
• интерактивные команды:
algin-check [min|opt] #выравнивание раздела;
mklabel|mktable [type] #создать новую метку диска (таблицу раздела);
mkpart [type name tfs] strat end #создать новый раздел:
type: [primary|extended|logical];
tfs [ext2|ext3|ext4|..];
start end [100M/10G].
name [name] #задать имя раздела;
print [devices|free{list|all|num}] #вывод заданной информации;
rescue [start end] #восстановить потерянный раздел;
rm [part] #удалить заданный раздел;
select [dev] #выбор заданного устройства;
disc_set [flag {on|off}] #изменить заданный флаг на выбранном устройстве;
disc_toggle [flag] #переключить состояние флага на заданном устройстве;
set [part flag {on|off}] #изменить флаг на заданном разделе:
[boot|root|swap|hidden|raid|lvm|lba|legacy_boot|irst|esp|palo];
toggle [part flag] #переключить состояние флага на заданном устройстве;
unit [B|kB|MB|MiB|GB|GiB|TB|TiB|%|cyl|c|h|s|chs] #задать единицы измерения;
quit #выход.
• особенности:
parted #используется при работе с дисками более 2Тб.
---------------------------------------------------------------------------------# (wipefs) работа с сигнатурами (подписями таблицы разделов) дисков:
wipefs #запуск программы в интерактивном режиме;
wipefs /dev/sda #вывод имеющихся сигнатур для sda;
wipefs -a /dev/sda /dev/sdb #удаление имеющихся сигнатур на sda и sdb.
wipefs --all --backup /dev/sdb #стирает все подписи с устройства /dev/sdb и создает файл резервной копии подписи ~/wipefs-sdb-<offset>.bak для каждой подписи:
dd if=~/wipefs-sdb-0x00000438.bak of=/dev/sdb seek=$((0x00000438)) bs=1 conv=notrunc #восстановление сигнатур.
• опции программы:
-a #улалить сигратуры диска;
?
-a #wipe all magic strings (BE CAREFUL!);
?
-b #create a signature backup in $HOME;
?
-f #force erasure;
?
-i #don't print headings;
?
-J #use JSON output format;
?
-n #do everything except the actual write() call;
?
-o NUM #offset to erase, in bytes;
?
-O LIST #COLUMNS to display (see below);
?
-p #print out in parsable instead of printable format;
?
-q #suppress output messages;
?
-t LIST #limit the set of filesystem, RAIDs or partition tables;
• вывод программы:
?
DEVICE #имя БУ;
?
LABEL #лейбл ФС;
?
LENGTH #magic string length;
?
OFFSET #magic string offset;
?
TYPE #superblok type;
?
USAGE #type description;
?
UUID #UUID раздела/ФС.
---------------------------------------------------------------------------------# (ISO) создание и запись CD-DVD-дисков:
dd if=/dev/sdxN of=/tmp/mycd.iso bs=2048 conv=notrunc #создание BackUp'а;
genisoimage -J -L -r -V MyISO -o imagefile.iso /tmp/mycd.iso #создание *.iso;
-J #разрешает Joliet (расширения для Windosw систем);
-L #разрешает имена согласно ISO9660;
-o ISO #задать результирующую директорию с файлом *.iso;
-r #разрешает Rock Ridge (расширения для UNIX систем);
-V label #задать лэйбл.
cdrecord -scanbus #поиск устройства для записи (1,0,0);
cdrecord dev=1,0,0 imagefile.iso #запись;
cdrecord dev=ATAPI -scanbus #можно использовать native ATAPI.
---------------------------------------------------------------------------------# (losetup) использование loop-устройств:
losetup -f --show /image.iso #подключить image.iso к loop-устройству;
losetup -l #вывод списка всех loop-устройств;
losetup -d /dev/loop0 #отключить loop-устройство (изъять диск).
• опции программы:
-a #проверка статуса loop-устройств;
-d loopX #отключение заданного loop-устройства;
-D #отключение сразу всех loop-устройств;
-f file #поиск свободного loop-устройства и подключение к нему file;
-J #вывод данных в формате json {-l};
-l #вывод списка всех loop-устройств;
-n #не печатать заголовок {-l};
-r #подключить диск или образ только в режиме чтения;
--show #вывод заданного устройства {-f};
-v #подробный вывод сообщений.
==================================================================================
# ADM [dev] - РАБОТА С ЛОГИЧЕСКИМИ ТОМАМИ:
---------------------------------------------------------------------------------# матчасть:
• Программный уровень абстракции над физическими разделами жесткого диска (работает на уровне ядра):
- позволяет создавать логические тома без непосредственной переразметки жесткого диска;
- позволяет создавать логические тома на одном или нескольких жестких дисках;
- позволяет изменять размеры дисков, перемещать их на лету, без остановки приложений или размонтирования файловых систем.
• Организация LVM:
- тома (Volume) #физические тома, группы томов и логические тома;
- диапазоны (Extent) #физические и логические диапазоны;
- модуль отображения устройств (Device-mapper) #модуль ядра Linux.
• Структура LVM:
sda1
sda2
sdb
sdc
|
|
|
|
+------+-----------VG-+------------------+
|
+---------+------------------------+-----+
|
|
|
|
root
home
var
swap
|
|
|
|
ext4
ext4
ext2 swapfs
#PV (Physical Volume) физический том;
#VG (Volume Group) группа физических томов;
#LV (Logical Volume) логический том, непосредственно с которым работают программы;
#FS файловые системы.
• Виды логических томов (разделов):
- линейный раздел (linear volume) #LVM тома (используются по умолчанию), которые могут быть созданы как из одного, так и нескольких физических дисков;
- полосный раздел (Striped Volume) #полезен при больших нагрузках на жесткий диск (можно настроить одновременную запись на разные физические устройства, для одновременных
операций, что сильно увеличит производительность системы);
- зеркалированный раздел (Mirrored Volume) #позволяет записывать данные одновременно на два физических устройства (аналог RAID), что позволяет защититься от сбоев одного из
дисков, т.к. если один из дисков испортится, то разделы LVM просто станут линейными и данные по-прежнему будут доступны.
• Аббревиатуры в названиях утилит:
- pv* #для работы с физическими томами (physical volumes);
- vg* #для работы с группами томов (volume groups);
- lv* #для работы с логическими томами (logical volumes).
---------------------------------------------------------------------------------# диапазоны #базовые блоки одинакового размера из которых состоят физические тома и группы томов:
- физический диапазон (physical extents — PE);
- логический диапазон (logical extents — LE).
• Особенности диапазонов:
- соотношение PE и LE всегда 1 к 1;
- в LVM2 нет ограничения на максимальное количество диапазонов в физических и логических томах;
- по умолчанию размер диапазона составляет 4M;
- если размер диапазона равен 1G, то уменьшить или увеличить логический том возможно только на величину, кратную 1G;
- физический диапазон не всегда распределяется непрерывно относительно логического (по определенным правилам);
- средства LVM могут хуже работать при большом числе диапазонов (но не критично);
- диапазоны различных размеров нельзя объединить в одной группе томов;
- изменение размера диапазона является единственной небезопасной операцией с LVM (может повредить данные);
- наилучшее решение - работать всегда с размером диапазона, выбранным в начале установки.
---------------------------------------------------------------------------------# модуль отображения устройств (dm_mod):
• Стандарт формата имени в dm_mod:
- /dev/{vg_name}/{lv_name} -> /dev/ mapper/{vg_name}{lv_name}
• Примеры отображения имен:
- /dev/dm-0 #физическое устройство;
- /dev/mapper/fedora-root #символьная ссылка на dm-0;
- /dev/fedora/root #символьная ссылка на dm-0.
* для группы томов нет возможности прямого (физического) доступа.
---------------------------------------------------------------------------------# список возможных операций с томами:
• pvchange #;
• pvck #;
• pvcreate #инициализация физических томов;
• pvdisplay #вывод информации о существующих физических томах;
• pvmove #;
• pvremove #удаление метаданных физических томов после удаления из группы томов (с помощью vgreduce);
• pvresize #расширяет или сокращает физические тома;
• pvs #;
• pvscan #поиск существующих физических томов;
• vgcfgbackup #;
• vgcfgrestore #;
• vgchange #изменяет параметры и права доступа к группе томов;
• vgck #;
• vgconvert #;
• vgcreate #создание групп;
• vgdisplay #вывод информации о существующих группах логических томов;
• vgexport #;
• vgextend #добавление новых физических инициализированных томов в группу;
• vgimport #;
• vgimportclone #;
• vgmerge #объединяет две различные группы томов в одну (конечная группа томов может в это время использоваться);
• vgmknodes #;
• vgreduce #удаляет нераспределенные физические тома из группы томов, сокращая группу томов;
• vgremove #удаление групп;
• vgrename #переименование групп;
• vgs #;
• vgscan #поиск существующих логических групп;
• vgsplit #разбивает группу томов;
• lvchange #изменяет параметры и права доступа к логическому тому;
• lvconvert #производит конвертацию между линейным томом и зеркалом или мгновенным снимком, и наоборот;
• lvcreate #создание логических томов (создавать лучше не на все 100%, а оставлять место под метаданные);
• lvdisplay #вывод информации о существующих логических томах;
• lvextend #увеличение логических томов;
• lvmconfig #;
• lvmdiskscan #;
• lvmdump #;
• lvreduce #уменьшение логических томов;
• lvremove #удаление логических томов;
• lvrename #переименование логических томов;
• lvresize #;
• lvs #;
• lvscan #поиск уже существующих логических томов.
---------------------------------------------------------------------------------# (pv) адаптация физических томов под логические:
• просмотр информации по инициированным томам:
pvscan #поиск существующих физических томов.
pvdisplay #вывод информации о существующих физических томах.
• инициализация физических томов:
pvcreate /dev/sda3 /dev/sda4 #инициализация томов sda3 и sda4 под LVM;
pvcreate /dev/sdb #можно всё устройство сделать физическим разделом (PV).
• удаление инициированных томов:
pvremove /dev/sda3 /dev/sda4 #удаление (реинициализация для LVM).
---------------------------------------------------------------------------------# (vg) работа с логическими группами:
• просмотр информации по группам:
vgscan #поиск существующих логических групп;
vgdisplay #вывод информации о существующих группах логических томов.
• инициализация логических групп (если не определились автоматически):
vgchange -ay #активирует все группы томов;
vgchange -an #деактивирует все группы томов.
• создание групп:
vgcreate vgrp1 /dev/sda3 /dev/sda4 #создание группы vgrp1;
• добавление новых физических инициализированных томов в группу:
vgextend vgroup /dev/sdxN /dev/sdxN #добавить разделы в группу vgroup.
• удаление физических инициализированных томов из группы:
vgreduce fedora /dev/sdxN #удалить диск /dev/sdxN из группы томов fedora.
• переименование групп:
vgrename vgrp1 shared #переименование группы vgrp1 в shared.
• удаление групп:
vgremove noname #удаление группы noname.
---------------------------------------------------------------------------------# (lv) работа с логическими томами:
• вывод информации о существующих логических томах:
lvscan #поиск уже существующих логических томов;
lvdisplay #вывод информации о существующих логических томах.
• создание логических томов:
lvcreate -L 20G -n root vgrp1 #создание линейного логического тома root;
lvcreate -L 100%FREE -n home vgrp1 #создание логического тома;
lvcreate -l100 -i2 -I4 -n lv1 vgrp1 #создание логического тома размером в 100 логических экстентов с расслоением по двум физическим томам и размером блока данных 4 KB;
lvcreate -L 1G -i2 -I64 -n lv1 vgrp1 #создание полосного логического тома lv1 размером в 1G с расслоением по двум физическим томам и размером блока данных 64 KB;
lvcreate -L 200M -m1 -n lv1 vgrp1 #создание зеркалированного тома lv1;
-L #задает размер тома;
-l #задает специфический размер тома (в логических экстентах);
-n #задает имя логического тома;
-i #задает количество полос записи;
-m #задает тип зеркал (аналогично RAID);
-p #задает режим r или rw.
• увеличение логических томов:
lvextend -L +10G -r /dev/fedora/root #расширить логический том на 10G с расширением ФС.
• уменьшение логических томов:
lvreduce -L 4G /dev/fedora/root #урезание логического тома root до 4G.
• переименование логических томов:
lvrename vgrp1 lv1 lv_shared #переименование lv1 в lv_shared для группы vgrp1.
• удаление логических томов:
lvremove /dev/vgrp1/lv1 #удаление тома lv1.
---------------------------------------------------------------------------------# расширение логических томов:
- для увеличения размера тома, его не требуется предварительно размонтировать, т.к. большинство ФС поддерживают увеличение раздела «на лету».
pvcreate /dev/sdxN /dev/sdxN #инициализировать новые физические разделы под LVM;
vgextend vgroup /dev/sdxN /dev/sdxN #добавить инициализированные разделы в группу vgroup;
lvextend -L 8G /dev/fedora/root #расширить логический том /dev/fedora/root до 8G;
lvextend -L +10G /dev/fedora/root #расширить логический том /dev/fedora/root на 10G;
lvextend -L +10G -r /dev/fedora/root #расширить логический том /dev/fedora/root на 10G с автоматическим расширением ФС.
* указать где разместить новое расширение (в терминах физического тома) - добавить к команде имя физического тома.
---------------------------------------------------------------------------------# сжатие логических томов:
- для уменьшения размера тома, его требуется предварительно размонтировать, т.к. большинство ФС не поддерживают сокращение раздела «на лету».
umount /path/to/mounted-volume #размонтирование урезаемого раздела;
resize_reiserfs -s 4G /dev/fedora/root #урезание ФС reiserFS;
lvreduce -L 4G /dev/fedora/root #урезание логического тома.
* файловая система не должна быть длиннее логического тома!
---------------------------------------------------------------------------------# перемещение физических томов:
pvdisplay -m #вывод карты распределения физического тома;
pvchange -xn /dev/sdxN #отключение распределения физического тома;
pvmove -i 10 /dev/sdxN /dev/sdyN #перемещение выделенных диапазонов с /dev/sdxN на /dev/sdyN;
-i N #задает интервал времени (в секундах) для вывода информационных сообщений о ходе переменщения;
-b #все информационные сообщения передаются в журнал.
vgreduce fedora /dev/sdxN #удалить диск из группы томов fedora.
---------------------------------------------------------------------------------# (snapshots) резервное копирование с помощью резервных копий:
• описание:
- метод называется copy-on-write (CoW), или копирование при записи;
- создает мгновенный снимок логического тома в конкретный момент времени без необходимости останавливать систему;
- снимок постоянно находистья в жёсткой связи с исходным логическим томом;
- при изменениях в родительском томе, старые блоки записываются в snapshot (создаётся BackUp);
- место, занимаемое снимком, не увеличивается в два раза (при условии, что изменений на базовом томе будет поминимуму);
- если на родительском томе произойдёт замена всех блоков, размер snapshot'а будет немного больше исходного тома (данные+метаданные);
- на высоконагруженных томах использовать не рекомендуется, т.к. данная абстракция тормозит физический диск (скорость записи просаживается почти в 7 раз);
- рекомендуется применять перед обновлениями и при создании реальных BackUp'ов системы.
• создание резервной копии:
lvcreate -s -L 2G -n snap_root /dev/fedora/root #создает логический том-снимок с именем snap логического тома root;
lvcreate -s -L 2G -n -p r snap_root /dev/fedora/root #создает логический том-снимок с именем snap логического тома root в режиме чтения:
-L #определяет размер снимка;
-n #задает имя снимка;
-p [rw|r] #задать режим для снимка;
-s #указывает на создание снимка логического тома.
lvdisplay /dev/fedora/snap_root #просмотр информации о созданной копии;
lvs #вывод информации о снимках.
• восстановление из snapshot'а:
lvconvert --merge fedora/snap_root #snapshot при этом удаляется.
• монтирование снимка (для создания BackUp'а):
mount -o ro /dev/fedora/snap_root /mnt #монтирование тома со снимком;
tar -cvf /path/to/backup /mnt #создание BackUp'а;
umount /mnt #размонтирование снимка.
• удаление снимка:
lvremove /dev/fedora/snap_root #удаление снимка.
• виртуализация:
- снимок можно смонтировать в режиме rw и читать/записывать на него данные как на обычное блочное устройство;
- можно подключать снимок к гипервизорам Xen, VMWare, Qemu, KVM (использующие БУ в качестве образа гостевой ОС).
---------------------------------------------------------------------------------# перенос группы виртуальных логических томов на другую систему:
umount /path/to/vggroup #размонтировать группу LVM;
vgchange -an vggroup #деактивировать группу LVM;
vgexport vggroup #экспортировать группу LVM;
осуществить перенос физических носителей на новую систему;
pvscan #просканировать систему на наличие новых групп LVM;
vgimport vggroup /dev/sdN /dev/sdN .. #импортировать группу LVM в систему;
mkdir -p /path/to/vggroup #создать необходимые директории;
mount /dev/mapper/vggroup-lvm /path/to/vggroup #смонтировать логические разделы LVM;
автомонтирование можно прописать в fstab.
---------------------------------------------------------------------------------# автомонтирование логических томов через fstab:
vi /etc/fstab:
/dev/mapper/fedora-00
/
ext4 defaults,x-systemd.device-timeout=0 1 1
UUID=23578-245-...
/boot ext2 defaults
1 2
/dev/mapper/fedora-home /home ext4 defaults,x-systemd.device-timeout=0 1 2
/dev/mapper/fedora-swap swap swap defaults,x-systemd.device-timeout=0 0 0
==================================================================================
# ADM [dev] - РАБОТА С ФАЙЛОВОЙ СИСТЕМОЙ ФИЗИЧЕСКИХ И ЛОГИЧЕСКИХ ТОМОВ:
---------------------------------------------------------------------------------# (dumpe2fs) вывод информации о ФС ext*:
dumpe2fs /dev/sdxN #вывод информации о ФС раздела sdxN.
---------------------------------------------------------------------------------# (mkfs.*) форматирование ФС:
mkfs.ext2 -L Flash /dev/sdxN #форматирование sdxN в ФС ext2 с лэйблом Flash;
mkfs.ext3 -L Flash /dev/sdxN #форматирование sdxN в ФС ext3 с лэйблом Flash;
mkfs.ext4 -L Flash /dev/sdxN #форматирование sdxN в ФС ext4 с лэйблом Flash;
mkfs.vfat -n Flash /dev/sdxN #форматирование sdxN в ФС vfat с лэйблом Flash;
mkfs.ntfs -f -L Flash /dev/sdxN #форматирование sdxN в ФС ntfs с лэйблом Flash;
mkswap -L swap /dev/sdxN #форматирование sdxN в SWAP с лэйблом swap.
• опции программы:
-b #размер блока файловой системы;
-с #проверить устройство на наличие битых секторов;
-f #быстрое форматирование;
-j #использовать журналирование для ext3;
-L #задать метку раздела;
-U #задать UUID;
-v #показать подробную информацию о процессе работы;
-V #версия программы.
---------------------------------------------------------------------------------# рекомендации по использованию ФС:
/ #ext4;
/boot #ext2;
/home #ext4;
/tmp #ext2;
/var #ext2;
SWAP #swap.
---------------------------------------------------------------------------------# (resize2fs) модификация ФС ext*:
• увеличение размера ФС ext*:
umount /dev/sdxN #отмонтировать изменяемый раздел;
увеличить раздел посредством fdisk или LVM;
fsck -f /dev/sdxN #выполнить обязательную проверку раздела;
resize2fs /dev/sdxN #увеличить размер ФС ext* до последнего сектора;
mount /dev/sdxN /mountpoint #смонтировать измененный раздел.
• уменьшение размера ФС ext*:
umount /dev/sdxN #отмонтировать изменяемый раздел;
fsck -f /dev/sdxN #выполнить обязательную проверку раздела;
resize2fs /dev/sdxN 10G #уменьшить ФС ext* до размера 10G;
уменьшить раздел посредством fdisk или LVM;
mount /dev/sdxN /mountpoint #смонтировать измененный раздел.
---------------------------------------------------------------------------------# (ntfsresize) модификация ФС ntfs с данными:
• увеличение размера ФС ntfs:
umount /dev/sdxN #отмонтировать изменяемый раздел;
увеличить раздел посредством fdisk или LVM;
ntfsresize -s 100G /dev/sdxN #увеличить размер ФС ntfs до 100G;
mount /dev/sdxN /mountpoint #смонтировать измененный раздел.
• уменьшение размера ФС ntfs:
umount /dev/sdxN #отмонтировать изменяемый раздел;
ntfsresize -s 10G /dev/sdxN #уменьшить размер ФС ntfs до 10G;
уменьшить раздел посредством fdisk или LVM;
mount /dev/sdxN /mountpoint #смонтировать измененный раздел.
---------------------------------------------------------------------------------# (xfs_growfs) изменение размера ФС xfs с данными:
• увеличение размера ФС xfs:
umount /dev/sdxN #отмонтировать изменяемый раздел;
увеличить раздел посредством fdisk или LVM;
xfs_growfs /dev/sdxN #увеличить размер ФС xfs до последнего сектора;
mount /dev/sdxN /mountpoint #смонтировать измененный раздел.
• уменьшение размера ФС xfs:
umount /dev/sdxN #отмонтировать изменяемый раздел;
уменьшить раздел посредством fdisk или LVM;
xfs_growfs /dev/sdxN #уменьшить размер ФС xfs до последнего сектора;
mount /dev/sdxN /mountpoint #смонтировать измененный раздел.
---------------------------------------------------------------------------------# вывод UUID и других атрибутов блочных устройств напрямую из /dev:
ls -l /dev/disk/by-uuid/ #вывод UUID БУ;
ls -l /dev/disk/by-* #вывод всех атрибутов БУ (помимо UUID).
---------------------------------------------------------------------------------# (e2label) модификация лэйбла ФС ext*:
e2label /dev/sdxN LABEL #задать метку LABEL для раздела sdxN (для ext*).
---------------------------------------------------------------------------------# (blkid) вывод атрибутов блочных устройств [LABEL|UUID|..]:
blkid #полный вывод всех атрибутов БУ;
blkid -o list #просмотр всех атрибутов БУ в виде таблицы.
---------------------------------------------------------------------------------# (uuidgen) генерация нового UUID для диска:
uuidgen -r
uuidgen -sn @dns -N blablaname
• опции программы:
-r #генерировать произвольный UUID;
-t #генерировать UUID привязанный к текущему времени;
-n [@dns|@url|@oid|@x500] #генерировать UUID в соответствии с заданным именем (только с "s|m|N");
-N [name] #генерировать UUID с содержанием name (только с "s|m|n");
-m #генерировать с md5 хэшем (только с "s|n|N");
-s #генерировать с sha1 хэшем (только с "m|n|N");
-x #генерировать hex-подобный UUID.
---------------------------------------------------------------------------------# (tune2fs) модификация UUID ФС ext*:
tune2fs -l /dev/sdxN #вывод информации о деталях ФС ext*;
tune2fs /dev/sdxN -U clear #очистить UUID;
tune2fs /dev/sdxN -U random #изменить UUID на рандомный новый;
tune2fs -m 5 /dev/sdxN #изменить размер зарезервированного места для суперпользователя до пяти процентов;
tune2fs -C 0 /dev/sdxN #изменить счетчик количества монитрований;
tune2fs -O extents,uninit_bg,dir_index /dev/sdxN #преобразовать ФС ext3 в ext4:
ВНИМАНИЕ! После этого действия необходимо выполнить проверку ФС на ошибки в fsck.
tune2fs -O ^has_journal /dev/sdxN #отключение функции журналирования для раздела sdxN с ФС ext4 (н-р для раздела SWAP).
• опции программы:
-с #изменить периодичность проверок ФС с помощью fsck;
-C #изменить значение счетчика монтирования;
-j #создать файл журнала (позволяет преобразовать ФС ext2 в ext3);
-J #настроить параметры журнала;
-l #получить содержимое суперблока;
-L #изменить метку раздела;
-m #изменить процент дискового пространства, зарезервированного для суперпользователя;
-M #изменить последнюю папку монтирования;
-O #изменить опции ФС;
-T #изменить последнюю дату проверки ФС;
-U #задать UUID ФС.
---------------------------------------------------------------------------------# (badblocks) проверка тома на битые сектора:
badblocks -v /dev/sdx > bb #проверка тома и запись результата в файл bb:
-v #подробный вывод.
---------------------------------------------------------------------------------# (e2fsck) проверка и восстановление ФС ext*):
e2fsck -f /dev/sdxN #принудительная проверка диска /dev/sdxN;
e2fsck -l bb /dev/sdxN #указание ОС не проверять битые сектора;
e2fsck -yn /dev/sdxN #проверить sdxN, но не исправлять;
e2fsck -y /dev/sdxN #проверка sdxN с исправлением ошибок в авто-режиме;
e2fsck -r /dev/sdxN #проверка sdxN с исправлением ошибок в интерактивном режиме.
• опции программы:
-a #автоматическое исправление ошибок (-p использовать безопаснее);
-с #проверить на битые сектора и добавить в список badblocks;
-f #принудительная проверка, даже если раздел помечен как чистый;
-l bb #использовать список битых секторов из файла bb (badblocks -v);
-L bb #использовать список битых секторов из файла bb (badblocks -v);
-n #проверка без исправления ошибок;
-p #автоматическое исправление ошибок;
-r #запрос подтверждения на исправление ошибок (по умолчанию);
-V #подробный вывод;
-y #ответить да на все запросы программы.
• возврат команды:
0 #ошибок нет;
1 #ошибки ФС исправлены;
2 #необходима перезагрузка;
4 #ошибки ФС исправлены небыли;
8 #эксплуатационная ошибка;
16 #ошибки при использовании или синтаксические ошибки;
32 #проверка отменена по запросу пользователя;
128 #ошибка общей библиотеки.
* ВНИМЕНИЕ! проверку любого диска выполнять только в размонтированном состоянии.
---------------------------------------------------------------------------------# (smartmontools) проверка диска с помощью технологии S.M.A.R.T.:
• установка:
dnf -y install smartmontools
• использование (ручное):
smartctl --info /dev/sdx #запрос информации о диске;
smartctl -s on -H /dev/sdx #проверка диска.
• опции программы:
-H #проверка на битые секторы;
-a #запуск полной проверки диска;
-x #полная проверка и подробный отчет;
-s on #включение технологии S.M.A.R.T.
• использование (автоматическое - smartd):
vi /etc/smartd.conf:
/dev/sdx -m mail@mail.com -M test #параметры отправки сообщений:
-m <email-address> #адрес электронной почты;
-M #частота отправки писем;
-once #отправлять только одно сообщение о проблемах;
-daily #отправлять сообщения каждый день если есть проблема;
-diminishing #отправлять сообщения через день если есть проблема;
-test #отправлять тестовое сообщение при запуске;
-exec #выполняет указанную программу в место отправки почты.
DEVICESCAN -s (L /../../ [1-5] / 13):
выполнять полную проверку каждый рабочий день в час дня по шаблону (T/MM/ДД/ДН/ЧЧ), где:
T #тип теста:
L #длинный тест;
S #короткий тест;
C #тест перемещение (ATA);
O #оффлайн (тест).
ММ #месяц в году;
ДД #день месяца;
ДН #день недели (от 1 - понедельник до 7 - воскресенье);
ЧЧ #час дня.
---------------------------------------------------------------------------------# (fsck) #проверка жёсткого диска;
fsck -TlN /dev/sdx #выполнить тестовую проверку;
fsck -Tlyf /dev/sdx #выполнить принудительную проверку;
fsck -TlyA #выполнить полную проверку.
• опции программы:
-а #выполнить проверку с автоматическим исправлением ошибкок ФС;
-A #выполнить проверку всех ФС из fstab;
-C #показать прогресс для ФС ext2 и ext3;
-f #выполнить принудительную проверку ФС;
-l #блокировать устройство на время проверки и восстановления;
-M #не проверять смонтированные файловые системы;
-N #выполнить проверку без исправлений;
-n #использовать параллельное сканирование нескольких ФС;
-Р #не проверять корневые ФС (только с -A);
-р #вывод на печать;
-t TYPEFS #задать типы ФС для проверки (noTYPEFS - исключить);
-T #не выводить заголовок при запуске инструмента;
-у #автоматический ответ "ДА" на вопросы;
-V #подробный вывод.
• возврат команды:
0 #ошибок нет;
1 #ошибки ФС исправлены;
2 #необходима перезагрузка;
4 #ошибки ФС исправлены небыли;
8 #эксплуатационная ошибка;
16 #ошибки при использовании или синтаксические ошибки;
32 #проверка отменена по запросу пользователя;
128 #ошибка общей библиотеки.
• запуск проверки дисков при последующей загрузке:
touch /forcefsck #вызывает запуск проверки при последующей загрузке.
* ВНИМЕНИЕ! проверку любого диска выполнять только в размонтированном состоянии.
---------------------------------------------------------------------------------# (e4defrag) дефрагментация ФС ext*:
e4defrag -c /dev/sdxN #выявление фрагментированных файлов.
• возврат команды:
норма: 0-30%;
небольшие проблемы: 31-55%;
необходима дефрагментация: 56-100%.
==================================================================================
# ADM [dev] - ВОССТАНОВЛЕНИЕ ДАННЫХ С БЛОЧНЫХ УСТРОЙСТВ:
---------------------------------------------------------------------------------# (ntfsundelete) восстановление данных:
ntfsundelete /dev/sdx #поиск удалённых файлов;
ntfsundelete /dev/sdx -u file.jpg #восстановление одного файла jpg;
ntfsundelete /dev/sdx -u -m '*.jpg' #восстановление всех файлов jpg;
ntfsundelete /dev/sdx -u -o file.iso #восстановление данных в файл file.iso;
ntfsundelete /dev/sdx -u -d /dir -m '*.jpg' #восстановление всех файлов jpg в dir;
ntfsundelete /dev/sdx -u -d /dir -p 100 #восстановить файлы со 100 %-ной целостностью.
• опции программы:
-d #задать конечную директорию извлекаемых данных (использовать с -u);
-i [1,2,5-10] #задать номер иноды восстанавливаемого файла;
-m #возможность использование регулярных выражений и глобалов;
-o file #задать название конечного файла извлекаемых данных (использовать с -u);
-p [100] #вывести файлы, целостность которых составляет 100 %;
-S [5k-6m] #задать размер восстанавливаемых файлов;
-t [2d] #задать дату, начиная с которой произвести восстановление;
-u #не перезаписывать исходный файл (использовать с -o).
==================================================================================
# ADM [dev] - МОНТИРОВАНИЕ БЛОЧНЫХ УСТРОЙСТВ:
---------------------------------------------------------------------------------# (udisksctl) операции со съёмными накопителями [без sudo]:
udisksctl status #вывод базовой информации о съёмных накопителях;
udisksctl mount -b /dev/sdb1 #автомонтирование съёмного накопителя sdb1;
udisksctl unmount -b /dev/sdb1 #размонтирование съёмного накопителя sdb1;
udisksctl power-off -b /dev/sdb1 #отключение съёмного накопителя sdb1;
udisksctl unlock -b /dev/sdb #открыть зашифрованный накопитель;
udisksctl lock -b /dev/sdb #закрыть зашифрованный накопитель;
udisksctl loop-setup -r -f cryptcont #открыть зашифрованный контейнер;
udisksctl lock -b /dev/loopN #закрыть зашифрованный контейнер;
udisksctl lock -p block_devices/loopN #закрыть зашифрованный контейнер;
udisksctl info -b /dev/sdb #вывод базовой информации о sdb;
udisksctl dump #вывод всей информации по всем накопителям.
• опции программы:
-b /dev/sdN #задать блочное устройство;
-d VirtIODisk #задать устройство (виртуальный диск);
-p /path #задать объект;
-r #только для чтения.
• команды и опции программы:
dump #вывод всей информации по всем накопителям;
info #базовая информация о заданном устройстве;
lock #заблокировать зашифрованный накопетель (LUKS/dm-crypt);
loop-delete #удалить loop-устройство;
loop-setup #смонтировать loop-устройство:
-f file #задать file;
-s N #задать размер loop-устройства.
monitor #наблюдение за состоянием накопителей;
mount #смонтировать накопитель:
-f #принудительное размонтирование;
-o options #задать опции для монтирования;
-t type #задать тип ФС.
power-off #выключить питание накопителя;
status #базовая информация о съёмных накопителях;
unlock #разблокировать зашифрованный накопетель (LUKS/dm-crypt);
unmount #размонтировать накопитель.
---------------------------------------------------------------------------------# (mount) опции так же используются в файле fstab:
mount -t vfat -o rw,users,uid=1000,gid=1000,umask=0077 /dev/sdb1 /mount/point #смонтировать sdb1 в директорию /mount/point со следующими параметрами: ФС vfat | разрешить
чтение и запись | установить параметры noexec, nodev, nosuid | присвоить права пользователя и группы 1000 | общая маска прав на файлы и директории 0077.
• создание временного высокоскоростного контейнера для работы:
mount -t tmpfs -osize=1G tmpfs /mount/point
* ФС tmpfs является высокоскоростной для чтения/записи.
• опции программы:
-t #задать тип ФС;
-a #монтирует все ФС указанные в файле /etc/fstab;
-o #определяет атрибуты доступа в ФС:
auto #ФС может быть смонтирована автоматически;
bind #копя содержимого /path/to/dir в /mnt (chroot);
rbind #абсолютный клон монтируемой директории;
ro #смонтировать ФС в режиме «только чтение»;
rw #смонтировать ФС для чтения и для записи (по умолчанию);
dev #ФС может содержать файлы блочных и символьных устройств;
exec #файлы на ФС могут быть исполняемыми;
suid #разрешить использование битов SUID и SGID;
umask #задать маску прав на файлы и директории;
user #разрешить непривилегированному пользователю монтировать и размонтировать данную ФС (возможность размонтировать имеет только тот, кто смонтировал);
users #разрешить любому непривилегированному пользователю монтировать и размонтировать данную ФС (влечет за собой noexec, nosuid, nodev, если после него явно не указано
exec, suid, dev);
noauto #значение, противоположное соответствующему без no;
nodev #значение, противоположное соответствующему без no;
noexec #значение, противоположное соответствующему без no;
nosuid #значение, противоположное соответствующему без no;
nouser #значение, противоположное соответствующему без no;
defaults #установки по умолчанию: rw,suid,dev,exec,auto,nouser,async.
---------------------------------------------------------------------------------# (swapon) монтирование раздела подкачки:
swapon /dev/sdxN #включение (монтирование) раздела подкачки sdxN.
---------------------------------------------------------------------------------# (findmnt) вывод информации о смонтированных директориях и ФС:
findmnt #вывод полной информации о всех смонтированных директориях и ФС;
findmnt -p #наблюдение в интерактивном режиме за монтированием/размонтированием;
findmnt -o TARGET,PROPAGATION #вывод флагов монтирования;
findmnt --real -o TARGET,SOURCE,FSTYPE,UUID #вывод UUID всех БУ;
findmnt --real -o UUID /dev/sdb1 #вывод UUID БУ sdb1;
• опции программы:
-p #наблюдение в интерактивном режиме;
-o #задать стролбцы для вывода информации:
TARGET #точка монтирования;
SOURCE #блочное устройство;
FSTYPE #тип ФС;
UUID #цифровой идентификатор;
PROPAGATION #флаги монтирования;
---------------------------------------------------------------------------------# (fstab) файл настроек автоматического монтирования ФС /etc/fstab:
• структура файла:
device-spec #блочное устройство:
/dev/sdxN;
LABEL=home;
PARTLABEL=root;
ID=ata-ST3910..;
PATH=pci-0000:00:1d:..;
UUID=12345678-1234-..;
PARTUUID=12345678-1234-..
mount-point #точка монтирования:
/ #корневая директория;
/boot #загрузочный раздел;
/home #домашний раздел;
/var #раздел логирования, ..;
swap #файл подкачки swap.
fs-type #тип ФС (одиночная ФС|список ФС|auto):
auto #автоматический выбор;
ext[2|3|4] #ФС для linux;
iso9660 #ФС для CD;
udf #ФС для DVD.
option #параметры монтирования, влияющие на работу драйвера ФС:
defaults #значения по умолчанию;
ro,user,uid=1234,gid=1234,umask=077
dump #резервное копирование раздела (если установлена программа dump):
0 #игнорировать;
1 #задействовать.
pass #задает порядок проверки ФС (fsck):
0 #не проверять;
1 #проверять в первую очередь (для root);
2 #проверять во вторую очередь (не root).
• примеры fstab - АВТОМОНТИРОВАНИЕ ЛОГИЧЕСКИХ ТОМОВ LVM:
/dev/mapper/fedora-00
/
ext4
defaults,x-systemd.device-timeout=0 1 1 #root;
UUID=23578-245-...
/boot
ext4
defaults
1 2 #boot вынесен на FlashUSB;
/dev/mapper/fedora-home /home
ext4
defaults,x-systemd.device-timeout=0 1 2 #home;
/dev/mapper/fedora-swap swap
swap
defaults,x-systemd.device-timeout=0 0 0 #swap.
• примеры fstab - АВТОМОНТИРОВАНИЕ pts|shm|CD|DVD|FDD|HDD[IDE]:
none
/dev/pts devpts defaults
0 0 #pts;
none
/dev/shm tmpfs
defaults
0 0 #shm;
/dev/cdrom
/mnt/cd iso9660 ro,user,noauto,unhide
0 0 #CD;
/dev/dvd
/mnt/dvd udf
ro,user,noauto,unhide
0 0 #DVD;
/dev/fd0
/mnt/fl auto
user,noauto
0 0 #FDD;
/dev/hda1
swap
swap
defaults
0 0 #HDD по IDE (swap);
/dev/hda4
/
ext3
defaults
0 1 #HDD по IDE (root);
/dev/hda3
/home
xfs
rw,suid,exec,auto,nouser,async
0 2 #HDD по IDE (home).
• опции для большинства ФС:
acl #включить обработку ACL для раздела;
async #использовать кэш при записи данных для увеличения производительности (по умолчанию);
atime #сохранять время последнего доступа к файлу (по умолчанию);
auto #автоматически монтировать при загрузке ОС или при использовании команды {mount -a} (по умолчанию);
context= # опции «*context» используются при монтировании ФС, не поддерживающих дополнительные атрибуты (дискеты или жесткие диски отформатированные в VFAT / ФС, которые
обычно не работают под SELinux / ФС на дискетах или съемных носителях с низким уровнем доверия);
defaults #опции монтирования по умолчанию (rw|suid|dev|exec|auto|nouser|async);
defcontext= - Z -;
dev #разрешить использование блочных устройств;
diratime #аналогично atime только для каталогов (по умолчанию);
dirnoatime #аналогично noatime, для каталогов;
dirsync #изменения каталогов в ФС выполняются синхронно (относится к командам: creat, link, unlink, symlink, mkdir, rmdir, mknod и rename);
encryption #определяет используемый алгоритм шифрования (используется в сочетании с опцией loop);
errors=remount-ro #при ошибке перемонтировать только для чтения;
exec #разрешить выполнять программы (бинарные файлы) на этом разделе;
fscontext= - Z -;
gid #задает группу владельца каталога;
group #разрешает обычным пользователям монтировать ФС, если одна из его групп совпадает с группой устройства (задействует nosuid и nodev, за исключением последующей
установки опций group, dev, suid) и обычно используется вместе с noauto;
iversion #номер версии структуры данных увеличивается каждый раз, когда структура данных изменяется;
keybits #определяет размер ключа для используемого алгоритма шифрования (используется в сочетании с loop и encryption);
lazytime #????
loud #выключить флаг silent;
mand #разрешить блокирование файловой системы, нужно для некоторых антивирусов;
noatime #не сохранять время последнего доступа к файлу (полезно для SSD и флешек);
noauto #не монтировать при загрузке (монтировать только вручную);
nodev #запретить использование блочных устройств;
noexec #запретить выполнять программы (бинарные файлы) на этом разделе;
nofail #не сообщать об ошибке в случае отсутствия второстепенного (без ОС) БУ;
noiversion #номер версии структуры данных не увеличивается при изменении структуры данных;
nolazytime #????
nomand _netdev #не разрешает принудительное блокирование ФС (используется для предотвращения попыток смонтировать ФС, подключенные к сети);
nomand #запретить блокирование файловой системы;
norelatime #отключить relatime;
nostrictatime #обновлять время доступа к структуре данных, в соответствии с настройками ядра по умолчанию;
nosuid #заблокировать работу SUID и SGID битов;
notail #запрет на хранение маленьких файлов в хвостах больших для ФС ReiserFS (увеличивает быстродействие);
nouser #запрещает монтирование от непревилегированного пользователя (по умолчанию);
owner #разрешает обычному пользователю монтировать ФС, если он является владельцем устройства (задействует параметры nosuid и nodev, за исключением последующего
использования owner, suid и dev);
relatime #включает запись информации о последнем времени доступа при чтении файла, если предыдущее время доступа ATIME меньше времени изменения файла CTIME (необходимо для
работы многих программ);
rootcontext= - Z -;
ro #монтировать ФС только для чтения;
rw #монтирование ФС для чтения и записи;
size #используется для указания размера ФС (только для tmpfs);
silent #ключить флаг silent;
strictatime #обновлять время доступа всегда (отключает действие предыдущих опций);
suid #разрешить работу SUID и SGID битов (небезопасно);
sync #записывать на диск все изменения сразу после того, как они были выполнены, не использовать кэширование для записываемых данных;
uid #задает владельца каталога (по умолчанию root);
umask #установить права доступа к файлам и папкам на этом разделе;
?
users #разрешает монтирование любому пользователю, а демонтировать может только тот, кто смонтировал (применяемые опции noexec|nosuid|nodev);
?
user #разрешает монтирование любому пользователю (применяемые опции noexec|nosuid|nodev).
• опции для NTFS и FAT32:
codepage=866 #включение поддержки кириллицы в названия файлов и папок для MS-DOS/fat32 разделов;
iocharset=koi8-r #добавляет поддержку кодировки koi8-r в названиях файлов и директорий;
nls=utf8 #включение поддержки utf-8 («нестандартных» символов кирилицы).
• опции для btrfs:
autodefrag #дефрагментация на «лету» (не применять для SSD);
clear_cache #очищает весь кеш свободного места после монтирования (безопасная опция, но вызывает пересоздание кеша);
compress-force=.. #применяется аналогично compress (опция force позволяет выполнять компрессию файлов, которые обычно имеют низкий коэффициент сжатия, н-р аудио или видео
форматы);
compress=lzo #включает алгоритм прозрачного сжатия lzo (быстрее gzip, немного хуже сжимает);
compress=no #без компрессии с версии ядра 3.6;
compress=zlib #включение прозрачного сжатия с алгоритмом gzip (медленнее lzo, но лучше сжимает);
debug #включает автовосстановление после монтирования, путем сканирования старых списков корней и деревьев, которые можно прочесть (практика показала что это работает, но
нужно иметь снимки ФС, т.к. опция просто вытаскивает списки корней и деревьев из снимков если таковые имеются);
degraded #актуально, если у вас есть несколько устройств в объеме Btrfs (одна из RAID конфигураций или несколько дисков в Single или DUP режиме) и одно из них не
монтируется, что позволит вам по-прежнему монтировать файловую систему, даже если неисправное устройство выдаёт ошибки;
enospc_debug #актуально при возникновении ошибки «Не хватает места»;
inode_cache #включить кэширование inode (опция может замедлить работу системы при первом запуске);
noacl #отключить контроль доступа к файлам (права);
nodatasum #не высчитывать хэш-сумму, для новых файлов (на большинстве современных CPU не даст ощутимого прироста к производительности);
nospace_cache #выключает space_cache;
recovery #монтирование с -o ssd_spread вынуждает драйвер использовать для записи преимущественно не занятые области жёсткого диска, что специально вызывает сильную
фрагментацию (может значительно ускорить недорогие SSD);
skip_balance #пропускает автоматическую балансировку после монтирования или неправильного выключения;
space_cache #кэширование данных свободных блоков (чтобы не искать их перед записью);
ssd_spread #включает некоторые оптимизации для SSD в Btrfs: минимизируется количество записей, отключается последовательная запись файлов (эта опция включается
автоматически, если вращение диска = 0 и не влечет за собой включения параметров TRIM/discard);
subvol=subvolume_name #монтирует корень указанного подраздела subvolume_name, где subvolume_name - путь к нему в корне btrfs.
• список наиболее распространенных ФС:
- adfs;
- affs;
- btrfs;
- debugfs;
- devpts;
- ext2, ext3, ext4;
- fat, vfat;
- hfs;
- hpfs;
- iso9660, udf;
- jfs;
- lzo;
- msdos;
- ncpfs;
- ntfs, ntfs-3g;
- overlay;
- reiserfs;
- smbfs;
- swap;
- ubifs;
- ufs;
- umsdos;
- usbfs;
- xfs;
- zfs.
• особенности:
- поля отделяются друг от друга произвольным количеством пробелов или знаков табуляций;
- значения в списке опций разделяются запятыми без пробелов;
- если в имени необходимо указать пробел, то он задается по форме: "\040":
["100 GB Storage" = "100\040GB\040Storage"].
- в поле pass для ФС btrfs следует всегда указывать 0, даже если эта файловая система используется в качестве корневой.
- для монтирования FlashUSB удобнее всего использовать /dev/disk/by-id.
---------------------------------------------------------------------------------# (loop) монтирование *.iso и loop-устройств:
mount -t iso9660 -o loop file.iso /mnt #монтирование CD-image.
---------------------------------------------------------------------------------# (tmpfs) создание временного высокоскоростного контейнера для работы:
mount -t tmpfs -osize=5G tmpfs /mount/point
* ФС tmpfs является высокоскоростной для чтения/записи.
==================================================================================
# ADM [dev] - ШИФРОВАНИЕ КОНТЕЙНЕРОВ, ФИЗИЧЕСКИХ И ЛОГИЧЕСКИХ ТОМОВ:
---------------------------------------------------------------------------------# (LUKSdm-crypt) шифрование разделов:
• опции программы:
-c chipher #задать алгоритм шифрования (AES-XTS);
-d key #прочитать парольную фразу из файла-ключа;
-h hash #задать хэш;
-M type #задать тип системы шифрования:
[luks|plain|loopaes|tcrypt|bitlk].
-r #только для чтения;
-s num #задать длину ключа шифрования в битах;
-t num #задать таймаут на ввод парольной фразы;
-v #подробный вывод сообщений;
--key-file key #задать ключ;
--key-slot N #указать номер слота базы паролей (0-7);
--header-backup-file /path/to/backup #задает файл backup'а заголовка тома;
--type type #задать тип системы шифрования;
• опции для TrueCrypt (VeraCrypt):
--tcrypt-hidden #открыть скрытый том;
--tcrypt-system
--tcrypt-backup
--readonly #открыть только для чтения;
--test-passphrase
--allow-discards #не может использоваться с {--tcrypt-hidden};
--veracrypt #открытие дисков зашифрованных VeraCrypt;
--veracrypt-pim #задать PIM;
--veracrypt-query-pim
• команды:
luksFormat #создать зашифрованный раздел;
luksOpen #подключить виртуальное устройство:
plainOpen | open --type plain #старый | новый синтаксис соответственно;
luksOpen | open --type luks #старый | новый синтаксис соответственно;
loopaesOpen | open --type loopaes #старый | новый синтаксис соответственно;
tcryptOpen | open --type tcrypt #старый | новый синтаксис соответственно;
bitlkOpen | open --type bitlk #старый | новый синтаксис соответственно.
erase #удалить все ключи;
luksClose #закрыть виртуальное устройство;
luksAddKey #добавить пароль-ключ;
luksRemoveKey #удалить пароль-ключ;
luksUUID #показать UUID раздела;
luksDump #вывести информацию о томе и паролях-ключах;
tcryptDump #вывести информацию о томе и паролях-ключах;
luksHeaderBackup #создать резервную копию заголовков LUKS;
luksHeaderRestore #восстановить резервную копию заголовков LUKS;
benchmark #протестировать алгоритмы шифрования.
• просмотр информации о доступных алгоритмах шифрования:
cat /proc/crypto | less #вывод всех поддерживаемых алгоритмов шифрования;
cryptsetup benchmark #протестировать доступные алгоритмы шифрования.
• некоторые алгоритмы хэширования:
sha1
sha265;
sha512;
ripemd160;
whirlpool;
argon2i;
argon2id.
• некоторые алгоритмы шифрования:
aes-cbc (128|256);
serpent-cbc (128|256);
twofish-cbc (128|256);
aes-xts (256|512);
serpent-xts (256|512);
twofish-xts (256|512).
• создание зашифрованного тома:
cryptsetup -y -v luksFormat -c aes-xts-plain -s 256 /dev/sdxN /key #зашифровать раздел sdxN алгоритмом шмфрования AES-XTS с 256-битным ключом и пользовательским секретным
ключом key;
cryptsetup -d /key luksOpen /dev/sdxN crypt #открыть зашифрованный раздел в /dev/mapper/crypt;
cryptsetup -v status crypt #просмотр состояния раздела;
mkfs.ext4 -L label /dev/mapper/crypt #отформатировать;
mkdir /mnt/crypt #создание точки монтирования;
mount /dev/mapper/crypt /mnt/crypt #смонтировать в /mnt/crypt.
• отключение созданного зашифрованного тома:
umount /mnt/crypt #отмонтировать;
cryptsetup luksClose crypt #закрыть.
• создание нового пароля-ключа и удаление старого:
cryptsetup luksAddKey --key-slot 1 /dev/sdxN #создание нового пароля;
cryptsetup luksDump /dev/sdxN #просмотр информации о томе и паролях;
cryptsetup luksRemoveKey /dev/sdxN ID-ключа #удаление старого пароля (если не указать ключ или слот, то будет удален ключ с самым большим номером слота).
• добавление файлов-ключей:
head -c 4096 /dev/urandom > /etc/skey #генерация секретного ключа размером 4096 byte;
cryptsetup luksAddKey --key-slot 7 /dev/sdxN /etc/skey #обавление ключа в 7-й слот заголовка luks;
cryptsetup luksDump /dev/sdxN #проверка слотов ключей.
• резервное копирование и восстановление заголовка тома:
cryptsetup luksHeaderBackup /dev/sdxN --header-backup-file /path/to/backup
cryptsetup luksHeaderRestore /dev/sdxN --header-backup-file /path/to/backup
dd if=/dev/sdxN of=backup.img bs=4096 #полная копия всего тома;
cryptsetup -v isLuks /dev/sdxN #проверка целостности файла LUKS.
• автомонтирование:
echo "crypto /dev/sdxN /key luks,cipher=aes-cbc-essiv:sha256" >> /etc/crypttab
echo "/dev/mapper/crypto /mnt/crypto ext4 defaults 0 0" >> /etc/fstab
mount -a
• еще пример шифрования БУ:
cryptsetup luksFormat -M luks2 /dev/sdxN #зашифровать раздел sdxN;
cryptsetup open /dev/dm-N cryptvolume #открытие шифрованного тома;
mkfs.ext4 -L root /dev/mapper/cryptvolume #форматирование;
mount /dev/mapper/cryptvolume /mount/point #монтирование;
..
umount /dev/mapper/cryptvolume #размонтирование шифрованного раздела;
cryptsetup close cryptvolume #закрытие шифрованного раздела cryptvolume.
• еще пример шифрования БУ:
cryptsetup luksFormat -c twofish-xts-plain -s 512 -h sha512 /dev/sdxN #создание;
cryptsetup open /dev/sdxN cmp #открытие;
mkfs.ntfs -f -L data /dev/mapper/cmp #форматирование;
mount /dev/mapper/cmp /mount/point #монтирование;
..
umount /mount/point #размонтирование;
cryptsetup close cmp #закрытие.
• открыть том VeraCrypt в cryptsetup:
cryptsetup open --veracrypt -M tcrypt -r /dev/sdxN cmp #только для чтения;
mount /dev/cmp /mnt
• открыть раздел/контейнер VeraCrypt в cryptsetup:
cryptsetup open --veracrypt --type tcrypt /dev/sdxN cmp
mount /dev/cmp /mnt
• открыть том BitLocker в cryptsetup:
cryptsetup open --type bitlk /dev/sdxN cmp
mount /dev/cmp /mnt
• особенности LUKSdm-crypt:
поддерживает шифрование до восьми паролей (ключей);
нумерация ключей-паролей начинается с 0;
dm-cryptLUKS поддерживает типы TrueCrypt и VeraCrypt LRW или XTS.
---------------------------------------------------------------------------------# (dm-crypt) шифрование блочных устройств:
cryptsetup -y create cmp /dev/sdxN #создание шифрованного тома;
dmsetup ls #просмотр состояния;
mkfs.ext3 -L Crypt /dev/mapper/cmp #форматирование тома;
cryptsetup close cmp #реинициализировать том;
cryptsetup open --type plain /dev/sdxN cmp #инициализация;
mount -t ext3 /dev/mapper/cmp /mnt #смонтировать том;
..
umount /mnt/ #отмонтировать том;
cryptsetup close cmp #реинициализировать том.
---------------------------------------------------------------------------------# (veracrypt) шифрование блочных устройств:
• установка:
tar xvjf veracrypt..tar.bz2 #распаковка архива;
sudo ./veracrypt..-console-.. #установка консольной версии.
• создание нового зашифрованного тома:
veracrypt -t -c #запуск менеджера шифрования.
• работа с зашифрованными томами:
veracrypt /dev/sdxN /mnt #смонтировать зашифрованный том /dev/sdxN в /mnt;
veracrypt -m ro -k key1,key2,... /dev/sdxN #смонтировать зашифрованный том /dev/sdxN в режиме только для чтения с использованием ключей в директорию по умолчанию
/media/veracryptN;
veracrypt cryptoconteyner #смонтировать зашифрованный контейнер;
veracrypt -d /mount/point #размонтировать примонтированный раздел;
veracrypt -d #размонтировать все примонтированные тома.
---------------------------------------------------------------------------------# выбор паролей и ключевых файлов:
• пароли #Необходимо избегать паролей, состоящих только из одного слова, которое можно найти в каком-либо словаре (или комбинации из таких слов). Пароль не должен содержать
никаких имён, дней рождения, телефонных или учётных номеров и любых других элементов, которые можно легко угадать. Хороший пароль это случайная комбинация из букв в верхнем и
нижнем регистрах, цифр и специальных символов, таких как @ ^ = $ * + и т.д. Настоятельно рекомендуется выбирать пароль, состоящий не менее чем из 20 символов (чем длиннее, тем
лучше), так как короткие пароли несложно взломать методом перебора (brute-force).
• ключевые файлы #Чтобы сделать атаки перебором невозможными, размер ключевого файла должен быть не менее 30 байт. Если для тома используется несколько ключевых файлов, хотя бы
один из них должен иметь размер 30 байт или больше. Обратите внимание, что 30-байтовое ограничение предполагает большой объём энтропии в ключевом файле. Если первые 1024 килобайта
файла содержат лишь небольшой объём энтропии, такой файл нельзя использовать в качестве ключевого (вне зависимости от размера файла).
==================================================================================
# ADM [dev] - КОПИРОВАНИЕ БЛОЧНЫХ УСТРОЙСТВ:
---------------------------------------------------------------------------------# (dd) копирование данных:
• использование - СЖАТИЕ ИНФОРМАЦИИ НА РАЗДЕЛЕ ПЕРЕД КОПИРОВАНИЕМ:
mount /dev/sdxN /mnt #монтирование сжимаемого раздела;
dd if=/dev/zero of=/mnt/zero bs=4k #забить нулями по максимуму;
rm -f /mnt/zero #удаление файла забитого нулями.
• использование - ВАРИАНТЫ КОПИРОВАНИЯ ДАННЫХ:
dd if=/dev/sdx of=~/disk.img bs=5M #сделать копию диска;
dd if=~/disk.img of=/dev/sdx bs=5M #восстановить из копии;
dd if=/dev/zero of=file.img bs=1M count=512 #создать пустой файл 512M;
dd if=/dev/sdx of=mbr.img bs=1b count=1 #создание резервной копии MBR;
dd if =/dev/sdx | bzip2 disk.img.bz2 #перенаправить вывод в архиватор;
dd if=/dev/zero of=/dev/sdx #полное стирание диска (заполнение нулями);
dd if=/dev/sr0 of=~/CD.iso bs=2048 conv=noerror #копировать CD;
dd if=/dev/urandom of=key bs=1024 count=2 #создать 2048-битный ключ.
• использование - BackUp:
dd if=/dev/sda of=partitiontable.bin bs=1 skip=446 count=64 #создание BackUp'а;
dd if=partitiontable.bin of=/dev/sda bs=1 seek=446 count=64 #восстановление из BackUp'а.
• опции программы:
bs #количество байт читаемое и записываемое за один раз;
1с #один символ;
1b #512 байт;
1kB #1000 байт;
1K #1024 байт;
1MB #1000 килобайт;
1M #1024 килобайт;
1GB #1000 мегабайт;
1G #1024 мегабайт.
cbs #количество байт записываемое за один раз;
count #количество блоков, размер которых задается параметром bs;
conv #применить фильтры к потоку данных;
ibs #читать указанное количество байт за раз;
obs #записывать указанное количество байт за раз;
seek #пропустить указанное количество байт в начале устройства для чтения;
skip #пропустить указанное количество байт в начале устройства вывода;
status #указывает насколько подробным сделать вывод;
iflag, oflag #задать дополнительные флаги работы для устройства ввода и вывода, основные из них: nocache, nofollow.
noerror #отключить реагирование на ошибки;
notrunc #не обрезать нули в файле на выходе, записывая их как нули;
sync #дополнять каждый входящий блок нулями до размера ibs-size.
---------------------------------------------------------------------------------# (pv) прогрессбар - создает пайповый тоннель при копировании/...:
dd if=/dev/zero | pv -s 3788M | dd of=/dev/sdx #объем флэшки 3.7GB=3788MB;
dd image.iso | pv -s 2G | dd of=/dev/sdx bs=2048 #размер iso-образа 2GB.
---------------------------------------------------------------------------------# (backup) ряд применений утилиты dd:
tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
dd bs=1M if=/dev/sda | gzip | ssh user@remote 'dd of=sda.gz'
dd if=/dev/sda1 bs=8096 | gzip -9cf > root.gz
gunzip -c /path/root.gz | dd of=/dev/sda1 bs=8096
• создание и восстановление архивной копии:
dd bs=1M if=/dev/sdxN | gzip -c > file.gz #создание архивированной копии;
gunzip -dc file.gz | dd of=/dev/sdxN bs=1M #восстановление из архива;
dd if=/dev/sdx1 of=/dev/sdx2 skip=1 seek=1 bs=4k conv=noerror #пропустить MBR (необходимо если sdx2 меньше sdx1).
• MBR:
dd if=/dev/sda of=/mbr_sda.bak bs=512 count=1 #резервная копия MBR;
dd if=/dev/zero of=/dev/sda bs=512 count=1 #удалить MBR и таблицу размещения разделов;
dd if=/mbr_sda.bak of=/dev/sda bs=512 count=1 #восстановить MBR целиком;
dd if=/mbr_sda.bak of=/dev/sda bs=446 count=1 #восстановить только загрузчик;
dd if=/mbr_sda.bak of=/dev/sda bs=1 count=64 skip=446 seek=446 #восстановить таблицу размещения разделов.
==================================================================================
# (rsync) архивирование (копирование) данных:
rsync -axzSRP --compress-level=9 /out/ /backup/ #создать копию.
• local:
rsync -a /out/ /backup/ #рекурсивное копирование со всеми атрибутами;
rsync -a --del /out/ /backup/ #удалить копируемый объект.
• ssh:
rsync -a /out/ user@host:/backup/ #копирование на хост;
rsync -a user@host:/out/ /backup/ #копирование с хоста;
rsync -a --exclude /tmp/ /out/ user@host:/backup/ #исключить /tmp;
rsync -a -e "ssh -p 12345" /out/ user@host:/backup/ #задать порт 12345.
• опции программы:
-a #режим архивирования (как {-rlptgoD});
-A #сохранять атрибуты acls;
-b #создать BackUp;
-d #копирование без рекурсии;
-D #сохранять файлы устройств;
-g #сохранять атрибуты group;
-H #сохранять жесткие ссылки;
-l #сохранять симлинки;
-o #сохранять атрибуты owner;
-p #сохранять атрибуты объектов;
-P #выводить прогрессбар во время работы программы;
-q #тихий режим;
-r #рекурсия;
-R #относительные пути;
-S #эффективная обработка файлов;
-t #сохранять атрибуты times;
-u #выполнить обновление результирующих объектов;
-v #подробный вывод ошибок;
-x #не пересекать границы ФС;
-X #сохранять атрибуты xattrs;
-z #задействовать компрессию;
--compress-level=num #задать уровень компрессии;
--exclude=PATTERN #исключить заданные объекты;
--exclude-from=file #задать file со списком исключаемых объектов;
--daemon #запустить как демон;
--del #удаление объектов источника во время передачи ({--delete-during});
--delete-after # удаление объектов источника после передачи;
--delete-during #удаление объектов источника во время передачи;
--ignore-errors #игнорировать I/O ошибки.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [dev|file] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# ADM [dev|file] - ВЫВОД ИНФОРМАЦИИ О ФАЙЛАХ И ДИРЕКТОРИЯХ:
---------------------------------------------------------------------------------# типы системных файлов и устройств:
0600 | crw------- | cu[rw-]g[---]o[---] /dev/tty0 #символьное устройство;
0600 | brw------- | bu[rw-]g[---]o[---] /dev/sda #блочное устройство диск;
0640 | brw-rw---- | bu[rw-]g[rw-]o[---] /dev/md127 #блочное устройство RAID;
0666 | srw-rw-rw- | su[rw-]g[rw-]o[rw-] /run/systemd/journal/dev-log #сокет логирования.
---------------------------------------------------------------------------------# (ls) просмотр содержимого директорий:
ls -1A #полный вывод без атрибутов;
ls -lAh #полный вывод с: атрибутами, [K|M|G|..];
ls -lAhS #полный вывод с: атрибутами, [K|M|G|..], сортировкой по размеру;
ls -lAht #полный вывод с: атрибутами, [K|M|G|..], сортировкой по времени;
ls -lAhZ #полный вывод с: атрибутами, [K|M|G|..], контекстом SELinux;
ls -lAhR #полный вывод с: атрибутами, [K|M|G|..], рекурсией по поддиректориям;
ls -lAh --author #полный вывод с: атрибутами, [K|M|G|..], авторством.
• опции программы:
-1 #перечислять по одному файлу на строке (символ «\n» не учитывается, если указан -q или -b);
-a #вывод всех файлов, в т.ч. скрытых;
-A #вывод всех файлов, в т.ч. скрытых, + изъять из вывода директории ".|..";
-b #печатать экранирующие последовательности в стиле С для не графических символов;
-B #не выдавать файлы, оканчивающиеся на "~";
-c #{-l} показывать ctime и сортировать по имени (иначе: сортировать по ctime, сначала самые новые);
-c #{-lt} сортировать и показывать по ctime (времени последнего изменения файла);
-C #выдавать список в несколько колонок;
-d #выдавать имена каталогов, а не их содержимое;
-D #генерировать вывод для режима Emacs dired;
-f #не сортировать (включает -aU, выключает -ls --color);
-F #добавлять к элементам индикатор - один из [*/=>@|];
-g #как -l, но не выводить владельца (вывести только группу);
-G #в длинном формате не печатать имена групп;
-h #{-l и/или -s} печатать размеры в удобном для человека виде, н-р [1K|234M|2G];
-H #следовать по символьным ссылкам в командной строке;
-i #показывать иноду каждого файла;
-I ШАБЛОН #не показывать записи, соответствующие ШАБЛОНУ оболочки;
-k #по умолчанию использовать блоки по 1024 байта при показе использования диска (только с {-s} и для итогового значения каталога);
-l #использовать широкий формат (вывод списком);
-L #показывая информацию для символьной ссылки, показывать информацию о файле, на который ссылка ссылается;
-m #выдавать список на всю ширину через запятую;
-n #как -l, но выдавать числовые UID и GID;
-N #печатать имена как есть, без экранирования;
-o #как -l, но не выводить информацию о группе;
-q #выводить ? вместо непечатных символов;
-p #добавлять индикатор / к каталогам;
-Q #заключать имя записей в кавычки;
-r #обратный порядок сортировки;
-R #рекурсивно показывать каталоги;
-s #печатать размер каждого файла в блоках;
-S #сортировать по размеру файлов, большие сначала;
-t #сортировать по времени;
-T РАЗМЕР #использовать табуляцию указанного РАЗМЕРА, а не 8;
-u #{-l} показывать время доступа и сортировать по имени (иначе сортировать по времени доступа, сначала самые новые);
-u #{-lt} сортировать и показывать время доступа;
-U #не сортировать (выводить в соответствии с физическим расположением в каталоге);
-v #сортировать по номерам (версии) в текстовом представлении;
-w ЧИСЛО #устанавливает ширину вывода равной ЧИСЛО (0 означает отсутствие ограничения);
-x #перечислять по строкам, а не по столбцам;
-X #сортировать по расширению в алфавитном порядке;
-Z #печатать любой контекст безопасности SELinux каждого файла;
--author #{-l} печатать автора каждого файла;
--block-size=РАЗМЕР #использовать блоки указанного РАЗМЕРА (н-р "---block-size=M");
--color[=КОГДА] #расцвечивать вывод, КОГДА может быть:
"always" (по умолчанию);
"auto";
"never".
--dereference-command-line-symlink-to-dir #следовать по всем символьным ссылкам в командной строке, которые указывают на каталог;
--file-type #добавлять к элементам индикатор - один из [/=>@|];
--format=СЛОВО #across -x, commas -m, horizontal -x, long -l, single-column -1, verbose -l, vertical -C;
--full-time #вывод полной информации о времени модификации (синоним -l --time-style=full-iso);
--group-directories-first #группировать каталоги раньше файлов (может дополняться параметром --sort, но любое использование --sort=none (-U) выключает группировку);
--hide=ШАБЛОН #не показывать записи, соответствующие ШАБЛОНУ оболочки (отменяется параметрами -a или -A);
--hyperlink=КОГДА #имена файлов гиперссылок, КОГДА может быть:
"always" (по умолчанию);
"auto";
"never".
--indicator-style=СТИЛЬ #добавлять к именам элементов индикатор с указанным СТИЛЕМ:
classify (-F);
file-type (--file-type);
none (по умолчанию);
slash (-p).
--quoting-style=ТИП #использовать ТИП заключения в кавычки:
[literal|locale|shell|shell-always|shell-escape|shell-escape-always];
заменяет переменную окружения QUOTING_STYLE.
--show-control-chars #показывать непечатные символы (по умолчанию, если программа не "ls" и вывод не на терминал);
--si #то же, что и -h, но использовать степень 1000, а не 1024;
--sort=СЛОВО #сортировать по СЛОВУ, а не по имени:
extension (расширение) -X;
none (без сортировки) -U;
size (размер) -S;
time (время) -t;
version (версия) -v.
--time-style=TIME_STYLE #формат даты/времени {-l}:
[full-iso|long-iso|iso|locale|+ФОРМАТ];
--time-style=full-iso #вывод полной информации о времени модификации;
--time-style=long-iso #информация о модификации "ГГ-ММ-ДД-ЧЧ-ММ".
--time=СЛОВО #изменить значения по умолчанию, использующие время изменения:
время доступа (-u): [atime|access|use];
время изменения (-c): [ctime|status];
время создания: [birth|creation];
с параметром -l показываемое время задаётся СЛОВОМ;
если --sort=time, сортировать по СЛОВУ (сначала новые).
• РАЗМЕР:
- задаётся целым числом и необязательной единицей измерения (10K это 10*1024):
[K|M|G|T|P|E|Z|Y] #степень 1024;
[KB|MB|..] #степень 1000;
[KiB=K|MiB=M|..].
---------------------------------------------------------------------------------# (tree) вывод объектов ФС в виде дерева:
tree #вывод объектов ФС в виде дерева начиная с текущей директории.
• опции вывода:
-a [.|..] #вывод всех объектов:
-a . #выводит скрытые файлы и папки для текущей директории;
-a .. #выводит скрытые файлы и папки, начиная с родительской директории.
-d #выводить только директории;
-f #выводить полный путь к объектам;
-I pattern #задать фильтр скрываемых объектов;
-l #следовать по символическим ссылкам;
-L num #задать глубину погружения;
-o file #записать stdout в file (bin);
-P pattern #вывод только заданного в фильтре объекта;
--prune #не выводить пустые каталоги;
-x #оставаться в рамках текущей ФС.
• опции атрибутов:
-D #вывод даты изменения объекта;
--device #вывод номеров устройств;
-F #вывод дополнительных символов [/|*|=|@|||>];
-g #вывод группы объекта;
-h #вывод размера объекта в [K|M|G|..];
--inodes #вывод инодов объектов;
-p #вывод атрибутов разрешений объекта;
-Q #добавлять кавычки;
-s #вывод размера объекта;
-u #вывод пользователя объекта.
• опции сортировки:
-r #реверс;
--sort=type #сортировать по заданному типу:
[name|version|size|mtime|ctime];
-t #сортировать по времени модификации;
-U #не сортировать объекты;
-v #сортировать по алфавиту.
• опции отображения:
-A #ANSI;
-C #вывод с подцветкой;
-i #вывод без отрисовки линий и выравнивание по правому краю;
-n #монохромный вывод;
-S #CP437.
• опции формата вывода:
-J #вывод в формате JSON;
-X #вывод в формате HTML.
---------------------------------------------------------------------------------# (attr) управление скрытыми атрибутами объекта:
attr -lq file #вывод списка скрытых атрибутов file;
attr -Sg selinux file #вывод содержимого атрибутов selinux для file.
• опции программы:
-g #вывод содержимого атрибутов;
-l #вывод подробного списка скрытых атрибутов;
-L #следовать по симлинкам;
-q #тихий режим;
-r #удаление правил;
-R #атрибуты пространства пользователя root;
-s #установка правил;
-S #вывод атрибутов отвечающих за безопасность;
-V value #задать содержимое устанавливаемых правил.
---------------------------------------------------------------------------------# (getfattr) просмотр скрытых атрибутов объекта:
getfattr -d file #просмотр всех скрытых атрибутов file;
getfattr -hn user.xdg.origin.url file #просмотр сетевых атрибутов file.
• опции программы:
--absolute-names #использовать абсолютные имена;
-d #вывод всех скрытых атрибутов;
-e [text|hex|base64] #задать форму вывода скрытых атрибутов;
-h #не следовать по симлинкам;
-L #следовать по симлинкам в директориях;
-m pattern #задать регулярное выражение для вывода скрытого атрибута
-n name #вывод заданного скрытого атрибута;
--only-values #выводить только raw-содержимое (без преобразования);
-P #не следовать по симлинкам в директориях;
-R #рекурсия;
-- #окончание опций.
---------------------------------------------------------------------------------# (setfattr) установка скрытых атрибутов объекта:
setfattr -hx user.xdg.origin.url file #удаление сетевых атрибутов file.
• опции программы:
-h #не следовать по симлинкам;
-n name #установить заданный скрытый атрибут;
--restore=file #восстановить скрытые атрибуты заданного file {dump};
-v value #задать содержимое устанавливаемого скрытого атрибута;
-x name #удалить заданный скрытый атрибут.
---------------------------------------------------------------------------------# (du) вывод информации об объеме директорий и файлов:
du -h file #вывод информации об объеме file;
du --apparent-size file #вывод действительного размера file;
du -hd0 dir #вывод информации об объёме dir;
du -hd1 dir #вывод информации об объеме dir со всеми файлами;
du -shc dir #вывод информации об объеме dir со всеми файлами;
du -ah dir #рекурсивный вывод информации об объеме папок и файлов в /dir.
• опции программы:
-0 #заканчивать каждую выводимую строку NUL, а не символом новой строки;
-a #печатать объём для всех файлов, а не только каталогов;
-B РАЗМЕР #использовать блоки указанного РАЗМЕРА (н-р, "-BM" выводит размеры в единицах, равных 1048576 байтам);
-b #эквивалентно "--apparent-size --block-size=1";
-c #выводить общий итог (total);
-d N #задать глубину вхождения (выводить общий размер каталога, если 0);
-D #следовать только по символьным ссылкам, которые перечислены в командной строке;
-h #печатать размеры в удобном для человека виде [1K|234M|2G];
-H #эквивалентен параметру -D;
-k #синоним --block-size=1K;
-L #разыменовывать символьные ссылки;
-l #складывать размеры, если есть несколько жёстких ссылок;
-m #синоним --block-size=1M;
-P #не следовать по символьным ссылкам (по умолчанию);
-s #показывать только итог для каждого аргумента;
-S #у каталогов не включать размер подкаталогов;
-t РАЗМЕР #исключить элементы, которые меньше РАЗМЕРА, если это значение положительно, или размер которых больше, если это значение отрицательно;
-x #пропускать каталоги из других файловых систем;
-X ФАЙЛ #исключить файлы, совпадающие с любым шаблоном из ФАЙЛа;
--apparent-size #печатать действительные размеры, а не занимаемое на диске место (хотя действительный размер обычно меньше, иногда он может быть больше из-за дыр в
"прореженных" (sparse) файлах, внутренней фрагментации, косвенных блоков и тому подобного);
--exclude=ШАБЛОН #исключить файлы, совпадающие с ШАБЛОНом;
--files0-from=Ф #вывести отчёт об использовании диска, чьи имена файлов (завершённые нулем) перечислены в файле Ф (если Ф равно -, то читать имена файлов из стандартного
ввода);
--inodes #вывести информацию об использованных инодах, а не о блоках;
--si #как -h, но использовать множитель 1000, а не 1024;
--summarize #выводить общий размер каталога;
--time-style=СТИЛЬ #показывать время, используя СТИЛЬ:
[full-iso|long-iso|iso|+ФОРМАТ] (ФОРМАТ интерпретируется как в «date»).
--time #показывать время последнего изменения файлов в каталоге или во всех его подкаталогах;
--time=СЛОВО #показывать указанное СЛОВОМ время, а не время изменения:
[atime|access|use|ctime|status].
---------------------------------------------------------------------------------# (stat) вся информация о файле или директории:
stat file #вывод всей доступной информации об указанном файле file.
• опции программы:
-c ФОРМАТ #использовать указанный ФОРМАТ, а не принимаемый по умолчанию (вставлять символ новой строки после каждого использования ФОРМАТА);
-f #показать состояние файловой системы, а не файла;
-L #следовать по ссылкам;
-t #выводить информацию в компактной форме;
--cached=РЕЖИМ #задать, как использовать кэшированные атрибуты (полезно для удалённых ФС);
always #кэшированные атрибуты используются если доступны;
default #выбор остаётся за используемой файловой системой;
never #атрибуты синхронизируются с самыми новыми.
--printf=FORMAT #как -f, но интерпретировать экранирующие последовательности и не выводить символ новой строк в конце (если вам нужен символ новой строки, вставьте в
ФОРМАТ \n);
--terse #эквивалентно следующему ФОРМАТУ:
[%n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o %C].
--terse --file-system #эквивалентно следующему ФОРМАТУ:
[%n %i %l %t %s %S %b %f %a %c %d].
• допустимые форматные последовательности для файлов (без --file-system):
%a #биты прав в восьмеричной форме (флаги printf «#» и «0»);
%A #биты прав и тип файла в читаемой форме;
%b #число выделенных блоков (см. %B);
%B #размер блока, сообщаемого %b, в байтах;
%C #строка контекста безопасности SELinux;
%d #номер устройства, десятичный;
%D #номер устройства, шестнадцатеричный;
%f #низкоуровневый режим, шестнадцатеричный;
%F #тип файла;
%g #ID группы-владельца;
%G #имя группы-владельца;
%h #количество жёстких ссылок;
%i #количество инод;
%m #точка монтирования;
%n #имя файла;
%N #экранированное имя файла, символьная ссылка разыменовывается;
%o #оптимальный размер блока ввода/вывода;
%s #полный размер в байтах;
%t #основной тип устройства, шестнадцатеричный формат, для специальных символьных/блочных устройств;
%T #второстепенный тип устройства, шестнадцатеричный формат, для специальных символьных/блочных устройств;
%u #ID пользователя-владельца;
%U #имя пользователя-владельца;
%w #время создания файла (-, если неизвестно);
%W #время создания файла в секундах с начала Эпохи (0, если неизвестно);
%x #время последнего доступа;
%X #время последнего доступа в секундах с начала Эпохи;
%y #время последней модификации данных;
%Y #время последней модификации данных в секундах с начала Эпохи;
%z #время последнего изменения состояния, в понятном человеку виде;
%Z #время последнего изменения состояния в секундах с начала Эпохи.
• допустимые форматные последовательности для файловых систем:
%a #количество свободных блоков, доступных для обычного пользователя;
%b #общее количество блоков данных в файловой системе;
%c #общее количество файловых инод в файловой системе;
%d #количество свободных файловых инод в файловой системе;
%f #количество свободных блоков в файловой системе;
%i #идентификатор файловой системы, шестнадцатеричный;
%l #максимальная длина имени файла;
%n #имя файла;
%s #размер блока (для быстрейшей передачи);
%S #фундаментальный размер блока (для подсчета блоков);
%t #тип файловой системы, шестнадцатеричный;
%T #тип файловой системы в понятном для человека виде.
• временная метка:
atime #время доступа обновляется при открытии файла, либо когда он используется для таких операций как: grep, cat, head и т.д.;
mtime #время модификации обновляется при изменении содержимого файла, либо его сохранении;
ctime #время изменения обновляется при изменения времени модификации, изменении его атрибутов (владелец, права), либо при перемещении на другую ФС.
---------------------------------------------------------------------------------# (file) распознавание типа файла:
file /path/to/filename #вывод типа файла и его базовых характеристик;
file -i file #вывод кодировки файла.
• опции программы:
-i #вывод кодировки текстового файла;
-k #подробный вывод информации о файле.
---------------------------------------------------------------------------------# (less) просмотр содержимого текстовых файлов:
less file #просмотр file.
• опции программы:
-S #вывод строк содержимого на всю ширину экрана.
• комбинации клавиш:
[h] #хелп;
[q] #выход;
[j] #листать на одну строку вниз;
[k] #листать на одну строку вверх;
[d] #листать на половину экрана вниз;
[w] #листать на половину экрана вверх;
[f] #листать на один экран вниз;
[b] #листать на один экран вверх;
[g] #перейти в начало документа;
[G] #перейти к окончанию документа;
[r] #обновить (передернуть) экран;
[/string] #поиск strign;
[n] #перейти к следующему совпадению;
[N] #перейти к предыдущему совпадению.
---------------------------------------------------------------------------------# (strings) просмотр бинарных файлов:
strings -32 -a binfile #просмотр binfile.
• опции программы:
-[ЧИСЛО] #длиной в [ЧИСЛО] символов (по умолчанию 4);
-a #сканировать весь файл, не только раздел данных (по умолчанию);
-d #сканировать только раздел данных;
-e {s|S|b|l|B|L} #выбрать размер символа и порядок байт:
[s = 7-бит|S = 8-бит|{b,l} = 16-бит|{B,L} = 32-бит];
[s={7 single-bit-byte characters ASCII ISO8859}];
[S={8 single-bit-byte characters ASCII ISO8859}];
[l={16 bit littleendian Unicode UTF-16/UCS-2}];
[L={32 bit littleendian Unicode UTF-16/UCS-2}];
[b={16 bit bigendian Unicode UTF-16/UCS-2}];
[B={32 bit bigendian Unicode UTF-16/UCS-2}].
-f #показывать имя файла перед каждой строкой;
-n ЧИСЛО #искать и показывать любые последовательности с завершающим нулем;
-o #то же, что и --radix=o;
-s СТРОКА #строка используется для разделения строк в выводе @<файл> читать параметры из <файла>;
-t {o|d|x} #показать местоположения строки по основанию {o}oct|{x}hex|{d}dec (8|10|16);
-T BFD-ИМЯ #указать формат двоичного файла;
-w #включать все пробельные символы как корректные строковые символы.
---------------------------------------------------------------------------------# (cksum) вывод контрольной суммы CRC и числа байт в файле:
cksum file #контрольная сумма и количество байт в file.
---------------------------------------------------------------------------------# (md5sum) проверка контрольных сумм md5:
md5sum file #создать контрольную сумму md5 для file;
md5sum -c file #прочитать список контрольных сумм из file и сверить с файлами в текущем каталоге.
• опции программы:
-b #читать в двоичном режиме;
-c ФАЙЛ #читать суммы MD5 из ФАЙЛов и сверять их;
-t #читать в текстовом режиме (по умолчанию);
-z #завершать каждую выводимую строку NUL, а не символом новой строки и выключить экранирование имени файла;
--tag #создать контрольную сумму в стиле BSD.
• следующие параметры полезны только при проверке контрольных сумм:
-w #предупреждать о неправильно составленных строках контрольных сумм;
--ignore-missing #не сообщать или прерываться при отсутствии файлов;
--quiet #не выводить OK для каждого успешно проверенного файла;
--status #не производить вывод, выходное значение показывает успех проверки;
--strict #ненулевое выходное значение, если строки контрольных сумм в некорректном формате.
---------------------------------------------------------------------------------# (sha256sum) проверка контрольных сумм sha256:
sha256sum file #создать контрольную сумму sha256 для file;
sha256sum -c file #прочитать список контрольных сумм из file и сверить с файлами в текущем каталоге.
• опции программы:
- Z ---------------------------------------------------------------------------------# (sha512sum) проверка контрольных сумм sha512:
sha512sum file #создать контрольную сумму sha512 для file;
sha512sum -c file #прочитать список контрольных сумм из file и сверить с файлами в текущем каталоге.
• опции программы:
- Z ---------------------------------------------------------------------------------# (od) представление входного потока в восьмеричном, hex и т.д. формате:
od file #вывод file в восьмеричных двухбайтовых единицах.
• опции программы:
-A ОСНОВАНИЕ #выходной формат для файловых смещений (ОСНОВАНИЕ может быть [doxn] — Decimal|Octal|Hex|None);
-j Н #пропустить первые Н байт;
-N Н #считывать только Н байт;
-S Н #выводить строки длиной, по меньшей мере, Н графических символов (если Н не задано, от используется значение 3);
-t ТИП #выбирает формат или форматы вывода;
-v #не помечать символом * невыводимые строки;
-w Н #выводить Н байт в каждой выходной строке (если Н не задано, то используется Н=32);
--endian={big|little} #переставлять местами входные байты согласно указанного порядку;
--traditional #принимать аргументы как в третьей форме выше.
• традиционные спецификации формата можно писать вперемешку, они объединяются:
-a {синоним -t a} #именованные символы, старший бит игнорируется;
-b {синоним -t o1} #восьмеричные байты;
-c {синоним -t c} #печатные символы или управляющие последовательности с обратной косой чертой;
-d {синоним -t u2} #беззнаковые десятичные двухбайтовые единицы;
-f {синоним -t fF} #числа с плавающей точкой;
-i {синоним -t dI} #десятичные целые;
-l {синоним -t dL} #десятичные длинные целые;
-o {синоним -t o2} #восьмеричные двухбайтовые единицы;
-s {синоним -t d2} #десятичные двухбайтовые единицы;
-x {синоним -t x2} #шестнадцатеричные двухбайтовые единицы.
• ТИП составляется из одного или нескольких следующих спецификаций:
a #именованный символ, старший бит игнорируется;
c #печатный символ или управляющая последовательность;
d[ЧИСЛО] #знаковое десятичное целое размером в ЧИСЛО байт;
f[ЧИСЛО] #число с плавающей точкой размером в ЧИСЛО байт;
o[ЧИСЛО] #восьмеричное целое размером в ЧИСЛО байт;
u[ЧИСЛО] #беззнаковое десятичное целое размером в ЧИСЛО байт;
x[ЧИСЛО] #шестнадцатеричное целое размером в ЧИСЛО байт.
• особенности:
- печатает однозначное (по умолчанию байтовое восьмеричное) представление ФАЙЛА на стандартный вывод;
- если указано несколько ФАЙЛОВ, то для формирования ввода выполняется их объединение по порядку их указания;
- если ФАЙЛ не задан или задан как -, читает стандартный ввод;
- если применимы и первая, и вторая формы вызова, предполагается вторая форма, если последний операнд начинается на + или (если заданы два операнда) на цифру;
- операнд СМЕЩЕНИЕ означает -j СМЕЩЕНИЕ;
- МЕТКА это псевдоадрес первого напечатанного байта (она увеличивается в процессе вывода);
- префикс 0x или 0X задает СМЕЩЕНИЕ или МЕТКУ как шестнадцатеричные числа, суффикс . — как восьмеричные, а суффикс b умножает на 512;
- если ФОРМАТ — одно из [doux], ЧИСЛО может задаваться как C для sizeof(char)|S для sizeof(short)|I для sizeof(int)|L для sizeof(long);
- если ФОРМАТ равен f, то ЧИСЛО также может быть F для sizeof(float)|D для sizeof(double)|L для sizeof(long double);
- добавляет суффикс z к любым показываемым печатным символам в конце каждой выходной строки;
- Н задаётся шестнадцатеричным числом с префиксом 0x или 0X, и может содержать умножающий суффикс:
[b
512]
[KB
1000]
[K
1024]
[MB
1000*1000]
[M
1024*1024]
и так далее для [G|T|P|E|Z|Y]
двоичные префиксы: [KiB=K|MiB=M|..]
---------------------------------------------------------------------------------# (cmp) побитовое сравнение двух файлов:
cmp file1 file2 #сравнение двух файлов и вывод первого различия (если они идентичны, то сообщения не выводятся);
cmp -l file1 file2 #сравнение двух файлов и вывод всех различий.
• опции программы:
-b #выводить различающиеся байты;
-i Н #пропустить первые Н байт ввода;
-i Н1:Н2 пропустить первые Н1 байт файла ФАЙЛ1 и первые Н2 байт файла ФАЙЛ2;
-l #выводить номера и значения всех различающихся байт;
-n Н #сравнивать не более Н байт;
-s #не показывать обычные сообщения.
• особенности программы:
- необязательные Н1 и Н2 ? это число байт, которые следует пропустить в каждом файле (по умолчанию 0);
- к значениям Н можно приписывать один из следующих множительных суффиксов:
[kB 1000|K 1024|MB 1,000,000|M 1,048,576|GB 1,000,000,000|G 1,073,741,824|..|T|P|E|Z|Y].
- если ФАЙЛ не задан или задан как ?-?, то читается стандартный ввод;
- выходной статус равен 0, если входные файлы идентичны, 1 ? если различаются, и 2 в случае неполадок.
==================================================================================
# ADM [dev|file] - ОПЕРАЦИИ С ДИРЕКТОРИЯМИ И ФАЙЛАМИ:
---------------------------------------------------------------------------------# (mkdir) создание директорий:
mkdir dira dirb dirc #создание сразу трех директорий;
mkdir -pv dira/dirb/dirc #создание дерева поддиректорий;
mkdir -pv dira/dirb/dirc #создание дерева поддиректорий;
mkdir -pv dira/{dirb.1,dirb.2,dirb.3}/dirc #создание дерева поддиректорий;
mkdir -pv dira/{dirb.1/dirc,dirb.2,dirb.3} #создание дерева поддиректорий.
• опции программы:
-m MODE #задать права на директорию в цифровом виде (0744);
-p #рекурсия;
-v #печатать сообщение о каждом созданном каталоге;
-Z #установить контекст безопасности SELinux каждого создаваемого каталога равным типу по умолчанию;
--context=CTX #подобно -Z, или если указан CTX, то установить контекст безопасности SELinux или SMACK равным CTX.
----------------------------------------------------------------------------------
# (touch) создание файлов:
touch file #создать file;
touch file{1..10} #создать file1..file10.
• опции программы:
-a #изменить только время доступа (timestamp);
-c #не создавать файлы;
-d СТРОКА #проанализировать СТРОКУ и использовать её вместо текущего времени;
-f #(игнорируется);
-h #изменяет символьные ссылки, а не файлы, на которые они ссылаются (имеет смысл только на системах, где можно изменять владельца символьной ссылки);
-m #изменять только время изменения;
-r ФАЙЛ #использовать время ФАЙЛА вместо текущего времени;
-t ВРЕМЯ #использовать [[ВВ]ГГ]ММДДччмм[.сс] вместо текущего времени;
--time=СЛОВО #изменить время, указанное СЛОВОм:
[access|atime|use] эквивалентны -a, значения [modify|mtime] эквивалентны -m.
---------------------------------------------------------------------------------# (fallocate) мгновенное создание файлов фиксированного размера:
fallocate -l 10M file #создание file размером 10M.
• опции программы:
-d #удалить из файла нулевое пространство;
-l num #задать размер файла в байтах;
-o num #задать смещение в байтах;
-v #подробный вывод сообщений.
---------------------------------------------------------------------------------# (ln) создание ссылок:
ln file link #создание жесткой ссылки link на файл file (backup);
ln -s file link #создание символической ссылки link на файл file (link).
• опции программы:
-b #то же, что и --backup, но не принимает аргумент;
-d|-F #позволить суперпользователю создавать жесткие ссылки на каталоги (вероятно, это не получится из-за системных ограничений, даже для суперпользователя);
-f #удалять существующие целевые файлы;
-i #спрашивать перед удалением целей;
-L #разыменовывать ЦЕЛИ, являющиеся символьными ссылками;
-n #рассматривать ИМЯ_ССЫЛКИ, как обычный файл, если это символьная ссылка на каталог;
-P #создавать жёсткие ссылки непосредственно на символьные ссылки;
-r #создавать символьные ссылки относительно расположения ссылки;
-s #создавать символьные ссылки, вместо жёстких ссылок;
-S СУФФИКС #переопределяет обычный суффикс резервных копий;
-t КАТ указать КАТАЛОГ, в котором создавать ссылки;
-T #всегда считать ИМЯ_ССЫЛКИ обычным файлом;
-v #печатать имя каждого файла при создании ссылки;
--backup=КОНТРОЛЬ #создать резервную копию для каждого целевого файла.
• пояснения:
- по умолчанию создаются жёсткие ссылки, символьные с параметром --symbolic;
- по умолчанию, каждая цель (имя новой ссылки) не должна существовать;
- при создании жёстких ссылок каждая ЦЕЛЬ должна существовать;
- символьные ссылки могут содержать произвольный текст;
- при разыменовании относительная ссылка интерпретируется относительно родительского каталога;
- по умолчанию суффикс для запасных копий «~», если только не установлена переменная окружения SIMPLE_BACKUP_SUFFIX или не задан параметр --suffix;
- способ контроля версий может быть установлен при помощи ключа --backup или переменной окружения VERSION_CONTROL:
[none|off] #никогда не создавать резервных копий (даже если указан параметр --backup);
[numbered|t] #создавать нумерованные копии;
[existing|nil] #пронумеровать, если уже существуют пронумерованные резервные копии, иначе создавать простые;
[simple|never] #всегда создавать простые копии.
- при использовании параметра -s игнорируются -L и -P (иначе, последний параметр определяет поведение, когда ЦЕЛЬЮ является символьная ссылка, по умолчанию -P).
---------------------------------------------------------------------------------# (mktemp) создание временных файлов и директорий в /tmp:
• описание программы:
- создаёт временный файл или каталог безопасным способом, и печатает его имя;
- ШАБЛОН должен содержать в последнем компоненте, по крайней мере, 3 «X» подряд;
- если ШАБЛОН не указан, то используется tmp.XXXXXXXXXX и подразумевается --tmpdir;
- файлы создаются с правами u+rw, а каталоги с правами u+rwx, минус ограничения umask.
• использование:
mktemp -d #создать каталог для временной работы.
• опции программы:
-d #создать каталог, а не файл;
-p КАТ #рассматривать ШАБЛОН относительно КАТ (если КАТ не указан, использовать $TMPDIR если задана, иначе /tmp (с этим параметром ШАБЛОН не должен быть абсолютным именем
(в отличие от -t, ШАБЛОН может содержать косые черты, но даже в этом случае, mktemp создаст только последний компонент)));
-q #не выдавать диагностику об ошибках создания файла/каталога;
-t #рассматривать ШАБЛОН как одно имя файла, относительно каталога $TMPDIR, если задан (иначе каталог задаётся через -p (иначе /tmp (устарел)));
-u #ничего не создавать (просто напечатать имя (небезопасно));
--suffix=СУФФ #добавлять СУФФикс к ШАБЛОНУ (СУФФикс не должен содержать символов косой черты (подразумевается, что этот параметр установлен, если ШАБЛОН не заканчивается
X)).
---------------------------------------------------------------------------------# (cp) копирование файлов и директорий:
cp -rv /dira/* /dirb/ #копировать содержимое dira в dirb;
cp -uRa /dira /dirb #обновить файлы в каталоге dirb с сохранением атрибутов;
cp -R dir{,.backup} #создание копии dir с расширением backup.
• опции программы:
-a #то же, что и -dPR --preserve=all;
-b #то же, что и --backup, но без аргумента;
-d #то же, что и --no-dereference --preserve=link;
-f #если невозможно открыть существующий файл, то удалить его и попробовать ещё раз (этот параметр игнорируется, если также указан параметр -n);
-i #спрашивать перед тем как переписывать (отменяет ранее указанный параметр -n);
-H #следовать по символьным ссылкам в ИСТОЧНИКЕ;
-l #создавать жёсткие ссылки вместо копирования;
-L #всегда следовать символьным ссылкам в ИСТОЧНИКЕ;
-n #не перезаписывать существующий файл (отменяет ранее указанный ключ -i);
-P #не следовать по символьным ссылкам в ИСТОЧНИКЕ;
-p #то же, что и --preserve=mode|ownership|timestamps;
-c #то же, что и --preserve=context;
-R|-r #рекурсивно копировать каталоги;
-s #создавать символьные ссылки вместо копирования;
-S СУФФИКС #использовать для запасных копий заданный СУФФИКС;
-T #считать НАЗНАЧЕНИЕ обычным файлом;
-u #копировать только тогда когда исходный файл новее чем файл назначения, или когда файл назначения отсутствует;
-v #пояснять что будет сделано;
-x #оставаться в пределах одной файловой системы;
-Z #установить контекст безопасности SELinux файла назначения равным типу по умолчанию;
--attributes-only #не копировать данные файла, только атрибуты;
--backup=КОГДА #создавать резервную копию каждого целевого файла;
--context=CTX #подобно -Z, или если указан CTX, то установить контекст безопасности SELinux или SMACK равным CTX;
--copy-contents #копировать содержимое специальных файлов при рекурсивной обработке;
--preserve=СПИС_АТТР #сохранять указанные атрибуты (по умолчанию [mode|ownership|timestamps]) и, если возможно, дополнительные атрибуты [context|links|xattr|all];
--no-preserve=СПИС_АТТР #не сохранять указанные атрибуты;
--parents #добавить исходный путь к КАТАЛОГУ;
--reflink=КОГДА #контролировать копии clone/CoW;
--remove-destination #удалять каждый файл назначения перед попыткой его открыть (обратно к --force);
--sparse=КОГДА #управлять созданием разреженных файлов.;
--strip-trailing-slashes #удалять все конечные косые черты из каждого аргумента ИСТОЧНИК;
--target-directory=КАТ #скопировать все ИСТОЧНИКИ в КАТАЛОГ;
• пояснения:
- по умолчанию, разреженные файлы ИСТОЧНИКА распознаются при помощи грубой эвристической процедуры и соответственно создаются разреженные НАЗНАЧЕНИЯ, такое поведение задаётся
при помощи параметр --sparse=auto;
- с параметром --sparse=always всегда создаётся разреженный файл НАЗНАЧЕНИЯ, вне зависимости от того, содержит ли ИСТОЧНИК достаточно длинные последовательности нулевых байтов
(используйте параметр --sparse=never для запрещения создания разреженных файлов);
- если указано --reflink[=always], выполняется облегчённое копирование, при котором блоки данных копируются только при изменении (если это невозможно);
- или если указано --reflink=auto, то используется обычное копирование;
- при указании --reflink=never всегда выполняется обычное копирование;
- по умолчанию суффикс для запасных копий «~», если только не установлена переменная окружения SIMPLE_BACKUP_SUFFIX или не задан параметр --suffix;
- способ контроля версий может быть установлен при помощи ключа --backup или переменной окружения VERSION_CONTROL:
[none|off] #никогда не создавать резервных копий (даже если указан параметр --backup);
[numbered|t] #создавать нумерованные копии;
[existing|nil] #пронумеровать, если уже существуют пронумерованные (резервные копии, иначе создавать простые);
[simple|never] #всегда создавать простые копии.
- как исключение, cp создает резервную копию ИСТОЧНИКА, если заданы параметры -f и -b, а если ИСТОЧНИК совпадает с НАЗНАЧЕНИЕМ, то cp создает резервную копию НАЗНАЧЕНИЯ.
---------------------------------------------------------------------------------# (mv) перемещение и переименование файлов и директорий:
mv file1 file2 #переименовать файл file1 в file2;
mv /dir1/* /dir2 ~/ #переместить файлы dir1 и директорию dir2 в домашний каталог.
• опции программы:
-b #то же, что и --backup, но без аргумента;
-f #переписывать существующие файлы не спрашивая;
-i #спрашивать перед тем как переписывать;
-n #не переписывать существующий файл Если указано более одного параметра -i|-f|-n, то используется последний;
-S СУФФИКС #перекрывает обычный суффикс для резервных копий;
-t КАТАЛОГ переместить все ИСТОЧНИКИ в КАТАЛОГ;
-T #считать НАЗНАЧЕНИЕ обычным файлом;
-u #перемещать только, если ИСТОЧНИК новее чем файл назначения, или когда файл назначения отсутствует;
-v #пояснять производимые действия;
-Z #задать контекст безопасности SELinux файлу назначения как у типа по умолчанию;
--backup=КОНТРОЛЬ #создавать резервные копии целевых файлов;
--strip-trailing-slashes #удаляет все конечные косые черты из каждого аргумента ИСТОЧНИК.
---------------------------------------------------------------------------------# (rm) удаление файлов и директорий:
rm -rfv /dir #рекурсивное удаление каталога;
rm -fv link #удаление ссылки.
• опции программы:
-d #удалять пустые каталоги;
-f #игнорировать несуществующие файлы и аргументы, ни о чём не спрашивать;
-i #запрашивать подтверждение перед каждым удалением;
-I #запрашивать подтверждение один раз перед удалением более трёх файлов или перед рекурсивным удалением (не так назойливо, как с -i, но всё же защищает от большинства
ошибок);
-r|-R #рекурсивно удалять каталоги и их содержимое;
-v #пояснять производимые действия;
--interactive=КОГДА #запрашивать подтверждение в соответствии с КОГДА [never (никогда)|once (-I, один раз)|always (-i, всегда)], если КОГДА не задано — запрашивать всегда;
--no-preserve-root #не обрабатывать "/" особым образом;
--one-file-system #при рекурсивном удалении дерева, пропускать все каталоги, находящиеся не на той же файловой системе, что и соответствующий аргумент командной строки;
--preserve-root=all #не удалять "/" (по умолчанию), при указании "all" отвергать любой аргумент командной строки на отдельном устройстве от его родителя.
---------------------------------------------------------------------------------# (rename) переименование больших групп однотипных файлов:
rename .htm .html *.htm #переименовать из [.htm] в [.html] файлы [*.htm].
---------------------------------------------------------------------------------# примеры массового переименования расширений файлов:
rename .cxx .cpp *.cxx #переименовать все .cxx в cpp;
for i in *.cxx; do mv $i ${i%%.cxx}.cpp; done #переименовать все .cxx в cpp;
ls *.cxx | awk -F. '{print "mv "$0" "$1".cpp"}' | sh #переименовать все .cxx в .cpp;
ls *.c | sed "s/.*/cp & &[$(date "+%Y.%m.%d")]/" | sh #копировать *.c в *.c[2025.04.13]
---------------------------------------------------------------------------------# (shred) безвозвратное удаление файлов:
shred -uv file #безвозвратное удаление file с троекратной перезаписью.
• опции программы:
-f #изменять права, разрешая запись, если необходимо;
-n N #переписать N раз (по умолчанию 3);
-s N #очистить N байт (возможны суффиксы вида [K|M|G]);
-u #освобождать и удалять файл после перезаписи;;
-v #показывать ход выполнения;
-x #не округлять размеры файлов до следующего целого блока (по умолчанию не для простых файлов);
-z #перезаписать в конце нулями, чтобы скрыть измельчение;
--random-source=ФАЙЛ #получать случайные числа из ФАЙЛА (по умолчанию /dev/urandom);
--remove=КАК #подобно -u, но задаётся КАК удалять:
"unlink" => использовать стандартный вызов unlink;
"wipe" => также, сначала испортить байты имени;
"wipesync" => также, синхронизировать каждый испорченный байт на диске (по умолчанию).
---------------------------------------------------------------------------------# (find) поиск:
find / -type d -name *zxc* #поиск папок по маске *zxc* начиная с директории /;
find -type f -ls #просмотр размеров и дат создания дерева файлов директории;
find -iname myfile #оператор iname производит поиск без учета регистра;
find -iregex '.*xt.*' #оператор iregex производит поиск без учета регистра;
find / -mmin 1 #поиск файлов измененных в течение последней минуты;
find -executable \! -readable -ls #все выполняемые, но не читаемые объекты;
find -type f -perm 0644 -ls #вывод всех файлов с правами 644;
find -type f ! -perm 0644 -ls #вывод всех файлов кроме файлов с правами 644;
find -type f -perm /u=rw,g=r,o=r -ls #вывод всех файлов с правами 644;
find -type f -exec tar vczf '{}.tar.gz' '{}' \; #заархивировать все файлы;
find -type f | while read i; do mv "$i" "$(echo "$i" | tr ' ' _)"; done #массовое переименование файлов (конструкция заменит пробелы на символы подчеркивания в именах файлов);
find -maxdepth 1 -type f | while read i; do mv "$i" "$(echo "$i" | tr ' ' _)"; done #массовое переименование файлов только в текущем каталоге (конструкция заменит пробелы на
символы подчеркивания в именах файлов);
find -maxdepth 1 -name "*.tar.gz" -type f -exec tar vxzf {} \; #разархивировать все архивы в текущем каталоге.
find / -user user #объекты пользователя user;
find / -atime +100 #объекты, время последнего обращения к которым более 100 дней;
find / -mtime -10 #объекты, созданные или изменённые в течении последних 10 дней;
find / -name *.rpm -exec chmod 755 '{}' \; #изменить права доступа к объектам;
find / -xdev -name *.rpm #произвести поиск везде, кроме съёмных носителей (cdrom, floppy, ..).
find / -ctime -1 #найти файлы, измененные командой touch.
• xargs:
find -type f -name file | xargs less #поиск и просмотр file;
find /dir1 -type f | xargs cp -t /dir2 #копирование файлов из dir1 в dir2;
find -name file -type f -print | xargs rm -rf #удалить file;
find -name *.png -type f | xargs tar -cvzf arh.tar.gz #поиск и архивация *.png;
find -name '*.[ch]' | xargs grep -E 'expr' #рекурсивный поиск ‘expr’;
find -type f -print0 | xargs -0 grep -F 'example' #рекурсивный поиск ‘example’;
find -maxdepth 1 -type f | xargs grep -F 'example' #рекурсивный поиск ‘example’.
• операции с файлами, в названии которых присутствуют пробелы (old find):
find . -type f -print0 | xargs -0 ls -l #найти все файлы в текущей директории;
find . -type f -exec ls -l '{}' \; #вывод списка всех файлов текущей директории;
find . -type f /etc/*.conf | xargs -i cp {} /out #копирование всех файлов *.conf в /out.
• опции программы:
-i #активирует прием аргументов ({}):
{} #точка приема аргументов от первой команды.
-H #не следовать по символическим ссылкам;
-L #следовать по символическим ссылкам;
-P #никогда не следовать по символическим ссылкам (по умолчанию);
-D [tree|search|stat|rates|opt|exec] #задать уровень дебаггинга;
-level [1|2|3] #задать уровень оптимизации.
• сокращения:
a = and;
o = or;
! = not.
• опции фильтров:
maxdepth num #задать верхнюю границу поиска от текущей позиции;
mindepth num #задать нижнюю границу поиска от текущей позиции;
mount #не осуществлять поиск на других ФС (аналог {-xdev});
xautofs #не осуществлять поиск на autofs;
xdev #не осуществлять поиск на других ФС (аналог {-mount}).
context context #задать context SELinux искомого объекта;???
executable #все объекты доступные для выполнения;
fstype fstype #задать тип ФС для поиска;
gid GID #задать GID искомого объекта;
group gname|GID #задать gname|GID искомого объекта;
iname #задать имя искомого объекта с игнорированием регистра;
iregex regex #регулярное выражение с игнорированием регистра;
links num #задать количество ссылок искомого объекта;
mmin num #задать период времени для поиска от текущего момента;
name name #задать имя искомого объекта;
nogroup #поиск объекта несуществующей группы;
nouser #поиск объекта несуществующего пользователя;
perm [NNNN|/u=rw,g=r,o=r #уровень привилегий искомого объекта;
readable #все объекты доступные для чтения;
regex regex #задать регулярное выражение для поиска;
size num [c(byte)|k(kilo)|M|G] #задать размер искомого объекта;
type type #задать тип искомого объекта:
b #блок;
c #символ;
d #директория;
f #файл;
l #симлинк;
p #пайп (FIFO);
s #сокет.
uid UID #задать UID искомого объекта;
used num #задать сколько дней назад был изменен искомый объект;
user uname|UID #задать uname|UID искомого объекта;
writable #все объекты доступные для записи.
• список действий с искомыми объектами:
delete #удалить объект;
exec cmd #выполнить команду cmd;???
ls #вывод списка найденных объектов;
ok cmd #выполнить команду cmd с подтверждением;???
printf format #задать формат вывода информации о найденном объекте:
%A{T|+|D} #время последнего доступа к объекту;
T #hh:mm:ss;
D #MM/DD/YY;
+ #YYY-MM-DD+HH:MM:ss;
%C{T|+|D} #время последней модификации объекта;
%d #глубина директорий объекта;
%D #номер устройства;
%F #тип ФС объекта;
%g #имя группы объекта;
%G #GID группы объекта;
%i #номер инода объекта;
%m #цифровой уровень привилегий объекта;
%M #буквенный уровень привилегий объекта;
%p #имя объекта;
%s #размер объекта;
%t #время последней модификации объекта;
%T{T|+|D} #время последней модификации объекта;
%u #имя пользователя объекта;
%U #UID пользователя объекта;
%y #тип объекта;
%Z #контекст SELinux.
quit #выход.
• другое:
find -printf %F #вывод списка всех доступных ФС для поиска.
---------------------------------------------------------------------------------# (locate) поиск файлов и директорий по обновляемой базе данных:
updatedb #обновление базы данных для поиска файлов/директорий;
locate file #поиск file по базе данных.
• опции программы:
-A #вывод всех совпадений с директориями и файлами;
-b #вывод всех совпадений только с файлами;
-c #вывод количества совпадений;
-i #игнорировать регистр;
-l num #задать количество первых выводимых совпадений;
-L #следовать по симлинкам;
-P|H #не следовать по симлинкам;
-0 #задать разделитель выводимых совпадений 0;
-S #вывод статистических данных программы (без объекта поиска);
-q #тихий режим без вывода информационных сообщений;
-r regex #задать регулярное выражение для поиска.
---------------------------------------------------------------------------------# (bleachbit) очистка битых и временных файлов:
bleachbit options -p #анализ системы;
bleachbit options -c #очистка системы.
• опции программы:
-c #очистка;
-l #вывод списка доступных опций для очистки;
-p #предпросмотр;
--preset #использовать набор опций в графическом режиме;
-s #безвозвратное удаление объектов (shred).
==================================================================================
# (bmap) запись дополнительной "скрытой" информации в файлы:
• Особенности файловой системы ext2: ФС адресует блоки размером 1, 2 или 4 Кб, но если хвост файла не занимает блока целиком, то это место, резерв (slack), остается
неиспользованным. Существуют утилиты, записывающие, читающие, затирающие эти данные в резервы. Данные будут невидимы для ФС, недоступны для обычного использования и необнаружимы
средствами проверки целостности файла (integrity checkers).
echo "здесь спрятана строка" | bmap --mode putslack /etc/passwd #записывает данные "здесь спрятана строка" в«резерв»файла /etc/passwd;
bmap --mode slack /etc/passwd #показывает данные;
bmap --mode wipeslack /etc/passwd #затирает скрытые данные.
---------------------------------------------------------------------------------# (pushd/popd) буфер директорий:
pushd . #записать текущую директорию в буфер для дальнейшего возвращения;
popd #вернуться в директорию прописанную в буфер.
==================================================================================
# ADM [dev|file] - АРХИВАЦИЯ ДАННЫХ:
---------------------------------------------------------------------------------• Краткое описание архивов:
- *.tar #несжатый архив;
- *.tar.gz #сжатый архив gzip;
- *.tar.bz2 #сжатый архив bzip2;
- *.zip #сжатый архив zip.
- * gzip сжимает на 80% быстрее bzip2 и проигрывает в размере архива на 10-20%.
• Характеристики объем/скорость:
- 7z #сжимает хорошо, но продолжительно;
- gzip|zip #сжимают быстро, но слабо;
- rar|bzip|xz #сжимают хорошо, но медленно.
• Сохранение атрибутов файлов:
- gzip|bzip #да;
- 7z|zip|rar|xz #нет (использовать предварительно архиватор tar).
• Стоимость:
- gzip|bzip|7z|zip|xz #бесплатно;
- rar #платно.
---------------------------------------------------------------------------------# (*.tar|*.tar.gz|*.tar.bz2) архивирование данных:
• операции с несжатыми архивами *.tar:
tar cfv arch.tar file.one #создать несжатый tar-архив;
tar rfv arch.tar file.two #добавить файл в несжатый tar-архив;
tar tf arch.tar #вывод списка файлов несжатого tar-архива;
tar xfv arch.tar #распаковать несжатый tar-архив.
• операции со сжатыми архивами *.gz:
tar cfzv arch.tar.gz file #создать сжатый gzip-архив;
tar cfzv arch.tar.gz file dir/ #создать сжатый gzip-архив;
tar tf arch.tar.gz #вывод списка файлов сжатого gzip-архива;
tar xfzv arch.tar.gz #распаковать сжатый gzip-архив;
tar xfzv arch.tar.gz -C /path/to/.. #распаковать сжатый gzip-архив в /path/to/...
• операции со сжатыми архивами *.bz2:
tar cfjv arch.tar.bz2 file #создать сжатый bzip2-архив;
tar cfjv arch.tar.bz2 file dir/ #создать сжатый bzip2-архив;
tar tf arch.tar.bz2 #вывод списка файлов сжатого bzip2-архива;
tar xfjv arch.tar.bz2 #распаковать сжатый bzip2-архив;
tar xfjv arch.tar.bz2 -C /path/to/.. #распаковать сжатый bzip2-архив в /path/to/...
• опции программы:
-A #добавить файлы в архив (только в архивы созданные без сжатия);
-c #создание нового архива (указать тип архива) {-f};
-C /path/to/.. # задать путь для разархивации данных;
-d #показать различия между архивами или ФС;
-f #задать имя файла {-c|t|x};
-j #указывает тип архива bzip2;
-J #указывает тип архива xz;
-k #не перезаписывать существующие файлы;
-r #добавить файлы в конец архива;
-t #вывести список файлов в архиве {-f};
-u #добавить в архив файлы только новее существующих;
-v #подробный вывод информации;
-w #интерактивный режим;
-x #извлечь файлы из архива (указать тип архива) {-f};
-X file #не добавлять в архив файлы, список которых указан в file {-f};
-z #указывает тип архива gzip;
-Z #пропустить архивные данные через compress;
--lzip #указывает тип архива lzip;
--lzma #указывает тип архива lzma;
--lzop #указывает тип архива lzop;
--acls #задействовать поддержку атрибутов ACL;
--no-acls #отключить поддержку атрибутов ACL;
--selinux #задействовать поддержку атрибутов SELinux;
--no-selinux #отключить поддержку атрибутов SELinux;
--xattr #задействовать поддержку атрибутов объектов;
--no-xattr #отключить поддержку атрибутов объектов;
--exclude-from=list #задать список не архивируемых объектов;
--ignore-failed-read #не останавливаться, если встретился нечитаемый файл;
--keep-newer-files #не перезаписывать файлы новее файлов в архиве;
--one-file-system #не выходить за пределы одной ФС (пропуск /proc,/dev, ..);
--remove-files #удалить файлы, после добавления их в архив.
---------------------------------------------------------------------------------# (gzip) утилита и алгоритм для сжатия и декомпрессии данных:
* при сжатии несколько файлов объединяются в один и теряют атрибуты!
* если архивируется более одного файла, то предварительно использовать tar!
gzip -k le #архивировать file в file.gz;
gzip -l le.gz #вывод содержимого файла сжатого gzip-архива;
zcat file.gz #вывод содержимого файла сжатого gzip-архива;
gunzip -k file.gz #распаковать le.gz в file;
gzip -dk le.gz #распаковать le.gz в le;
tar c file | gzip > arch.gz #создать сжатый gzip-архив.
tar cf archive.tar dir/* #создание несжатого tar-архива;
gzip -vc9 archive.tar > archive.tar.gz #создать gzip архив (максимальное сжатие).
• опции программы:
-c #перенаправить вывод утилиты в стандартный вывод;
-d #разархивировать;
-k #не удалять исходные файлы при архивации или разархивации;
-l #вывод списка файлов в архиве, объема и степени сжатия;
-n #не сохранять атрибуты файлов;
-N #сохранять атрибуты файлов;
-q #тихий режим;
-r #рекурсия;
-S .suf #добавить к имени суффикс .suf;
-t #протестировать архивный файл;
-v #вывод информационных сообщений;
-1 #минимальная степень сжатия;
-9 #максимальная степень сжатия.
---------------------------------------------------------------------------------# (bzip2) утилита и алгоритм для сжатия и декомпрессии данных:
* при сжатии несколько файлов объединяются в один и теряют атрибуты!
* если архивируется более одного файла, то предварительно использовать tar!
bzip2 -k file #архивировать file в file.bz2;
bzcat file.bz2 #вывод содержимого файла сжатого bzip2-архива;
bunzip2 -k file.bz2 #распаковать file.bz2 в file;
bzip2 -dk file.bz2 #распаковать file.bz2 в file;
tar c file | bzip2 > arch.bz2 #создать сжатый bzip2-архив.
tar cf archive.tar dir/* #создание несжатого tar-архива;
bzip2 -vc4 archive.tar > archive.tar.bz2 #создать bzip2 архив (быстрое сжатие).
• опции программы:
-c #перенаправить вывод утилиты в стандартный вывод;
-d #разархивировать;
-f #перезапись существующего файла (по умолчанию не перезаписывает);
-k #не удалять исходные файлы при архивации или разархивации;
-q #тихий режим;
-s #снижение требований к объему ОЗУ (за счет скорости архивирования);
-t #проверка целостности указанного файла(ов) без разархивации;
-v #вывод информационных сообщений;
-z #принудительная архивация;
-1 #минимальная степень сжатия;
-9 #максимальная степень сжатия.
---------------------------------------------------------------------------------# (rar) утилита и алгоритм для сжатия и декомпрессии данных:
rar a -r archive.rar files #создать RAR архив (дефолтное сжатие);
rar a -r -m1 archive.rar les #создать RAR архив (быстрое сжатие);
rar a -r -m5 archive.rar les #создать RAR архив (максимальное сжатие);
rar x arch.rar #распаковать сжатый rar-архив;
unrar x arch.rar #распаковать сжатый rar-архив.
• опции программы:
-a #создать архив;
-m1 #минимальная степень сжатия;
-m5 #максимальная степень сжатия;
-r #рекурсия для указанной архивируемой директории;
-x #извлечь архив.
---------------------------------------------------------------------------------# (zip) утилита и алгоритм для сжатия и декомпрессии данных:
zip -r archive.zip files #создать ZIP архив (дефолтное сжатие);
zip -r -1 archive.zip files #создать ZIP архив (быстрое сжатие);
zip -r -9 archive.zip files #создать ZIP архив (максимальное сжатие);
zip arch.zip file #создать сжатый zip-архив;
zip -e -r arch.zip dir/ #создать сжатый запароленный zip-архив;
unzip arch.zip #распаковать zip-архив;
zcmp arch.zip archive.zip #сравнение сжатых файлов;
zdiff arch.zip archive.zip #сравнение сжатых файлов;
tar cf - ./* | zip | dd of=arch.zip bs=16k #создание бэкапа для директории;
dd if=arch.zip bs=16k | funzip | tar xfv - #распаковать в текущую директорию.
• опции программы:
-e #задать пароль на архив;
-r #рекурсия для указанной архивируемой директории;
-R #рекурсия, начиная с текущей директории;
-1 #минимальная степень сжатия;
-9 #максимальная степень сжатия.
---------------------------------------------------------------------------------# (7z) утилита и алгоритм для сжатия и декомпрессии данных:
7z a archive.7z les #создать 7z архив (дефолтное сжатие);
7z a -mx=1 archive.7z files #создать 7z архив (быстрое сжатие);
7z a -mx=9 archive.7z files #создать 7z архив (максимальное сжатие).
• опции программы:
-a #создать архив;
-mx=1 #минимальная степень сжатия;
-mx=9 #максимальная степень сжатия.
---------------------------------------------------------------------------------# (zless) работа с архивными файлами *.tar и *.tar.gz;
# (zcat) работа с архивными файлами *.tar и *.tar.gz;
# (zgrep) работа с архивными файлами *.tar и *.tar.gz;
# (zmore) работа с архивными файлами *.tar и *.tar.gz.
zless file.tar.gz #просмотр архивного текстового файла;
zgrep string file.tar #поиск совпадений в архивном файле со string.
---------------------------------------------------------------------------------# (cpio) копирование файлов в архив и из архива:
find / -name "*.c" | cpio -o -H tar > c-file.backup.tar #архивировать файлы "*.c" в c-file.backup.tar;
find / -iname "*.pl" | cpio -o -H tar > perl-files.tar #архивировать файлы "*.pl" без учёта регистра в perl-files.tar;
find / -iname "*.pl" | cpio -o -H tar -F perl-files.tar #архивировать файлы "*.pl" без учёта регистра в perl-files.tar;
find /home | cpio -o -H tar -F /dev/nst0 #BackUp директории /home на ленту в /dev/nst0;
find /home | cpio -o -H tar -F user@backup.nixcraft.in:/dev/nst0 --rsh-command=/usr/bin/ssh #BackUp директории /home на удаленную систему;
cpio -t -F perl-files.tar #вывод списка файлов в архиве;
cpio -i -F perl-files.tar #распаковать архив;
cpio -i -F /dev/nst0 #восстанавление из BackUp'а;
cat spisok | cpio -ovB -H odc > /dev/rmt/ctape1 #создать архив ctape1 в совместимом формате odc;
find katalog -print | cpio -ovc > arhiwnyj-fajl.cpio #создать архив arhiwnyj-fajl.cpio в старом формате;
cpio -itB < /dev/rmt/ctape #вывод содержимого стримера;
cpio -idmvB ["шаблон" ...] < /dev/rmt/ctape #извлечь файлы со стриммера;
gunzip < arhiw.gz | cpio -idmv #извлеч файлы из сжатого архива;
example% ls | cpio -oc > ../новый_файл #использование стандартного входного потока;
example% cat newfile | cpio -icd "memo/a1" "memo/b*" #извлечение файлов в каталоги;
example% find . -depth -print | cpio -pdlmv newdir #копирование или связывание файлов в другой каталог.
• опции программы - ГЛАВНЫЕ ОПЕРАНДЫ:
-i #распаковать архив (выбирает файлы из стандартного входного потока);
-o #создать архив (читает список имен файлов из стандартного входного потока и копирует их в стандартный выходной поток);
-p #создать архив (читает список имен файлов из стандартного входного потока).
• опции программы - ВТОРОСТЕПЕННЫЕ ОПЕРАНДЫ, ДОБАВЛЯЕМЫЕ К ГЛАВНЫМ:
-a #сбрасывает времена обращения к входным файлам после их копирования:
времена обращения не сбрасываются для связанных файлов при указании опций {-pla} (взаимоисключающих с опцией {-m}).
-A #добавляет файлы в архив (только с {-O}):
допустима только для архивов в файлах, на дискетах или на разделах жесткого диска.
-b #изменяет порядок байтов в каждом слове (только с {-i});
-B N #выполняет ввод/вывод в виде блоков-записей по 5120 байтов:
перекрывается {-C};
по умолчанию 8192 байта;
не применима в режиме передачи;
имеет смысл только при обмене данными со специальным символьным устройством, например, /dev/rmt/0m.
-c #читает и записывает информацию заголовка в форме ASCII-текста для переносимости:
этот формат заголовка не накладывает никаких ограничений на значения UID или GID;
эта опция используется при обмене архивами между SVR4-системами;
для обмена между заранее неизвестными машинами имеет смысл использовать опцию {-H odc};
опция предполагает использование расширенных номеров устройств, которые поддерживаются только в SVR4-системах;
при переносе файлов между SunOS 4 или Interactive UNIX и ОС Solaris 2.6 или более поздиними версиями этой ОС используется опция {-H odc}.
-C N #задать РАЗМЕР_БУФЕРА:
перекрывается {-B};
по умолчанию 8192 байта;
объединяет ввод/вывод в записи указанного размера (размер задается положительным целым числом);
опция -C имеет смысл только если происходит обмен данными со специальным символьным устройством, н-р, /dev/rmt/0m.
-d #создавать каталоги в случае необходимости;
-E FILE #задает входной файл, содержащий список имен файлов, которые необходимо извлечь из архива (по одному имени в строке);
-f #брать все файлы, кроме указанного шаблоном;
-F ARHIVENAME #задать имя архива;
-H FORMAT #читает или записывает заголовок в указанном формате:
всегда используйте эту опцию или опцию -c, если исходная и целевая машины - разных типов (взаимоисключающих, как -c и -6);
файлы с идентификаторами UID и GID, большими указанного выше предела, попадают в архив как имеющие UID и GID 60001;
для переноса больших файлов (8 Гбайтов - 1 байт) можно использовать только заголовки фоматов tar/TAR, ustar/USTAR или odc;
допустимы следующие значения формата:
bar #заголовок и формат bar:
используется вместе с опцией -i (только для чтения).
crc|CRC #заголовок ASCII с расширенными номерами и дополнительной контрольной суммой для каждого файла:
этот формат заголовка не предполагает никаких ограничений на значения UID или GID.
odc #заголовок ASCII с небольшими номерами устройств:
этот заголовок и формат архива cpio соответствует стандарту IEEE/P1003 Data Interchange Standard;
это наиболее переносимый из всех форматов заголовков;
этот формат официально принят для обмена файлами между системами, соответствующими стандарту POSIX;
используйте этот формат для обмена информацией с SunOS 4 и Interactive UNIX;
этот формат заголовка поддерживает хранение в заголовке идентификаторов UID и GID со значениями вплоть до 262143.
tar|TAR #заголовок и формат tar:
этот формат заголовка позволяет хранить в заголовке значения UID и GID со значениями вплоть до 2097151.
ustar|USTAR #заголовок и формат tar, соответствующий стандарту IEEE/P1003 Data Interchange Standard:
этот формат заголовка позволяет хранить в заголовке значения UID и GID со значениями вплоть до 2097151.
-I FILE #читает содержимое файла как входной архив:
если указан файл специального символьного устройства и текущий носитель полностью прочитан, замените носитель и нажмите клавишу Enter для чтения следующего носителя;
только с опцией -i.
-k #пытается пропустить поврежденные заголовки файлов и игнорировать получаемые ошибки ввода/вывода:
если необходимо избирательно скопировать файлы с поврежденного носителя, эта опция позволяет прочитать файлы с неповрежденными заголовками;
если архив cpio содержит другие архивы cpio, в случае ошибки cpio может закончить работу досрочно;
cpio найдет следующий неповрежденный заголовок, и если это окажется заголовок вложенного архива, завершит работу, обнаружив признак завершения вложенного архива;
только с опцией -i.
-l #по возможности связывает файлы, а не копирует их {только с -p};
-L #следовать по символьным связям (по умолчанию нет);
-m #оставляет прежнее время изменения файла:
эта опция не действует для копируемых каталогов (эта опция и опция -a - взаимоисключающие).
-M MESSAGE #задает сообщение, выдаваемое при смене носителей:
при задании специального символьного устройства в опциях -O или -I, эта опция позволяет задать сообщение, выдаваемое когда достигнут конец носителя;
в сообщение можно один раз включить шаблон %d, заменяемый последовательным номером следующего носителя.
-O FILE #направляет результат работы cpio в файл:
если файл является специальным символьным устройством и текущий носитель заполнен, замените носитель и нажмите клавишу Enter для продолжения работы;
только с опцией -o.
-P #сохраняет списки контроля доступа (ACL):
если эта опция используется при выдаче информации, существующие списки ACL записываются вместе с другими атрибутами в стандартный выходной поток;
списки ACL создаются как специальные файлы соответствующего типа;
если опция задана при считывании информации, существующие в архиве списки ACL извлекаются вместе с другими атрибутами из стандартного входного потока;
опция распознает файлы соответствующего специального типа;
при попытке извлечения файлов из архива со списками ACL предыдущими версиями cpio произойдет ошибка;
эту опцию не надо использовать вместе с опцией -c, поскольку списки ACL поддерживаются не во всех системах, и поэтоу не переносимы;
для обеспечения переносимости используйте заголовки ASCII.
-r #интерактивно переименовывает файлы:
если пользователь просто нажимает Enter, файл пропускается;
если пользователь вводит точку (.), оставляется исходное имя файла;
опция не используется совместно с -p.
-R ID #устанавливает пользователя id (и его первичную группу):
в качестве владельца каждого файла (id должно быть одним из известных регистрационных имен в файле /etc/passwd);
эту опцию может задавать только пользователь root.
-s #переставляет байты в каждом полуслове;
-S #переставляет полуcлова в каждом слове;
-t #выдает содержимое входного архива:
никакие файлы при этом не создаются (эта опция взаимоисключающа с опцией -V).
-u #копирует безусловно (обычно старый файл не заменяет более новый с тем же именем);
-v #выдача дополнительной информации:
выдается список имен обрабатываемых файлов;
при использовании с опцией -t , список имен файлов выглядит аналогично результатам команды ls -l.
-V #выдача дополнительной информации специального вида:
выдается точка для каждого прочитанного или записанного файла;
позволяет пользователю убедиться, что процесс cpio работает, не выдавая при этом имена всех файлов.
-6 #обрабатывает формат файла архива UNIX System Sixth Edition:
используется только совместно с опцией -i (взаимоисключающая опция по отношению к опциям -c и -H);
опция используется только совместно с опцией -i.
• операнды:
КАТАЛОГ #путь к существующему целевому каталогу для команды cpio -p;
ШАБЛОН #выражение с теми же метасимволами сопоставления с образцом, что и шаблоны имен файлов командного интерпретатора, функционально подобными регулярным выражениям:
поддерживаются следующие метасимволы:
* #соответствует любой строке, в том числе, пустой;
? #соответствует любому одиночному символу.
[...] #соответствует любому из указанных в квадратных скобках символов:
пара символов, разделенная дефисом (-), соответствует любому из символов диапазона (включительно с указанными), определяемого по стандартной кодовой таблице;
если сразу за открывающей скобкой ([) идет восклицательный знак (!), результаты будут неопределенными.
! #отрицание:
н-р, шаблон !abc* исключает все файлы, имена которых начинаются с abc.
в шаблонах метасимволы ?, * и [...] сопоставляются с символом косой черты (/), а символ обратной косой черты (\) является маскирующим;
можно задавать несколько шаблонов, а если шаблон не задан, предполагается шаблон * (т.е. выбираются все файлы);
каждый шаблон необходимо брать в двойные кавычки, в противном случае, командный интерпретатор может подставить имена файлов текущего каталога.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [init] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# ADM [init] - ПРОСМОТР ИНФОРМАЦИИ О УРОВНЯХ ЗАПУСКА:
---------------------------------------------------------------------------------• Уровни выполнения (init):
0 #останов системы;
1 #однопользовательский режим (ОС сконфигурирована полностью, но не запущен ни один из сервисов, из пользователей только root);
2 #многопользовательский режим без поддержки сети;
3 #полный многопользовательский режим;
4 #не используется;
5 #графический режим;
6 #перезапуск.
• Уровни выполнения (systemd):
runlevel0.target = poweroff.target #останов системы;
runlevel1.target = rescue.target #однопользовательский режим;
runlevel2.target = multi-user.target #не используется;
runlevel3.target = multi-user.target #многопользовательский режим;
runlevel4.target = multi-user.target #не используется;
runlevel5.target = graphical.target #графический режим;
runlevel6.target = reboot.target #перезапуск.
---------------------------------------------------------------------------------# (runlevel) #вывод информации о текущем уровне:
runlevel #вывод информации о текущем уровне.
---------------------------------------------------------------------------------# (init) система инициализации init:
init 6 #перезагрузка;
init 0 #остановка системы (выключение).
telinit 2 #переключиться в многопользовательский режим без поддержки сети;
telinit q #перечитать изменённый /etc/inittab (то же что и Q);
telinit u #перезагрузить init демон.
---------------------------------------------------------------------------------# (SysRq) управление ядром с помощью горячих клавиш:
• HotKeys - ПРЯМАЯ СВЯЗЬ С ЯДРОМ (активирована не во всех сборках Linux):
[Alt+SysRq+0-9] {loglevel0-9} #уровень подробности вывода в порядке возрастания;
[Alt+SysRq+H] {Help} #справка;
[Alt+SysRq+B] {reBoot} #немедленная перезагрузка (без синхронизации и размонтирования ФС);
[Alt+SysRq+C] {Crashdump} #выполнение директивы kexec для перезагрузки чтобы получить сведения об ошибках;
[Alt+SysRq+D] {holDs} #вывод всех блокировок, которые держат устройства или файлы;
[Alt+SysRq+O] {poweroff} #корректное выключение системы (хотя обычно это прямая команда отключения);
[Alt+SysRq+S] {Sync} #синхронизация всех примонтированных ФС;
[Alt+SysRq+U] {Unmount} #попытка перемонтировать все ФС в режим «только чтение»;
[Alt+SysRq+T] {showTasks} #вывод списока текущих задач и информации о них;
[Alt+SysRq+N] {Nice} #сброс приоритета задачи реального времени или с измененным приоритетом;
[Alt+SysRq+W] {shoW-blocked-tasks} #вывод заблокированных и ждущих окончание ввода-вывода задач;
[Alt+SysRq+M] {showMem} #информация о ОЗУ и SWAP;
[Alt+SysRq+K] {secure access Key} #убить все процессы на текущей консоли (перезапуск X-сервера);
[Alt+SysRq+R] {unRaw} #перехват управления мышью и клавиатурой у Х-сервера;
[Alt+SysRq+E] {tErm} #послать SIGTERM всем процессам, кроме init;
[Alt+SysRq+I] {kIll} #послать SIGKILL всем процессам, кроме init;
[Alt+SysRq+F] {Full} #позволяет вызвать обработчик oom_kill (out-of-memory kill) для прерывания приложений, забравших слишком много памяти (может занять продолжительное
время). Используйте его, если свободная память совсем истощилась, так что система не реагирует ни на какой иной ввод (курсор мыши не движется, индикаторы NumLock/CapsLock не
включаются, но индикатор работы накопителя всё время включен).
• особенности:
[SysRq] = [PrtSc]
[Alt+SysRq+R;E;I;S;U;B] #мягкая перезагрузка.
==================================================================================
# ADM [init] - INIT:
---------------------------------------------------------------------------------# (chkconfig) управление службами в системе инициализации init:
chkconfig --list #список всех init скриптов;
chkconfig --list sshd #статус sshd;
chkconfig sshd --level 35 on #запуск sshd на уровне 3 и 5;
chkconfig sshd off #отключить sshd для всех runlevels.
---------------------------------------------------------------------------------# (update-rc.d) управление службами в системе инициализации init (debian):
update-rc.d sshd defaults #активировать sshd на runlevels по умолчанию;
update-rc.d sshd start 20 2 3 4 5 . stop 20 0 1 6 . #применить аргументы;
update-rc.d -f sshd remove #выключить sshd для всех runlevels.
==================================================================================
# ADM [init] - SYSTEMD:
---------------------------------------------------------------------------------# (systemd) управление уровнями загрузки:
systemctl get-default #вывод информации о текущем уровне;
systemctl set-default multi-user.target #задать уровень 3 по умолчанию.
• основные варианты уровней загрузки:
grafical.target #графический режим (уровень 5);
multi-user.target #консольный многопользовательский режим (уровень 3).
• задание правил для групп юнитов:
systemctl set-property system.slice IPAddressDeny=any IPAddressAllow=192.168.0.254 IPAccounting=true
systemctl set-property user.slice IPAddressDeny=any IPAddressAllow=192.168.0.254 IPAccounting=true
systemctl set-property user-1000.slice IPAddressDeny=any IPAddressAllow=192.168.0.254 IPAccounting=true
• файлы и директории:
/etc/systemd/system/default.target #symlink в /usr/lib/systemd/system/..target;
/usr/lib/systemd/system/ #каталог с вариантами загрузок.
---------------------------------------------------------------------------------# (systemd) работа с юнитами:
• особенности:
сокет-активация служб (замена inetd);
запуск сервисов по расписанию (замена cron);
работа с аппаратным сторожевым таймером (замена watchdog);
смена корня (замена chroot);
автомонтирование томов и сетевых ресурсов (замена mount и fstab).
• типы юнитов ОС Linux:
automount #точки автомонтирования ФС;
device #имена устройств ядра в sysfs и в udev;
mount #точки монтирования ФС;
path #файлы или каталоги;
scope #внешние процессы, не запускаемые с помощью systemd;
service #системные (службы) и пользовательские (скрипты) сервисы;
slice #юниты управления процессами (создание контейнера cgroups);
socket #сокеты IPC (межпроцессного взаимодействия);
swap #подключение файла подкачки;
target #цели ОС (уровни запуска);
timer #таймеры для запуска модулей по расписанию.
• вывод информации о юнитах:
systemctl --state active #вывод юнитов со статусом active;
systemctl --type service #вывод юнитов с типом service;
systemctl list-unit-files #вывод всех юнитов существующих в системе;
systemctl show юнит #вывод всех активных низкоуровневых свойств юнита;
systemctl help юнит #вывод справки по заданному юниту;
systemctl list-dependencies multi-user.target #рекурсивный вывод юнитов для multi-user.target;
systemctl list-dependencies --all юнит #рекурсивный вывод всех зависимостей.
• управление юнитами:
systemctl help юнит #открыть man-страницы соответствующие юниту;
systemctl status юнит #запросить состояние юнита;
-f #вывод в интерактивном виде;
-n #задает количество выводимых строк.
systemctl stop юнит #остановить юнит;
systemctl start юнит #запустить юнит;
systemctl restart юнит #перезагрузить юнит;
systemctl reload юнит #перезагрузить конфигурационные файлы юнита (без остановки сервиса);
systemctl reload-or-restart юнит #перезагрузить конфигурационные файлы или юнит;
systemctl try-reload-or-restart юнит #перезапустить юнит, если он запущен;
systemctl reset-failed #перезапустить юнит или юниты, завершившиеся с ошибкой;
systemctl daemon-reload #обновить systemd, т.е. конфигурацию всех юнитов;
systemctl enable юнит #включить юнит в автозагрузку;
systemctl enable --now юнит #включить юнит в автозагрузку и запустить;
systemctl disable юнит #выключить юнит из автозагрузки;
systemctl disable --now юнит #остановить и выключить юнит из автозагрузки;
systemctl mask юнит #маскировка юнита (перенаправить в /dev/null);
systemctl mask --now юнит #остановить, выключить из автозагрузки и маскировать;
systemctl unmask юнит #снять маску с юнита;
systemctl unmask --now юнит #снять маску, включить в автозагрузку и запустить;
systemctl kill -s TERM юнит #отправить юниту сигнал завершения TERM:
INT;
KILL;
STOP;
...
systemctl kill --kill-who all юнит #отправить юниту сигнал завершить все процессы:
all #все процессы юнита;
control #контролирующие процессы юнита;
main #собственные процессы юнита.
• вывод списков юнитов:
systemctl --all #вывод всех загруженных юнитов:
# столбцы:
UNIT #имя юнита;
LOAD #была ли конфигурация юнита успешно спарсена (разобрана);
ACTIVE #информация о том, активен ли юнит;
SUB #содержит более подробную информацию об устройстве;
DESCRIPTION #короткое описание.
• фильтрация по статусу:
systemctl #вывод юнитов со статусом active;
systemctl --state active #вывод юнитов со статусом active;
systemctl --state dead #вывод юнитов со статусом dead;
systemctl --state failed #вывод юнитов завершившихся неудачей;
... #всего существует около пятидесяти статусов;
systemctl --state inactive #вывод юнитов со статусом inactive.
• фильтрация по типу:
systemctl --type automount #вывод юнитов с типом automount;
systemctl --type device #вывод юнитов с типом device;
systemctl --type mount #вывод юнитов с типом mount;
systemctl --type path #вывод юнитов с типом path;
systemctl --type scope #вывод юнитов с типом scope;
systemctl --type service #вывод юнитов с типом service;
systemctl --type slice #вывод юнитов с типом slice;
systemctl --type socket #вывод юнитов с типом socket;
systemctl list-sockets #вывод подробной информации по юнитам с типом socket;
systemctl --type swap #вывод юнитов с типом swap;
systemctl --type target #вывод юнитов с типом target;
systemctl --type timer #вывод юнитов с типом timer;
systemctl list-timers #вывод подробной информации по юнитам с типом timer.
• фильтрация по состоянию:
systemctl list-unit-files #вывод абсолютно всех юнитов существующих в ОС;
systemctl list-unit-files | grep disabled #вывод загруженных, но отключенных юнитов;
systemctl list-unit-files | grep enabled #вывод загруженных включенных юнитов;
systemctl list-unit-files | grep generated #
systemctl list-unit-files | grep indirect #
systemctl list-unit-files | grep masked #вывод не загруженных юнитов;
systemctl list-unit-files | grep static #вывод статичных юнитов;
masked #означает, что в файле юнита содержится раздел «install», который используется для включения устройства, т.о. его можно включить, но на него наложена маска для
запрета включения (он жестко перенаправлен в /dev/null);
static #означает, что в файле юнита не содержится раздел «install», который используется для включения устройства, т.о. его невозможно включить (обычно устройство
выполняет одноразовое действие или используется только как зависимость от другого устройства и не должно запускаться само по себе).
• уровни запуска (цели):
systemctl --type target #вывод активных целей;
systemctl list-unit-files --type target #вывод всех существующих целей в ОС;
systemctl get-default #вывод установленной по умолчанию цели в ОС;
systemctl set-default юнит.target #установить цель по умолчанию в ОС;
systemctl isolate multi-user.target #мягкий перевод ОС на уровень 3;
systemctl rescue #перевод ОС в однопользовательский режим восстановления;
systemctl halt #остановка ОС;
systemctl hibernate #перевести ОС в спящий режим;
systemctl suspend #перевести ОС в ждущий режим;
systemctl suspend-then-hibernate #перевести ОС в режим гибридного сна;
systemctl poweroff #полное завершение работы;
systemctl reboot #перезагрузка.
• опрос юнитов:
systemctl is-active юнит #проверка работоспособности (выход «0», если активен);
systemctl is-enabled юнит #проверка автозагрузки (выход «0», если есть);
systemctl is-failed юнит #проверка поломки (выход «0», если сломан).
• просмотр содержимого файла юнита:
systemctl cat юнит
• редактирование файла юнита:
systemctl edit юнит #создаст пустой файл (сниппет), переопределяющий основной:
/etc/systemd/system/юнит.d #создается новая директория с добавленным .d;
/etc/systemd/system/юнит.d/override.conf #сниппет с настройками.
systemctl edit --full юнит #отредактировать полный файл юнита, создав новый:
/etc/systemd/system/юнит #новый файл, переопределяющий основной.
• восстановление исходного состояния юнита:
systemctl daemon-reload #запустить после удаления всех сниппетов и директорий.
• просмотр низкоуровневых свойств юнита:
systemctl show юнит #вывод всех активных низкоуровневых свойств юнита;
systemctl show юнит -p Conflicts #вывод конфликтов юнита;
-a #вывод всех возможных низкоуровневых свойств юнита;
-p field #задать необходимое поле свойств для вывода.
• просмотр зависимостей юнита:
systemctl list-dependencies юнит #вывод всех зависимостей;
systemctl list-dependencies --all юнит #рекурсивный вывод всех зависимостей;
--all #рекурсивно перечислить все зависимости;
--before #вывод юнитов, от которых зависит указанный (запускаемые после);
--after #вывод юнитов, от которых зависит указанный (запускаемые до);
--reverse #обратные зависимости (юниты, зависящие от указанного).
• файлы и директории:
/etc/systemd/system/юнит.* #симлинк в /usr/lib/systemd/../.. (приоритет выше);
/usr/lib/systemd/system/ #директория юнитов (приоритет ниже);
/run/systemd/system/ #директория временных юнитов (приоритет между /usr/lib/systemd/system и /etc/systemd/system) [можно использовать для изменения поведения юнита в
течение одного сеанса].
• конфигурационные файлы, поддерживаемые systemd:
/etc/hostname #имя хоста для данной системы;
/etc/vconsole.conf #конфигурация раскладки клавиатуры и шрифта для консоли;
/etc/locale.conf #конфигурация общесистемной локали;
/etc/modules-load.d/*.conf #каталог для перечисления модулей ядра, которые нужно принудительно подгрузить при загрузке;
/etc/sysctl.d/*.conf #каталог для задания параметров ядра sysctl (дополняет классический конфигурационный файл /etc/sysctl.conf);
/etc/tmpfiles.d/*.conf #каталог для управления настройками временных файлов (systemd обеспечивает создание, очистку и удаление временных файлов и каталогов, как во время
загрузки, так и во время работы системы);
/etc/binfmt.d/*.conf #каталог для регистрации дополнительных бинарных форматов (например, форматов Java, Mono, WINE);
/etc/os-release #стандарт для файла, обеспечивающего идентификацию дистрибутива и его версии (в fedora: /etc/fedora-release в Fedora);
/etc/machine-id #идентификатор ПК (перекрывает идентификатор D-Bus);
/etc/machine-info #хранит информацию о полном-описательном имени хоста и значке, которым он будет обозначаться в графических оболочках, работающих с сетью
(/etc/favicon.png).
• справочная информация:
systemd.exec(5) #перечень опций, которые можно задать для любой службы;
systemd.service(5) #перечень опций, которые можно задать для любой службы;
/usr/share/doc/systemd/TRANSIENT-SETTINGS.md #список опций всех юнитов.
---------------------------------------------------------------------------------# (systemd-run) запуск приложений в песочнице:
systemd-run --pty -p DynamicUser=yes /bin/bash #запуск bash как одноразового юнита под динамическим пользователем;
cat file1.txt | systemd-run --pipe -p DynamicUser=1 sort -u | \ grep -i foobar > file2.txt #второй элемент конвейера (sort) запущен от динамического пользователя, и
уничтожается после завершения.
• опции программы:
-t #ключ для запуска командного интерпретатора строки;
--pty #ключ для запуска командного интерпретатора строки.
---------------------------------------------------------------------------------# (systemd-nspawn) создание чистого окружения:
mkdir /path/to/target #создание точки монтирования корневой директории;
mount /dev/sdxN /path/to/target #монтирование sdxN в /path/to/target;
systemd-nspawn /path/to/target #запуск чистого окружения.
• запуск полностью изолированной ос через systemd-nspawn:
- запуск Debian на Fedora-хосте:
debootstrap --arch=amd64 unstable debian-tree/ #закачка необходимого дистрибутива или создание своего;
systemd-nspawn -D debian-tree/ #запуск дистрибутива в полностью изолированной среде.
- запуск полноценной ОС внутри контейнера:
systemd-nspawn -D debian-tree/ /sbin/init #изнутри контейнера невозможно увидеть процессы, которые находятся вне его.
---------------------------------------------------------------------------------# (systemd-machine-id-setup) вывод и генерация идентификатора ПК:
--print #вывод machine-id;
--root=root #генерация machine-id.
• файлы и директории:
/etc/machine-id
==================================================================================
# ADM [init] - CHROOT:
---------------------------------------------------------------------------------# (chroot) создание чистого окружения:
• монтирование базовых директорий:
mkdir /mnt/target #создание точки монтирования корневой директории;
mount /dev/sdxN /mnt/target #монтирование sdxN в /mnt/target.
• монтирование vfs:
mount -o [r]bind,[ro] /dev/pts /mnt/target/dev/pts #vfs (ro,nosuid,nodev,noexec,seclabel);
mount -o [r]bind,[ro] /dev /mnt/target/dev #vfs (ro,nosuid,nodev,noexec,seclabel);
mount -o [r]bind,[ro] /proc /mnt/target/proc #vfs (ro,nosuid,nodev,noexec,seclabel);
mount -o [r]bind,[ro] /sys /mnt/target/sys #vfs (ro,nosuid,nodev,noexec,seclabel);
mount -o [r]bind,[ro] /tmp /mnt/target/tmp #vfs (ro,nosuid,nodev,noexec,seclabel).
• для автомонтирования необходимо изменить fstab:
/dev/sdxN /mnt/target ext4 defaults 0 0 #монтирование корневого раздела (sdxN) в /mnt/target;
/dev/pts /mnt/target/dev/pts devpts rbind,ro 0 0 #devpts;
/proc /mnt/target/proc proc rbind,ro 0 0 #proc;
/sys /mnt/target/sys sysfs rbind,ro 0 0 #sys.
---------------------------------------------------------------------------------# сеть:
cp -Lf /etc/resolv.conf /mnt/target/etc/ #скопировать резолвер для поднятия сети в чруте (в старых версиях);
hostname <целевой_хост> #задать имя хоста, что необходимо для работы некоторых программ.
---------------------------------------------------------------------------------# переход в чрут:
chroot /mnt/target #переход в пользователя root;
chroot --userspec=[user|UID]:[group|GID] /mnt/target #переход в пользователя user:group, созданного ранее под рутом.
---------------------------------------------------------------------------------# первым делом в чруте:
• настройка переменных среды:
export PS1="CHROOT:\w# " #смена заголовка cli (до первого выхода из чрута).
• генерация machine-id:
dbus-uuidgen > /var/lib/dbus/machine-id #генерация UUID системы в /var/lib/dbus/machine-id.
• создание нового пользователя с ограниченным набором прав:
useradd -Z user_u -U -m -d /home/username -s /bin/bash -u 4814 username #создание пользователя username (без пароля).
• подключение раздела подкачки:
swapon /dev/sdxN #если в нем есть необходимость.
ВНИМАНИЕ! systemd в чруте не работает, но работает init (н-р: /etc/init.d/ssh {start|stop|status|restart|force-re|reload}).
---------------------------------------------------------------------------------# выход из чрута:
• чрут #очистка:
dnf | apt-get clean #очистка кэша установочных репозиториев;
rm /var/lib/dbus/machine-id #удаление UUID системы;
rm -rf /tmp/* #очистка временных файлов;
rm -rf /var/tmp/* #очистка временных файлов;
rm -rf /var/crash/* #очистка временных файлов.
• чрут #выход:
exit #переход в родительскую систему.
• родительская ОС #hostname:
hostname <исходный_хост> #возврат исходного имени хоста.
• родительская ОС #размонтирование:
umount --recursive /mnt/target/{proc,sys,dev/pts} #размонтирование vfs (если были смонтированы из родительской ОС);
umount --force /mnt/target/{proc,sys,dev/pts} #если какая-то программа внутри чрута держит монтирование;
umount --lazy /mnt/target/{proc,sys,dev/pts} #если какая-то программа внутри чрута по прежнему держит монтирование;
umount /mnt/target #размонтирование корневого каталога.
==================================================================================
# (chroot) запуск отдельных программ в песочнице:
chroot --userspec=[user|UID]:[group|GID] /path/to/sandbox /usr/bin/prg #запуск prg с измененной корневой директорией от user.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [proc] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# ADM [proc] - ИНФОРМАЦИЯ О ЖЕЛЕЗЕ:
---------------------------------------------------------------------------------# подборка команд:
• BIOS:
dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8
---------------------------------------------------------------------------------# (dmidecode) DMI-декодер (информация о железе и BIOS):
dmidecode #полный вывод информации о железе и BIOS.
• опции программы:
-d file #читать информацию из file (по умолчанию /dev/mem);
-s string #вывод информации по заданному параметру:
[bios-vendor|..|system-manufacturer|..|baseboard-version|..|chassis-...];
-t type #вывод информации по заданному типу:
[bios|system|baseboard|chassis|processor|memory|cache|connector|slot];
-H number #вывод информации по заданному номеру (0 ~ конец таблицы);
-d #вывод информации в hex-формате.
• файлы и директории:
/sys/* #информацио о железе;
/sys/devices/virtual/dmi/id/ #содержит информацию о текущем устройстве.
---------------------------------------------------------------------------------# (biosdecode) BIOS-декодер:
biosdecode #вывод информации о BIOS.
• опции программы:
-d file #читать информацию из file (по умолчанию /dev/mem).
---------------------------------------------------------------------------------# (lshw) детальная информация о железе:
lshw #вывод базовой информации о железе.
---------------------------------------------------------------------------------# (lscpu) информация о процессоре:
-a #информация по всем процессорам (ядрам), как онлайн, так и нет {-e,-p};
-b #информация по процессорам (ядрам) онлайн {-e,-p};
-c #информация по процессорам (ядрам) офлайн {-e,-p};
-e #вывод информации по ядрам процессора (в читабельном формате);
-J #вывод в формате Json;
-p #вывод информации по ядрам процессора (в юзабельном формате);
-s /path/to/cpuinfo #задать путь отличный от дефолтного;
-x #вывод информации в hex-формате;
-y #вывод физических ID для колонок с топологическими элементами.
---------------------------------------------------------------------------------# (lsipc) информация о системе IPC:
-J #вывод в формате Json;
-l #вывод списка параметров;
-n #вывод информации по каждому из параметров;
-r #вывод в формате raw.
---------------------------------------------------------------------------------# (lsmem) информация о доступных диапазонах памяти:
-a #вывод всей информации;
-b #вывод информации в байтах;
-J #вывод в формате Json;
-r #вывод в формате raw.
---------------------------------------------------------------------------------# (lspci) информация о шине PCI:
-m #dump PCI;
-t #вывод дерева с шинами, мостами, устройствами и их соединениями;
-k #вывод информации о драйверах устройств;
-D #отображать номера доменов PCI;
-n #вывод кодов устройств (кратко);
-nn #вывод кодов устройств (подробно);
-Q #вывод кодов устройств и классов (кратко);
-s [domain:bus:device.func] #вывод информации по заданному устройству:
func:[Slot|Class|Vendor|Device|SVendor|SDevice|PhySlot|Rev|..]
-d [vendor:device:class] #вывод информации по заданному устройству;
-i file #задать файл с номерами ID устройств и производителями;
-p file #задать файл с модулями ядра;
-J #вывод в формате Json;
-M #пересканировать карту шины PCI;
-r #вывод в формате raw;
-v #подробный вывод информации по всем устройствам на шине;
-vv #более подробный вывод информации по всем устройствам на шине;
-vmm #краткий читабельный список устройств шины;
-x #вывод информации в hex-формате (кратко);
-xxx #вывод информации в hex-формате (подробно);
-xxxx #вывод информации в hex-формате (ниибически подробно).
• файлы и директории:
/usr/share/hwdata/pci.ids #файл с номерами ID устройств и вендорами;
/lib/modules/kernel_version/modules.pcimap #файл с модулями ядра;
/lib/modules/$(uname -r)/modules.alias #список молдулей подгружаемых ядром (включая драйвера для железа);
---------------------------------------------------------------------------------# (lsscsi) вывод информации об устройствах SCSI:
lsscsi #вывод всех устройств SCSI;
lsscsi -L #вывод всех устройств SCSI с детализацией атрибутов;
lsscsi -s #вывод информации в человекочитаемом виде.
------------------------------------------------------------------------------------# (update-pciids) обновление файла pci.ids:
update-pciids #загрузка и обновление файла /usr/share/hwdata/pci.ids.
---------------------------------------------------------------------------------# (lsusb) информация о шине USB и её устройствах:
-d [vendor:product] #вывод информации по заданному устройству;
-D /dev/bus/usb/00X/00X #подробная информация по заданному устройству;
-s [bus:devnum] #вывод информации по заданному устройству;
-t #вывод дерева шины USB;
-v #подробный вывод всей информации по шине USB.
• файлы и директории:
/usr/share/hwdata/usb.ids #файл с номерами ID устройств и вендорами.
---------------------------------------------------------------------------------# (lsusb.py) информация о шине USB и её устройствах:
lsusb.py #вывод информации о шине USB в краткой информативной форме.
---------------------------------------------------------------------------------# (usb-devices) информация о шине USB и её устройствах:
usb-devices #вывод информации о шине USB (менее подробно, чем lsusb).
---------------------------------------------------------------------------------# (acpi) вывод информации о аккумуляторной батарее и кулерах:
• установка:
dnf -y install acpi
• использование:
acpi #вывод базовой информации о АКБ (уровень заряда, статус, тайминги);
• опции программы:
-a #вывод информации о адаптере батареи;
-b #краткая информация о уровне заряда батареи;
-c #вывод информации о кулерах;
-f #вывод температуры в фаренгейтах;
-i #информация о ёмкости заряда батареи;
-t #краткая информация о температуре батареи;
-V #наиболее полная и детальная информация о батарее и кулерах.
---------------------------------------------------------------------------------# (upower) вывод информации о питающем устройстве:
upower -d #вывод информации о состоянии питающих устройств;
upower -d|grep percent|grep -v grep #вывод информации о текущем заряде батареи;
upower -i /org/freedesktop/UPower/devices/battery_BAT1
• опции программы:
-d #вывод информации о состоянии питающих устройств;
-e #вывод списка питающих устройств;
-m #мониторинг устройств в режиме реального времени;
--monitor-detail #детальный мониторинг устройств в режиме реального времени;
-i #вывод информации о заданном устройстве;
?
-w #.
---------------------------------------------------------------------------------# (batstat) вывод информации о аккумуляторной батарее:
• установка:
dnf -y install batstat
• использование:
batstat #вывод информации о АКБ.
---------------------------------------------------------------------------------# (udev) управление оборудованием в системе:
• схема работы ядра, модулей ядра (драйверов) и железа:
+--------- Loads driver (kernel module)
|
(uevent)
Y
Kernel -------> udevd -------> udev -------> modprobe
^
^ \-------> dbus -------> apps (e.g. gnome)
|
|
|
+--- Implements udev rules (creates /dev entries, etc.)
+--- orders events
• работа udev на примере FlashUSB:
- флэшка подсоединяется к интерфейсу USB[2|3].0;
- происходит инициализация на шине USB;
- ядро создаёт событие, которое передаётся udev;
- udev ищет правила, соответствующие данному событию в директории /usr/lib/udev/rules.d/*.rules;
- в соответствии с правилом, прогружает необходимые модули ядра (драйвера) и инициализирует устройство в ОС;
- происходит создание специального файла sdb в директории /dev/.
• разновидности устройств:
- блочные устройства #работают с блоками данных:
/dev/sda0 #диск HDD.
- символьные устройства #работают с потоком данных:
/dev/input/mouse0 #мышь.
• файлы и директории:
/usr/lib/udev/rules.d/*.rules #правила применяемые в связи с тем или иным событием.
==================================================================================
# ADM [proc] - ИНФОРМАЦИЯ О СИСТЕМЕ И ПРОЦЕССАХ:
---------------------------------------------------------------------------------# подборка команд:
• boot:
cat /proc/cmdline #boot time опции.
• kernel:
cat /proc/version #версия Linux kernel (uname);
cat /proc/modules #загруженные модули (lsmod);
варианты ядра для x86:
Regular #несколько процессоров, максимально 4GB RAM;
PAE #32 процессора, 16GB RAM;
Xen #поддержка виртуализации.
варианты ядра для x86_64:
Regular #64 процессора, максимально 256GB RAM;
Xen #поддержка виртуализации.
ВНИМАНИЕ! Ядро обычно устанавливается в /boot/vmlinuz-*
• CPU:
cat /proc/cpuinfo #информация о CPU.
• устройства:
cat /proc/devices #конфигурация устройств;
/dev/tty[0-6] #виртуальные консоли;
/dev/null #"ноль";
/dev/zero #"ноль";
/dev/random #генератор случайных чисел;
/dev/urandom #генератор случайных чисел.
• процессы:
less /proc/pid #информация о всех процессах;
less /proc/pid/cmd #вывод информации по конкретному процессу;
less /proc/pid/cwd #директория откуда запущен процесс;
ls -la /proc/pid/exe #директория где расположен процесс;
less /proc/pid/fd/ #из какого терминала запущен процесс;
less /proc/pid/smaps #информация о процессе;
less /proc/pid/statm #информация о памяти для конкретного процесса;
less /proc/pid/status #информация о конкретном процессе, в т.ч. памяти.
• прерывания:
watch -n1 'cat /proc/interrupts' #просмотр изменений прерываний.
• виртуализация:
egrep '(pae|svm|vmx)' /proc/cpuinfo:
[pae] #будет работать xen;
[vmx](intel)|[svm](AMD) #полная виртуализация.
• действующие системные ограничения:
sysctl -a #вывод всех системных ограничений;
sysctl fs.file-max #максимальное количество открытых файлов;
sysctl fs.file-nr #количество используемых дескрипторов.
• информация о текущем дистрибутиве:
cat /etc/redhat-release #информация о версии RHEL;
cat /etc/debian_version #информации о версии Debian.
---------------------------------------------------------------------------------# (uname) вывод информации о системе:
uname -a #полный вывод информации о ядре и сборке.
• опции программы:
-a #полный вывод информации о ядре и сборке;
-s #вывод информации о ядре;
-n #вывод информации о сетевого имени;
-r #вывод информации о релизе ядра;
-v #вывод информации о версии ядра;
-m #вывод информации о имени машины;
-p #вывод информации о типе процессора;
-i #вывод информации о разрядности системы;
-o #вывод информации о операционной системе.
---------------------------------------------------------------------------------# (systemd-analyze) анализ системы:
systemd-analyze time #вывод времени загрузки ОС;
systemd-analyze blame #вывод времени загрузки сервисов;
systemd-analyze cat-config firewalld.service #показать директорию конфигурационного файла;
systemd-analyze security firewalld.service #проверить юнит на безопасность;
systemd-analyze verify myunit #проверить юнит на синтаксис.
• опции программы:
blame #вывод данных времени загрузки сервисов в консоль;
calendar [--iterations=1 '*-2-29 0:0:0'] #вывод календаря события в будующем;
cat-config [юнит] #вывод конфигурационного файла юнита;
?
condition [con] #;
critical-chain [юнит] #вывод временных цепочек для юнитов;
dot [юнит] #вывод информации о юните в формате dot;
dump #вывод подробной информации о запуске системы и всех юнитов;
exit-status [статус] #вывод информации о статусе и классе юнита(ов);
plot #данные времени загрузки сервисов в формате SVG;
security [юнит] #проверка юнита на безопасность;
syscall-filter [@filter] #вывод всех или отфильтрованных системных вызовов;
time #вывод времени загрузки системы;
timespan [1s 300s '1year 0.000001s'] #перевод заданных временных единиц;
timestamp [yesterday|now|tomorrow] #вывод timestamp;
unit-paths #вывод директорий юнитов;
verify [юнит] #проверить файл юнита на корректность написания;
--system #только для системы;
--user #только для текущего пользователя;
--global #только system-wide конфигурация для текущего пользователя;
-H --host=[USER@]HOST #только для удалённого хоста;
-M --machine=CONTAINER #только для контейнера;
--order #только запустившиеся юниты (для dot);
--require #только не запустившиеся юниты (для dot);
--from-pattern=[GLOB] #задать исходящие глобалы (для dot);
--to-pattern=[GLOB] #задать входящие глобалы (для dot);
?
--fuzz=[SECONDS] #;
--man=[no] #исключить старницы man;
--generators=[no] #не запускать генератор юнитов;
--iterations=N #задать число итераций;
--base-time=TIMESTAMP #задать TIMESTAMP (для calendar).
---------------------------------------------------------------------------------# (systemd-cgls) вывод дерева процессов системы (*.slice):
systemd-cgls -ak #вывод всех процессов в системе.
• опции программы:
-a #вывод всех групп, включая пустые;
-k #выводить трэды ядра;
-M [cont] #вывод информации по заданному контейнеру;
-u [юнит] #вывод информации по заданному системному юниту;
--user-unit [юнит] #вывод информации по заданному пользовательскому юниту.
---------------------------------------------------------------------------------# (w) информация о пользователях, работающих в данный момент:
w -s #вывод всех пользователей.
• опции программы:
-f #вывод хоста удаленного пользователя, подключившегося к системе;
-h #не выводить хэдер;
-i #вывод IP удаленного пользователя, подключившегося к системе;
-o #вывод в старом формате;
-s #задействовать сортировку;
-u #игнорировать текущий процесс пользователя.
---------------------------------------------------------------------------------# (lslogins) информация о системных пользователях и группах:
-a #вывод информации о паролях зарегистрированных пользователей;
-c #вывод информации в raw-формате с разделителями;
-f #вывод информации о неудачных попытках входа;
-g gname #вывод информации по заданной группе;
-G #вывод информации о зарегистрированных группах;
-l uname #вывод информации по заданному пользователю;
-L #вывод информации о крайних входах в систему;
-n #вывод информации без разделителей;
-p #вывод информации о использовании парольного входа;
-r #вывод информации в raw-формате без разделителей;
-s #вывод информации исключительно о системных аккаунтах;
-u #вывод информации исключительно о пользовательских аккаунтах;
-z #вывод всей информации в одну строку;
-Z #вывод информации о контексте SELinux.
---------------------------------------------------------------------------------# (uptime) продолжительности работы системы:
uptime #текущее время, продолжительность сеанса, пользователи, процессор.
• опции программы:
-p #продолжительность работы в формате up HH hours MM minutes;
-s #вывод даты и времени запуска в формате YY-MM-DD HH:MM:SS.
---------------------------------------------------------------------------------# (lsof) информация о файлах открытых системными процессами:
lsof /dev/sdxN #вывод файлов используемых устройством /dev/sdxN;
lsof /dev/log #вывод файлов используемых устройством /dev/log;
lsof +D /dir #вывод файлов открытых в заданной директории;
lsof -i #всех сетевых соединений;
lsof -i 192.168.34.56 #вывод файлов связанных с заданным IP;
kill -HUP 'lsof -t /path/to/file' #убить процесс использующий файл /path/to/file.
• опции программы:
-a #вывод всех файлов;
-c cmdname #список файлов используемых заданным процессом;
+d dir #информация о всех открытых файлах в заданной dir (текущей);
+D dir #информация о всех открытых файлах в заданной dir (рекурсивно);
-f fd1,fd2,.. #вывод информации по заданным файловым дескрипторам;
-F val1val2.. #задать выводимые информационные строки:
c #имя команды;
f #файловый дескриптор;
n #имя файла;
p #идентификатор процесса.
-g GID #вывод списка файлов используемых заданной группой;
-i #вывод списка файлов используемых для сетевых соединений;
+L num #открытые файлы, имеющие заданное количество ссылок;
-N #список файлов используемых в открытом доступе по протоколу NFS;
-p PID[,PID2,..] #список файлов открытых процессом с заданным PID;
+r t num #задать период обновления данных для директорий;
-t #вывод только PID процессов использующих файлы (применимо для kill);
-u UID[,UID2,..] #список файлов открытых пользователем с заданным UID;
-U #вывод списка файлов используемых UNIX-сокетами;
-Z #вывод контекста SELinux.
---------------------------------------------------------------------------------# (fuser) вывод процессов использующих заданные файлы, сокеты, устройства:
fuser -m /dev/dm-2 #вывод процессов использующих dm-2;
fuser -l /dev/dm-2 #вывод сигналов которые можно послать dm-2.
• опции программы:
-4 #поиск только среди сокетов IPv4;
-6 #поиск только среди сокетов IPv6;
-a #показывать также неиспользуемые файлы;
-i #спрашивать подтверждение завершения (игнор. без {-k});
-I #всегда использовать иноды для сравнения файлов;
-k #завершить процессы обращающиеся к заданному файлу;
-l #показать допустимые имена сигналов;
-m #показать процессы использующие заданные ФС или БУ;
-M #выполнять запрос только если ИМЯ является точкой монтирования;
-n #задать ОБЛАСТЬ;
-s #тихий режим;
-SIG[..] #задать отправляемый сигнал (по умолчанию SIGKILL) {-k};
-u #показывать идентификатор пользователя (UID);
-v #подробный вывод сообщений;
-w #завершать только процессы с правом на запись.
---------------------------------------------------------------------------------# (pgrep) быстрый вывод PID процесса:
pgrep procname #вывод PID procname в стандартный вывод.
• опции программы:
-a #вывод PID, имени и параметров заданного процесса;
-c #вывод количества запущенных одноименных процессов;
-d { } #задать разделитель для вывода всех PID заданного процесса;
-f #вывод всех PID для заданного процесса;
-F file #прочитать список PID из file;
-G gname|GID #вывод всех PID для заданной группы;
-i #игнорировать регистр;
-l #вывод PID и имени заданного процесса;
-n #вывод новейшего заданного процесса из всех запущенных процессов;
-o #вывод старейшего заданного процесса из всех запущенных процессов;
-P PPID #вывод PID процесса по заданному PPID;
-s SID #вывод всех PID для заданной сессии;
-t ttyN|pts/N #вывод всех PID для заданного терминала или pts'а;
-u EUID #вывод всех PID для заданного пользователя;
-U uname|UID #вывод всех PID для заданного пользователя;
-v #инверсия вывода (все PID, кроме заданного процесса).
---------------------------------------------------------------------------------# (ps) вывод информации о процессах системы:
ps -e f #краткий вывод по всем процессам в виде дерева;
ps -elyF f #подробный вывод по всем процессам в виде дерева <1>;
ps auxf #подробный вывод по всем процессам в виде дерева <2>;
ps -eZ f #контекст SELinux по всем процессам в виде дерева;
ps -eo pid,cmd,user,label f #вывод [PID|CMD|USER|LABEL];
ps uf #подробный вывод по процессам текущего пользователя в виде дерева;
ps Z f #контекст SELinux по процессам текущего пользователя в виде дерева;
ps a -o pid,cmd,user,label f #свой вывод для всех не системных пользователей;
ps -F 456 #подробный вывод по процессу 456;
ps Z 456 #контекст SELinux для конкретного процесса;
ps e 456 #вывод переменных среды для процесса 456;
• опции программы для вывода всех процессов:
-A #краткий вывод всех процессов (аналог {-e});
-e #краткий вывод всех процессов (аналог {-A}):
[PID|TTY|TIME|CMD].
•
•
•
•
•
-elyF #подробный вывод всех процессов <1>:
[S|UID|PID|PPID|C|PRI|NI|RSS|SZ|WCHAN|PSR|STIME|TTY|TIME|CMD];
aux #подробный вывод всех процессов <2>:
[USER|PID|%CPU|%MEM|VSZ|RSS|TTY|STAT|START|TIME|COMMAND].
опции программы для вывода процессов не системных пользователей:
a #краткий вывод процессов всех не системных пользователей:
[PID|TTY|STAT|TIME|COMMAND].
g #краткий вывод процессов текущего не системного пользователя;
u #подробный вывод процессов текущего не системного пользователя;
x #{g} + процессы запущенные системой от имени этого пользователя.
опции программы для вывода конкретного процесса:
pid #вывод конкретного процесса;
фильтрующие и вспомогательные опции программы:
e #вывод переменных среды;
f #вывод процессов в виде дерева;
-f #вывод [UID|PID|PPID|C|STIME|TTY|TIME|CMD];
-F #вывод [UID|PID|PPID|C|SZ|RSS|PSR|STIME|TTY|TIME|CMD];
-H #вывод процессов в иерархическом виде;
j #вывод [PPID|PID|PGID|SID|TTY|TPGID|STAT|UID|TIME|COMMAND];
-l #выводит столбцы [F|S|ADDR];
L #вывод списка всех форматов для опции {-o};
-s #вывод сигнальной информации;
-v #вывод [PID|TTY|STAT|TIME|MAJFL|TRS|DRS|RSS|%MEM|CMD];
-X #вывод [PID|STACKP|ESP|EIP|TMOUT|ALARM|STAT|TTY|TIME|CMD];
-y #выводит столбец [RSS] (только вместе с {-l});
-Z #вывод контекста SELinux для процессов (аналог {-M}).
опция по созданию своих таблиц:
-o format1,format2,.. #задать свой список информационных столбцов:
tty|%y #TTY (терминал);
gid #GID;
group|%G #GROUP (имя группы);
ouid #OWNER (владелец);
pgid|%r #PGID (process group ID);
ruser|%u #RUSER (реальное имя пользователя, обычно совпадает с USER);
uid #UID;
user|%U #USER (имя пользователя);
cgroup #CGROUP (полный путь группы SELinux);
label #LABEL (контекст SELinux);
slice #SLICE (только конечная группа SELinux);
unit #UNIT (юнит запустивший процесс);
uunit #UUNIT (пользователь-юнит??? запустивший процесс);
bsdstart #START (время запуска);
etime|%t #ELASPED (время с момента запуска процесса);
time|%x #TIME (совокупное время CPU???);
ni|nice|%n #NI (приоритет процесса):
-20 #наивысший приоритет;
0 #приоритет по умолчанию;
19 #низший приоритет.
pid|%p #PID (номер процесса);
ppid|%P #PPID (номер родительского процесса);
sid #SID (ID сессии);
pcpu|%C #%CPU (нагрузка на процессор);
pmem #%MEM (оперативная память);
vsz|%z #VSZ (виртуальная память);
cmd|args|%a #COMMAND (сама команда со всеми ключами и путями);
comm|%c #COMMAND (только имя команды + возможное описание).
опция сортировки:
O #похоже на {-o} + дает возможность сортировки:
c #CMD (имя процесса);
C #%CPU (нагрузка на процессор);
J #START (время запуска);
k #TIME ();
p #PID;
P #PPID (родительский процесс);
r #RSS;
R #RSS;
s #%MEM (объем памяти в килобайтах);
S #%MEM;
t #TTY (терминал);
T #START (время запуска);
u #USER (по имени пользователя);
U #UID (по номеру UID);
v #VSZ (объем виртуальной памяти в килобайтах);
y #PRI (приоритет).
---------------------------------------------------------------------------------# (pstree) вывод списка текущих процессов в виде дерева:
-a #вывод всех процессов системы;
-A #использовать ASCII;
-c #вывод комментариев к процессам;
-g #вывод PGID процессов;
-H PID #подцветить заданный процесс;
-l #вывод длинных линий;
-n #сортировать по PID;
-N type #специальные пространства имен (только от root);
cgroup
ipc
mnt
net
pid
user
uts
-p #вывод PID процесса;
-s #вывод родительских процессов;
-S #вывод переходов пространств имен;
-t #вывод полного имени (где это возможно);
-T #показать только процессы;
-u #вывод владельца (пользователя, запустившего процесс);
-U #использовать UTF-8;
-Z #вывод контекста SELinux.
-PID #вывод ветки потомков заданного процесса;
-username #выводит все ветки процессов, запущенных пользователем (общего предка может и не быть).
---------------------------------------------------------------------------------# (mod) модули ядра:
lsmod #просмотр загруженных модулей ядра в системе;
modinfo modulename #вывод информации о заданном модуле;
systool -v -m modulename #вывод списка опций, с которыми загружен модуль;
modprobe -c | less #вывод настроек для всех модулей;
modprobe -c | grep modulename #вывод настроек для заданного модуля;
modprobe --show-depends modulename #вывод зависимостей модуля (или его псевдонима), включая сам модуль;
depmod -a #обновление информации о зависимостях подгружаемых модулей;
find /lib/modules -name '*.ko.*' #поиск и просмотр всех встроенных модулей;
modprobe modulename #подгрузка модуля modulename в ядро (с зависимостями);
insmod modulename [ПАРАМЕТРЫ] #загрузка модуля из другого места (для тех модулей, которых нет в /usr/lib/modules/$(uname -r));
modprobe -r modulename #удаление (выгрузка) модуля modulename из ядра (с зависимостями);
rmmod modulename #удаление (выгрузка) модуля modulename из ядра (с зависимостями).
• особенности:
- https://devicehunt.com #ресурс посвящённый железу и драйверам:
cat /lib/modules/$(uname -r)/alias.modules|grep 9998
alias pci:v00001002d00009998sv*sd*bc*sc*i* radeon, где:
pci #type;
1002 #vendor (radeon);
9998 #deviceid.
• файлы и директории:
/lib/modules/$(uname -r)/modules.bultin #список встроенных модулей;
/lib/modules/$(uname -r)/modules.alias #список модулей подгружаемых ядром (включая драйвера для железа);
/etc/modules-load.d/rageon.conf #создать список прогружаемых модулей для видеокарты:
radeon
/etc/modprobe.d/modulename.conf #задать правила для загрузки подгружаемых модулей:
# загрузка модулей с заданными опциями:
options имя_модуля имя_параметра=значение_параметра #синтаксис;
options thinkpad_acpi fan_control=1 #пример.
# алиасы для модулей:
alias имя_модуля настоящее_длинное_название_модуля #можно создавать алиасы на модули с длинными именами;
#
у некоторых модулей есть алиасы, которые используются для их автоматической загрузки, когда они потребуются определённой программе:
alias net-pf-31 off #отключение алиаса для предотвращения автоматической загрузки модуля (для Prevent Bluetooth autoload).
# запрет загрузки модулей:
blacklist имя_модуля #синтаксис;
blacklist pcspkr #пример.
---------------------------------------------------------------------------------# (getconf) система POSIX:
getconf -a #вывод всей информации о системе POSIX;
getconf LONG_BIT #вывод информации о модуле системы POSIX.
---------------------------------------------------------------------------------# (ldd) работа с библиотеками (lib) Linux:
ldd /bin/login #вывод списка всех библиотек используемых программой login;
ldd -v /bin/login #детальный вывод по всем библиотекам программы login;
ldd /{,usr/}{bin,sbin}/* | grep -B 10 libpam | grep '^/' #cmd с поддержкой PAM.
---------------------------------------------------------------------------------# (lsns) информация о пространстве имен:
-J #вывод в формате Json;
-p PID #вывод информации по заданному PID;
-t type #вывод информации по заданному типу:
[mnt|net|ipc|user|pid|uts|cgroup];
-r #вывод в формате raw.
---------------------------------------------------------------------------------# (lsinitrd) информация о образе initramfs (раздел /boot):
lsinitrd /boot/initramfs-$(uname -r).img #вывод списка модулей.
• опции программы:
-s #отсортировать содержимое образа по размеру;
-f /path/to/file #вывод информации о file;
-k kernel_version #вывод информации по образу с заданной версией ядра;
-m #вывод списка модулей включенных в образ;
--unpack #распаковать образ в текущую директорию;
--unpackearly #распаковать микрокод образа в текущую директорию.
---------------------------------------------------------------------------------# (blockdev) управление блочным устройством:
blockdev --report #вывод информации по всем блочным устройствам.
---------------------------------------------------------------------------------# (lslocks) информация о локальной системе замков:
-J #вывод в формате Json;
-p PID #вывод информации по заданному PID;
-r #вывод в формате raw.
---------------------------------------------------------------------------------# (lspgpot) информация о базе ключей GnuPG.
gpg --import-ownertrust #запустить, если GnuPG ранее не использовался;
lspgpot #вывод информации о базе ключей GnuPG.
---------------------------------------------------------------------------------# (gdb) дебаггинг запущенных программ:
gdb -p 1325 #подключиться к запущенному процессу PID=1325.
• опции программы:
-batch #запуск в режиме batch;
-p PID #задать PID программы;
-q #использовать тихий режим;
-s file #прочитать таблицу символов из заданного файла;
-tty=dev #задать tty;
-write #включить запись в файлы.
• команды в режиме дебаггинга:
bt #вывод программного стека;
c #продолжить выполнение программы;
next #выполнить следующий шаг (поверх вызова функции);
step #выполнить следующий шаг (внутри вызова функции);
help name #вывод справки по программе;
quit #выход.
==================================================================================
# ADM [proc] - ИНФОРМАЦИЯ О ОПЕРАТИВНОЙ ПАМЯТИ И РАЗДЕЛЕ ПОДКАЧКИ:
---------------------------------------------------------------------------------# вывод базовой системной информации о RAM и swap:
cat /proc/meminfo #информация о RAM и swap;
cat /proc/swaps #swap;
cat /proc/zoneinfo #информация о облстях памяти с привязкой к CPU;
grep MemTotal /proc/meminfo #информация о RAM (полный объем);
grep HIGHMEM /boot/config-$(uname -r) #max возможный размер RAM.
sysctl vm.overcommit* #ограничительные параметры виртуальной памяти:
[0] #спецмеханизм ограничения виртуальной памяти (root не ограничен);
[1] #оверкоммит не отслеживается;
[2] #возможно лимитировать (cat /proc/meminfo commitLimmit commit_AS).
---------------------------------------------------------------------------------# (free) вывод информации об оперативной, виртуальной памяти и swap:
free -h #информация о ОЗУ и swap;
free -hlt #информация о ОЗУ и swap (High/Low/Total).
• опции программы:
-l #дополнительный вывод информации high и low;
-t #дополнительный вывод результирующей информации (для отчетов);
-h #информацию выводить в K/M/G/.. байтах.
---------------------------------------------------------------------------------# (pmap) виртуальные группы страниц памяти:
pmap -x PID #простой отчет;
pmap -X PID #подробный отчет;
pmap -XX PID #ниибически подробный отчет;
pmap -d PID #отчет в формате устройств;
pmap -p PID #вывод карты путей.
---------------------------------------------------------------------------------# (ulimit) управление стеком памяти:
ulimit -a #вывод информации по всем ограничениям;
ulimit -u #вывод максимального порога количества процессов для пользователя;
ulimit -u N #задать максимальнй порог количества процессов для пользователя;
ulimit -v #ывод максимальнго порога используемой ОЗУ для пользователя [KB];
ulimit -v N #задать максимальнй порог используемой ОЗУ для пользователя [KB].
• особенности:
cat /proc/sys/kernel/pid_max #вывод максимально допустимого количества процессов в системе.
• файлы и директории:
vi ~/.bashcr #можно задать личное пользовательское ограничение на количество процессов:
ulimit -u 1024
vi /etc/security/limits.conf #файл глобальных ограничений для пользователя;
@username
hard nproc 1000
@username
hard as
4000
vi /etc/security/limits.d/limits.conf #файл глобальных ограничений для пользователя:
@username
hard nproc 1000
@username
hard as
4000
---------------------------------------------------------------------------------# (swap) работа со swap:
swapoff /swap.old #отключить swap.old;
rm /swap.old #удалить swap.old;
dd if=/dev/zero of=/swap.new bs=1024k count=2000 #создать swap.new;
mkswap -L swap /swap.new #инициализировать swap.new с лейблом swap;
swapon /swap2gb #запустить swap.new.
==================================================================================
# ADM [proc] - УПРАВЛЕНИЕ ПРОЦЕССАМИ:
---------------------------------------------------------------------------------# (kill|killall) управляющие сигналы для процессов:
kill -l #вывод списка сигналов и их номеров;
kill -9 PID #убить процесс;
kill -kill PID #убить процесс;
kill -hup 'lsof -t /path/to/file' #перечитать конфигурационный файл процесса;
kill -hup 'cat /var/run/syslogd.pid' #перечитать конфигурационный файл syslogd;
kill -term 'cat /var/run/syslogd.pid' #корректно завершить выполнение syslogd;
kill -usr1 'cat /var/run/syslogd.pid' #включить/выключить режим отладки syslogd;
killall -term ssh #корректно завершить выполнение ssh;
killall -u user #завершить все процессы для пользователя user.
---------------------------------------------------------------------------------# (pkill) управляющие сигналы для процессов:
pkill procname #послать procname сигнал SIGTERM (по умолчанию);
pkill -KILL procname #послать procname сигнал SIGKILL;
pkill -9 procname #послать procname сигнал SIGKILL (убить процесс);
pkill -19 procname #послать procname сигнал SIGSTOP (остановить процесс);
pkill -18 procname #послать procname сигнал SIGCONT (запустить процесс).
• опции программы:
-c #вывод количества убитых одноименных процессов;
-f #убить все PID для заданного процесса;
-F file #прочитать список PID из file;
-G gname|GID #убить все PID для заданной группы;
-i #игнорировать регистр;
-n #убить новейший заданный процесс из всех запущенных процессов;
-o #убить старейший заданный процесс из всех запущенных процессов;
-P PPID #убить PID процесса по заданному PPID;
-s SID #убить все PID для заданной сессии;
-t ttyN|pts/N #убить все PID для заданного терминала или pts'а;
-u EUID #убить все PID для заданного пользователя;
-U uname|UID #убить все PID для заданного пользователя;
-v #инверсия вывода (убить все PID, кроме заданного процесса).
---------------------------------------------------------------------------------# (nice/renice) изменение приоритета процесса:
nice -n 19 process #запуск процесса с МИНИМАЛЬНЫМ приоритетом;
renice -n 10 -p PID #изменение приоритета уже запущенного процесса;
renice -n -20 -p PID #задать процессу МАКСИМАЛЬНЫЙ приоритет.
• опции программы:
-р PID #указать PID процесса;
-u UID/username #указать владельца процесса (имя или UID).
• особенности:
-20 #процесс имеет НАИБОЛЬШИЙ приоритет (-20..19 #задаёт администратор);
0 #приоритет по умолчанию;
19 #процесс имеет НАИМЕНЬШИЙ приоритет (0..19 #задаёт обычный пользователь).
---------------------------------------------------------------------------------# (ionice) меняет планировщик I/O дисков:
ionice -p123 #вывод текущих класса и приоритета для процесса с PID=123;
ionice -c3 -p123 #задать класс idle для PID=123;
ionice -c3 -p$$ #задать класс idle для /usr/bin/bash;
ionice -c2 -n0 firefox #запускает firefox с best effort и высоким приоритетом.
• опции программы:
-c class #задать класс;
-n level #задать приоритет;
-p PID #задать PID;
-P PGID #задать PGID;
-t #игнорировать ошибки;
-u UID #задать UID.
---------------------------------------------------------------------------------# (sync) запись буферизованных данных:
sync #запуск дебуферизации.
• описание:
- записывает данные, буферизованные в памяти, на диск (измененные супер-блоки, измененные inode'ы), операции чтения и записи также откладываются;
- буферизация должна быть реализована в ядре;
- программа sync делает системный вызов sync(2);
- ядро хранит данные в памяти во избежание частых (обычно медленных) дисковых операций чтения и записи:
это повышает производительность, но если компьютер аварийно завершает работу, данные могут быть утеряны, либо может быть повреждена ФС.
- sync гарантирует, что все, что хранилось в памяти, будет записано на диск;
- sync должен вызываться перед тем, как процессор будет остановлен каким-то нестандартным образом (перед паникой в ядре при отладке);
- обычно процессор должен быть остановлен при помощи программ shutdown(8), reboot(8), либо halt(8), которые пытаются перевести систему в неактивное состояние, прежде чем
вызывать sync(2);
- sync гарантирует, что будет составлен список "грязных" блоков, которые нужно записать;
- прежде чем они действительно будут записаны, пройдет еще некоторое время;
- команды reboot(8) и halt(8) учитывают это, делая паузу в несколько секунд после вызова sync(2).
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [sec] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# ADM [sec] - SELINUX:
---------------------------------------------------------------------------------• Терминология:
- DAC (Discretionary Access Control) #классическая дискреционная модель управления доступом:
разрешениям на чтение, запись, выполнение.
- MAC (Mandatory Access control) #дополнительная мандатная модель управления доступом:
SELinux (Security Enhanced Linux).
- пользователи:
для каждого реального пользователя Linux прицепляется заданный пользователь SELinux со своими правами.
- роли:
роль определяет, какие пользователи могут осуществлять доступ к заданному процессу;
роли не тождественны группам, они больше похожи на фильтры - пользователь может принадлежать к роли в любое время, если роль это позволяет;
определение роли в политике безопасности SELinux задаёт пользователей, имеющих доступ к этой роли;
роли используются потому, что один из элементов SELinux реализует ролевую модель управления доступом (RBAC — Role Based Access Control);
роли нельзя объединять.
- субъекты и объекты:
субъект (сущность) #процесс, который может потенциально влиять на объект (демон или запущенная программа);
объект #все, над чем можно выполнять какие-либо действия (файл, директория, порт, tcp-сокет, курсор, X-сервер);
разрешения субъекта #действия, которые субъект может выполнить над объектом.
- домен:
контекст для субъектов SELinux (процессов);
этот контекст представляет собой как бы оболочку вокруг субъекта, которая сообщает процессу, что он может и не может делать;
н-р, домен определяет, какие файлы, директории, ссылки, устройства или порты доступны для субъекта.
- типы:
контекст для объектов SELinux (файлов и директорий).
- уровень:категория #в стандартных политиках SELinux не применяется:
используется для MLS/MCS (Model Multi-Level Security / Multi-Category Security), в которых используются уровни доступа для файлов определенных категорий;
s0-s0:c0.c1023 #максимально разрешенный уровень доступа.
- контекст безопасности #совокупность всех атрибутов, которые связаны с объектами и субъектами;
- политика безопасности #набор заданных правил, который регулирует взаимодействие ролей, доменов;
- как работает SELinux:
политика SELinux определяет доступ пользователей к ролям, доступ ролей к доменам и доступ доменов к типам;
сначала пользователь должен быть авторизован для получения роли;
затем роль должна быть авторизована для доступа к доменам;
домен, в свою очередь, может осуществлять доступ только к определенным типам файлов;
принудительное присвоение типов (Type Enforcement):
механизм, при котором процесс, запущен в определенном домене и может осуществлять только определенные действия над определенными типами объектов.
политика SELinux не заменяет традиционную дискреционную модель управления доступом (DAC):
если правило DAC запрещает пользователю доступ к файлу, правила политики SELinux не будут применяться, потому что первая линия обороны уже заблокировала доступ;
SELinux начинает работать уже после DAC.
---------------------------------------------------------------------------------• Режимы SELinux:
- enforcing #принудительный:
minimum #экспериментальная политика, основанная на target (позволяет гибко управлять правилами);
targeted #защищает основные системные сервисы, но не все программы по принципу "запрещено всё, что не разрешено" (включен по умолчанию);
strict #защищает системные сервисы и программы (самая строгая политика);
mls (multi level security) #содержит правила и различные уровни безопасности:
секретно;
совершенно секретно;
ОВ (особой важности).
- permissive #только сообщает о нарушениях (разрешено всё, сообщения логируются);
- disabled #выключен.
---------------------------------------------------------------------------------• Контекст SELinux #общая структура:
- синтаксис:
СУЩНОСТЬ:РОЛЬ:ДОМЕН/ТИП:УРОВЕНЬ:КАТЕГОРИЯ
system_u:system_r:kernel_t:s0 #пример;
ебаные вампиры ... #пасхалка.
- subjects #субъекты (процессы);
- objects #объекты (директории, файлы, системные вызовы и т.д.):
user #пользователь:
guest_u #гости (вход - терминал,ssh | сеть - нет | setuid и setgid - нет | логи - нет);
root #администрирование системы;
staff_u #диагностика системы (вход - терминал,X,ssh | сеть - да | setuid и setgid - да | логи - да);
sysadm_u #администрирование системы (может использоваться для ограничения пользователя root);
system_u #зарезервирован для нужд системы (не используется обычными пользователями);
unconfined_u #неограниченные пользователи (имеет ограничение на исполнение определенных операций в памяти);
user_u #обычные пользователи (вход - терминал,X,ssh | сеть - да | setuid и setgid - нет | логи - нет);
?
xguest_u #интернет-киоск (вход - терминал,X,ssh | сеть - нет | setuid и setgid - нет | логи - нет).
role #роль:
object_r #системный объект;
system_r #системный процесс;
?
unconfined_r #
..
type #тип:
bin_t #директория bin;
boot_t #директория boot;
..
range #уровень (диапазон) MLS:
s0 #минимальный доступ (по умолчанию);
s0-s0:c0.c1023 #полный доступ;
..
- actions #действия.
---------------------------------------------------------------------------------• Пользователи (роли) SELinux (по умолчанию):
- нет GUI, нет сети, нет доступа к su и sudo:
guest_u
s0
guest_r
- полный доступ к системе:
root
s0-s0:c0.c1023
staff_r sysadm_r system_r unconfined_r
- полный доступ к системе:
staff_u
s0-s0:c0.c1023
staff_r sysadm_r system_r unconfined_r
- полный доступ к системе?:
sysadm_u
s0-s0:c0.c1023
sysadm_r
- полный доступ к GUI, сети и командам sudo:
system_u
s0-s0:c0.c1023
system_r unconfined_r
- полный доступ к GUI, сети и командам sudo:
unconfined_u
s0-s0:c0.c1023
system_r unconfined_r
- полный доступ к GUI и сети:
user_u
s0
user_r
- есть GUI, сеть только через browser:
xguest_u
s0
xguest_r
---------------------------------------------------------------------------------• установка:
policycoreutils-python-utils #содержит инструменты для администрирования SELinux;
setools #обеспечивает инструменты командной строки возможностью работы с политиками SELinux:
sediff #инструмент, использующийся для просмотра различий между политиками;
seinfo #инструмент для просмотра информации о компонентах, которые создают политики;
sesearch #инструмент для поиска внутри политик.
setools-console:
sediff;
seinfo;
sesearch.
setroubleshoot #набор инструментов, которые помогают определить, что именно (скрипт, файл и т.д.) блокируется системой SELinux.
• действия после установки:
- отредактировать конфигурационный файл SELinux /etc/selinux/config: SELINUX=permissive;
- reboot;
- проверка /var/log/messages на ошибки и их исправление;
- отредактировать конфигурационный файл SELinux /etc/selinux/config: SELINUX=enforcing;
- reboot.
ВНИМАНИЕ! Загружаться в принудительном режиме (enforcing) можно только после полной настройки и отладки SELinux:
- permissive #разрешающий режим, который используется для настройки (файлам назначаются метки, работает вся функциональность SELinux, но ничего не запрещается, только
протоколируется);
- enforcing #принудительный режим, в котором применяются все настроенные политики.
---------------------------------------------------------------------------------• отключение SELinux:
vi /etc/selinux/config:
SELINUX=disabled
init 6
• запуск SELinux:
vi /etc/selinux/config:
SELINUX=enforcing
touch /.autorelabel
init 6
==================================================================================
# (getenforce|sestatus) просмотр текущего режима SELinux:
getenforce #выводит текущий режим;
sestatus #выводит подробную информацию о текущем режиме.
---------------------------------------------------------------------------------# (setenforce) изменение текущего режима SELinux:
setenforce [enforcing|1] #включение принудительного режима;
setenforce [permissive|0] #включение режима сообщений о нарушениях.
---------------------------------------------------------------------------------# (semanage) просмотр информации о пользователях SELinux:
• синтаксис:
semanage {login|user|port|ibpkey|ibendport|interface|fcontext|module|node|boolean|permissive} -l [-n] #вывод информации;
semanage login -{a|d|m} [-sr] login_name #сопоставление имен пользователей ОС пользователям SELinux;
semanage user -{a|d|m} [-LrRP] selinux_name #сопоставление имен SELinux доступному набору ролей;
semanage port -{a|d|m} [-tr] [-p protocol] port | port_range #изменение контекста для портов;
semanage interface -{a|d|m} [-tr] interface_spec #изменение контекста для интерфейсов;
semanage fcontext -{a|d|m} [-frst] file_spec #изменение контекста для объектов (файлы, системные вызовы, и т.д.);
semanage translation -{a|d|m} [-T] level #управление алиасами на уровни MLS.
• использование:
semanage user -l #вывод списка пользователей SELinux;
semanage login -l #вывод списка пользователей зарегистрированных в системе;
semanage fcontext -a -t httpd_sys_content_t /www #прописать тип контекста для всей новой директории в политику по умолчанию;
semanage fcontext -a -s user_u -t httpd_sys_content_t /../file #прописать контекст для нового file в политику по умолчанию.
• опции программы:
-a #добавить запись объекта;
-d #удалить запись объекта;
-f #тип файла (как в выводе ls);
-l #вывод списка объектов;
-L #задает уровень чувствительности MLS (по умолчанию s0);
-m #изменить запись объекта;
-n #не выводить шапку при печати списка объектов;
-p #задает протокол (tcp|udp) и порт;
-P #задает префикс;
-r #задает диапазон MLS;
-R #задает роль (несколько задаваемых ролей разделяются пробелами и заключаются в кавычки, либо используется -R n раз);
-s #задает пользователя SELinux;
-S #задать режим;
-t #задает тип объекта;
-T #трансляция SELinux.
• вывод информации о контексте и пользователях:
id -Z #вывод контекста текущего пользователя;
less /etc/selinux/targeted/contexts/users/.. #просмотр всех разрешенных доменов и ролей пользователя.
---------------------------------------------------------------------------------# (semanage) операции с политиками SELinux для локальных пользователей:
• переназначение роли SELinux для пользователя ОС:
semanage login -d uname #удалить политику SELinux у пользователя uname;
semanage login -a -s user_u uname #назначить роль user_u для пользователя uname;
• переназначение пользователя SELinux по умолчанию:
semanage login -m -s guest_u -r s0 __default__ #назначить роль guest_u и диапазон MLS s0 в текущем режиме действием по умолчанию для всех вновь создаваемых пользователей.
• создание нового уровня MLS в политиках SELinux:
semanage translation -a -T chaos s0:c20 #создание уровня MLS chaos;
service mcstrans restart #перезапуск mcstrans;
semanage login -a -r chaos luser #назначение нового уровня пользователю luser;
теперь никто кроме пользователя luser не сможет получать доступ к его файлам и директориям.
• управление контекстом SELinux по отношению к пользователю:
semanage permissive -a httpd_t #полное отключение проверок SELinux в отношении определенного субъекта;
semanage permissive -d httpd_t #полное включение проверок SELinux в отношении определенного субъекта;
• переключатели SELinux:
semanage boolean -l #вывод списка всех переключателей.
---------------------------------------------------------------------------------# (semodule) управление модулями политик:
• использование:
semodule -lfull #вывод списока всех модулей с дополнительными опциями;
semodule -i module.pp #установить модуль;
semodule -d module #отключить модуль.
• опции программы:
-d #отключить модуль;
-e #включить модуль;
-i #установить модуль;
-l #вывод списока всех модулей;
-lfull #вывод списока всех модулей с дополнительными опциями;
-r #удалить модуль;
-u #обновить модуль;
-X [1..999] #задать приоритет модуля.
---------------------------------------------------------------------------------# (getfattr) просмотр контекста:
ls -laZ #вывод информации о контекстах для файлов и каталогов;
getfattr -m . -d /etc/passwd #вывод информации о контекстах для файлов;
ps -Z #вывод информации о контекстах для процессов.
---------------------------------------------------------------------------------# (chcon) ручная модификация контекста файлов:
chcon -R -u system_u -t public_content_t /opt/ftp #задать контекст для ftp;
chcon -R -u system_u -t public_content_rw_t /opt/ftp #задать контекст ro для ftp;
chcon -R --reference /var/ftp /opt/ftp #клонировать права SELinux.
• опции программы:
-l #задать уровень MLS;
-r #задать роль контекста;
-R #рекурсия;
-t #задать тип контекста;
-u #задать вид пользователя;
--reference #клонировать права SELinux.
---------------------------------------------------------------------------------# (matchpathcon) выявление несоответствующего контекста для заданной директории:
matchpathcon -V /var/www/html/* #сравнение контекста с оригинальными шаблонами.
-m #поиск совпадений по типу:
file;
dir;
pipe;
chr_file;
blk_file;
lnk_file;
sock_file.
-V #поиск несовпадений с контекстом по умолчанию.
---------------------------------------------------------------------------------# (restorecon) модификация контекста файлов в соответствии с шаблонами;
restorecon -v -r -F /var/www/ #исправление контекста для /var/www;
restorecon / -iRnvW > file #поиск битого контекста без исправлений;
restorecon / -iRFvW > file #поиск битого контекста с исправлением.
• опции программы:
-e DIR #директория исключаемая из обработки;
-f FILE #список обрабатываемых файлов;
-F #принудительно установить контекст в соответствии с file_context;
-i #игнорировать несуществующие файлы;
-n #не менять метки файлов;
-o FILE #сохранить список файлов с некорректным контекстом в file;
-R|r #рекурсия;
-v #вывод изменений меток файлов;
-W #вывод изменений, если поменялись тип, роль или пользователь.
---------------------------------------------------------------------------------# (fixfiles) исправление несоответствующего контекста в соответствии с le_contexts:
fixfiles -F onboot #запустить проверку с исправлениями после перезагрузки;
fixfiles -F restore /dir #изменить некорректный контекст директории и файлов.
• опции программы:
-l file #задать log-файл;
-o file #вывести результат проверки в file;
-F #принудительно установить контекст в соответствии с file_context;
-f #не предупреждать об удалении из /tmp;
-R rpmpackage #восстановить контекст в соответствии с данными из установочных пакетов;
-C PREVIOUS_FILECONTEXT #запустить diff для сравнения файла PREVIOUS_FILECONTEXT с текущим и восстановить контекст на всех затронутых файлах.
• команды:
onboot #запустить проверку с исправлениями после перезагрузки;
check #запустить проверку и вывести список некорректных файлов без исправлений (старый и новый контекст);
verity #запустить проверку и вывести список некорректных файлов без исправлений;
restore #изменить некорректный контекст файлов;
relable #вывод запросов на применение изменений.
---------------------------------------------------------------------------------# (autorelabel) переразметка контекста для всей ФС в соответствии с системными шаблонами в автоматическом режиме:
• стандартный вариант:
touch /.autorelabel #создать файл .autorelabel в корне системы;
reboot #перезагрузка.
• иногда автоматическая переразметка не срабатывает (чаще всего в тех случаях, когда дистрибутив с выключенной системой SELinux был обновлен), в таком случае необходимо сделать
следующее:
genhomedircon #пересоздать политику SELinux;???
touch /.autorelabel #создать файл .autorelabel в корне системы;
reboot #перезагрузка.
---------------------------------------------------------------------------------# (getsebool) просмотр информации о переключателях SELinux:
getsebool -a #вывод всех доступных переключателей;
getsebool user_exec_content #вывод информации по заданному переключателю.
• опции программы:
-a #вывод списка всех переключателей.
• состояния переключателей:
on #переключатель включен;
off #переключатель вывключен.
• список переключателей:
ftp_home_dir #позволяет демону FTP осуществлять доступ к домашним директориям пользователей;
ftpd_anon_write #анонимный доступ FTP на запись;
..
---------------------------------------------------------------------------------# (setsebool) изменение состояния переключателей SELinux:
setsebool user_exec_content off #запрет на выполнение скриптов в /home и /tmp.
• опции программы:
-a #вывод списка всех переключателей;
-N #не задавать действие на постоянной основе;
-P #задает действие на постоянной основе;
-V #вывод ошибок.
• команды:
on #включить переключатель;
off #выключить переключатель.
• ВНИМАНИЕ! Изменения действуют до первой перегрузки ОС, для применения постоянных изменений используется флаг -P.
---------------------------------------------------------------------------------# операции с файлами и их контекстами соответственно:
cp #утилита копирует файлы вместе с их контекстом;
mv #утилита копирует и перемещает файлы вместе с их контекстом;
tar #не сохраняет контексты безопасности (флаг --selinux исправляет это).
==================================================================================
# ПРИМЕРЫ:
---------------------------------------------------------------------------------• создание нового пользователя SELinux:
semanage user -a -r s0-s0:c0-c1023 -R "staff_r system_r webadm_r" -P user webadm_u #создание пользователя webadm_u;
cp /etc/selinux/targeted/contexts/users/staff_u /etc/selinux/targeted/contexts/users/webadm_u #копирование разрешений;
semanage user -d xguest_u #удалить пользователя SELinux xguest_u.
---------------------------------------------------------------------------------• создание нового физического пользователя в системе с заданной ролью SELinux:
useradd -Z xguest_u -U -m -d /home/tu -s /bin/bash -u 1010 tu #создание нового пользователя tu с одноименными группой и домашним каталогом, икс bash, запрещенным входом в
систему (!), uid=1010, gid=1010 и политикой SELinux xguest_u;
usermod -Z staff_u tu #изменение политики SELinux для пользователя tu.
---------------------------------------------------------------------------------• операции с политиками SELinux для локальных пользователей:
semanage login -d uname #удалить политику SELinux у пользователя uname;
semanage login -a -s user_u uname #назначить роль user_u для пользователя uname;
semanage login -m -s guest_u uname #назначить новую роль guest_u для пользователя uname;
semanage login -m -s user_u -r s0 __default__ #назначить роль user_u и диапазон MLS s0 в текущем режиме действием по умолчанию для всех вновь создаваемых пользователей;
semanage login -m -s unconfined_u -r s0-s0:c0.c1023 root #назначить роль unconfined_u и диапазон MLS s0-s0:c0.c1023 в текущем режиме для пользователя root.
---------------------------------------------------------------------------------• создание нового контекста SELinux на сетевые порты:
semanage port -l #вывод всех портов ограниченых через SELinux;
semanage port -a -t http_port_t -p tcp 81 #создание правила для настройки сервера httpd на не стандартный 81 порт.
==================================================================================
# ЛОГИ И ОШИБКИ SELinux:
---------------------------------------------------------------------------------• Ошибки связанные с SELinux записываются в файл /var/log/audit/audit.log
---------------------------------------------------------------------------------# (ausearch) поиск ошибок в audit.log:
ausearch -m avc -c sudo #поиск ошибок с фильтрацией по avc и sudo;
ausearch -m avc,user_avc,selinux_err -ts recent #поиск ошибок фильтрацией по avc,user_avc,selinux_err за последние 10 минут.
• опции программы:
-m #задает фильтр по типу ошибок;
-c #задает фильтр по полю comm= ошибок;
-ts #задает верхнюю временную границу поиска ошибок:
recent #последние 10 минут;
boot #с момента последней загрузки;
today #за весь текущий день;
yesterday #за весь вчерашний день;
this-week #за эту неделю;
week-ago #за прошлую неделю;
this-month #за этот месяц;
this-year #за этот год.
---------------------------------------------------------------------------------# (audit2why) устранение проблем:
cat /var/log/audit/audit.log | audit2why #пропустив файл audit.log через эту утилиту, можно узнать какой переключатель необходимо настроить.
---------------------------------------------------------------------------------# (audit2allow) чтение логов в удобной форме:
cat /var/log/audit/audit.log | audit2allow -l #преобразование лога.
---------------------------------------------------------------------------------# (avcstat) статистика SELinix:
avcstat #вывод статистики.
---------------------------------------------------------------------------------# (sealert) поиск проблем с SELinux:
• установка:
dnf -y install setroubleshoot
• использование:
sealert -a /var/log/audit/audit.log #полный вывод информации;
sealert -a /var/log/audit/audit.log > /path/to/mylogfile.txt #сохранение отчета в удобочитаемом виде.
• опции программы:
-b #просмотр ошибок в GUI;
-l #подробный вывод ошибок.
==================================================================================
# СОЗДАНИЕ НОВЫХ ПОЛИТИК SELinux В АВТОМАТИЧЕСКОМ РЕЖИМЕ:
---------------------------------------------------------------------------------# (audit2allow) программа для создание новых политик SELinux:
audit2allow -a
grep smtpd_t /var/log/audit/audit.log | audit2allow -m postgreylocal #сгенерировать набор правил для локальной политики SELinux (для просмотра и возможного редактирования);
grep smtpd_t /var/log/audit/audit.log | audit2allow -M postgreylocal #генерация нового модуля для локальной политики SELinux;
semodule -i postgreylocal.pp #установка нового модуля для локальной политики SELinux.
или
ausearch -c 'httpd' --raw | audit2allow -m my-httpd #генерация нового набора правил для локальной политики SELinux (для просмотра и возможного редактирования);
ausearch -c 'httpd' --raw | audit2allow -M my-httpd #генерация нового модуля для локальной политики SELinux;
semodule -i my-httpd.pp #установка нового модуля для локальной политики SELinux.
• опции программы:
-a #считать входные данные из audit.log и message (не используется с -i);
-d #считать входные данные из dmesg (лучше использовать ausearch -m avc | audit2allow -a);
-f file #добавить файл контекстов в генерируемый модуль (используется с -M);
-i file #считать входные данные из file;
-l #считать входные данные только с момента последней загрузки системы;
-m #сгенерировать модуль *.te;
-M #сгенерировать загружаемый пакет модуля *.pp;
-o file #записать log-файл;
-r #сгенерировать вывод в синтаксисе загружаемого модуля;
-R #сгенерировать эталонную политику используя установленные макросы (требует установки selinux-polisy-devel);
-t #указывает что выходной файл является *.te-файлом (применимо для конвертации политик из старого формата в новый);
-v #включит подробный вывод.
---------------------------------------------------------------------------------# пример создания новой политики для почтового сервера работающего по протоколу smtp:
• dnf install -y setools-console policycoreutils-python #установка дополнительных утилит;
• setenforce 0 #перевести SELinux в режим Permissive;
• запустить тестируемый процесс (почтовый сервер по протоколу smtp);
• grep smtpd_t /var/log/audit/audit.log | audit2allow -m postgreylocal #сгенерировать набор правил для локальной политики SELinux;
• cat postgreylocal.te #просмотр создаваемых правил для локальной политики SELinux;
• grep smtpd_t /var/log/audit/audit.log | audit2allow -M postgreylocal #генерация нового модуля для локальной политики SELinux;
• semodule -i postgreylocal.pp #установка нового модуля SELinux;
• semodule -l #вывод списка всех загруженных модулей;
• setenforce 1 #активировать режим Enforcing.
• ВНИМАНИЕ! Простая прогонка сообщений об отказе через audit2allow часто приводит к чрезмерно попустительской политике, по этому необходимо добавлять только необходимые
разрешения (dontaudit используется для не нужных прав доступа).
---------------------------------------------------------------------------------# СОЗДАНИЕ НОВЫХ ПОЛИТИК SELinux В РУЧНОМ РЕЖИМЕ:
---------------------------------------------------------------------------------# (checkmodule) программа для ручной компиляции новых модулей SELinux (создание *.mod):
checkmodule -M -m -o postfix.mod postfix.te #компиляция отредактированного модуля политики.
• опции программы:
-m #сгенерировать базовый модуль политики;
-M #задействовать поддержку проверок MLS/MCS при компиляции;
-o file #задать имя выходного файла.
---------------------------------------------------------------------------------# (semodule_package) программа для ручной компиляции новых модулей SELinux (создание *.pp):
semodule_package -o postfix.pp -m postfix.mod #компиляция отредактированного модуля политики.
• опции программы:
-f #включить в пакет файл с контекстами файлов;
-m #включить в пакет файл модуля политик;
-n #включить в пакет файл контекста netfilter;
-o #задать имя выходного файла;
-s #включить в пакет файл seuser;
-u #включить в пакет файл user_extra.
---------------------------------------------------------------------------------# использование dontaudit при создании новой политики с целью не выводить сообщения об ошибках:
* Т.З.: запретить аудит некоторого события, в тоже время блокируя доступ на выполнение действия;
• grep postfix_postdrop_t /var/log/audit/audit.log | audit2allow -m postfix #сгенерировать набор правил локальной политики SELinux;
• cat postfix #просмотр создаваемых правил для локальной политики SELinux;
• изменение значения «allow» в соответствующей строке файла postfix.te на «dontaudit»:
...
#============= postfix_postdrop_t ==============
dontaudit postfix_postdrop_t httpd_log_t:file getattr
...
• checkmodule -M -m -o postfix.mod postfix.te #компиляция отредактированного модуля политики;
• semodule_package -o postfix.pp -m postfix.mod #компиляция отредактированного модуля политики;
• semodule -i postfix.pp #загрузка отредактированного модуля SELinux;
* результат: выполнение действия блокируется политиками SELinux, но предупреждений об этом не выводится.
==================================================================================
# (sudo) переключение между ролями пользователей SELinux:
- добавление пользователя в /etc/sudoers:
tuser ALL=(ALL) TYPE=webadm_t ROLE=webadm_r ALL #возможность автоматически переключаться на роль webadm_r;
ВНИМАНИЕ! Если доступно несколько ролей, возможно переопределить роль и домен, указанные в конфигурационном файле sudo, указав опции -r и -t с требуемыми значениями роли и
домена в качестве параметров.
• использование:
sudo -r webadm_r -t webadm_t service httpd restart
---------------------------------------------------------------------------------# (newrole) переключение между ролями пользователей SELinux - модель [su+newrole]:
• установка:
dnf -y policycoreutils-newrole install
• описание:
newrole -r #ввод пароля пользователя и переход на новую роль в соответствии с имеющимися разрешениями;
su #ввод пароля root и выполнение необходимых операций.
• использование:
newrole -r sysadm_r
==================================================================================
• советы по повышению безопасности системы:
- не следует сопоставлять локальных пользователей SELinux-пользователю unconfined_u;
- semanage login -m -s guest_u -r s0 __default__ #изменение политики создания новых пользователей по умолчанию;
- useradd с опцией -Z #используется при необходимости переопределения нового пользователя;
- локальные пользователи должны сопоставляться с ограниченными SELinux-пользователями;
- вход пользователя root с использованием ssh и X должен быть запрещен;
- root должен иметь возможность войти с терминала только в случае крайней необходимости;
- отдавайте предпочтение разрешающим доменам SELinux, а не разрешающему режиму;
- предустановленных по умолчанию пользователей SELinux не изменять, а создавать новых, взяв за основу существующих;
- существующие роли и домены пользователей не изменять, а создавать новые на основе существующих;
- использовать управление доступом на основе ролей (RBAC) для ограничения привилегий пользователей, в т.ч. root;???
- использовать команду sudo, вместо su и newrole;
- удалить домен unconfined (неограниченный):
setsebool -P unconfined_login off #выключение возможности входа в домен unconfined;
semanage user -m -L s0 -r s0-s0:c0.c1023 -R "staff_r system_r unconfined_r" -P user staff_u #переопределение пользователя staff_u;
semodule -r unconfined #удаление модуля unconfined;
useradd -Z staff_u luser #создание физического пользователя luser;
visudo (luser ALL=(ALL) TYPE=unconfined_t ROLE=unconfined_r ALL) #изменение файла sudoers.
- удалить как можно больше политик включением и выключением соответствующих переключателей:
unconfined_login -> off
ssh_sysadm_login -> off
xdm_sysadm_login -> off
sysadm_exec_content -> off
xguest_exec_content -> off
user_exec_content -> off
staff_exec_content -> off
guest_exec_content -> off
secure_mode -> on #включить для запрета переходов пользовательских доменов в привилегированные;
secure_mode_insmod -> on #не разрешается осуществлять доменный переход к домену insmod, а ограниченным пользовательским доменам будет запрещено загружать модули ядра Linux;
secure_mode_policyload -> on #исключается политика, разрешающая загрузку других политик, изменять режим работы SELinux и изменять значения переключателей;
xserver_object_manager -> on #позволяет оператору настраивать взаимодействие процессов с X сервером?
==================================================================================
• особенности операций с файлами и их контекстом:
cp #утилита копирует файлы вместе с их контекстом;
mv #утилита копирует и перемещает файлы вместе с их контекстом;
tar #не сохраняет контексты безопасности файлов (флаг --selinux исправляет это);
ВНИМАНИЕ! Во время установки дистрибутива все файлы получают определенный контекст безопасности, а все файлы, созданные в процессе работы - контекст безопасности, определяемый
правилами на основе родительского каталога (например, если создать файл внутри каталога /etc, его тип автоматически станет etc_t, а во время перемещения файла с помощью mv его
контекст сохраняется, что может привести к отказу в доступе или ослаблению безопасности).
==================================================================================
• файлы и директории:
/etc/selinux/ #корневая директория SELinux;
/etc/selinux/selinux #конфигурационный файл SELinux;
/etc/selinux/targeted/contexts/files/file_contexts #контексты объектов по умолчанию;
/etc/selinux/targeted/policy #бинарная версия активной загруженной политики:
при загрузке системы модули политик *.pp объединяются в так называемую активную политику, которая затем загружается в память.
/etc/selinux/targeted/modules/active/modules/*.pp #модули, определяющие политики SELinux;
/etc/sysconfig/selinux #алиас на конфигурационный файл SELinux;
/sys/fs/selinux #смонтированная ФС SELinux;
/var/log/audit/audit.log #log-файл SELinux.
==================================================================================
# ADM [sec] - TRIPWIRE:
---------------------------------------------------------------------------------# (twadmin) генерация ключей шифрования:
twadmin -m G -L /etc/tripwire/local.key -K 2048 #создание нового ключа;
twadmin -m G -S /etc/tripwire/site.key -K 2048 #создание нового ключа сайта.
---------------------------------------------------------------------------------# (twadmin) шифрование конфигурационного файла и файла политик:
twadmin -m F -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt #шифрование twcfg.txt и, как следствие, создание tw.cfg;
twadmin -m P -S /etc/tripwire/site.key /etc/tripwire/twpol.txt #шифрование twpol.txt и, как следствие, создание tw.pol.
---------------------------------------------------------------------------------# (twadmin) проверка шифрования файла:
twadmin -m e /path/to/filename #узнать какой ключ использован;
---------------------------------------------------------------------------------# (twadmin) дешифровка файла настроек и файла политик:
twadmin -m f > /etc/tripwire/twcfg.txt #дешифровка tw.cfg;
twadmin -m p > /etc/tripwire/twpol.txt #дешифровка tw.pol.
---------------------------------------------------------------------------------# (tripwire) инициализация базы данных:
tripwire -m i -L /etc/tripwire/local.key #инициализировать и зашифровать БД.
---------------------------------------------------------------------------------# (tripwire) проверка изменений в ФС:
tripwire -m c #проверка ФС и вывод отчета в командную строку;
tripwire -m c -I #интерактивная проверка ФС с редактированием в vi.
---------------------------------------------------------------------------------# (twprint) просмотр отчетов проверок:
twprint -m r -t [0..4] /var/lib/tripwire/report/*.twr #просмотр выбранного отчета в соответствии с заданным уровнем;
twprint -m d -t [0..2] /var/lib/tripwire/*.twd(.bak) #просмотр базы данных в соответствии с заданным уровнем.
---------------------------------------------------------------------------------# (tripwire) восстановление базы данных в соответствии с указанным отчетом:
tripwire -m u -a -Z low /var/lib/tripwire/report/report #сканирование и применение изменений в соответствии с файлом отчета.
==================================================================================
# ADM [sec] - VIRUS:
---------------------------------------------------------------------------------# (clamav) поиск вирусов:
freshclam #обновление БД;
clamscan -r / #полное сканирование ОС;
clamscan -r -v --remove=yes / #полное сканирование ОС с удалением заражённых объектов.
==================================================================================
# ADM [sec] - ROOTKIT:
---------------------------------------------------------------------------------# (chkrootkit) поиск руткитов:
chkrootkit #запуск проверки.
---------------------------------------------------------------------------------# (rkhunter) поиск руткитов:
rkhunter --versioncheck #обновление программы;
rkhunter --update #обновление базы данных руткитов;
rkhunter --propupd #создание/обновление базы данных о файлах ОС;
rkhunter -c -sk --syslog #проверка ОС.
• опции программы:
-c #выполнить проверку;
-sk #автоответ yes на запросы программы;
--syslog #записывать вывод в syslog.
==================================================================================
# ADM [sec] - MALWARE:
---------------------------------------------------------------------------------# (maldet) поиск малвари:
maldet -d #принудительное обновление программы с rfxn.com;
maldet -u #принудительное обновление баз с rfxn.com;
maldet -a /path/to/dir #сканирование заданного каталога;
maldet -e 170501-0036.29912 #просмотр отчета.
• опции программы:
-a /path/to/dir #сканирование заданного каталога;
-c /file #отправка потенциальной уязвимости на сервер rfxn.com;
--clean IDR #очистить результаты сканирования;
-d #принудительное обновление программы с rfxn.com;
-e list #вывод списка всех отчетов;
-e IDR #просмотр отчета;
-k #остановка мониторинга;
-m /file #сканирование из заданного списка;
--mkpubpaths #подготовить директории пользователей для работы;
-n IDR #попытаться вылечить;
-q IDR #поместить результаты сканирования в карантин;
-r /path/to/dir 2 #сканирование измененных файлов за 2 последних дня;
--report IDR #просмотр отчета;
-s IDR #восстановить файлы из карантина;
-s /usr/local/maldetect/quarantine/file #восстановить конкретный файл;
-u #принудительное обновление баз с rfxn.com.
• настройки:
find="ionice -c 3 $find" #облегчает нагрузку на диск;
clamscan="ionice -c 3 $clamscan" #облегчает нагрузку на диск;
отключить автоматическую отправку данных на сервер.
• файлы и директории:
/usr/local/maldetect/conf.maldet #конфигурационный файл.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [scheduler] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# ADM [scheduler] - ПЛАНИРОВШИК ЗАДАНИЙ:
---------------------------------------------------------------------------------# (at) планировшик заданий для нерегулярных задач:
at 18:38 #задать время события и перейти в интерактивный режим планировщика:
at> logger -p news.alert RebootSystem 18:38 #задать команду 1;
at> init 6 #задать команду 2;
at>
[Ctrl]+[d] #выйти из интерактивного режима.
at 20:00 -f CMD #запланировать задание на 20:00 со списком команд из CMD;
echo "touch file" | at now #проверка работоспособности планировщика;
echo "reoot" | at now + 40 minutes #перезагрузить ПК через 40 минут;
echo "reoot" | at 05:00 22082022 #перезагрузить ПК 22 августа 2022 в 05:00;
echo "touch file" | batch #создать file, как только нагрузка на ОС упадёт до значения по умолчанию;
at -l #вывод очереди заданий;
at -c 3 #вывод деталей задачи 3;
at -r 3 #удалить задание 3 из очереди.
• опции программы:
[HH:MM|NOW|MIDNIGHT|NOON|TEATIME|..] #задать время события;
-c N #вывод деталей заданной задачи;
-f FILE #задать исполняемый файл либо сценарий командного интерпретатора;
-l #вывод очереди заданий;
-r N #удалить заданное задание.
• опции программы - ДОПОЛНИТЕЛЬНЫЕ КОМАНДЫ:
atq #вывод очереди заданий (алиас at -l);
atrm N #удалить задание из очереди (алиас at -r N);
batch #для заданий, которые потребуют много процессорного времени:
задание выполняться когда нагрузка на ОС снизится до установленного значения (по умолчанию 0.8).
• файлы и директории:
/etc/at.allow #список разрешенных пользователей (запрещены все, кто не разрешён);
/etc/at.deny #список запрещенных пользователей (по умолчанию пуст);
/etc/sysconfig/atd #пороговое значение нагрузки на ОС (для команды batch);
/var/spool/at/username/* #очередь заданий.
---------------------------------------------------------------------------------# (cron) планировшик заданий стандартный:
crontab -e #создать задание для текущего пользователя;
30 06 * * * tripwire --check | mail -s "Tripwire report for $HOSTNAME" name@mail.com #ежедневный запуск сканирования tripwire в 06:30 с последующей отправкой отчета на
почту.
crontab -e -u user #создать задание для заданного пользователя;
30 06 * * * tripwire --check > /path/to/tripwirelog'date +"%d-%m-%y"' #ежедневный запуск сканирования tripwire в 06:30 с последующим выводом в файл.
crontab -l -u user #вывод заданий заданного пользователя;
crontab -r -u user #удалить задания заданного пользователя.
• опции программы:
-e #открыть интерактивный режим для создания|редактирования задания;
-i #выводить подтверждение на запрос при удалении задания;
-l #вывод списка заданий;
-r N #удалить задание;
-u USER #задать пользователя.
• файлы и директории:
/etc/cron.allw #список разрешённых пользователей;
/etc/cron.deny #список запрешённых пользователей;
/etc/cron.d/* #дополнительные конфигурационные файлы;
/etc/cron.daily/* #директория для ежедневных скриптов (время выполнения значения не имеет);
/etc/cron.hourly/* #директория для ежечасных скриптов (время выполнения значения не имеет);
/etc/cron.monthly/* #директория для ежемесячных скриптов (время выполнения значения не имеет);
/etc/cron.weekly/* #директория для еженедельных скриптов (время выполнения значения не имеет);
/etc/crontab #конфигурационный файл:
+---------------- МИНУТЫ [0..59]
| +------------- ЧАСЫ
[0..23]
| | +---------- ЧИСЛО [1..31]
| | | +------- МЕСЯЦ [1..12|JAN|FEB|MAR|APR|..]
| | | | +---- ДЕНЬ
[0..6|SUN|MON|TUE|WED|THU|FRI|SAT] #SUN = 0 = первый день недели.
| | | | |
Y Y Y Y Y
USER
CMD
17 * * * *
root
cd / && run-parts --report /etc/cron.hourly
25 6 * * *
root
test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7
root
test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * *
root
test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
^ ^
^
| |
|
| |
+---- 1-5 #с понедельника по пятницу.
| +------------- 8,17 #в 8:00 и в 17:00;
|
0
#нулевой час (раз в день в 00:00);
|
*/2 #каждый второй час.
+---------------- */5 #раз в 5 минут;
0
#нулевая минута (раз в час).
*
#ежеминутно|ежечасно|ежедневно|ежемесячно|ежегодно;
USER
#пользователь от которого запускается команда;
CMD
#команда;
@reboot
#после перезагрузки;
@yearly
#ежегодно (0 0 1 1 *);
@annually #ежегодно (0 0 1 1 *);
@monthly #ежемесячно (0 0 1 * *) [используется anacron'ом];
@weekly
#еженедельно (0 0 * * 0) [используется anacron'ом];
@daily
#ежедневно (0 0 * * *)
[используется anacron'ом];
@midnight #ежедневно (0 0 * * *);
@hourly
#ежечасно (0 * * * *).
/var/spool/cron/username/* #список заданий cron.
• особенности:
https://crontab.guru #проверка задания времени на правильность.
---------------------------------------------------------------------------------# (anacron) планировшик заданий дополняющий cron (для ПК, которые не включены всё время):
ln -s myscript /etc/cron.daily/myscript #создать симлинк на скрипт, который необходимо запускать раз в день;
ln -s myscript /etc/cron.weekly/myscript #создать симлинк на скрипт, который необходимо запускать раз в неделю;
ln -s myscript /etc/cron.monthly/myscript #создать симлинк на скрипт, который необходимо запускать раз в месяц.
• файлы и директории:
/etc/anacrontab #конфигурационный файл:
1 5 cron.daily
run-parts /etc/cron.daily
7 10 cron.weekly run-parts /etc/cron.weekly
30 15 cron.monthly run-parts /etc/cron.monthly
^ ^ ^
^
| | |
|
| | |
+- выполняемая команда;
| | +- идентификатор задачи #можно использовать все символы, за исключением " " и "/";
| +---- задержка #временной промежуток после загрузки ПК и перед выполнением задания в минутах;
+------- период #частота выполнения команды в днях.
START_HOURS_RANGE=3-22 #фиксированный промежуток времени для выполнения заданий;
RANDOM_DELAY=45 #случайное время задержки в минутах от 0 до 45 перед выполнением задания.
/var/spool/anacron #файлы расписаний для каждого пользователя.
• особенности:
- описание работы:
просматривается поле "период" (выполнялась ли задача ранее);
просматривается поле "задержка" (команда выполняется в соответствии с заданным значением).
---------------------------------------------------------------------------------# (incron) планировшик заданий по событию:
---------------------------------------------------------------------------------# (systemd) планировшик заданий системный [*.timer]:
systemctl list-timers #вывод списка всех таймеров;
systemctl status *.timer #вывод описания всех таймеров.
• планировшик заданий systemd - ДЛЯ НЕРЕГУЛЯРНЫХ ЗАДАЧ (аналог at):
systemd-run --on-calendar=hourly /bin/touch /tmp/file #создавать ежечасно file в /tmp;
systemd-run --on-active=30 /bin/touch /tmp/file #создать file через 30 секунд в /tmp;
systemd-run --on-active="12h 30m" --unit test.service #запустить юнит test.service через 12 часо 30 минут.
• планировшик заданий systemd - СОЗДАНИЕ ПРОСТЕЙШЕГО ТАЙМЕРА (MyTimer.timer для MyService.service):
vi /etc/systemd/system/MyTimer.timer:
[Unit]
Description=BlaBlaBla
Requires=MyService.service
[Timer]
Unit=MyService.service
OnCalendar=*-*-* *:*:00 #производить запуск таймера раз в минуту;
[Install]
WantedBy=timers.target
vi /etc/systemd/system/MyService.service:
[Unit]
Description=BlaBlaBla
Wants=MyTimer.timer
[Service]
Type=oneshot
ExecStart=/usr/bin/MyScript.sh
[Install]
WantedBy=multi-user.target
vi /usr/bin/MyScript.sh #создание скрипта:
..
systemctl reload-or-restart юнит #перезагрузить конфигурационные файлы или юнит;
systemctl daemon-reload #обновить systemd, т.е. конфигурацию всех юнитов.
• типы таймеров:
- монотонные (monotonic) #сбрасываются после каждой перезагрузке системы:
OnActiveSec= #время срабатывания таймера задаётся относительно момента активации таймера;
OnBootSec= #время срабатывания таймера задаётся относительно момента загрузки системы:
OnBootSec=1h #таймер запустится через 1 час после загрузки системы.
OnStartupSec= #время срабатывания таймера определяется относительно первого запуска менеджера служб:
используются с привязкой к менеджерам служб отдельных пользователей;
запускаются при первом входе пользователя в систему.
OnUnitActiveSec= #время срабатывания таймера задаётся относительно того времени, когда таймер, который должен быть активирован, был активирован в последний раз;
OnUnitInactiveSec= #время срабатывания таймера определяется относительно того времени, когда таймер, который должен быть активирован, был в последний раз деактивирован.
- таймеры реального времени (realtime):
OnCalendar= #таймер привязан к реальному времени и ориентируется на события календаря:
семантика похожа на таймеры OnActiveSec=;
такие таймеры больше всего похожи на заданя cron;
[DOW] YYYY-MM-DD hh:mm:ss #формат записи времени (подробнее см. далее).
• особенности - ПРИМЕРЫ ЗАПИСИ ВРЕМЕНИ:
2 h #два часа;
2hours #два часа;
48hr #2 дня;
?
?
1y 12month #2 года;
55s500ms #55.5 секунд;
300ms20s 5day #5 дней, 20.3 секунд;
Thu,Fri,Sun #можно использовать списки значений, разделяемые запятой;
"Mon..Fri" #диапазоны значений можно разделять символом "..";
"Mon/Fri" #диапазоны значений можно разделять символом "/";
"~" #может использоваться для указания последнего дня месяца, или для указания даты, на заданное количество дней предшествующей последнему дню месяца;
"*" #каждый год, каждый месяц, каждый день, каждый час, каждую минуту, каждую секунду;
[DOW] YYYY-MM-DD hh:mm:ss, где:
[Mon|Tue|Wed|Thu|Fri|Sat|Sun] #Day Of Week, или день недели (поле необязательное);
[YYYY|*] #год;
[MM|*|January|February|March|April|May|June|July|August|September|October|November|December] #месяц;
[DD|*] #число;
[hh|*] #час;
[mm|*] #минута;
[ss|*] #секунда;
[now|minutely|hourly|daily|monthly|weekly|yearly|quarterly|semiannually|today|..] #иные варианты;
Thu,Fri 2012-*-1,5 11:12:13
Fri 2012-11-23 11:12:13 → Fri 2012-11-23 11:12:13
Fri 2012-11-23 11:12:13 → 2012-11-23 11:12:13
Fri 2012-11-23 19:12:13 → 2012-11-23 11:12:13 UTC
Fri 2012-11-23 00:00:00 → 2012-11-23
Fri 2012-11-23 00:00:00 → 12-11-23
Fri 2012-11-23 11:12:13 → 11:12:13
Fri 2012-11-23 11:12:00 → 11:12
Fri 2012-11-23 18:15:22 → now
Fri 2012-11-23 00:00:00 → today
Fri 2012-11-23 16:00:00 → today UTC
Fri 2012-11-22 00:00:00 → yesterday
Fri 2012-11-24 00:00:00 → tomorrow
Thu 2012-11-23 19:00:00 → tomorrow Pacific/Auckland
Fri 2012-11-23 21:45:22 → +3h30min
Fri 2012-11-23 18:15:17 → -5s
Fri 2012-11-23 18:04:22 → 11min ago
Tue 2014-03-25 03:59:56 → @1395716396
minutely → *-*-* *:*:00
hourly → *-*-* *:00:00
daily → *-*-* 00:00:00
monthly → *-*-01 00:00:00
weekly → Mon *-*-* 00:00:00
yearly → *-01-01 00:00:00
quarterly → *-01,04,07,10-01 00:00:00
semiannually → *-01,07-01 00:00:00
Sat,Thu,Mon..Wed,Sat..Sun → Mon..Thu,Sat,Sun *-*-* 00:00:00
Mon,Sun 12-*-* 2,1:23 → Mon,Sun 2012-*-* 01,02:23:00
Wed *-1 → Wed *-*-01 00:00:00
Wed..Wed,Wed *-1 → Wed *-*-01 00:00:00
Wed, 17:48 → Wed *-*-* 17:48:00
Wed..Sat,Tue 12-10-15 1:2:3 → Tue..Sat 2012-10-15 01:02:03
*-*-7 0:0:0 → *-*-07 00:00:00
10-15 → *-10-15 00:00:00
monday *-12-* 17:00 → Mon *-12-* 17:00:00
Mon,Fri *-*-3,1,2 *:30:45 → Mon,Fri *-*-01,02,03 *:30:45
12,14,13,12:20,10,30 → *-*-* 12,13,14:10,20,30:00
12..14:10,20,30 → *-*-* 12..14:10,20,30:00
mon,fri *-1/2-1,3 *:30:45 → Mon,Fri *-01/2-01,03 *:30:45
03-05 08:05:40 → *-03-05 08:05:40
08:05:40 → *-*-* 08:05:40
05:40 → *-*-* 05:40:00
Sat,Sun 12-05 08:05:40 → Sat,Sun *-12-05 08:05:40
Sat,Sun 08:05:40 → Sat,Sun *-*-* 08:05:40
2003-03-05 05:40 → 2003-03-05 05:40:00
05:40:23.4200004/3.1700005 → *-*-* 05:40:23.420000/3.170001
2003-02..04-05 → 2003-02..04-05 00:00:00
2003-03-05 05:40 UTC → 2003-03-05 05:40:00 UTC
2003-03-05 → 2003-03-05 00:00:00
03-05 → *-03-05 00:00:00
hourly → *-*-* *:00:00
daily → *-*-* 00:00:00
daily UTC → *-*-* 00:00:00 UTC
monthly → *-*-01 00:00:00
weekly → Mon *-*-* 00:00:00
weekly Pacific/Auckland → Mon *-*-* 00:00:00 Pacific/Auckland
yearly → *-01-01 00:00:00
annually → *-01-01 00:00:00
*:2/3 → *-*-* *:02/3:00
systemd-analyze calendar 2022-09-07 08:29:35 #тестирование задаваемого времени;
systemd-analyze calendar "2022-6,7,8-1,15 01:15:00" #тестирование задаваемого времени;
systemd-analyze calendar --iterations=5 "Mon *-05~3" #тестирование задаваемого времени.
• особенности - ЕДИНИЦЫ ИЗМЕРЕНИЯ ДЛЯ ТАЙМЕРОВ:
[usec|us|µs] #микросекунда;
[msec|ms] #миллисекунда;
[seconds|second|sec|s] #секунда;
[minutes|minute|min|m] #минута;
[hours|hour|hr|h] #час;
[days|day|d] #день;
[weeks|week|w] #неделя;
[months|month|M] #месяц (определён как 30.44 дня);
[years|year|y] #год (определён как 365.25 дня).
• особенности:
- stdout от программ, запускаемых systemd с помощью unit-файлов сервисов, перенаправляется в журнал journald (journalctl);
- systemd стремится предотвратить одновременный запуск нескольких сервисов, поэтому есть вероятность, что таймер отработает на несколько секунд|минут раньше|позже заданного
времени;
- systemd-cron #дополнительно устанавливаемый пакет, являющийся аналогом cron.
• файлы и директории:
/etc/systemd/system/ #директория содержащая симлинки на сервисы и таймеры;
/usr/lib/systemd/system/ #директория для хранения сервисов и таймеров.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [user] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# ADM [user] - ИНФОРМАЦИЯ О ПОЛЬЗОВАТЕЛЯХ:
---------------------------------------------------------------------------------# (id) #вывод информации о текущем или заданном пользователе;
id #вывод всей информации;
id -g #вывод ID действующей группы пользователя в цифровом виде;
id -Gn #вывод всех групп пользователя в виде имён;
id -Z #вывод контекста SELinux пользователя.
• опции программы:
-a #игнорируется, для совместимости с другими версиями;
-g #вывести только действующий ID группы;
-G #вывести все ID групп;
-n #вывести имя вместо номера (для -ugG);
-r #вывести действительные, а не действующие ID (для -ugG);
-u #вывести только действующий ID пользователя;
-z #разделять записи символами NUL, а не пробельными;
-Z #вывести только контекст безопасности процесса.
---------------------------------------------------------------------------------# (whoami) #вывод имени пользователя, работающего в данном терминале.
---------------------------------------------------------------------------------# (users) #краткий список пользователей работающих в системе в данный момент.
---------------------------------------------------------------------------------# (who) вывод подробной информации о пользователях системы:
who -u #вывод подключенных пользователей.
• опции программы:
-a #вывод всей информации;
-b #время последней загрузки системы;
-d #вывод мертвых процессов;
-H #вывод строки с заголовками столбцов;
-l #вывод процессов входа в систему;
-m #только имя узла и пользователь, связанные со стандартным вводом;
-p #вывод активных процессов, порожденных init;
-q #вывод числа и всех имен подключенных пользователей;
-r #вывод текущего уровня выполнения;
-s #вывод имени, линии и времени (по умолчанию);
-t #вывод последнего изменения системного времени;
-T #добавить в вывод статус приема сообщений: +, -, ?;
-w #добавить в вывод статус приема сообщений: +, -, ?;
-u #вывод подключенных пользователей.
---------------------------------------------------------------------------------# (loginctl) информация о входах в систему:
loginctl list-sessions #вывод списка сессий;
loginctl list-users #вывод списка пользователей;
loginctl list-seats #вывод списка сред;
loginctl session-status #вывод подробной информации о сессии;
loginctl user-status #вывод подробной информации о пользователе;
loginctl seat-status #вывод подробной информации о среде;
loginctl show-session #вывод сводной информации о сессии;
loginctl show-user #вывод сводной информации о пользователе;
loginctl show-seat #вывод сводной информации о среде.
• файлы и директории:
/etc/systemd/logind.conf #конфигурационный файл:
HandlePowerKey #действия при нажатии кнопки питания;
HandleSuspendKey #действия при нажатии кнопки спящего режима;
HandleHibernateKey #действия при нажатии кнопки ждущего режима;
HandleLidSwitch #действия при закрытии крышки;
ignore #игнорировать;
poweroff #выключить питание;
reboot #выполнить перезагрузку;
halt #служит для завершения работы;
suspend #спящий режим;
hibernate #ждущий режим;
hybrid-sleep #гибридный сон;
lock #блокировка;
kexec #оперативное переключение между ядрами.
==================================================================================
# ADM [user] - УПРАВЛЕНИЕ ПОЛЬЗОВАТЕЛЯМИ И ГРУППАМИ:
---------------------------------------------------------------------------------# ДИРЕКТОРИИ И ФАЛЫ:
---------------------------------------------------------------------------------# /etc/group #содержит информацию о группах:
wheel:x:10:user #пример строки файла.
• синтаксис:
wheel #имя группы;
x #пароль;
10 #DIG;
user #список пользователей группы, через запятую.
---------------------------------------------------------------------------------# /etc/gshadow #содержит защищаемую информацию о группах:
adm:*::syslog,i #пример строки файла.
• синтаксис:
adm #имя группы;
[*|!|!!|$6$kl0..m2m] #пароль:
[*|!|!!] #аккаунт заблокирован;
$6$ #алгоритм шифрования sha256.
syslog,i #список пользователей группы, через запятую.
---------------------------------------------------------------------------------# /etc/login.defs #содержит настройки пользователей и групп (некоторые параметры):
CREATE_HOME [no|YES] #создать пользовательскую директорию;
DEFAULT_HOME [NO|yes] #можно ли войти в систему, если нет домашней директории;
ENCRYPT_METHOD SHA512 #системный алгоритм шифрования паролей (только для групп);
FAIL_DELAY 13 #задержка в секундах перед повторной попыткой после неудачного входа;
FAKE_SHELL SHELL #задать альтернативную пользовательскую оболочку (отличную от указанной в /etc/passwd);
GID_MAX 60000 #максимально возможный GID (по умолчанию 60000);
GID_MIN 1659 #минимально возможный GID (по умолчанию 1000);
?
LASTLOG_ENAB [no|YES] #протоколировать крайние пользовательские входы в систему;
LOGIN_RETRIES 7 #задать количество попыток входа при вводе неверного пароля;
LOGIN_TIMEOUT 789 #задать время в секундах, определённое на ввод пароля;
LOG_OK_LOGINS [no|YES] #включить протоколирование успешных входов;
LOG_UNKFAIL_ENAB [NO|yes] #включить запись неизвестных имён пользователей (могут быть залогированы пароли);
?
MAIL_CHECK_ENAB #;
MAIL_DIR /var/mail #почтовая директория пользователя;
MAIL_FILE .mail #почтовые файлы пользователя в домашней директории;
?
MAX_MEMBERS_PER_GROUP #максимальное количество пользователей в группе (записей о группе в /etc/group) (по умолчанию 0 - неограниченно);
MD5_CRYPT_ENAB [NO|yes] #шифровать пароль алгоритмом MD5;
?
PASS_ALWAYS_WARN N #;
?
PASS_CHANGE_TRIES N #;
PASS_MAX_DAYS 90 #верхний порог продолжительности действия пароля (-1 отключает проверку, максимум 99999);
PASS_MAX_LEN 25 #максимальная длина пароля;
PASS_MIN_DAYS 60 #нижний порог продолжительности действия пароля (отсутствие записи отключает проверку);
PASS_MIN_LEN 12 #минимальная длина пароля;
PASS_WARN_AGE 15 #количество дней на оповещение о смене пароля (начиная с MAX_DAYS - N);
SHA_CRYPT_MAX_ROUNDS 32768 #максимальное количество раундов SHA (1000..999999999 и только для групп);
SHA_CRYPT_MIN_ROUNDS 16384 #минимальное количество раундов SHA (1000..999999999 и только для групп);
SULOG_FILE /var/log/sulog #задать файл для протоколирования логинов SU;
?
SU_NAME SU #;
?
SU_WHEEL_ONLY #;
SYSLOG_SG_ENAB [no|YES] #включить протоколирование действий sg в syslog;
SYSLOG_SU_ENAB [no|YES] #включить протоколирование действий su в syslog (в дополнение к sulog);
SYS_GID_MAX 999 #максимально возможный GID для сервисных групп;
SYS_GID_MIN 100 #минимально возможный GID для сервисных групп;
SYS_UID_MAX 999 #максимально возможный UID для сервисных пользователей;
SYS_UID_MIN 100 #минимально возможный UID для сервисных пользователей;
UID_MAX 60000 #максимально возможный UID (по умолчанию 60000);
UID_MIN 1659 #минимально возможный UID (по умолчанию 1000);
?
ULIMIT #;
UMASK 0077 #маска на права файлов;
#
USERDEL_CMD /usr/sbin/userdel_my #задать свой скрипт, выполняемый при удалении пользователя;
USERGROUPS_ENAB [no|YES] #создать|удалить пользовательскую группу при операциях с пользователем.
• особенности:
- некоторые настройки переопределяются PAM (login.defs считается устаревшим).
---------------------------------------------------------------------------------# /etc/passwd #содержит информацию о пользователях:
root:x:0:0:root:/root:/bin/bash #пример строки файла.
• синтаксис:
root #имя пользователя;
x #пароль;
0 #UID:
0 #root;
1..99 #основные сервисные пользователи;
100..999 #остальные сервисные пользователи;
1000.. #пользователи.
0 #GID;
root #полное имя пользователя;
/root #домашняя директория;
/bin/bash #шелл;
/usr/bin/nologin #запрет на логин с выводом сообщения из /etc/nologin.txt;
/bin/false #запрет на логин для применения скриптов.
---------------------------------------------------------------------------------# /etc/shadow #содержит защищаемую информацию о пользователях:
root:*:18375:0:99999:7::: #пример строки файла;
i:$6$kl0..m2m:19211:0:99999:7::: #пример строки файла.
• синтаксис:
root #имя пользователя;
[*|!|!!|$6$kl0..m2m] #пароль, где:
#
[*|!|!!] #аккаунт заблокирован;
$6$ #алгоритм шифрования sha256.
?
18375 #;
?
0 #;
?
99999 #;
?
7 #.
---------------------------------------------------------------------------------# /etc/sudoers #содержит настройки sudo.
==================================================================================
# (pwck) проверка корректности файлов /etc/passwd и /etc/shadow:
pwck -rq #выполнить проверку.
pwck -R #применить изменения.
• опции программы:
-q #вывод только важных сообщений;
-r #выполнение проверки без изменений;
-R #применить изменения;
-s #сортировать записи по UID.
• возврат команды:
0 #проверка ошибок не выявила;
1 #синтаксис команды неверен;
2 #один или более паролей битые;
3 #невозможно открыть файл password;
4 #невозможно разблокировать файл password;
5 #невозможно обновить файл password;
6 #сортировка невозможна.
• выполняемые проверки:
- правильное количество полей;
- уникальность и корректность имени пользователя;
- корректность идентификатора пользователя и группы;
- корректность первичной группы;
- корректность домашнего каталога;
- корректность регистрационной оболочки;
- что каждая запись passwd имеет соответствующую запись shadow и каждая запись shadow имеет соответствующую запись passwd;
- пароли указаны в теневом файле;
- записи shadow содержат корректное количество полей;
- записи shadow уникальны в shadow;
- дата последней смены пароля не находится в будущем.
---------------------------------------------------------------------------------# (grpck) проверка корректности файлов /etc/group и /etc/gshadow:
grpck -r #выполнить проверку;
grpck -R #применить изменения.
• опции программы:
-r #выполнение проверки без изменений;
-R #применить изменения;
-s #сортировать записи по UID.
• возврат команды:
0 #проверка ошибок не выявила;
1 #синтаксис команды неверен;
2 #один или более паролей битые;
3 #невозможно открыть файл group;
4 #невозможно разблокировать файл group;
5 #невозможно обновить файл group;
6 #сортировка невозможна.
---------------------------------------------------------------------------------# (useradd) создание нового пользователя:
useradd -D #вывод настроек по умолчанию для создания пользователя;
useradd user -s /bin/nologin #создать пользователя user без возможности логина в систему;
useradd -Z user_u -U -m -d /home/user -s /bin/bash -u 1234 -G wheel,systemd-journal user #создать нового пользователя user с UID=1234, группой user GID=1234, домашней
директорией /home/user, ИКС /bin/bash, контекстом SELinux user_u и включенного в группу wheel и systemd-journal.
• опции программы:
-b /var/home/dir #базовый каталог для домашнего каталога новой учётной записи;
-c comment #поле GECOS новой учётной записи;
-d /home/user #домашний каталог новой учётной записи;
-D #показать или изменить настройки по умолчанию для useradd;
-e YYYY-MM-DD #дата устаревания новой учётной записи;
-f N #число дней, после которого учётная запись с устаревшим паролем будет заблокирована;
-g group #имя или ID первичной группы новой учётной записи;
-G groups #список дополнительных групп новой учётной записи;
-k /path/to/dir #использовать альтернативный каталог с шаблонами;
-K key=value #заменить значение по умолчанию из /etc/login.defs;
-l #не добавлять пользователя в базы данных lastlog и faillog;
-m #создать домашний каталог пользователя;
-M #не создавать домашний каталог пользователя;
-N #не создавать группу с тем же именем что и у пользователя;
-o #разрешить создание пользователей с повторяющимися (не уникальными) UID;
-p password #зашифрованный пароль новой учётной записи;
-r #создавать системную группу;
-R /path/to/dir #каталог, в который выполняется chroot;
?
-P prefix #задать префикс для директории /etc/*;
-s /bin/bash #регистрационная оболочка новой учётной записи;
-u UID #пользовательский ID новой учётной записи;
-U #создать группу с тем же именем что и у пользователя;
-Z user_u #использовать указанного SEUSER для пользовательского сопоставления SELinux.
• файлы и директории:
/etc/defaults/useradd #конфигурационный файл программы useradd:
GROUP=100 #начальный GID новой группы по умолчанию;
HOME=/home #домашняя директория по умолчанию;
INACTIVE=-1 #через сколько дней после устаревания пароля аккаунт будет заблокирован:
-1 #никогда;
0 #сразу, как устареет пароль;
N #через заданное количество дней.
EXPIRE=YYYY-MM-DD #задать конкретную дату блокировки аккаунта;
SHELL=/bin/sh #задать шелл по умолчанию;
SKEL=/etc/skel #задать директорию с файлами шаблонов:
.bash_logout #пользовательский файл настроек bash_logout;
.bashrc #пользовательский файл настроек bash;
.profile #пользовательский файл настроек profile;
.N #дополнительные файлы (можно подкладывать вручную).
CREATE_MAIL_SPOOL=yes #создание почтовых директорий для пользователя:
/var/mail/*;
/var/spool/*.
---------------------------------------------------------------------------------# (usermod) модификация пользователя:
usermod -aG systemd-journal user #добавить user в группу systemd-journal;
usermod -G adm user #удалить user из всех групп кроме adm;
usermod -g group user #принудительно поменять основную группу плользователя user на group;
usermod -L user #заблокировать учётную запись user;
usermod -U user #разблокировать учётную запись user.
• опции программы:
-a #добавить пользователя в дополнительные группы [-G] не удаляя пользователя из других групп;
-b #разрешить не корректные имена;
-c comment #новое значение поля GECOS;
-d /home/user #новый домашний каталог учётной записи;
-e data #установить дату окончания действия учётной записи;
-f data #установить период неактивности пароля после устаревания учётной записи;
-G groups #список дополнительных групп;
-g group #принудительно назначить первичную группу;
-l name #новое значение имени учётной записи;
-L #заблокировать учётную запись;
-m #переместить содержимое домашнего каталога в новое место (только вместе с -d);
-o #разрешить создание учётной записи с уже имеющимся (не уникальным) UID;
-p password #задать новый шифрованный пароль для учётной записи;
?
-P prefix #задать префикс для директории /etc/*;
-R /path/to/dir #каталог, в который выполняется chroot;
-s /bin/bash #новая регистрационная оболочка для учётной записи;
-u UID #новый UID для учётной записи;
-U #разблокировать учётную запись;
-v UID1-UIDn #добавить диапазон подчинённых uid;
-V UID1-UIDn #удалить диапазон подчинённых uid;
-w GID1-GIDn #добавить диапазон подчинённых gid;
-W GID1-GIDn #удалить диапазон подчинённых gid;
-Z user_u #новое пользовательское сопоставление SELinux для учётной записи.
---------------------------------------------------------------------------------# (userdel) удаление пользователя:
userdel -rfPZ user #полное удаление пользователя и его атрибутов.
• опции программы:
-f #принудительное удаление, даже если пользователь залогинен в системе (с удалением homedir и mail);
-r #удалить домашний каталог пользователя и почтовый ящик;
-R /path/to/dir #каталог, в который выполняется chroot;
?
-P prefix #задать префикс для директории /etc/*;
-Z #удалить все пользовательские сопоставления SELinux для пользователя.
---------------------------------------------------------------------------------# (deluser) удаление пользователя:
deluser --remove-all-files user #полное удаление пользователя.
• опции программы:
--system #удалять только если это системный пользователь;
--backup #делать резервную копию файлов пользователя;
--backup-to #папка для резервных копий;
--remove-home #удалять домашнюю папку;
--remove-all-files #удалять все файлы пользователя в файловой системе.
• файлы и директории:
/etc/deluser.conf #файл настроек программы:
BACKUP #выполнять резервное копирование файлов пользователя;
BACKUP_TO #папка для резервного копирования;
ONLY_IF_EMPTY #удалить группу пользователя если она пуста;
REMOVE_HOME #удалять домашний каталог пользователя;
REMOVE_ALL_FILES #удалить все файлы пользователя.
---------------------------------------------------------------------------------# (lid) вывод групп пользователя:
lid #вывод списка групп для пользователя root;
lid user #вывод списка групп для пользователя user.
• опции программы:
-g GROUP #выводить только пользователей заданной группы;
-i #выводить только группы (по умолчанию);
-n #выводить только имена пользователей и групп.
---------------------------------------------------------------------------------# (groupadd) создание группы:
groupadd -f -g 4321 group #создать группу group с GID=4321.
• опции программы:
-f #отменить и закончить работу, если GID уже используется;
-g GID #для новой группы использовать указанный GID;
-K key=value #заменить значение по умолчанию из /etc/login.defs;
-o #разрешить создание групп с повторяющимся (не уникальным) GID;
-p password #использовать этот шифрованный пароль для новой группы;
?
-P prefix #задать префикс для директории /etc/*;
-r #создавать системную группу;
-R /path/to/dir #каталог, в который выполняется chroot;
-U users #список пользователей, входящих в эту группу.
---------------------------------------------------------------------------------# (groupdel) удаление группы:
groupdel -f group #удалить группу group.
• опции программы:
-f #удалить группу, даже если она является первичной группой пользователя;
?
-P prefix #задать префикс для директории /etc/*;
-R /path/to/dir #каталог, в который выполняется chroot.
---------------------------------------------------------------------------------# (newgrp) выполняет регистрацию пользователя в новой группе:
newgrp adm #установить группу adm по умолчанию для текущего пользователя.
---------------------------------------------------------------------------------# (passwd) создание пароля для пользователя:
passwd user #задать|изменить пароль для пользователя user;
passwd -l user #заблокировать заданного пользователя;
passwd -e user #просрочить пароль заданного пользователя.
• опции программы:
-d #удалить пароль, сняв блокировку;
-e #просрочить пароль пользователя;
-f #принудительное выполнение;
-i #период ожидания после окончания действия пароля, по истечении которого учетная запись будет заблокирована;
-k #хранить действующие данные авторизации (пароли);
-l #заблокировать пароль пользователя;
-n #минимальный срок действия пароля;
--stdin #получить новое значение из stdin;
-S #сообщить состояние пароля для пользователя;
-u #разблокировать пароль пользователя;
-w #период предупреждений (в днях) до окончания срока действия пароля;
-x #максимальный срок действия пароля.
---------------------------------------------------------------------------------# (gpasswd) создание пароля для группы:
gpasswd group #задать|изменить пароль для группы group;
gpasswd -d user group1,group2 #удалить пользователя user из group1,grou2.
• опции программы:
-A admins #задать список администраторов группы;
-a user #добавить пользователя в группу;
-d user #удалить пользователя из группы;
-M users #задать список участников группы;
-Q /path/to/dir #каталог, который выполняется chroot;
-R #ограничить доступ в группу её участниками;
-r #удалить пароль группы.
---------------------------------------------------------------------------------# (chage) управление паролями и аккаунтами льзователей:
chage -li user #вывод настроек аккаунта для пользователя user;
chage -E -1 #задать бесконечный срок действия аккауна;
chage -I 0 #установить мнгновенное устаревание пароля;
chage -m 80 #задать нижний порог смены пароля;
chage -M 90 #задать верхний порог смены пароля;
chage -W 10 #оповещать о смене пароля за 10 дней.
• опции программы:
-d YYYY-MM-DD #задать дату последнего изменения пароля;
-E [-1|YYYY-MM-DD] #задать срок действия учётной записи (-1 = никогда);
-i #дата в формате iso8601 [YYYY-MM-DD];
-I N #задать количество дней после истечения срока действия пароля, когда он станет неактивным (0 = сразу);
-l #вывод характеристик пароля для заданного пользователя;
-m [-1..99999] #задать нижний порог времени для смены пароля (-1 никогда);
-M [-1..99999] #задать верхний порог времени для смены пароля (-1 никогда);
-R /PATH/TO/CHROOT_DIR #задать путь к CHROOT_DIR;
-W N #количество дней на оповещение о смене пароля (начиная с MAX_DAYS - N).
==================================================================================
# ADM [user] - УПРАВЛЕНИЕ ПРАВАМИ ПОЛЬЗОВАТЕЛЕЙ:
---------------------------------------------------------------------------------• назначаемые права:
a #пользователь+группа+другие (all);
u #пользователь;
g #группа;
o #другие;
r #чтение;
w #запись;
x #выполнение;
t #бит на доступ к файлу и редактирование разрешен владельцу и root;
s #бит наследования прав пользователя файла.
• цифровая кодировка выдаваемых прав на файлы и директории:
0 | --- #отсутствие прав;
1 | --x #выполнение;
2 | -w- #запись;
3 | -wx #записть и выполнение;
4 | r-- #чтение;
5 | r-x #чтение и выполнение;
6 | rw- #чтение и запись;
7 | rwx #чтение, запись и выполнение.
• примеры:
0100 | ---x------ | -u[--x]g[---]o[---];
0400 | -r-------- | -u[r--]g[---]o[---];
0600 | -rw------- | -u[rw-]g[---]o[---];
0644 | -rw-r--r-- | -u[rw-]g[r--]o[r--];
0700 | -rwx------ | -u[rwx]g[---]o[---];
0777 | -rwxrwxrwx | -u[rwx]g[rwx]o[rwx];
1600 | -rw------T | -u[rw-]g[---]o[--T] (sticky);
2600 | -rw---S--- | -u[rw-]g[--S]o[---] (sgid);
4600 | -rwS------ | -u[rwS]g[---]o[---] (suid);
6600 | -rwS--S--- | -u[rwS]g[--S]o[---] (suid+sgid);
7600 | -rwS--S--T | -u[rwS]g[--S]o[--T] (suid+sgid+sticky);
7600 | -rwS--S--T+| -u[rwS]g[--S]o[--T] (suid+sgid+sticky+ACL);
0770 | drwxrwx--- | du[rwx]g[rwx]o[---] (d = директория);
1770 | drwxrwx--T | du[rwx]g[rwx]o[--T] (d = директория с sticky);
6700 | drws--S--- | du[rws]g[--S]o[---] (d = директория с suid+sgid);
6777 | drwsrwsrwx | du[rws]g[rws]o[rwx] (d = директория с suid+sgid);
7777 | drwsrwsrwt | du[rws]g[rws]o[rwt] (d = директория с suid+sgid+sticky);
7777 | drwsrwsrwt+| du[rws]g[rws]o[rwt] (d = директория с suid+sgid+sticky+ACL).
• особенности:
директории всегда должны содержать рава на выполнение (x).
---------------------------------------------------------------------------------# (umask) назначение маски по умолчанию для DAC:
umask #вывод маски (по умолчанию 0022, т.е. права на файл 644);
umask 0077 #задать маску 0077;
umask 0177 #задать маску прав 0177 (права на новый файл 600);
umask u=rwx,g=,o= #задать маску 0077;
umask -p #вывод текущего значения umask в формате NNNN.
• опции программы:
-p #вывод текущего значения umask в формате [NNNN];
-S #вывод текущего значения umask в формате [u=rwx, g=rwx, o=rwx].
---------------------------------------------------------------------------------# (chmod) изменение прав пользователя:
chmod 600 /file #задать права 600 (-rw-------) файлу file;
chmod -R 600 /dir/file #задание прав 600 на все каталоги и файлы /dir/file;
chmod +x /file #сделать file исполняемым для {user|group|other};
chmod -x /file #сделать file не исполняемым для {user|group|other};
chmod go+x /file #сделать file исполняемым для {group|other};
chmod u+x /file #сделать file исполняемым для {user};
chmod o-x /file #сделать file не исполняемым для {other};
chmod a+x /file #сделать file исполняемым для {user|group|other};
chmod u+s /file #задать бит 's' наследования прав пользователя файла (запуск от имени владельца файла);
chmod g+s /file #задать бит 's' наследования прав группы файла (запуск от имени владельца группы);
chmod +t /dir/ #добавляет бит 't' в права на директорию dir.
• опции программы:
-c #как verbose, но выводить только при выполнении изменений;
-f #не выводить большинство сообщений об ошибках;
-v #выводить диагностические сообщения по каждому файлу;
-R #рекурсия по каталогам;
--no-preserve-root #не обрабатывать «/» особым образом (по умолчанию);
--preserve-root #отказываться рекурсивно обрабатывать «/»;
--reference=ЭФАЙЛ #использовать режим доступа ЭФАЙЛА вместо значений РЕЖИМ.
---------------------------------------------------------------------------------# (chown) задание владельца файла или директории:
chown user:group /file #задать user и group для file;
chown -R user:group /dir #рекурсивно задать user и group для dir.
• опции программы:
-h #применять к символьной ссылке, а не к самому файлу (имеет смысл только на системах, где можно изменять владельца символьной ссылки);
-v #выводить диагностические сообщения по каждому файлу;
--dereference #применять к файлу по символьной ссылке, а не к самой ссылке (по умолчанию);
--from=ТЕКУЩИЙ_ВЛАДЕЛЕЦ:ТЕКУЩАЯ_ГРУППА #Изменяет владельца и/или группу каждого файла только если текущий владелец и/или группа совпадают с указанными. Как группа, так и
владелец могут быть опущены; в этом случае совпадение для данного атрибута не обязательно;
--no-preserve-root #не обрабатывать «/» особым образом (по умолчанию);
--preserve-root #отказываться рекурсивно обрабатывать «/»;
--reference=ЭФАЙЛ #использовать владельца и группу ЭФАЙЛа, вместо указанных значений ВЛАДЕЛЕЦ:ГРУППА;
-R #рекурсивно обрабатывать файлы и каталоги:
-H #если аргумент командной строки является символьной ссылкой на каталог, перейти по ней;
-L #переходить по любой встреченной символьной ссылке на каталог;
-P #не переходить по символьным ссылкам (по умолчанию).
---------------------------------------------------------------------------------# (lsattr) просмотр податрибутов объектов:
lsattr #вывод податрибутов файлов.
• опции программы:
-a #вывод атрибутов для всех файлов, включая скрытые;
-d #вывод атрибутов для текущей директории;
-l #вывод имен атрибутов используемых для файла/директории;
-p #вывод проектных номеров;
-R #рекурсия;
-v #вывод номера поколения.
---------------------------------------------------------------------------------# (chattr) изменение податрибутов объектов:
chattr +i file #запретить все изменения file.
• опции программы:
[+|-]a #разрешить запись только в режиме добавления;
[+|-]A #запретить изменение времени доступа к файлу (актуально для увеличения производительности);
[+|-]c #разрешить компрессию файла;
[+|-]d #файл не будет сохранен в резервных копиях, где используется утилита дампа (dump);
[+|-]D #изменения в файле записываются на диск немедленно, без кэширования;
[+|-]i #запретить любые изменения;
[+|-]I #включает индексирование для каталога, в котором он включен (актуально для для примитивных ФС (Ext3));
[+|-]j #файл сначала записывается в журнал, а затем в блоки данных на жестком диске (только для ФС Ext3);
[+|-]s #при удалении, место, занимаемое файлом, перезаписать нулями (восстановление файла невозможно);
[+|-]S #выполнить sync при сохранении изменений;
[+|-]u #сохранять информацию об удалении файла (удаление файла "в корзину").
==================================================================================
# УПРАВЛЕНИЕ ПРАВАМИ ПОЛЬЗОВАТЕЛЕЙ - ACL (Управление списками доступа):
---------------------------------------------------------------------------------• Порядок определения прав доступа к файлу:
- используются права владельца, если пользователь им является;
- используются права, указанные конкретно для этого пользователя;
- если действие разрешено хотя бы для одной из группы в которую входит пользователь;
- если пользователь не входит ни в одну группу описанную в ACL, то используются права для other.
---------------------------------------------------------------------------------• Автомонтирование разделов с поддержкой ACL:
- способ 1: Редактирование /etc/fstab:
UUID=... /home ext3 ...,acl ... #атрибут acl включает поддержку списков доступа при монтировании раздела.
- способ 2: Установка параметров монтирования по умолчанию для раздела:
tune2fs -o acl /dev/sda1 #для раздела sda1.
---------------------------------------------------------------------------------# (getfacl) просмотр прав доступа на директорию/файл:
getfacl * #вывести ACL для всех объектов в текущем каталоге;
getfacl -R * #вывести ACL рекурсивно для всех объектов текущего каталога;
getfacl file #вывести ACL для file;
getfacl /path/fi* #вывести ACL для всех файлов начинающихся на fi;
getfacl file1 | setfacl -b -M - file2 #задать ACL для file2 такие же как и file1.
# (setfacl) задание прав доступа на директорию/файл:
setfacl -m u:user1:r,u:user2:rw,g:group1:-,g:group2:rx file #задать ACL на file для пользователей user1: чтение, user2: чтение/запись, для групп group1: права отсутствуют,
group2: чтение/выполнение;
setfacl -x u:user file #удалить из ACL право на доступ к file для пользователя user;
setfacl -R -x u:user folder #удалить из ACL права доступа ко всем файлам и директориям внутри folder для пользователя user;
setfacl -b file #удалить из ACL все права для всех пользователей на file;
setfacl -b -m u:user:r file #удалить из ACL все права для всех пользователей на file и для пользователя user добавить право на чтение;
setfacl -m m::rx file #задать права ACL для маски на file: чтение/выполнение;
setfacl -bRLm u::rwx,g::-,o::-,m::- /folder #назначить рекурсивно для folder права ACL, предварительно удалив все старые: текущий пользователь 0700 (включая симлинки), маска
---;
setfacl -bdRLm u::rwx,g::-,o::-,m::- /folder #назначить рекурсивно для folder права ACL по умолчанию, предварительно удалив все старые: текущий пользователь 0700 (включая
симлинки), маска --- (т.о. при создании новых директорий и файлов права ACL будут наследоваться);
serfacl -bRLm u::rwx,g::-,o::-,m::rwx,u:test1:rwx,g:test1:-,u:test2:rwx,g:test2:- /folder #назначить рекурсивно для folder права ACL, предварительно удалив все старые: текущий
пользователь 0700 (включая симлинки), маска rwx, добавить к текущему владельцу пользователей test1 и test2 с правами 0700;
serfacl -bdRLm u::rwx,g::-,o::-,m::rwx,u:test1:rwx,g:test1:-,u:test2:rwx,g:test2:- /folder #назначить рекурсивно для folder права ACL по умолчанию, предварительно удалив все
старые: текущий пользователь 0700 (включая симлинки), маска rwx, добавить к текущему владельцу пользователей test1 и test2 с правами 0700 (т.о. при создании новых директорий и
файлов права ACL будут наследоваться).
• синтаксис:
command <arg> u:[пользователь]:права,u:[пользователь]:права,...;
command <arg> g:[группа]:права,g:[группа]:права,...;
если пользователь пропущен, то права назначаются владельцу файла;
если группа пропущена, то права назначаются группе-владельцу файла.
• опции программы:
-b #удаление всех прав ACL;
-d #задать наследуемые права яACL для файлов и директорий, (на саму директорию права default не распространяются);
-k #удаление ACL по умолчанию (если таковых нет, предупреждение об этом выдаваться не будет;
-L #задавать права ACL для файлов и директорий на которые имеются символические ссылки (эта опция может быть использована вместе с опцией -R и не может быть использована с
опцией --restore);
-m #модифицировать (перезаписать) права ACL для директории/файла;
-M file #модификация (перезапись) прав ACL в соответствии с настройками в файле file;
-n #не пересчитывать/задавать маску (если не задавать маску при первоначальной установке прав ACL, то задается маска ---);
-P #не задавать права ACL для файлов и директорий на которые имеются символические ссылки (эта опция может быть использована вместе с опцией -R и не может быть
использована с опцией --restore);
-R #рекурсивная установка прав ACL;
-x #удаление всех прав ACL для указанного пользователя (u/o) или группы;
-X file #удаление всех прав ACL в соответствии с настройками в файле file;
- #задает использование стандартного вывода команды getfacl для копирования/записи прав (используется совместно с -M, --set-file=);
-- #задает окончание команды, все что после, является именем файла/каталога;
--mask #пересчитать/задать маску (даже если маска явно указана);
--restore=file #восстанавливает ACL права на объекты из ранее созданного файла с правами (может быть использована совместно только с -test);
--test #тестовый режим.
• объекты для которых задаются права:
u:un:права
g:gn:права
u:uid:права
g:gid:права
o:права
m:права
d:u:un:права
d:g:gn:права
d:o:права
d:m:права
d:u:uid:права
d:g:gid:права
- где:
u = user #пользователь;
g = group #группа;
o = other #все пользователи;
m = mask #маска (задает маску эффективных прав);
d = default #права по умолчанию;
un = username #имя пользователя;
gn = groupname #имя группы;
uid #id пользователя;
gid #id группы.
- задаваемые права:
r #чтение;
w #запись;
x #выполнение;
- #отсутствие прав.
- последовательность задания аргументов:
{-bkndRLP} {-m -M | -x -X} {параметры ACL} {директория/файл}
---------------------------------------------------------------------------------• архивация/копирование/перемещение с поддержкой ACL:
- копирование:
cp -p #копирование с атрибутами ACL.
- перемещение:
mv #ни каких дополнительных ключей не требуется.
- архивация:
dnf -y install star #установка;
tar #используется ключ --acls;
star #используется вместо tar.
- опции программы star:
-c #создаёт файл архива;
-n #отключает извлечение файлов (используется в сочетании с -x для просмотра списка извлекаемых файлов);
-r #заменяет файлы в архиве (файлы записываются в конец архива, заменяя любые файлы с тем же путём и именем);
-t #выводит содержимое файла архива;
-u #обновляет файл архива (файлы записываются в конец архива, если их ещё не было в архиве или если они новее, чем файлы с тем же именем в архиве);
-x #извлекает файлы из архива (если используется с ключом -U и файл в архиве старее, чем соответствующий файл в файловой системе, такой файл не извлекается);
-/ #оставляет ведущую косую черту в имени файла при извлечении файлов из архива (по умолчанию она убирается);
-acl #при создании архива / извлечении файлов, архивирует / восстанавливает все ACL, связанные с файлами или каталогами;
-help #выводит наиболее важные параметры;
-xhelp #выводит менее важные параметры.
- примеры для star:
star -czv -Hexustar -acl -f arh.tgz file #архивация с сжатием;
star -xv -Hexustar -acl -f arh.tgz #разархивировать в текущий каталог.
---------------------------------------------------------------------------------• другое:
getfacl -R -s -p <dir> | sed -n 's/^# file: //p' #поиск файлов с правами ACL.
---------------------------------------------------------------------------------• файлы и директории:
/etc/mke2fs.conf #настройки файловой системы;
/proc/mount #список примонтированных разделов (mount | column -t).
==================================================================================
# ADM [user] - SUDO:
---------------------------------------------------------------------------------# (su) работа в интерпретаторе командной строки от имени другого пользователя:
su #запуск ИКС от пользователя root (если возможен вход под root) с сохранением окружения ТЕКУЩЕГО пользователя;
su root #запуск ИКС от пользователя root (если возможен вход под root) с сохранением окружения ТЕКУЩЕГО пользователя;
su user #запуск ИКС от пользователя user с сохранением окружения текущего пользователя (non login shell) с сохранением окружения ТЕКУЩЕГО пользователя;
su - user #запуск ИКС от пользователя user с окружением ЗАДАННОГО пользователя (login shell);
su - user -c CMD #выполнить команду от имени user с окружением ЗАДАННОГО пользователя.
• опции программы:
-c CMD #выполнить команду от имени заданного пользователя с сохранением окружения ТЕКУЩЕГО пользователя;
?
-f #;
?
-g GROUP #;
?
-G GROUP #;
[-|l] USER #прогрузить окружение ЗАДАННОГО пользователя;
?
-[m|p] #;
?
-P #;
?
--session-command=CMD #;
?
-w #.
• файлы и директории:
/etc/default/su #конфигурационный файл:
SULOG #все попытки выполнить команды от имени другого пользователя с помощью su регистрируются в указанном файле;
CONSOLE #все попытки выполнить с помощью su команды от имени пользователя root регистрируются на консоли;
PATH #стандартный путь поиска выполняемых программ (/usr/bin:);
SUPATH #стандартный путь поиска выполняемых программ для пользователя, пытающегося с помощью su выполнить команды от имени пользователя root (/usr/sbin:/usr/bin);
SYSLOG #регистрация выполнения su с помощью средств syslog:
LOG_AUTH #логировать все попытки вызова su;
LOG_NOTICE #логировать выполнение команд от имени root с помощью su;
LOG_INFO #логировать выполнение команд от имени других пользователей;
LOG_CRIT #логировать неудавшиеся попытки вызова su.
SLEEPTIME #количество секунд ожидания, прежде чем на экран выдается сообщение о неудачной попытке регистрации (login failure) и разрешается новая попытка:
стандартное значение #4 секунды;
минимальное #0 секунд;
максимальное #5 секунд.
---------------------------------------------------------------------------------# (sudo) работа в интерпретаторе командной строки от имени другого пользователя:
sudo -E -s #переход в среду root с сохранением пользовательского окружения;
sudo -i #переход в среду root с чистым рутовым окружением;
sudo -iu user #переход в среду user с чистым пользовательским окружением;
sudo -iu user cmd #выполнить cmd от user;
sudo -K #полностью удалить файл timestamp;
sudoedit file #открыть файл для редактирования от root;
sudoedit -u user file #открыть файл для редактирования от user.
• опции программы:
-A #использовать вспомогательную программу для ввода пароля;
-b #выполнить команду в фоновом режиме;
-B #подавать сигнал при использовании prompt (-p);
-C #закрыть все дескрипторы файлов >= num;
-D #изменить рабочую директорию перед использованием команды;
-e #редактировать файлы вместо выполнения команды;
-E #сохранить пользовательское окружение при выполнении команды;
-g [group|GID] #выполнить команду от имени|ID указанной группы;
-h host #выполнить команду на узле (если поддерживается модулем);
-H #установить для переменной HOME домашний каталог указанного пользователя;
-i #запустить оболочку входа в систему от имени указанного пользователя (можно задать команду);
-k #объявить недействительным файл timestamp;
-K #полностью удалить файл timestamp;
-l #показать список прав пользователя или проверить заданную команду (в длинном формате используется дважды);
-n #автономный режим без вывода запросов пользователю;
-p prompt #использовать указанный запрос пароля;
-P #сохранить вектор группы вместо установки целевой группы;
-R /path/to/dir #задать директорию chroot;
-r role #создать контекст безопасности SELinux с указанной ролью;
-s #запустить оболочку от имени указанного пользователя (можно задать команду);
-S #читать пароль из стандартного ввода;
-t type #создать контекст безопасности SELinux указанного типа;
-T timeout #прервать выполнение команды после истечения таймаута;
-u [user|UID] #выполнить команду (или редактировать файл) от имени|ID указанного пользователя;
-U user #в режиме списка показывать права пользователя;
-v #обновить временную метку пользователя без выполнения команды;
-V #показать сведения о версии и выйти;
-- #прекратить обработку аргументов командной строки;
--preserve-env=list #задать специфические переменные окружения.
• echo от sudo:
echo word | sudo tee file > /dev/null #перезаписать word в file;
echo word | sudo tee -a file > /dev/null #дописать word в file;
echo word | sudo tee file #можно и так (но некрасиво).
---------------------------------------------------------------------------------# (visudo) редактирование файла настроек /etc/sudoers:
sudo visudo #открытие файла для редактирования (visudo защищает от ошибок редактирования).
• синтаксис:
- используемые псевдонимы:
User_Alias;
Host_Alias;
Runas_Alias;
Cmnd_Alias.
- переменные окружения:
Defaults env_keep = "EDITOR COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
- директории запуска программ:
Defaults secure_path = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin
- users hosts = (runas) commands #синтаксис файла sudoers (разделитель ","):
hosts #список хостов (или ALL);
users #один (или более) пользователей или %group (%wheel) для расширения прав доступа;
runas #список пользователей (или ALL) от чьего имени могут выполняться команды (заключается в ( ));
commands #список команд (или ALL), которые можно запустить от имени root или от имени других пользователей (runas).
- специальные тэги:
EXEC: #запуск программ;
NOEXEC: #исключить запуск программ;
FOLLOW: #;
NOFOLLOW: #;
LOG_INPUT: #;
NOLOG_INPUT: #;
LOG_OUTPUT: #;
NOLOG_OUTPUT: #;
MAIL: #;
NOMAIL: #;
PASSWD: #обязательно вводить пароль;
NOPASSWD: #запуск без ввода пароля;
SETENV: #;
NOSETENV: #.
• синтаксис - ПРИМЕРЫ:
- псевдонимы хоста:
Host_Alias DMZ = 212.118.81.40/28
Host_Alias DESKTOP = work1,work2
- псевдонимы пользователя:
User_Alias ADMINS = colin,luca,admin
User_Alias DEVEL = joe,jack,julia
- псевдонимы пользователя от имени которого производить запуск:
Runas_Alias ROOT = root
Runas_Alias DBA = oracle,pgsql
- псевдонимы команд:
Cmnd_Alias SYSTEM = /sbin/reboot,/usr/bin/kill,/sbin/halt,/sbin/shutdown,/etc/init.d/
Cmnd_Alias PW = /usr/bin/passwd,!/usr/bin/passwd root #разрешить пользователю изменять СВОЙ пароль, но запретить изменять пароль ROOT'у;
Cmnd_Alias DEBUG = /usr/sbin/tcpdump,/usr/bin/wireshark,/usr/bin/nmap
- использование прав доступа без алиасов:
root ALL=(ALL) ALL #пользователь ROOT для любого хоста может выполнять ВСЕ команды от имени ВСЕХ пользователей;
dmt f219=(root) ALL #пользователь DMT для хоста F219 может выполнять ВСЕ команды от имени пользователя ROOT;
dmt f219=(root) NOPASSWD: /sbin/tcpdump #пользователь DMT для хоста F219 может выполнять только команду TCPDUMP от имени пользователя ROOT без ввода пароля;
dmt f219=(ALL) !ALL #пользователь DMT для хоста F219 НЕ МОЖЕТ выполнять ВСЕ команды от имени ВСЕХ пользователей;
dmt f219=NOPASSWD: /sbin/poweroff,/sbin/reboot #пользователь DMT для хоста F219 имеет право выполнять poweroff и reboot без ввода пароля.
- актуальные права доступа:
root,ADMINS ALL = (ALL) NOPASSWD: ALL #ADMINS может что-то делать без пароля;
DEVEL DESKTOP = (ALL) NOPASSWD: ALL #разработчики имеют полные права доступа на рабочих станциях;
DEVEL DMZ = (ALL) NOPASSWD: DEBUG #разработчики могут отлаживать DMZ сервера.
- пользователь sysadmin может использовать некоторые команды:
sysadmin DMZ = (ALL) NOPASSWD: SYSTEM,PW,DEBUG
sysadmin ALL,!DMZ = (ALL) NOPASSWD: ALL #какие-то права за рамками DMZ;
%dba ALL = (DBA) ALL #группа dba может работать от имени пользователя базы данных.
- все могут монтировать/размонтировать CDROM на рабочих станциях:
ALL DESKTOP = (ALL) NOPASSWD: /sbin/mount /cdrom,/sbin/umount /cdrom
• некоторые настройки файла:
"Defaults insults" #задает ругательства на неправильно введенный пароль;
"Defaults timestamp_timeout=5" #задает время жизни sudo-сессии 5 минут;
• файлы и директории:
/etc/sudoers #главный файл настроек sudo;
/etc/sudoers.d/ #директория второстепенных настроек sudo;
/etc/sudo.conf #конфигурационный файл дополнительных функций sudo (sudoreplay).
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [time] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# (date) установка и просмотр системных даты и времени:
date 081709302017 #установка системных даты и времени 17.08.2017 09:30;
date #вывести текущую дату и время;
date -d fri #вывести число ближайшей будущей пятницы;
date -d tomorrow #вывести завтрашнее число;
date --date='25 Dec' #вывести день недели 25 Декабря.
• опции программы:
-d СТРОКА #показать не текущее время, а время, описанное заданной СТРОКОЙ;
-f ФАЙЛ #как --date для каждой строки из ФАЙЛА;
-I ФОРМ_ВРЕМЕНИ #вывод даты/времени в формате ISO 8601, только дату, если ФОРМ_ВРЕМЕНИ=["date" (по умолчанию)|"hours"|"minutes"|"seconds"|"ns"] для получения даты и
времени с нужной точностью (пример 2006-08-14T02:34:56-06:00);
-r ФАЙЛ #показать время последнего изменения ФАЙЛА;
-R #выводить дату и время в соответствии с RFC-2822 (пример Mon, 14 Aug 2006 02:34:56 -0600);
-s СТРОКА #установить время, описанное СТРОКОЙ;
-u #показать или установить универсальное координированное время (UTC);
--debug #описывать разбираемую дату и предупреждать о сомнительном использовании в stderr;
--rfc-3339=СПЕЦ #вывести дату/время в формате RFC 3339 СПЕЦ="date"|"seconds"|"ns" для получения даты и времени с указанной точностью (пример 2006-08-14 02:34:56-06:00).
---------------------------------------------------------------------------------# (hwclock) установка и синхронизация системных и аппаратных часов:
hwclock -l #вывод аппаратных часов (bios);
hwclock -u #вывод системных часов (RTC);
hwclock -w #установка системных часов (RTC) в соответствии с аппаратными (bios);
hwclock -s #установка аппаратных (bios) часов в соответствии с системными (RTC).
• опции программы:
?
-a #adjust the RTC to account for systematic drift;
-r #вывод времени RTC;
-s #задать системное время (bios) в соответствии с RTC;
-w #задать время RTC в соответствии с системным (bios);
--get #display drift corrected RTC time;
--predict #predict the drifted RTC time {только с --date};
--set #задать время RTC {только с --date};
?
--systz #send timescale configurations to the kernel.
• параметры:
-f FILE #задать входной FILE (не /dev/rtc0);
-l #вывод RTC локальное;
-u #вывод RTC UTC;
-v #показать больше деталей;
--adjfile FILE #задать входной FILE (не /etc/adjtime);
--date TIME #задать дату и время вручную {только с --set|--predict);
?
--delay SEC #delay used when set new RTC time;
?
--directisa #use the ISA bus instead of /dev/rtc0 access;
--noadjfile #не использовать /etc/adjtime;
--test #тестирование {--verbose};
?
--update-drift #update the RTC drift factor.
---------------------------------------------------------------------------------# (UTC) задание локального времени (временной зоны):
ln -sf /usr/share/zoneinfo/UTC /etc/localtime #задание локального времени.
---------------------------------------------------------------------------------# (timedatectl) установка системных даты и времени в RHEL дистрибутивах:
timedatectl list-timezones #вывод списка временных зон;
timedatectl set-local-rtc [0|1] #задать соответствие RTC локальному времени;
timedatectl set-ntp [0|1] #вкл.[1] и выкл.[0] синхронизации времени по сети;
timedatectl set-time "2020-10-01 13:14:15" #задать системные дату и время;
timedatectl set-timezone Asia/Yekaterinburg #задать локальное время;
timedatectl timesync-status #вывод данных синхронизации времени по сети.
• опции программы:
-H HOST #задать удалённый HOST;
-M CONTAINER #задать CONTAINER;
--no-ask-password #не спрашивать логин-пароль при синхронизации времени.
• файлы и директории:
/etc/adjtime #настройки времени.
==================================================================================
# (cal) календарь:
cal -m #вывести календарь текущего месяца;
cal -m3 #вывести календарь прошлого, текущего и будущего месяцев;
cal 9 1752 #вывести календарь за Сентябрь 1752 года.
• опции программы:
-1 #показать один месяц (по умолчанию);
-3 #показать три месяца, содержащих дату;
-j #использовать календарь сквозной нумерации дней через весь год;
-m #первый день недели - понедельник;
-n NUM #показать num месяцев, начиная с месяца даты;
--reform VAL #Gregorian reform date [1752|gregorian|iso|julian];
-S #span the date when displaying multiple months;
-s #первый день недели - воскресенье;
-v #показать дни недели вертикально;
-w NUM #календарь США, стандарт ISO-8601;
-y #показать весь год;
-Y #показать следующие 12 месяцев;
--color=WHEN #colorize messages [auto|always|never] #цветной шрифт по умолчанию поддерживается;
--iso #alias for --reform=iso.
---------------------------------------------------------------------------------# (time) секундомер:
time cat #включение секундомера (отключение Ctrl+C);
time read -sn1 #включение секундомера (отключение Ctrl+C);
time dd if=/dev/zero of=file bs=1024 count=1000 #замер скорости выполнения.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [net] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# ADM [net] - БАЗОВАЯ ИНФОРМАЦИЯ О СЕТЕВЫХ РЕСУРСАХ:
---------------------------------------------------------------------------------• полная информация о состоянии сети:
/proc/net/*
• статистика по всем сетевым интерфейсам:
cat /proc/net/dev #вывод сетевых интерфейсов и статистики по ним.
• сетевые настройки:
/proc/sys/net/*
• вывод всех соединений (установленных и прослушиваемых):
lsof -i #просмотр всех соединений.
---------------------------------------------------------------------------------# (speedtest-cli) тестирование скорости Internet:
• установка:
dnf -y install speedtest-cli
• использование:
speedtest-cli --bytes --simple --secure #запуск теста.
• опции программы:
--bytes #вывод в байтах;
--secure #использовать шифрованное соединение;
--simple #простой вывод [UP|DOWNLOAD].
• особенности:
- для работы необходим tcp:8080.
==================================================================================
# ADM [net] - НАСТРОЙКА И РАБОТА С СЕТЕВЫМИ РЕСУРСАМИ:
---------------------------------------------------------------------------------# (hostname) вывод и изменение информации о локальном хосте:
# (domainname) вывод и изменение информации о NYS/YP локального хоста:
# (ypdomainname) вывод и изменение информации о NYS/YP локального хоста:
# (nisdomainname) вывод и изменение информации о NYS/YP локального хоста:
# (dnsdomainname) вывод и изменение информации о NYS/YP локального хоста:
hostname #вывод доменного имени локального хоста;
hostname - b newhostname.dnsdomainname #задание нового идентификатора хоста.
• опции программ:
-a #вывод всех алиасов локального хоста;
-A #вывод всех FQDNs локального хоста;
-b #задать новое имя локального хоста {-F};
-d #вывод DNS имени локального хоста;
-f #вывод FQDN локального хоста;
-F file #задать файл с именем локального хоста {-b};
-i # вывод IP-адреса локального хоста;
-I #вывод всех IP-адресов хоста;
-s #вывод короткого имени локального хоста.
---------------------------------------------------------------------------------# (hostid) вывод ID локального хоста в шеснадцатиричном виде:
hostid #просмотр ID локального хоста.
---------------------------------------------------------------------------------# (hostnamectl) установка имени и описания хоста:
set-hostname tsohlacol #задать новое имя хоста tsohlacol;
set-icon-name computer-desktop #задать имя ПК для его визуализации;
set-chassis desktop #задать тип ПК:
container;
convertible;
desktop;
embedded;
handset;
laptop;
server;
tablet;
vm;
watch.
set-deployment development #задать род выполняемых задач на ПК:
development;
integration;
staging;
production.
set-location Berlin,Germany #задать новое имя локации хоста.
• файлы и директории:
/etc/hostname #имя хоста ОС;
/etc/machine-id #идентификатор ПК (перекрывает идентификатор D-Bus);
/etc/machine-info #хранит информацию о полном-описательном имени хоста и значке, которым он будет обозначаться в графических оболочках, работающих с сетью
(/etc/favicon.png).
---------------------------------------------------------------------------------# (sysctl) управление настройками ядра:
sysctl -a --pattern net #вывод всех сетевых настроек;
sysctl -a --system #вывод всех настроек прописанных в системных cfg;
• опции программы:
-a #вывод всего содержимого;
-b #вывод в бинарном формате;
-p file #загрузить настройки из file;
-r pattern #задать шаблон;
-q #тихий режим;
--system #прочитать настройки из всех системных cfg.
• шаблон для сетевых настроек:
sysctl net.ipv[4|6].{conf.[lo|default|all|int].*}
• arp:
sysctl net.ipv4.conf.*.arp_accept=[0|1] #использование ARP;
sysctl net.ipv4.conf.*.arp_announce=[0|1] #
sysctl net.ipv4.conf.*.arp_filter=[0|1] #фильтрация ARP;
sysctl net.ipv4.conf.*.arp_ignore=[0|1] #игнорировать ARP;
sysctl net.ipv4.conf.*.arp_notify=[0|1] #
sysctl net.ipv4.conf.*.drop_gratuitous_arp=[0|1] #
sysctl net.ipv4.conf.*.proxy_arp=[0|1] #проксирование ARP запросов;
sysctl net.ipv4.conf.*.proxy_arp_pvlan=[0|1] #проксирование ARP запросов.
• icmp:
sysctl net.ipv4.icmp_echo_ignore_all=[0|1] #эхо-ответы на все запросы;
sysctl net.ipv4.icmp_echo_ignore_broadcasts=[0|1] #эхо-ответы на brd.
• IPv4:
sysctl net.ipv4.conf.*.accept_redirects=[0|1] #редиректы;
sysctl net.ipv4.conf.*.secure_redirects=[0|1] #редиректы;
sysctl net.ipv4.conf.*.send_redirects=[0|1] #редиректы;
sysctl net.ipv4.conf.*.accept_source_route=[0|1] #маршрутизация;
sysctl net.ipv4.conf.*.ignore_routes_with_linkdown=[0|1] #маршрутизация;
sysctl net.ipv4.conf.*.route_localnet=[0|1] #маршрутизация;
sysctl net.ipv4.conf.*.bootp.relay=[0|1] #форвардинг пакетов 0.b.c.d;
sysctl net.ipv4.conf.*.bc_forwarding=[0|1] #форвардинг;
sysctl net.ipv4.conf.*.forwarding=[0|1] #форвардинг;
sysctl net.ipv4.conf.*.mc_forwarding=[0|1] #форвардинг;
sysctl net.ipv4.conf.*.log_martians=[0|1] #журналирование битых пакетов;
sysctl net.ipv4.conf.*.rp_filter=[0|1] #проверка отправителя (спуффинг);
sysctl net.ipv4.conf.*.shared_media=[0|1] #медиа;
sysctl net.ipv4.ip_forward=[0|1] #форвардинг пакетов;
sysctl net.ipv4.ip_local_port_range=49152 65535 #диапазон динамических портов.
• IPv6:
sysctl net.ipv6.conf.lo.disable_ipv6=[0|1] #IPv6;
sysctl net.ipv6.conf.default.disable_ipv6=[0|1] #IPv6;
sysctl net.ipv6.conf.all.disable_ipv6=[0|1] #IPv6.
• файлы и директории:
/proc/sys/net/*
---------------------------------------------------------------------------------# (resolv.conf) настройка DNS:
echo "nameserver 1.1.1.1" > /etc/resolv.conf #задать сервер доменных имен.
---------------------------------------------------------------------------------# (systemd-resolve) резолвер доменных имен:
systemd-resolve domainname.xyz
• опции программы:
-4 #резолвить адреса IPv4;
-6 #резолвить адреса IPv6;
-i eth0 #задать сетевой интерфейс;
-p udp #задать протокол.
• команды:
--set-dns=1.1.1.1 #задать DNS сервер;
--set-dnsovertls=yes #включить шифрование трафика;
--set-dnssec=yes #включить DNSSEC;
--set-nta=domain #задать домен DNSSEC NTA.
• файлы и директории:
/etc/resolv.conf
/etc/systemd/resolved.conf
---------------------------------------------------------------------------------# (ethtool) конфигурирование сетевых интерфейсов:
ethtool enp1s0 #вывод свойств nic;
ethtool -s enp1s0 speed 100 duplex full #задать 100Mbit Full duplex;
ethtool -s enp1s0 autoneg off #отключить auto negotiation;
ethtool -s enp1s0 wol d #отключить удаленное включение;
ethtool -p enp1s0 #мигнуть светодиодом (если поддерживается).
• опции программы:
-d #вывод регистрационного дампа;
-e #вывод EEPROM дампа;
-i #вывод информации о драйвере;
-k #вывод настроек сетевого девайса;
-l #вывод каналов;
--phy-statistics #вывод статистики;
--reset comp #выполнить ресет для заданного компонента:
[flags|mgmt|irq|dma|filter|offload|mac|phy|ram|dedicated|all];
-s comp #изменить заданный компонент:
speed num;
duplex [half|full];
port [tp|aui|bnc|mii];
mdix [auto|on|off];
autoneg [on|off];
advertise num;
phyad num;
xcvr [internal|external];
wol [p|u|m|b|a|g|s|d]:
p #PHY активность;
u #unicast сообщение;
m #multicast сообщение;
b #broadcast сообщение;
a #ARP;
g #MagicPacet;
s #MagicPacet с паролем;
d #отключить удаленное включение.
sopass [xx:yy:zz:aa:bb:cc] #задать пароль для MagicPacet;
msglvl num;
msglvl type [on|of]:
drv #General driver status;
probe #Hardware probing;
link #Link state;
timer #Periodic status check;
ifdown #Interface being brought down;
ifup #Interface being brought up;
rx_err #Receive error;
tx_err #Transmit error;
tx_qeued #Transmit queueing;
intr #Interrupt handling;
tx_done #Transmit completion;
rx_status #Receive completion;
pktdata #Packet contents;
hw #Hardware status;
wol #Wake-On-Lan status.
-S #вывод статистики;
--show-eee #вывод информации о энергосбережении;
--show-fec #вывод настроек Forward Error Correction;
--show-priv-flags #вывод приватных флагов;
-T #вывод timestamp.
---------------------------------------------------------------------------------# (arp) работа с ARP-таблицами:
arp -anvi enp1s0 172.16.10.43
arp -vi enp1s0 -s 172.16.10.43 11:22:33:44:55:66 temp
arp -t ax25 -vi enp1s0 -s 172.16.10.43 11:22:33:44:55:66 netmask NM pub
arp -i enp1s0 -Ds 172.16.10.43 enp1s2 pub
arp -i enp1s0 -d 172.16.10.43
• опции программы:
-a #использовать BSD стиль вывода;
-d addr #удалить запись из ARP-таблицы;
-D #использовать устройство;
-e #использовать Linux стиль вывода;
-f file #задать file отличный от /etc/ethertypes (по умолчанию);
-i int #задать интерфейс;
-n #резолвить адреса;
-s addr hw_addr #добавить запись в ARP-таблицу;
-Ds addr ifname # - z - ;
-t|H type #задать тип ARP [ether(по умолчанию)|arcnet|pronet|ax25|netrom];
-v #подробный вывод сообщений;
netmask NM #задать сетевую маску;
pub #задать флаг publish;
temp #задать флаг temp.
---------------------------------------------------------------------------------# (macchanger) изменение MAC-адреса:
• установка:
dnf -y install macchanger
• использование:
macchanger -r enp1s0 #изменить MAC-адрес на рандомный (полностью рандомный);
macchanger -A enp1s0 #изменить MAC-адрес на рандомный (рандомного вендора);
macchanger -m A4:C4:EC:FF:49:01 enp1s0 #изменить MAC-адрес на заданный.
• опции программы:
-a #задать рандомный MAC-адрес ;
-A #задать рандомный MAC-адрес рандомного вендора;
-b #используется с {-r};
-e #не изменять вендора;
-l #вывод списка доступных MAC-адресов различных вендоров;
-m MAC #задать MAC-адрес;
-p #переустановить MAC-адрес по умолчанию;
-r #задать полностью рандомный MAC-адрес (без вендора);
-s #вывод текущего MAC-адреса.
---------------------------------------------------------------------------------# (ip) вывод различных статистических данных [iproute2]:
ip -s link Is dev enp1s0 #просмотр статистики (RX/TX) устройства.
• опции программы:
-f [INET|INET6|BRIDGE|MPLS|LINK] #задать сетевое семейство:
inet #IPv4 {алиас -4};
inet6 #IPv6 {алиас -6};
bridge #сетевой мост {алиас -B};
?
mpls # {алиас -M};
link #сетевое устройство {алиас -0}.
-г #резолвинг;
-s #вывод статистической информации;
-V #вывод версии программы.
• опции программы - ДЕЙСТВИЕ:
add #добавить;
delete|del #удалить;
help #помощь;
set #изменить|задать;
show|list #просмотр.
• опции программы - ОЪЕКТ:
address|addr #IPv4 или IPv6 адрес устройства;
addrlabel #;
broadcast N #изменяет широковещательный адрес на устройстве;
l2tp #туннель ethernet поверх IP (L2TPv3);
link #устройство;
macsec #;
madress #широковещательный адрес;
monitor #мониторинг сетевых сообщений;
mroute #кэш широковещательной маршрутизации;
mrule #правила политик широковещательной маршрутизации;
neighbour|neigh #ARP-адрес;
netns #менеджер сетевых имен;
ntable #менеджер кэша ARP-адресов;
route|ro #маршрутизация;
rule #база данных правил маршрутизации;
tcp_metrics #менеджер TCP-метрики;
token #менеджер токенов;
tunnel #туннель через IP;
tuntap #менеджер TUN/TAP устройств;
xfrm #менеджер политик IPSec.
---------------------------------------------------------------------------------# (ip addr) управление IP-адресацией [iproute2]:
ip -c addr #вывод информации о всех сетях в цвете.
• использование - ЗАДАНИЕ/УДАЛЕНИЕ IP-АДРЕСА:
ip addr add 10.10.10.1/24 broadcast 255.255.255.0 dev enp1s0
ip addr add 10.10.10.1/24 brd + dev enp1s0
ip addr add 10.10.10.1/24 dev enp1s0
ip addr del 10.10.10.1/24 dev enp1s0
• использование - ЗАДАНИЕ ДВУХ IP-АДРЕСОВ НА ОДНОМ ИНТЕРФЕЙСЕ:
ip addr add 192.168.50.254/24 dev enp1s0
ip addr add 192.168.51.254/24 dev enp1s0 label enp1s0:0
---------------------------------------------------------------------------------# (ip link) управление сетевыми интерфейсами [iproute2]:
ip link set dev enp1s0 down #выключить заданный сетевой интерфейс;
ip link set dev enp1s0 add 00:11:22:33:44:55 #задать MAC-адрес;
ip link set dev enp1s0 up #включить заданный сетевой интерфейс;
ip link set mtu 9000 dev enp1s0 #изменить MTU для enp1s0;
ip link set dev enp1s0 arp off #отключить протокол ARP на enp1s0.
• опции программы - АРГУМЕНТЫ:
arp [ON|OFF] #изменение флага NOARP на устройстве;
down #выключить интерфейс;
dynamic [ON|OFF] #изменяет флаг DYNAMIC на устройстве;
mtu N #изменяет значение MTU на устройстве;
multicast [ON|OFF] #изменяет флаг MULTICAST на устройстве;
name #изменяет имя устройства;
up #включить интерфейс.
---------------------------------------------------------------------------------# (ip route) создание статических маршрутов [iproute2]:
# (ip rule) управление правилами маршрутизации [iproute2]:
ip ro #просмотр всех маршрутов.
ip ro add default via 172.16.0.1 dev enp1s0
ip ro del default via 172.16.0.1 dev enp1s0
ip ro add 10.10.10.0/24 dev enp1s0
ip ro del 10.10.10.0/24 dev enp1s0
ip rule ls #просмотр статистики (файл настроек /etc/iproute2/rt_tables);
ip route flush cache #очистка кэш-таблицы (после установки новых настроек).
• использование - ДОБАВЛЕНИЕ МАРШРУТА:
ip route add 172.16.1.0/24 via 192.168.0.1 #добавить маршрут в сеть 172.16.1.0/24 через шлюз 192.168.0.1;
ip route add 172.16.1.0/24 dev eth0 #добавить маршрут в сеть 172.16.1.0/24 через интерфейс eth0;
ip route add 172.16.1.0/24 dev eth0 metric 50 #добавить маршрут в сеть 172.16.1.0/24 через интерфейс eth0 с метрикой 50;
ip route add default via 192.168.0.1 dev eth0 #добавить маршрут по умолчанию через интерфейс eth0 и шлюз 192.168.0.1.
• использование - УДАЛЕНИЕ МАРШРУТА:
ip route del 172.16.1.0/24 via 192.168.1.1 dev eth0 #удаление маршрута;
ip route del 172.16.1.0/24 dev eth0 #удаление маршрута;
ip route del default via 192.168.0.1 dev eth0 #удаление маршрута.
• использование - СОЗДАНИЕ ТАБЛИЦЫ "16811 mytable" И ПРАВИЛ ДЛЯ НЕЁ:
echo -e ’16811\tmytable’ >> /etc/iproute2/rt_tables #создать запись для таблицы "16811 mytable";
ip route add default via 172.16.1.1 table 16811 #создать маршрут для таблицы "16811 mytable";
ip rule add from 192.168.1.219 table mytable #создать правило, отправляющее пакеты в таблицу "16811 mytable";
ip route flush cache #очистить кеш маршрутизатора для вступления в силу сделанных изменений.
• использование - УДАЛЕНИЕ ТАБЛИЦЫ "16811 mytable" И ПРАВИЛ ДЛЯ НЕЁ:
ip route del default via 192.168.0.1 table mytable #удалить маршрут для таблицы "16811 mytable";
ip rule del table mytable #удалить таблицу "16811 mytable" и правила для неё;
vi /etc/iproute2/rt_tables #редактировать файл таблиц маршрутизации;
ip route flush cache #очистить кеш маршрутизатора для вступления в силу сделанных изменений.
• использование - СОЗДАНИЕ ТАБЛИЦЫ "12345 mytable" И ПРАВИЛ ДЛЯ НЕЁ:
echo -e ’12345\tmytable’ >> /etc/iproute2/rt_tables #создать запись для таблицы "12345 mytable";
ip route add default via 82.117.232.1 table mytable #маршрут по умолчанию для mytable через 82.117.232.1;
ip route add 82.117.224.019 via 82.117.234.15 #маршрут для 82.117.224.019 через 82.117.234.15;
ip route add 85.90.192.019 via 82.117.234.15 #маршрут для 85.90.192.019 через 82.117.234.15;
ip rule add to 82.117.224.019 table mytable #правило для 82.117.224.019 через mytable;
ip rule add to 85.90.192.019 table mytable #правило для 85.90.192.019 через mytable;
ip route flush cache #очистить кеш маршрутизатора для вступления в силу сделанных изменений.
• использование - ВЫВОД ТАБЛИЦ МАРШРУТИЗАЦИИ:
ip rule #вывод правил маршрутизации;
ip route show table local #вывод правил таблицы маршрутизации local;
ip route show table 0 #вывод правил всех таблиц маршрутизации.
• использование - РАЗНОЕ:
ip route add blackhole 1.2.3.0/255.255.255.0 #удалить все пакеты, идущие из подсети 1.2.3.4/24.
• опции программы - [ip route]:
add #добавить маршрут;
change #изменить параметры маршрута;
delete #удалить маршрут;
replace #заменить маршрут другим.
• опции программы - [ip ro|ru show table]:
0 #все таблицы (таблица unspec);
all #все таблицы;
unspec #все таблицы (псевдо-таблица с номером 0, содержащая в себе правила всех таблиц маршрутизации системы).
• опции программы - АЛИАСЫ:
ad #add;
addr #address;
ro #route;
ru #rule;
sh #show.
• расшифровка вывода - [route]:
blackhole #пакет просто выбрасывается без возвращения какого-либо сообщения;
broadcast #для этой записи пакеты будут отправлены как широковещательное сообщение;
default #вариант по умолчанию (может быть ip цели или маска подсети);
local #для этой записи пакеты будут отправлены локально, без выхода во внешнюю сеть;
prohibit #пакет выбрасывается и посылается ICMP сообщение "administratively prohibited";
unicast #обычный маршрут: исходящий интерфейс + адрес следующего хопа до пункта назначения;
unreachable #пакет выбрасывается и посылается ICMP сообщение "host unreachable";
via 192.168.0.1 #шлюз;
dev lo #сетевой интерфейс loopback;
dev enp2s0 #сетевой интерфейс;
proto static #маршрут был задан администратором вручную;
proto kernel #маршрут был задан ядром автоматически;
metric #приоритет маршрута (чем меньше, тем выше приоритет);
scope host #эта запись действительна только для этого хоста;
scope link #эта запись действительна только для этого интерфейса;
src 192.168.12.101 #IP-адрес отправителя пакетов;
• расшифровка вывода - [rule]:
from #отправитель пакета;
all #прваило применяется для всех пакетов;
to #получатель пакета;
lookup #таблица, в которую пакет должен быть отправлен;
iif #имя интерфейса, на который пришел пакет;
oif #имя интерфейса, с которого уходит пакет (условие действует только для пакетов, исходящих из локальных сокетов, привязанных к конкретному интерфейсу);
tos #значение поля TOS ip-пакета;
fwmark #проверка значения FWMARK пакета (при помощи правил iptables можно отфильтровать пакеты по огромному количеству признаков и установить определенные значения FWMARK,
а затем эти значения учитывать при роутинге).
• разное:
- таблицы маршрутизации по умолчанию:
local #номер 0:
ядро заносит правила для локальных ip-адресов и бродкастов (широковещательных пакетов);
правила предназначены для того, чтобы трафик на эти ip-адреса оставался локальным и не пытался уходить во внешнюю сеть.
main #номер 32766:
используется по умолчанию, если не задавать явно;
является основной и именно она используется, если в команде ip route не указано какую таблицу использовать.
default #номер 32767:
изначально пуста.
- метрика:
чем меньше число, тем выше приоритет.
• файлы и директории:
/etc/iproute2 #директория программы iproute2;
/etc/iproute2/rt_tables #маршруты таблиц default, local, main.
---------------------------------------------------------------------------------# (ip neigh) управление arp-кэшем (таблицами) [iproute2]:
---------------------------------------------------------------------------------# (ip tunnel) управление тоннелями [iproute2]:
---------------------------------------------------------------------------------# (ipfrename) изменение имени сетевых интерфейсов [iproute2]:
---------------------------------------------------------------------------------# (ip maddr) управление мультикаст-группами [iproute2]:
---------------------------------------------------------------------------------# (ip mroute) управление маршрутизацией мультикаст-пакетов [iproute2]:
==================================================================================
# (tc) [traffic control] ограничение полосы пропускания (ПП) [iproute2]:
tc -g class show dev eth0 #схематичный вывод дерева ограничений;
tc -g -s class show dev eth0 #схематичный вывод дерева ограничений со статистикой;
tc qdisc ls dev eth0 #вывод списка дисциплин (очередей);
tc -s qdisc ls dev eth0 #вывод дисциплин со статистикой;
tc -s qdisc show dev eth0 #вывод дисциплин со статистикой;
tc qdisc del dev eth0 root #удалить все очереди QoS.
• опции программы:
-b file #прочитать команды из file или стандартного ввода;
-c {always|auto|never} #разноцветный вывод;
-cf file #задать путь до файла имён с комментариями file (применяется с -nm);
-d #детальный вывод;
-force #не прерывать при возникновении ошибок при чтении команд из file;
-g #схематический вывод дерева классов/дисциплин;
-iec #полный вывод значений единиц измерения, без приставок K|M|G|T (1k=1024);
-j #вывод в формате JSON;
-n eth2 #задать имя специфического сетевого интерфейса;
-N #вывод информации в человекопригодном формате;
-nm #резолв имён (из /etc/iproute2/tc_cls или вместе с -cf);
-o #вывод одной строкой;
-p #задействовать декодировку (для фильтра u32 в формате JSON);
-r #вывод в hex-формате;
-s #вывод статистики;
-t #выводить подробную метку времени (используется с monitor);
-ts #выводить краткую метку времени (используется с monitor).
• команды:
add #добавить;
burst N #задать размер буфера;
change #изменить заданный параметр;
del #уладить;
dev eth0 #задать устройство к которому будет привязана дисциплина;
latency N #задать максимальный возраст пакета в очереди;
link qdisk #;
monitor #режим мониторинга;
parent N:N #задать родителя;
qdisc #дисциплина;
rate N #задать ограничение скорости;
replace #;
root #корневая дисциплина (будет обрабатываться весь трафик);
show #вывод информации по заданному параметру;
---------------------------------------------------------------------------------# (tc) - Теория:
---------------------------------------------------------------------------------• алгоритм обработки сетевых пакетов в ОС Linux:
- приложение, при помощи библиотек ядра, формирует пакет и отдаёт его ядру;
- ядро помещает пакет в очередь FIFO (первый пришёл/первый ушёл);
- драйвер сетевой карты обращается к ядру и забирает первый пакет в очереди;
- драйвер сетевой карты отправляет пакет адресату.
---------------------------------------------------------------------------------• алгоритм обработки сетевых пакетов утилитой tc:
- по умолчанию в ОС Linux используется алгоритм обработки пакетов pfifo_fast (FIFO);
- утилита tc может заменить pfifo_fast на любую другую дисциплину, которая будет:
задерживать их на определённое время #шейпинг;
переупорядочивать пакеты #планирование;
выполнять другие действия.
---------------------------------------------------------------------------------• возможности предоставляемые системой ограничения трафика tc:
- shaping #шейпинг:
ограничение трафика/сужение канала;
задержка пакетов с целью создания желаемой скорости передачи;
задержка пакетов (без потерь) распространяется только на исходящий трафик;
сглаживание бросков во время пиковых нагрузок.
- scheduling #планирование:
упорядочивание типов трафика в канале;
позволяет избежать задержек для критичных типов трафиа (QoS).
- policing #политика входящего трафика:
позволяет ограничить входящий трафик путём уничтожения превысивших лимит пакетов;
помогает бороться с DDoS.
---------------------------------------------------------------------------------• механизмы, составляющие систему ограничения трафика tc:
- class #класс:
логический контейнер, который может содержать несколько подклассов, или дисциплину;
структура напоминает файловую систему:
/класс(каталог)/подклассы(подкаталоги);
или
/класс(каталог)/дисциплина(файл).
- qdisc #дисциплина обработки пакетов:
очередь пакетов и закреплённый за ней алгоритм обработки;
наиболее используемые дисциплины:
ATM #;
bfifo #простейшая очередь FIFO с буфером:
размер буфера задаётся в байтах.
CBQ #предназначенна для создания сложных систем управления трафиком:
поддерживает ограничения и приоритеты.
choke #;
codel #;
DRR #;
DSMARK #;
fq #;
fq_codel #;
gred #;
HFSC #;
hhf #;
HTB #разделяет ПП между различными видами трафика на полосы заданной ширины:
поддерживает приоритеты.
ingress #;
mqprio #;
multiq #;
netem #;
pfifo #простейшая очередь FIFO:
размер буфера задаётся в пакетах.
pfifo_fast #простая очередь FIFO с тремя полосами:
не принимает аргументов.
pie #;
PRIO #разделяет трафик по приоритетам (поле TOS):
по умолчанию создаёт три класса #в первый попадают пакеты с большим приоритетом, в третий - с наименьшим.
QFQ #;
red #симуляция затора:
отбрасывает пакеты случайным образом при достижении заданной ПП:
хорошо подходит для ограничения прожорливых в плане трафика приложений.
rr #;
sfq #алгоритм справедливой очередизации:
ПП разделяет поровну между несколькими соединениями;
эффективно работает только на загруженном интерфейсе.
sfb #;
tbf #передаёт поступающие пакеты со скоростью, не превышающей заданный порог:
идеальное решение для ограничения ПП всего интерфейса.
- filter #фильтр:
механизм классификации трафика;
фильтры используют классификаторы для идентификации пакетов нужного типа;
классификаторы:
basic #смотри tc-ematch(8);
bpf #смотри tc-bpf(8);
cgroup #смотри tc-cgroup(8);
flow|flower #смотри tc-flower(8);
fw #классифицирует пакеты путём чтения маркировок, записанных iptables/netfilter (MARK).
matchall #смотри tc-matchall(8);
route #смотри tc-route(8);
rsvp #фильтр RSVP-пакетов;
tcindex #смотри tc-tcindex(8);
u32 #позволяет выделять пакеты по:
исходящим адресам;
адресам назначения;
портам;
парам "хост:порт";
типам протокола;
типу сервиса.
- особенности:
за каждым сетевым интерфейсом должны быть закреплены две особые дисциплины:
root qdisc #корневая дисциплина (исходящий трафик);
ingress qdisc #входящая дисциплина (входящий трафик).
дескриптор #необходим для идентификации дисциплин и классов:
состоят из старшего и младшего номеров (1:0):
старший #произвольное число, однако все классы, имеющие общего родителя, должны иметь одинаковый номер;
младший #используется либо для произвольной идентификации классов, либо для указания на то, что объект является дисциплиной (номер 0).
специальный дескриптор ffff:0 #зарезервирован для входящей дисциплины.
---------------------------------------------------------------------------------# (tc) - Единицы измерения:
---------------------------------------------------------------------------------• скорость:
bit|a #bit/s;
kbit #kilobit/s;
mdit #megabit/s;
gbit #gigabit/s;
tbit #terabit/s;
bps
#bytes/s;
kbps #kilobytes/s;
mbps #Megabytes/s;
gbps #gigabytes/s;
tbps #terabytes/s.
---------------------------------------------------------------------------------• время:
s|sec|secs
#seconds;
ms|msec|msecs #milliseconds;
us|usec|usecs #microseconds.
---------------------------------------------------------------------------------• размер:
b|a #bytes;
kbit #kilobits;
kb|k #kilobytes;
mbit #megabits;
mb|m #megabytes;
gbit #gigabits;
gb|g #gigfbytes.
---------------------------------------------------------------------------------# (tc) - Примеры использования:
---------------------------------------------------------------------------------• ограничение исходящего трафика до 256 Кбит/с:
tc qdisc add dev eth0 root tbf rate 256kbit latency 50ms burst 1540
qdisc add #добавить новую дисциплину (для удаления del);
dev eth0 #задать устройство к которому будет привязана дисциплина;
root #корневая дисциплина (будет обрабатываться весь трафик);
tbf #задать имя дисциплины;
rate 256kbit latency 50ms burst 1540 #параметры специфичные для данной дисциплины;
rate #ограничение скорости;
latency #максимальный возраст пакета в очереди;
burst #размер буфера.
---------------------------------------------------------------------------------• использование дисциплины prio #в реальной жизни схема работать будет плохо:
- графическое представление схемы обработки пакетов:
Internet
|
|
------| 1:0 |
------/
|
\
/
|
\
------- ------- ------| 1:1 || 1:2 || 1:3 |
------- ------- ------|
|
|
|SSH
|
|
------- ------- ------| 10:0 || 20:0 || 30:0 |
------- ------- ------sfq
tbf
tbf
tc qdisc add dev eth0 root handle 1:0 prio
по умолчанию создаётся три класса с разными приоритетами;
к каждому классу по умолчанию прикрепляется дисциплина FIFO.
tc qdisc add dev eth0 parent 1:1 handle 10:0 sfq
классу 1:1 присвоить дисциплину sfq (справедливая очередизация);
интерактивные приложения имеют наивысший приоритет в поле TOS.
tc qdisc add dev eth0 parent 1:2 handle 20:0 tbf rate 512kbit buffer 3200 limit 3000
tc qdisc add dev eth0 parent 1:3 handle 30:0 tbf rate 256kbit buffer 6400 limit 3000
для классов 1:2 и 1:3 присвоить дисциплину tbf и ограничить скорость;
актуально н-р для torrent-закачек.
tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dport 22 0xffff flowid 1:1
задать наивысший приоритет скорости для SSH путём наложения фильтра;
filter add #добавить фильтр;
dev eth0 #задать интерфейс;
parent 1:0 #указать дескриптор родителя;
protocol ip #задать протокол с которым будет работать фильтр;
prio 1 #1задать наивысший приоритет;
u32 #задать используемый классификатор;
match ip dport 22 0xffff #задать параметры классификатора (пакеты с порта 22);
flowid 1:1 #отфильтрованные пакеты должны иметь класс 1:1 и обрабатываться с помощью его дисциплины.
---------------------------------------------------------------------------------• классовая дисциплина htb:
- графическое представление схемы обработки пакетов:
Internet
|
htb default 15
------- 100 mbit
| 1:0 |
------|
ceil 100 mbit
|
htb rate
------- 100 mbit
-------------------------| 1:1 |------------------------/
/
------\
\
/ ceil 100 mbit /
|
\
\
/
htb rate
/
htb rate
|
htb rate
\
htb rate
\
htb rate
------- 30 mbit ------- 20 mbit ------- 10 mbit ------- 5 mbit
------- 35 mbit
| 1:11 |
| 1:12 |
| 1:13 |
| 1:14 |
| 1:15 |
------------------------------|
|
|
|
|
|
|
|
|
|
------------------------------| 10:0 |
| 20:0 |
| 30:0 |
| 40:0 |
| 50:0 |
------------------------------sfq(172.16.1.0) sfq(172.16.2.0) sfq(172.16.3.0) sfq(172.16.4.0) sfq(172.16.4.0)
tc qdisc add dev eth0 root handle 1: htb default 15
подключить дисциплину htb в качестве корневой;
default 15 #весь нефильтрованный трафик должен быть обработан дисциплиной класса 1:15.
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbps ceil 100mbps
создать корневой класс под который будет поподать весь трафик;
необходимо для реализации заимствования (родитель-потомок).
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 30mbps ceil 100mbps
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 20mbps
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 10mbps
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 5mbps
tc class add dev eth0 parent 1:1 classid 1:15 htb rate 35mbps
создать пять подклассов с разной ПП;
ceil 100mbps #задать возможность заимствования ПП до максимальной.
tc qdisc add dev eth0 parent 1:11 handle 10:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:12 handle 20:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:13 handle 30:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:14 handle 40:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:15 handle 50:0 sfq perturb 10
подключить ко всем классам дисциплину sfq.
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip 172.16.1.0/24 flowid 1:11
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip 172.16.2.0/24 flowid 1:12
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip 172.16.3.0/24 flowid 1:13
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip 172.16.4.0/24 flowid 1:14
к каждой дисциплине подключить фильтр;
для 172.16.5.0/24 фильтр уже задан выше.
- выше настроенная система действует для подсетей, но не для конкретных пользователей;
- один клиент подсети 172.16.3.0/24 получит в распоряжение 10 Мбит/с;
- подход для настройки каждого пользователя подсети:
подлкючить к классам вместо дисциплин классы htb для каждого пользователя;
создать соответствующие фильтры;
для примера ограгичить скорость до 256 Кбит/с.
tc class add dev eth0 parent 1:15 classid 1:150 htb rate 256kbps
добавить к классу-подсети новый класс-пользователь.
tc filter add dev eth0 protocol ip parent 1:15 prio 1 u32 match ip src 172.16.1.32 flowid 1:150
добавить фильтры (дисциплина назначаемая по умолчанию - FIFO).
---------------------------------------------------------------------------------• графическое представление возможной схемы обработки пакетов:
Internet
|
|
------htb default 15
-| 1:0 |- 100 mbit
/
------\
/
\
/
\
------------| 1:1 | htb rate
| 1:2 | htb rate
------- 50 mbit
------- 50 mbit
/
|
\
/
|
\
/
|
\
/
|
\
------- ------- ------------- ------- ------| 1:11 || 1:12 || 1:13 | | 1:21 || 1:22 || 1:23 |
------- ------- ------------- ------- ------|htb rate|htb rate|htb rate |htb rate|htb rate|htb rate
|30 mbit |10 mbit |10 mbit |30 mbit |10 mbit |10 mbit
------- ------- ------------- ------- ------| 11:0 || 12:0 || 13:0 | | 21:0 || 22:0 || 23:0 |
------- ------- ------------- ------- ------sfq
sfq
sfq
sfq
sfq
sfq
==================================================================================
# (ifconfig) настройка сетевого интерфейса:
• изменить MAC-адрес:
ifconfig enp1s0 down
ifconfig enp1s0 hw ether 00:01:02:03:04:05
ifconfig enp1s0 up
• задать второй IP:
ifconfig enp1s0 192.168.50.254 netmask 255.255.255.0
ifconfig enp1s0:0 192.168.51.254 netmask 255.255.255.0
---------------------------------------------------------------------------------# (routel) #вывод подробной таблицы маршрутизации:
routel #вывод маршрутов для всех интерфейсов.
---------------------------------------------------------------------------------# (routef) удаление данных обо всех шлюзах из всех маршрутов.
routef #удалить все шлюзы.
---------------------------------------------------------------------------------# (route) создание статических маршрутов:
route -nee #вывод всех маршрутов;
route add -net 127.0.0.0 netmask 255.0.0.0 metric 1024 dev lo
route add -net 192.168.0.0 netmask 255.255.255.0 dev eth0
route add -net 192.168.0.0/24 dev eth0
route add -net 192.168.0.0/24 metric 1024 dev enp1s0
route add -net 192.168.0.0/24 gw 192.168.0.1 dev eth0
route add -host 192.168.0.2/32 gw 192.168.0.1 dev eth0
route add -net 10.0.0.0 netmask 255.0.0.0 metric 1024 reject dev eth0
route -6 add 2001:0002::/48 metric 1 dev enp1s0
route add default gw 192.168.0.1 dev eth0
route del -net 192.168.0.0/24 dev eth0
route del default dev eth0
• синтаксис:
route операция -тип адресат netmask gw шлюз параметры dev интерфейс
операция:
add #добавить маршрут;
delete #удалить маршрут;
flush #.
-тип:
-net #сеть;
-host #хост.
netmask #маска;
адресат:
IP хоста;
IP сети;
default #маршрут по умолчанию.
gw #шлюз;
dev #интерфейс;
параметры:
metric #метрика маршрута;
?
mod,dyn,reinstate #задать флаг динамического, или модифицируемого маршрута;
mss #значение MTU (максимальный размер пакета) в байтах;
window #размер TCP-окна для задаваемого шлюза в байтах (обычно используется в сетях AX.25);
irtt N #начальное время отклика для TCP-соединений по данному маршруту в миллисекундах;
reject #блокирующий маршрут, который должен приводить к остановке процедуры поиска маршрутов:
полезно при скрытии сетей для использования в них шлюзов по-умолчанию.
?
window N #задать размер окна TCP в байтах.
• опции программы:
-[4|inet] #IPv4;
-6 #IPv6;
-A [inet|inet6|ax25|netrom|ipx|ddp|x25] #задать сетевое семейство;
-C #работать с кэшем маршрутизации ядра;
-e #использовать формат вывода netstat;
-ee #подробный отчёт с полными наименованиями параметров таблицы маршрутов;
-F #работать с таблицей маршрутизации ядра (по-умолчанию);
-n #резолвинг;
-v #включает подробный режим работы.
---------------------------------------------------------------------------------# (dhclient) DHCP-клиент:
dhclient -d #сделать запрос IP-адреса (Ctrl+c=процесс убивается, IP остается);
dhclient -r #[убить запущенный процесс] и очистить IP-адрес.
• опции программы:
-4 #использовать сети IPv4;
-6 #использовать сети IPv6;
-1 #сделать единоразовый запрос (по умолчанию);
-d #запустить в режиме демона;
-p port #задать исходящий порт;
-q #тихий режим;
-r #завершить процесс;
-s addr #задать адрес получателя;
-v #подробный вывод сообщений;
-x #завершить процесс.
---------------------------------------------------------------------------------# (nmcli) NetworkManager:
nmcli connection add connection.autoconnect no ifname enp8s0 type ethernet con-name lan ipv4.method manual ipv4.addresses 192.168.0.12/24 ipv4.gateway 192.168.0.1 ipv4.dns
1.1.1.1
nmcli dev wifi con SSID password PASSWD bssid 1d:03:17:ae:d2:00 private yes hidden yes
nmcli con add ifname enp1s0 type ethernet con-name test cloned-mac-address 00:11:22:33:44:55 ipv4.method manual ipv4.addr 192.168.0.2/24 ipv4.gateway 192.168.0.1 ipv4.dns
"1.1.1.1 8.8.8.8"
nmcli con add ifname wlp0s29f7u1 type wifi con-name wlp0s29f7u1 wifi.mac-address-randomization always wifi.bssid 18:9c:5d:ae:d2:00 wifi.ssid APNAME wifi-sec.key-mgmt WPA-PSK
wifi-sec.pairwise CCMP wifi-sec.psk PASSWD wifi.hidden yes connect.permissions user:USER ipv4.dns "8.8.8.8 4.4.4.4"
nmcli con add ifname wlp0s29f7u1 type wifi con-name wlp0s29f7u1 wifi.mac-address-randomization always wifi.bssid 18:9c:5d:ae:d2:00 wifi.ssid APNAME wifi-sec.key-mgmt WPA-PSK
wifi-sec.pairwise CCMP wifi.hidden yes connect.permissions user:USER ipv4.dns 1.1.1.1
• опции программы:
-p #вывод в читабельном виде;
-s #вывод секретной информации.
• управление сетевыми интерфейсами:
radio [all|wifi|wwan] {on|off} #включение|выключение радио-интерфейсов;
networking [on|off|connectivity] #включение|выключение eth-интерфейсов.
• вывод информации по сетевым интерфейсам:
dev status #вывод статуса сетевых устройств;
dev show #вывод общей информации по сетевым устройствам;
monitor #вывод информации по всем событиям сети в режиме online;
-p -f general,wifi-properties device show wlp0s29f7u1 #вывод подробной информации по заданному устройству;
general permissions #вывод доступных базовых операций с сетевыми устройствами;
• интерфейс 802.3:
dev discon int #отключить интерфейс;
dev con int #включить интерфейс;
• интерфейс 802.11:
dev wifi #сканирование и вывод всех доступных SSID;
dev wifi con (B)SSID [password pass] [wep-key-type {key|pass}] [ifname int] [bssid BSSID] [name name] [private {yes|no}] [hidden {yes|no}] #подключение к AP WEP-WPA-PSK
TKIP CCMP (WEP|WPA|WPA2);
dev wifi hotspot [ifname int] [con-name name] [ssid SSID] [band {a|bg}] [channel channel] [password pass] #создание hotspot'а;
dev discon int #отключить интерфейс;
dev con int #включить интерфейс;
• подключения:
con show #вывод всех подключений;
-p con -s show UUID #вывод полной информации о подключении (пароли);
con down UUID #выключить соединение;
con up UUID #включить соединение;
con edit UUID #редактировать подключение:
set 802.3-ethernet.cloned-mac-address 00:11:22:33:44:55 #MAC-адрес;
set connection.autoconnect FALSE #отключить автоподключение;
save #сохранить настройки;
quit #выход.
con delete UUID #удалить подключение;
con mod UUID ipv4.method manual ipv4.addr 192.168.0.2/24 ipv4.gateway 192.168.0.1
con mod UUID ipv4.method auto
con mod UUID ipv4.dns "8.8.8.8 8.8.4.4"
con mod UUID +ipv4.dns 1.1.1.1
• файлы и директории:
/etc/NetworkManager/dispatcher.d/pre-up.d #скрипты, которые следует выполнить перед активацией сетевого соединения;
/etc/NetworkManager/dispatcher.d/pre-down.d #скрипты, которые следует выполнить при отключении сетевого соединения.
==================================================================================
# ADM [net] - WiFi
---------------------------------------------------------------------------------# (iw) работа с безпроводными сетевыми интерфейсами:
• вывод информации о безпроводных сетевых интерфейсах:
iw phy #вывод всех характеристик для всех интерфейсов;
iw dev #вывод имен phy|dev и базовых характеристик всех интерфейсов.
• переключение между режимами:
iw dev wlp0s29f0u1 set type ibss #переключение в режим adhoc;
iw dev wlp0s29f0u1 set type monitor #переключение в режим monitor;
iw dev wlp0s29f0u1 set type managed #переключение в режим managed.
• добавление интерфейса в режиме мониторинга:
iw dev wlp0s29f0u1 interface add m0n type monitor addr 00:00:00:00:00:24;
iw dev wlp0s29f0u1 del #удалить заданный интерфейс.
• сканирование wifi-сетей:
iw dev wlp0s29f0u1 scan #стандартное сканирование wifi-сетей;
iw dev wlp0s29f0u1 scan dump -u #полное сканирование wifi-сетей.
• подключение к точке доступа WEP|WPA:
iw dev wlp0s29f0u1 connect -w mypoint 2417 00:11:22:33:44:55 key [mfp:req/opt/no]
iw dev wlp0s29f0u1 connect -w mypoint 2417 00:11:22:33:44:55 key psk:passwd PSK CCMP CCMP
iw dev wlp0s29f0u1 link #вывод текущего состояния для заданного интерфейса;
iw dev wlp0s29f0u1 disconnect #отключение интерфейса от точки доступа.
• подключение к открытой adhoc сети:
iw dev wlp0s29f0u1 set type ibss #переключение в режим adhoc;
iw dev wlp0s29f0u1 ibss join AdHocNetworkName 2412 #подключение.
iw dev wlp0s29f0u1 ibss leave #отключение от adhoc.
• вывод стстистической информации по текущему соединению:
iw dev wlp0s29f0u1 station dump #по текущему соединению;
iw dev wlp0s29f0u1 station get <peer-MAC-address> #для заданного пира.
• задать мощность передатчика:
iw dev wlp0s29f0u1 set txpower fixed 10 #задать мощность сигнала.
• режим энергосбережения:
iw dev wlan0 get power_save #вывод настроек энергосбережения;
iw dev wlan0 set power_save on #включение энергосбережения.
• изменение скорости:
iw dev wlan0 set bitrates mcs-5 4
iw dev wlan0 set bitrates mcs-2.4 10
iw dev wlan0 set bitrates mcs-2.4
iw dev wlan0 set bitrates mcs-5
• задать страну:
iw reg get #вывод текущих настроек;
iw reg set UG #задать параметры для страны проживания.
• прослушивание событий:
iw event #прослушивать событий;
iw event -f #вывод фреймов;
iw event -t #вывод информации о тайминге.
---------------------------------------------------------------------------------• опции программы:
--debug #режим дебаггинга.
• интерфейсы:
phy #реальные безпроводные сетевые интерфейсы;
dev #виртуальные безпроводные сетевые интерфейсы.
• команды:
help [cmd] #вывод справки по заданной команде;
event [-r|-t] [-f] #прослушивание событий интерфейса:
-f #вывод полного имени auth|assoc;
-r #вывод relative timestamp;
-t #вывод timestamp;
feature #
commands #вывод списка всех доступных команд wifi интерфейсов;
phy|list #вывод всей информации по всем безпроводным интерфейсам;
phy phy[N] info #вывод всей информации по заданному интерфейсу;
phy phy[N] channels #вывод списка всех доступных каналов;
phy phy[N] interface add [name] type [type] mesh_id [id] 4addr [on|off] flags [flag] addr [mac]
dev #вывод базовых характеристик всех доступных wifi интерфейсов;
dev devname info #базовые характеристик заданного wifi интерфейса;
dev devname interface add [name] type [type] mesh_id [id] 4addr [on|off] flags [flag] addr [mac]
dev devname del #удалить виртуальный безпроводной интерфейс;
dev devname scan [-u] [freq MHz] ... [ssid name] #сканирование сетей wifi;
-u #вывод всей информации.
dev devname connect [-w] SSID [MHz] [BSSID] [key 0:abcde d:1:1234567890] [mfp:req/opt/no]
dev devname connect [-w] SSID [MHz] [BSSID] [key psk:passwd (AKM suite) (pairwise CIPHER) (groupwise CIPHER)] [mfp:req/opt/no]
-w #автопереподключение при неудачных попытках.
dev devname disconnect #отключение интерфейса от точки доступа;
dev devname link #вывод текущего состояния для заданного интерфейса;
reg get #вывод настроек для разрешенных частот страны проживания;
reg set [ISO|IEC 3166-1 alpha2] #задать параметры для страны проживания;
dev devname set txpower [auto|fixed|limit] [mBm] #задать мощность сигнала;
phy phy[N] set txpower [auto|fixed|limit] [mBm] #задать мощность сигнала.
• типы (режимы) интерфейсов:
managed #стандартный режим;
ibss #режим подключения к adhoc;
monitor #режим сниффинга;
mesh #
wds #
• флаги (только для режима monitor):
none #без специфичных флагов;
fcsfail #вывод фреймов с ошибками FCS;
control #вывод фреймов контроля;
otherbss #вывод фреймов для других BSS'ов;
cook #использовать режим cook;
active #использовать режим active;
mumimo-groupid gid #
mumimo-follow-mac mac #
• настройки для некоторых стран проживания:
JP #Япония;
RU #Россия;
US #США.
==================================================================================
# (wpa_supplicant) настройка WiFi [уровень 0]:
wpa_supplicant -B -iwlan0 -C/var/run/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant.conf
wpa_supplicant -B -Dnl80211 -iwlan0 -C/var/run/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant.conf
wpa_supplicant -B -iwlan0 -c <(wpa_passphrase ssid pass) #для драйвера wext.
• опции программы:
-b br_iname #задать сетевой мост;
-B #запуск программы в фоне;
-c file #задать конфигурационный file;
-C ctrl_ifce #задать сокет;
-D drv #задать драйвер (wext|nl80211);
-e file #задать file энтропии;
-f file #задать log-file;
-g global ctrl_ifce #задать глобальный сокет;
-i int #задать виртуальный безпроводной интерфейс;
-K key|passwd #задать ключ|парольную фразу;
-N #запустить новый интерфейс;
-o newdrv #задать новый драйвер;
-O newctrl_ifce #задать новый сокет;
-p /var/run/wpa_supplicant #задать сокет;
-P file #задать PID-file;
-qq #режим дебаггинга;
-s #вывод лога в syslog;
-t #вывод timestamp в дебаг-сообщениях;
-T #вывод лога в Linux tracing;
-u #задействовать контроль шины DBus;
-W #задействовать мониторинг интерфейса перед запуском;????
• создание хэша пароля:
wpa_passphrase MYSSID passphrase
• конфигурационный файл для дома:
ctrl_interface_group=0
ap_scan=1
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="MYSSID"
bssid=11:22:33:44:55:66
priority=1
key_mgmt=WPA-PSK
proto=WPA|WPA2
pairwise=TKIP|CCMP
psk=ce55977186ae1df2df...7ae
}
• конфигурационный файл для офиса:
network = {
ssid="Company WPA2 EAP"
key_mgmt=WPA-EAP
pairwise=TKIP
group=TKIP
eap=PEAP
identity="username@domain"
password="your_passphrase"
ca_cert="/etc/cert/ca.pem"
phase1="peapver=0"
phase2="MSCHAPV2"
}
• конфигурационный файл для Enterprise:
network = {
ssid="Company WPA2 TLS"
key_mgmt=WPA-EAP
pairwise=CCMP
group=CCMP
eap=TLS
ca_cert="/etc/cert/ca.pem"
private_key="/etc/cert/privkey.p12"
private_key_passwd="your_passphrase PKCS#12"
}
---------------------------------------------------------------------------------# различные настройки ручного и автоматического запуска:
• настройка автозапуска для RHEL:
vi /etc/sysconfig/wpa_supplicant:
INTERFACES="-iwlan0"
vi /etc/sysconfig/network-scripts/ifcfg-wlan0:
ESSID="home"
NAME=wlan0
MODE=Managed
KEY_MGMT=WPA-PSK
TYPE=Wireless
BOOTPROTO=dhcp
DEFROUTE=yes
ONBOOT=yes
HWADDR=11:22:33:44:55:66
IPV6INIT=yes
IPV6_AUTOCONF=yes
• настройка автозапуска для Debian:
vi /etc/network/interfaces:
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
• пример юнита systemd для DHCP:
vi /etc/systemd/system/network-wireless@.service
[Unit]
Description=Wireless network connectivity (%i)
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/ip link set dev %i up
ExecStart=/usr/bin/wpa_supplicant -B -i %i -c /etc/wpa_supplicant/wpa_supplicant.conf
ExecStart=/usr/bin/dhcpcd %i
ExecStop=/usr/bin/ip link set dev %i down
[Install]
WantedBy=multi-user.target
• пример юнита systemd для статической IP-адресации:
vi /etc/conf.d/network-wireless@интерфейс
address=192.168.0.10
netmask=24
broadcast=192.168.0.255
gateway=192.168.0.1
vi /etc/systemd/system/network-wireless@.service
[Unit]
Description=Wireless network connectivity (%i)
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/ip link set dev %i up
ExecStart=/usr/bin/wpa_supplicant -B -i %i -c /etc/wpa_supplicant/wpa_supplicant.conf
ExecStart=/usr/bin/ip addr add ${address}/${netmask} broadcast ${broadcast} dev %i
ExecStart=/usr/bin/ip route add default via ${gateway}
ExecStop=/usr/bin/ip addr flush dev %i
ExecStop=/usr/bin/ip link set dev %i down
[Install]
WantedBy=multi-user.target
---------------------------------------------------------------------------------# (wpa_cli) настройка WiFi [уровень 1]:
wpa_supplicant -iwlan0 -C/var/run/wpa_supplicant/ -B
wpa_cli -p/var/run/wpa_supplicant
• опции программы:
-a file #задать cfg файл для запуска в режиме демона;
-B #запуск программы в фоне;
-g global ctrl_ifce #задать глобальный сокет;
-G int #задать временной интервал для ping;
-i int #задать виртуальный безпроводной интерфейс;
-p /var/run/wpa_supplicant #задать сокет;
-P file #задать PID-file.
• интерактивные команды:
add_[cmd] #добавить необходимые настройки (сеть);
disconnect #разорвать соединение;
enable_network [N] #активировать заданную сеть;
interface #вывод доступных интерфейсов;
list_networks #вывод текущих сетей;
logoff #отключить логирование;
logon #включить логирование;
ping #ping wpa_supplicant;
quit #выход;
reconfigure #заставить wpa_supplicant перечитать cfg файл;
remove_network [ID] #удалить заданную сеть;
scan #сканировать BSS;
set_[cmd] #задать необходимые настройки;
status #вывод текущего состояния;
terminate #завершить wpa_supplicant.
• одноразовое подключение к открытой adhoc:
wpa_supplicant -iwlan0 -C/var/run -B
wpa_cli -p/var/run
> add_network
> set_network 0 ssid "adhoc-ssid"
> set_network 0 mode 1
> set_network 0 frequency 2412
> set_network 0 key_mgmt NONE
> enable_network 0
• одноразовое подключение к открытой AP:
wpa_supplicant -iwlan0 -C/var/run -B
wpa_cli -p/var/run
> add_network
> set_network 0 ssid "name of AP"
> set_network 0 key_mgmt NONE
> enable_network 0
• одноразовое подключение к WPA AP:
wpa_supplicant -iwlan0 -C/var/run -B
wpa_cli -p/var/run
> add_network
> set_network 0 ssid "name of AP"
> set_network 0 key_mgmt WPA-PSK
> set_network 0 pairwise TKIP
> set_network 0 psk "key"
> enable_network 0
• одноразовое подключение к WPA2 AP:
wpa_supplicant -iwlan0 -C/var/run -B
wpa_cli -p/var/run
> add_network
> set_network 0 ssid "name of AP"
> set_network 0 bssid 11:22:33:44:55:66
> set_network 0 key_mgmt WPA-PSK
> set_network 0 pairwise CCMP
> set_network 0 psk "key"
> enable_network 0
==================================================================================
# ADM [net] - СОЗДАНИЕ И РАБОТА С ШИФРОВАННЫМИ КАНАЛАМИ СВЯЗИ:
---------------------------------------------------------------------------------# (ssh) шифрованный канал связи:
• состояние сервера sshd:
systemctl status ssh.service #просмотр информации о сервисе sshd;
service sshd status #просмотр информации о сервисе sshd.
• генерация пары ключей (клиент):
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa #генерация rsa-ключей.
• передача ключа на сервер:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host #передача id_rsa.pub на user@host.
• просмотр ключей:
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub #вывести фингерпринт ключа.
• часто используемые команды:
ssh user@host #соединиться с host;
ssh admin@192.168.1.1 /sbin/reboot #перезагрузить сервер;
yes | pv | ssh user@host "cat > /dev/null" #тест скорости SSH-соединения;
ssh -X un@host firefox #запуск firefox на удаленном хосте через X11;
ssh -D 9999 -C user@host #сворачивание трафика локального хоста в ssh-туннель (-D) с принудительным сжатием (-С).
• различные команды:
ssh user@host cmd #запуск cmd на хосте host от имени user;
tar -cfjv /dir | ssh user@host "tar -xfj -C /dir";
rsync -az /path/to/dir user@host:/backup;
vim scp://user@host//etc/hosts;
ssh -t user@host tmux -r #tmux через ssh;
ssh -fX user@host firefox #firefox через ssh;
ssh -fY user@host xeyes #запуск xeyes (GUI) на хосте host от имени user;
ssh -fN user@host -L 7777:host:8888 #туннель с локального порта 7777 на удаленный порт 8888 host;
dd if=/dev/dsp | ssh -c arcfour -C user@host dd of=/dev/dsp #передача звука микрофона на удаленный host;
ssh user@host cat /path/to/rfile | diff /path/to/lfile #сравнение удаленного и локального файлов;
ssh -t reachable_host ssh unreachable_host #соединение через хост.
• опции программы:
-4 #использовать IPv4;
-6 #использовать IPv6;
-a #отключить форвардинг аутентификационному агенту;
-D [bind_address:]port #
-f #используется при запуске графических приложений;
-F file #задать конфигурационный файл (ssh_config);
-g #разрешить удаленному хосту форвардинг на локальные порты;
-i file #задать идентификационный файл (id_rsa);
-l uname #задать специфичное имя пользователя;
-L [bind_address:]port:host:hostport #перенаправление траффика;
-L [bind_address:]port:remote_socket #перенаправление траффика;
-L local_socket:host:hostport #перенаправление траффика;
-L local_socket:host:remote_socket #перенаправление траффика;
-n #перенаправить stdin в /dev/null (для запуска в фоне или X11);
-N #не выполнять удаленные команды (простой форвардинг портов);
-o option #задать необходимые опции;
-p dport #задать порт удаленного хоста;
-q #тихий режим;
-R [bind_address:]port:host:hostport #перенаправление траффика;
-R [bind_address:]port:local_socket #перенаправление траффика;
-R [bind_address:]port #перенаправление траффика;
-R remote_socket:host:hostport #перенаправление траффика;
-R remote_socket:host:local_socket #перенаправление траффика;
-t #включить псевдотерминал распределения;
-T #выключить псевдотерминал распределения;
-v #подробный вывод сообщений;
-w local_tun[:remote_tun] #завернуть ssh в туннель;
-W host:port #перенаправление локального трафика на host:port через ssh;
-x #выключить X11;
-X #задействовать X11;
-Y #использовать доверенный X11 форвардинг.
• escape-последовательности:
~. #завершить сессию;
~C !command #выполнить команду на хосте с которого был произведен вход;
~^+z^+z #свернуть ssh-сессию в фоновый режим (засуспендить);
~# #вывести список всех ssh-сессий;
~& #
~? #вывод списка escape-последовательностей;
~B #отправить хосту сигнал BREAK;
~C #открыть cli (применимо с {-DKLR});
~v #задействовать подробный вывод сообщений;
~v #отключить подробный вывод сообщений.
• файлы и директории:
/etc/ssh/ssh_config #конфигурационный файл клиента:
AddressFamily [PROT] #выбор поддерживаемых протоколов:
inet #IPv4;
inet6 #IPv6;
any #любые.
BatchMode [YES|NO] #не запрашивать парольную фразу;
CheckHostIP [YES|NO] #проверять адрес сервера в known_hosts;
Ciphers [ALG] #поддерживаемые алгоритмы шифрования данных;
CompressionLevel [LEVEL] #уровень компрессии от 0 до 9 (по умолчанию 6);
Compression [YES|NO] #использовать компрессию;
ConnectTimeout [N] #таймаут на установление соединения с SSH сервером (срабатывает при отсутствии ответа от сервера [0=безсрочно]);
EscapeChar [~|none] #задать символ escape-последовательности (при передаче двоичных данных использовать none);
ForwardAgent [YES|NO] #проброс ключа при продключении от одного сервера к другому (host > srv1 > srv2 > ..);
ForwardX11Trusted [YES|NO] #использование полного доступа к графической подсистеме X11;
ForwardX11 [YES|NO] #использование графической подсистемы X11;
GSSAPIAuthentication [YES|NO] #опции для авторизации по GSSAPI;
GSSAPIAuthentication [YES|NO] #опции для авторизации по GSSAPI;
GSSAPIDelegateCredentials [YES|NO] #опции для авторизации по GSSAPI;
GSSAPIDelegateCredentials [YES|NO] #опции для авторизации по GSSAPI;
GSSAPIKeyExchange [YES|NO] #опции для авторизации по GSSAPI;
GSSAPITrustDNS [YES|NO] #опции для авторизации по GSSAPI;
HashKnownHosts [YES|NO] #создавать или нет хэши имен хостов при добавлении их в файл ~/.ssh/known_hosts;
HostbasedAuthentication [YES|NO] #авторизация на основе файлов rhosts или /etc/hosts.equiv совместно с успешной авторизацией RSA;
Host [HOSTNAME] #имя хоста для подключения;
IdentityFile [KEY] #ключи [dsa|ecdsa|ed25519|identity|rsa];
MACs [ALG] #поддерживаемые алгоритмы проверки целостности данных;
NumberOfPasswordPrompts [N] #число попыток ввода пароля для авторизации на сервере;
PasswordAuthentication [YES|NO] #авторизацию по паролю;
PermitLocalCommand [YES|NO] #локальное выполнение команд указанных в LocalCommand или Escape-последовательности (!command);
Port [N] #порт ssh-сервера;
Protocol [1|2] #выбор версии протокола SSH;
ProxyCommand [CMD] #выполнение дополнительной команды;
RekeyLimit [N N] #задать объем трафика [K|M|G] и время [s|h], по истечении которых произойдет обновление ключей сессии;
RequestTTY [] #запрос псевдотерминала TTY:
yes #запрашивать;
no #не запрашивать;
force #принудительно;
auto #авто.
RhostsRSAAuthentication [YES|NO] #авторизацию на основе файлов rhosts или /etc/hosts.equiv совместно с успешной авторизацией RSA;
RSAAuthentication [YES|NO] #авторизация на основе ключей RSA;
SendEnv [LANG] #значения каких переменных передавать;
StrictHostKeyChecking [] #измение файла know_hosts:
no #вносить изменения;
yes #не вносить изменений;
ask #делать запрос.
TunnelDevice any:any #задаёт tun устройства на клиенте и на сервере (local_tun[:remoute_tun]) по цифровому ID или "any";
Tunnel [] #использовать ли форвардинг для устройств tun;
yes;
point-to-point #уровень 3;
ethernet #уровень 2;
no #не использовать (по умолчанию).
VisualHostKey [YES|NO] #отображение ключа (fingerprint) сервера при авторизации.
/etc/ssh/sshd_config #конфигурационный файл сервера:
AcceptEnv [LANG] #какие из переменных окружения (SendEnv на клиентской стороне) принимать;
AddressFamily [PROT] #выбор поддерживаемых протоколов:
inet #IPv4;
inet6 #IPv6;
any #любые.
AllowGroups [GROUP] #список групп которым разрешен доступ на SSH-сервер;
AllowTcpForwarding [YES|NO] #перенаправление портов;
AllowUsers [USER] #список пользователей которым разрешен доступ на SSH-сервер;
AuthorizedKeysFile
[KEY] #id_rsa.pub клиента (одной строкой в файле authorized_keys);
Banner [FILE] #сообщение перед авторизацией;
ChallengeResponseAuthentication [YES|NO] #беспарольная авторизация "запрос-ответ" для PAM интерфейса (PasswordAuthentication отключить);
ClientAliveCounntMax [N] #после скольких сообщений о простое разорвать соединение;
ClientAliveInterval [N] #время, по истечении которого будет направлено сообщение о простое;
Compression [] #использование сжатия данных:
yes #разрешить сразу;
no #запретить;
delayed #разрешить только после авторизации.
DenyGroups [GROUP] #список групп которым запрещен доступ на SSH-сервер;
DenyUsers [USER] #список пользователей которым запрещен доступ на SSH-сервер;
FingerprintHash [ALG] #алгоритм хэширования при авторизации с использованием FingerPrint [md5|sha256];
ForceCommand [CMD] #команда которая будет выполнена сразу после авторизации клиента;
GatewayPorts [] #туннелирование трафика посредством подключения удаленных хостов к выделенным портам:
yes #разрешить;
no #запретить;
clientcpecified #клиенту предоставляется выбрать порты самому.
GSSAPIAuthentication [YES|NO] #авторизация GSSAPI;
GSSAPICleanupCredentials [YES|NO] #очистка кэша пользователя при завершении сеанса;
HostbasedAuthentication [YES|NO] #кросс-хостинговуя авторизация;
HostKey [KEY] #ключи SSH-сервера [dsa|ecdsa|ed25519|rsa];
IgnoreRhosts [YES|NO] #не использовать для авторизации файлы .rhosts и shosts;
IgnoreUserKnownHosts [YES|NO] #игнорировать ~/.ssh/know_hosts во время авторизации rhosts+RSA;
KerberosAuthentication [YES|NO] #авторизация kerberos;
KerberosGetAFSToken [YES|NO] #получать талон AFS перед обращением к домашнему каталогу пользователя;
KerberosOrLocalPasswd [YES|NO] #проверка пароля другими способами, если авторизация через kerberos не проходит (например /etc/passwd);
KerberosTicketCleanup [YES|NO] #очистка кэша билетов пользователя при завершении сеанса;
KeyRegenerationInterval [N] #интервал генерации ключа сервера (SSHv1);
ListenAddress [IP:PORT] #IPv4|6 адрес и порт на котором слушает сервер;
LoginGraceTime [N] #время отведённое на ввод пароля {s};
LogLevel [LEVEL] #тип логов [QUIET|FATAL|ERROR|INFO|VERBOSE|DEBUG];
Match Banner #директива обеспечивающая возможность образовывать блок индивидуальных параметров для различных пользователей;
MaxAuthTries [N] #количество попыток авторизации в рамках сеанса связи;
MaxSessions [N] #максимальное число открытых сеансов на одно сетевое соединение;
MaxStartups [N:N:N] #максимальное число соединений, ожидающих авторизации (алгоритм раннего предупреждения перегрузки):
2:50:10:
отвергать соединение с вероятностью 50 %, если уже есть 2 не авторизованных соединения;
вероятность постепенно возрастает до 100 % при 10 соединениях.
PasswordAuthentication [YES|NO] #авторизацию по паролю;
PermitEmptyPasswords [YES|NO] #беспарольная авторизация;
PermitOpen [] #ограничение возможных конечных точек для TCP туннелей [host:port|IPv4:port|IPv6:port]:
any #;
none #;
* #.
PermitRootLogin [YES|NO] #авторизация под root'ом;
PermitTTY [YES|NO] #использование псевдотерминала;
PermitUserEnvironment [YES|NO] #проверка содержимого ~/.ssh/environment и ~/.ssh/authorized_keys;
Port [PORT] #порт который слушает SSH-сервер;
PrintLastLog [YES|NO] #дата и время последнего входа в систему при интерактивной регистрации в ней;
PrintMotd [YES|NO] #выдавать при входе сообщение из /etc/motd;
Protocol [1|2] #версия протокола SSH;
PubkeyAuthentication [YES|NO] #авторизация по публичному ключу;
RhostsRSAAuthentication [YES|NO] #авторизация по rhosts и RSA (требует заполнения ssh_known_hosts);
RSAAuthentication [YES|NO] #авторизация по RSA (SSHv1);
StrictModes [YES|NO] #проверять права доступа и владельца к конфигурационным файлам при авторизации;
Subsystem sftp /usr/lib/openssh/sftp-server #включает внешнюю подсистему:
в качестве параметров понимает имя подсистемы и команду которая будет выполнена при запуске подсистемы.
SyslogFacility [TYPE] #тип сообщений логирования событий SSH сервера:
[DAEMON|USER|AUTH|LOCAL0|LOCAL1|LOCAL2|LOCAL3|LOCAL4|LOCAL5|LOCAL6|LOCAL7].
TCPKeepAlive [YES|NO] #поддерживать соединение в активном состоянии при помощи отправки контрольных сообщений;
UseDNS [YES|NO] #DNS-запросы для определения имени удаленного хоста с целью проверки правильности IP-адреса;
UseLogin [YES|NO] #использовать login для интерактивного входа в систему:
выполнения удаленных команд в данном режиме не возможно;
возможно только СМОТРЕТЬ.
UsePAM [YES|NO] #использоваие дополнительных модулей авторизации;
UsePrivilegeSeparation [YES|NO] #разделение привелегий;
VerifyReverseMapping [YES|NO] #обратная проверка имени;
X11DisplayOffset [N] #номер дисплея доступного для туннелирования трафика X11-сервера;
X11Forwarding [YES|NO] #перенаправление портов X11-сервера в туннель SSH;
X11UseLocalhost [YES|NO] #форвардинг X11 на localhost для защиты от внешних подключений;
XAuthLocation [PATH] #путь к команде xauth.
---------------------------------------------------------------------------------# (ssh-agent):
ssh-agent -s > file #вывод переменных в file которые нужно прописать;
source file #прописать переменные;
ssh-add ~/.ssh/dir/id_rsa #добавление необходимого ключа в агент;
ssh-add -l #просмотр добавленных в агент ключей.
• опции программы:
-d #дебаггинг;
-k #завершить работу текущего агента;
-l #вывод списка ключей;
-s #вывод переменных которые нужно прописать.
---------------------------------------------------------------------------------# (scp) копирование данных через ssh:
scp file user@host:/path/to/dir #копирование file на host;
scp user@host:/path/to/file /path/to/dir #копирование file с host'а;
scp -Crpv user@host:/path/to/dir /path/to/dir #рекурсивное копирование с host'а.
• опции программы:
-4 #использовать IPv4;
-6 #использовать IPv6;
-C #использовать компрессию;
-l limit #лимит (пропускная способность) на использование канала [Kbit/s];
-p #копировать так же атрибуты объектов;
-q #использовать тихий режим;
-r #рекурсия;
-v #подробный вывод сообщений.
---------------------------------------------------------------------------------# (sftp) шифрованный канал связи с SFTP:
• соединение:
sftp user@host #подключиться к sftp-серверу.
• команды для работы в SFTP (директории на сервере):
cd
ls [-1afhlnrSt] [path]
-1 #вывод содержимого каталога списком;
-a #вывод скрытых файлов и папок;
-f #не производить сортировку;
-h #размер файлов в [K/M/G/T/P/E];
-l #вывод дополнительной информации о директории;
-n #информация UID и GID в цифровом формате;
-r #произвести обратную сортировку;
-S #сортировать по размеру;
-t #сортировать по дате модификации.
mkdir
pwd
rename
rm
rmdir
• команды для работы в SFTP (локальные директории):
lcd
lls [-1afhlnrSt] [path]
lmkdir
lpwd
lumask
• команды для работы в SFTP (общие команды):
chgrp #группа должна обязательно быть цифровым GID;
chmod
chown #владелец должен обязательно быть цифровым UID;
df [-hi]
-h #вывод информации в [K/M/G/T/P/E];
-i #вывод информации об инодах.
ln [-s]
-s #symlink.
symlink
• команды для работы в SFTP (копирование):
get [-afPpRr] remote [local] #загрузить с сервера:
-a #возобновление копирования (для идентичных файлов);
-f #вызов fsync после завершения;
-P|p #копирование с сохранением информации об атрибутах файлов;
-R|r #рекурсивное копирование каталогов (симлинки не выполняются).
put [-afPpRr] local [remote] #загрузить на сервер;
reget [-fPpRr] remote [local] #загрузить с сервера (аналог get с флагом -a);
reput [-fPpRr] [local] remote #отправить на сервер (аналог put с флагом -a);
progress #отобразить индикатор прогресса (прогресс-бар).
• команды для работы в SFTP (cmd):
!command #выполнить команду в локальной оболочке;
! #выйти в локальную оболочку.
• команды для работы в SFTP (выход):
bye #выйти из sftp;
exit #выйти из sftp;
quit #выйти из sftp.
• команды для работы в SFTP (справка):
help
version
?
---------------------------------------------------------------------------------# (sshfs) монтирование удаленного каталога по ssh:
• настройка:
groupadd fuse #создание группы fuse;
gpasswd -a un fuse #добавление пользователя un в группу fuse;
mkdir /home/un/sshfs #создание точки монтирования (куда).
• монтирование:
sshfs un@hostname:/path/to/dir /home/un/sshfs #монтирование dir в ~/sshfs.
• размонтирование:
fusermount -u /home/un/sshfs #размонтирование удаленного каталога.
---------------------------------------------------------------------------------# (mosh) ssh-клиент для слабых каналов связи по протоколу UDP:
mosh un@host #соединение с удаленным сервером;
mosh -p 1234 un@host #соединение с удаленным сервером на порт UDP 1234.
==================================================================================
# (openvpn) шифрованный канал связи.
openvpn 172.16.5.1 #подключение к OpenVPN серверу.
• опции программы:
--ca ca.crt #задать сертификат УЦ (CA);
--cert client.crt #задать публичный ключ клиента;
--config cfg #задать конфигурационный файл;
•
•
•
•
•
•
•
•
--dev int #задать интерфейс (tunN);
--ifconfig locaddr remaddr #задать конфигурацию сети (tun);
--ifconfig addr mask #задать конфигурацию сети (tap);
--key client.key #задать приватный ключ клиента;
--remote addr #задать сервер OpenVPN;
--reneg-sec num #задать время ожидания подключения;
--tls-client #задать тип OpenVPN (клиент);
--tls-server #задать тип OpenVPN (сервер);
--show-ciphers #доступные алгоритмы шифрования;
--show-digests #доступные алгоритмы хэширования;
--show-engines #доступные крипто-устройства;
--show-tls #TLS-шифры (шифрование канала управления);
--verb num #задать уровень вывода информационных сообщений.
опции операций с ключами:
--genkey #генерировать ключ;
--secret key #задать ключ.
создание ключей (УЦ - CA):
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
cp master.zip /etc/openvpn/ && cd /etc/openvpn/ && unzip master.zip
cd /etc/openvpn/easy-rsa-master/easyrsa*/
./easyrsa init-pki #создание рабочей инфраструктуры каталогов;
./easyrsa build-ca [nopass] #создание пары ключей УЦ;
*публичный ca.crt необходимо загрузить на клиента и на сервер;
./easyrsa gen-crl #генерация списка отозванных сертификатов;
*список отозванных сертификатов копируется на сервер.
список ключей (УЦ - CA):
ca.key #секретный ключ УЦ (CA);
ca.crt #публичный ключ УЦ (CA);
crl.pem #список отозванных сертификатов УЦ (CRL).
создание ключей (УЦ - сервер OpenVPN):
./easyrsa gen-req server [nopass] #создание пары ключей сервера;
./easyrsa import-req /path/to/server.req vpn-server #импорт ключа;
./easyrsa sign-req server vpn-server #подпись публичного ключа;
./easyrsa gen-dh #генерация ключа Диффи-Хелмана;
cd /etc/openvpn/ #на сервере OpenVPN;
openvpn --genkey --secret ta.key #генерация HMAC-ключа;
*HMAC-ключ ta.key необходимо загрузить на клиента и на сервер.
список ключей (сервер OpenVPN):
server.key #приватный ключ сервера OpenVPN;
server.crt #публичный ключ сервера OpenVPN;
crl.pem #список отозванных сертификатов УЦ (CRL);
dh.pem #файл Диффи-Хелмана для защиты трафика от расшифровки;
ta.key #ключ HMAC для дополнительной защиты от DoS-атак и флуда;
ca.crt #публичный ключ УЦ (CA).
создание ключей (УЦ - клиент OpenVPN):
./easyrsa gen-key client [nopass] #создание пары ключей клиента;
./easyrsa import-req /path/to/client.req vpn-client #импорт ключа;
./easyrsa sign-req client vpn-client #подпись ключа.
список ключей (клиент OpenVPN):
client.key #приватный ключ клиента OpenVPN;
client.crt #публичный ключ клиента OpenVPN;
ta.key #ключ HMAC для дополнительной защиты от DoS-атак и флуда;
ca.crt #публичный ключ УЦ (CA).
настройка сервера OpenVPN:
vi /etc/openvpn/server.conf #редактирование конфигурационного файла;
mkdir /ovpn/{ccd,tmp} #создание директорий;
cp crl.pem /ovpn #копирование сертификата;
echo "ifconfig-push 10.10.10.101 10.10.10.102" > /ovpn/ccd/client1
touch /var/log/openvpn/openvpn-status.log #создание log-файла;
touch /var/log/openvpn/openvpn-client.log #создание log-файла;
touch /var/log/openvpn/openvpn-server.log #создание log-файла;
systemctl start openvpn-server@.service #запуск сервиса;
systemctl enable openvpn-server@.service #автозапуск сервиса.
# настройка iptables (динамика):
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o enp1s0 -j MASQUERADE
# настройка iptables (статика):
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j SNAT --to-source *.WAN.IP.*
# форвардинг:
sysctl net.ipv4.ip_forward=1 #включение форвардинга пакетов.
• настройка клиента OpenVPN:
vi /etc/openvpn/client.conf #редактирование конфигурационного файла;
touch /var/log/openvpn/openvpn-status.log #создание log-файла;
touch /var/log/openvpn/openvpn-client.log #создание log-файла;
systemctl start openvpn-client@.service #запуск сервиса;
systemctl enable openvpn-client@.service #автозапуск сервиса.
==================================================================================
# ADM [net] - PORTKNOCKING:
---------------------------------------------------------------------------------traceroute 172.16.5.6 -T -p 69 -q 1 -m 1 #стукнуть на 172.16.5.6:69 tcp
traceroute 172.16.5.6 -U -p 69 -q 1 -m 1 #стукнуть на 172.16.5.6:69 udp
echo “knock” > /dev/tcp/172.16.5.6/69 #стукнуть на 172.16.5.6:69 tcp
echo “knock” > /dev/udp/172.16.5.6/69 #стукнуть на 172.16.5.6:69 udp
nc 172.16.5.6 69 --send-only #стукнуть на 172.16.5.6:69 tcp
nc 172.16.5.6 69 --send-only -u #стукнуть на 172.16.5.6:69 udp
nmap -sU -p 69 172.16.5.6 #постучаться на 172.16.5.6:69 tcp
nmap -sT -p 69 172.16.5.6 #постучаться на 172.16.5.6:69 udp
==================================================================================
# ADM [net] - МОНИТОРИНГ СЕТЕВЫХ РЕСУРСОВ:
---------------------------------------------------------------------------------# (netstat) вывод информации о сокетах (соединениях):
netstat -tupl #вывод информации о прослушиваемых портах;
netstat -tup #вывод информации об установленных соединениях.
• опции программы:
см. ss.
---------------------------------------------------------------------------------# (ss) вывод информации о сокетах (соединениях):
ss -tupna #вывод информации о всех сетевых сокетах;
ss -tupnl #вывод информации о прослушиваемых портах;
ss -tupn #вывод информации об установленных соединениях;
ss -o state established '( dport = :ssh or sport = :ssh )';
ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 192.168.0.45/24;
ss dst 192.168.1.139 #все соединения для получателя 192.168.1.139;
ss -4 -o state listening #все прослушиваемые соединения IPv4;
ss -a -A 'all,!tcp' #все соединения кроме tcp;
ss -x src /tmp/.X11-unix/* #все процессы присоединенные к X11-серверу.
• опции программы:
-n #не резолвить IP-адреса и порты;
-r #принудительно резолвить IP-адреса и порты;
-a #вывод всех соединений (установленных и прослушиваемых);
-o #вывод информации о продолжительности соединений;????
-p #вывод информации о программе использующей сокет;
-l #вывод только прослушиваемых портов;
-s #вывод суммарной информации по сокетам;
-Z #вывод информации SELinux по процессам;
-z #вывод информации SELinux по процессам и сокетам;
-t #вывод информации по сокетам tcp;
-u #вывод информации по сокетам udp;
-x #вывод информации по сокетам unix;
-w #вывод информации по сокетам raw;
-d #вывод информации по сокетам dccp;
-S #вывод информации по сокетам sctp;
-4 #вывод информации только по соединениям IPv4;
-6 #вывод информации только по соединениям IPv6;
-f FAMILY #вывод информации только по сокетам семейств:
unix;
inet;
inet6;
link;
netlink;
vsock.
• идентификаторы состояний:
close-wait #соединения ожидающие закрытия;
closed #закрытые, но действующие соединения;
closing #закрытые соединения;
established #только установленные соединения;
fin-wait-1 #
fin-wait-2 #
last-ack #
listening #прослушиваемые соединения;
syn-sent #
syn-recv #
time-wait #
all #все вышеперечисленные состояния;
bucket #состояния, представляющие собой минисокеты (н-р: time-wait и syn-recv);
big #всё кроме того, что соответствует идентификатору bucket;
connected #все состояния, кроме ожидающих соединения и закрытых;
synchronized #все состояния, соответствующие установленным соединениям, за исключением syn-sent.
---------------------------------------------------------------------------------# (iptstate) мониторинг установленных сетевых соединений:
iptstate -tLfbp #запуск мониторинга установленных сетевых соединений.
• опции программы:
-c #монохромный режим;
-C #счетчик байтов/пакетов (ф-ция должна быть интегрирована в ядро);
-d ip #фильтрация по IP-получателя;
-D port #фильтрация по порту получателя;
-l #резолвить IP в доменные имена;
-m #отмечать усеченные имена хостов символом '+' (н-р: -o -l -m);
-o #отключение динамического форматирования столбцов;
-L #скрыть запросы на DNS-сервера;
-f #фильтрация петлевого интнрфейса;
-p #не использовать прокрутку;
-r #обратная сортировка;
-R num #частота обновления данных (секунды);
-1 #одиночный запуск и вывод данных в терминал;
-b #сортировка (-bs|-bp|..):
d #IP получателя {-C};
p #протокол;
s #статус;
t #TTL;
b #байты;
p #пакеты.
-s ip #фильтрация по IP отправителя;
-S port #фильтрация по порту отправителя;
-t #отображение суммирующей строки.
• HotKeys:
[c] #перейти в монохромный режим;
[C] #показать/скрыть счетчик пакетов/байт;
[b] #сортировать по следующей колонке;
[B] #сортировать по предыдущей колонке;
[d] #задать/изменить фильтрацию по IP-получателя;
[D] #задать/изменить фильтрацию по порту получателя;
[f] #показать/скрыть статистику локального интерфейса;
[h] #хелп;
[l] #показать/скрыть доменные имена хостов (автоматически вкл -L);
[L] #показать/скрыть статистику DNS-запросов;
[m] #отмечать усеченные имена хостов символом '+' (н-р: -o -l -m);
[o] #включить/выключить динамическое форматирование столбцов;
[p] #включить/выключить прокрутку;
[q] #выход;
[r] #включить/выключить обратную сортировку;
[R] #изменить частоту обновления информации;
[s] #задать/изменить фильтрацию по IP-отправителя;
[S] #задать/изменить фильтрацию по порту отправителя;
[t] #показать/скрыть результирующую строку;
[x] #прибить соединение.
[Up]|[k] #переход на одну позицию вверх;
[Down]|[j] #переход на одну позицию вниз;
[PageUp]|[^u] #пролистать страницу вверх;
[PageDown]|[^d] #пролистать страницу вниз;
[Home] #переместиться вверх;
[End] #переместиться вниз;
[Left]|[h] #пролистать страницу влево;
[Right]|[l] #пролистать страницу вправо.
---------------------------------------------------------------------------------# (nload) графический мониторинг нагрузки на сетевые интерфейсы (in/out):
nload -i 51200 -u m -U M #запуск утилиты.
• опции программы:
-a #интервал усредненной шкалы (y) в [секундах] (по умолчанию 300);
-i #интервал шкалы скорости загрузки (x-in) в [kBit/s] (по умолчанию 10240);
-m #включение текстового режима (без графика);???
-o #интервал шкалы скорости отдачи (x-out) в [kBit/s] (по умолчанию 10240);
-t #интервал обновления информации в [миллисек.] (по умолчанию 500);
-u #задание единиц измерения скорости:
h #автоматический режим;
b #Bit/s;
k #kBit/s;
m #MBit/s;
g #GBit/s.
-U #задание единиц измерения суммарного объема трафика:
H #автоматический режим;
B #Bit;
K #kBit;
M #MBit;
G #GBit.
devices #задать сетевой интерфейс.
• HotKeys:
[Tab]|[Enter]|[PageUp]|[PageDown]|[Up]|[Down]|[Left]|[Right] #интерфейс;
[F2] #изменить параметры программы;
[F5] #сохранить текущие настройки программы в файл;
[F6] #загрузить текущие настройки программы из файла.
[q] #выход.
---------------------------------------------------------------------------------# (nethogs) подсчет трафика используемого программами:
nethogs -sv3 #запуск программы.
• опции программы:
-a #мониторинг всех сетевых (активных и нет) интерфейсов, включая loopback;
-b #режим поиска ошибок - подразумевает режим трассировки (текстовый);
-c #интервал автоматического закрытия программы в [сек] (по умолчанию 0);
-d #интервал обновления данных в [сек] (по умолчанию 1);
-p #включение режима promiscious;
-s #сортировать вывод по объему отправленного траффика;
-t #режим трассировки (текстовый);
-v #выбор единиц измерения (по умолчанию 0):
0 #скорость загрузки в [KB/s];
1 #итоговый объем в [B];
2 #итоговый объем в [KB];
3 #итоговый объем в [MB].
device #указание сетевого интерфейса (по умолчанию все).
• HotKeys:
[m] #переключение единиц измерения (B|KB|MB|KB/s);
[r] #сортировка по объему переданного траффика;
[s] #сортировка по объему отправленного траффика;
[q] #выход.
---------------------------------------------------------------------------------# (vnstat) фоновый подсчет трафика на всех интерфейсах:
vnstat -di enp1s0 #вывод суммарного трафика по дням для enp1s0.
• опции программы:
-d #отобразить по дням;
-h #отобразить по часам;
-i #выбор интерфейса;
-l #выводить текущую загрузку сети динамически;
-m #отобразить по месяцам;
-q #стандартный вывод программы;
-ru #стандартный вывод с предположительной скоростью обмена;
-s #краткий отчет;
-t #отобразить (последние) 10 дней (с максимальной загрузкой);???
-tr #подсчитать текущий трафик и вывести;
-u #принудительное обновление базы данных;
-w #отобразить по неделям.
• HotKeys:
[Ctrl+c] #выход.
==================================================================================
# ADM [net] - ДИАГНОСТИКА СЕТИ:
---------------------------------------------------------------------------------# (ping) проверка доступности хоста по протоколу icmp:
ping example.com #проверка доступности сайта example.com.
• опции программы:
-4 #использовать только сеть IPv4;
-6 #использовать только сеть IPv6;
-c число #задать счетчик количества запросов (по умолчанию 4);
-D #печатать timestamp;
-i число #задать интервал отправки запросов (в секундах);
-I interface #задать интерфейс для отправки запросов;
-t число #задать время жизни пакета в секундах (ttl);
-q #тихий режим;
-Q tos #задать бит tos (0-7);
-R #вывести маршрут пакетов;
-s число #задать размер пакета (по умолчанию 56);
-T timestamp #задать timestamp:
tsonly;
tsandaddr;
tsprespec [host1|host2|host3|host4].
-w число #интервал времени в сек., в течении которого отправлять запросы.
---------------------------------------------------------------------------------# (arping) отправка ARP-пакетов удаленному хосту:
arping -I enp1s0 -s 192.168.0.23 192.168.0.1 #отправить ARP-запрос 192.168.0.1.
• опции программы:
-A #то же что и {-U};
-b #задействовать только уровень MAC;
-c count #задать количество отправляемых пакетов;
-D #задействовать режим дубликата обнаруженного адреса (DAD);????
-f #прекратить отправку после получения первого ответа;
-I int #задать интерфейс отправителя;
-q #тихий режим;
-s src #задать IP отправителя:
в DAD режиме {-D} задать 0.0.0.0;
в безответном режиме {-A|U} задать IP получателя (dst).
-U #безответный режим для обновления адресов ARP-таблиц хостов;
-w dedline #задать длительность времени работы программы в секундах.
---------------------------------------------------------------------------------# (traceroute) трассировка маршрутов пакетов:
traceroute -4 -i eth0 duckduckgo.com #запустить трассировку.
• основные опции:
-4 #использовать сети IPv4;
-6 #использовать сети IPv6;
-I #использовать протокол ICMP (по умолчанию);
-P protocol #задать протокол:
[RAW|DCCP|UDPLITE|UDP|TCPCONN|TCP|ICMP].
-T #использовать протокол TCP (по умолчанию SYN на порт 80);
-U #использовать протокол UDP (по умолчанию запрос на 53 порт);
-UL #использовать протокол UDPLITE (по умолчанию запрос на 53 порт).
• опции интерфейсов, адресов и портов:
-g gateway #задать шлюз;
-i interface #задать интерфейс;
-p port #задать порт получателя (TCP|UDP) или ICMP-последовательность;
-s srcaddr #задать адрес отправителя;
--sport=port #задать порт отправителя.
• второстепенные опции:
-A #сделать запрос lookup|whois;
-d #режим дебаггинга;
-D #использовать DCCP;
-e #расширенный вывод ICMP;
-f first_ttl #задать время жизни первого пакета (по умолчанию 1 секунда);
-F #не фрагментировать пакеты;
-l flow_label #задать flow_label для IPv6;
-m max_ttl #задать максимальное количество хопов (по умолчанию 30);
-n #не отображать локальное имя хоста;
-q nqueries #количество отправляемых пакетов на хоп (по умолчанию 3);
-r #сделать запрос сразу на заданный хост (применима для пинга);
-t tos #задать тип сервиса TOS от 1 до 15 (по умолчанию 0);
-w max[,here,near] #задать время ожидания ответа:
max #максимальное время ожидания ответа (по умолчанию 5 секунд);
here #время ... (по умолчанию 3 секунды);
near #время ... (по умолчанию 10 секунд).
-z sendwait #задать интервал между запросами (от 1 до 9 секунд);
--back #выводить номер обратного хопа;
--fmark=mark #задать метку пакета (для iptables);
--mtu #отправка больших нефрагментированных пакетов (аналог {-F -N 1}).
• трассировка маршрута МАТЧАСТЬ:
- используемые протоколы и диапазоны портов:
- icmp 0/3/8 (11/30);
- udp:33434-33534 (по умолчанию).
- запросы:
udp 33434 (ttl 1)
udp 33435 (ttl 1)
udp 33436 (ttl 1)
udp 33437 (ttl 2)
udp 33444 ...
udp 33461 (ttl N)
icmp type 8 code 0 (эхо-запрос)
- ответы:
icmp type 11 code 0 (ttl истекло)
icmp type 3 code 3 (получатель недоступен [3] порт недоступен [3])
icmp type 0 code 0 (эхо-ответ)
---------------------------------------------------------------------------------# (mtr) трассировка маршрутов пакетов с расширенными функциями:
mtr -tbo LDRSNBAWVGJMXI -y 0 -i 60 127.0.0.1 #запустить трассировку.
• опции программы:
-4 #использовать только IPv4;
-6 #использовать только IPv6;
-F file #прочитать список хостов из file;
-r #режим отчета (по умолчанию 10 запросов) (возможно с {-c});
-w #режим расширенного отчета ({-r}, но имя хоста не урезается);
-x #вывод в формате *.xml;
-t #задействовать возможность прокрутки экрана {+|-};
--displaymode MODE #режим дисплея:
[0] - вывод статистики(по умолчанию);
[1] - без информации о задержке;
[2] - с информацией о задержке).
-g #режим GTK+ для интерфейса X11;
-l #вывод в формате *.raw;
-C #вывод в формате *.csv;
-j #вывод в формате *.json;
-p #построковый вывод информации для каждого хопа без заголовка;
-n #не использовать резолвинг хостов (вывод IP);
-b #выводит оба имени хоста (IP и DN);
-o FIELDS #вывод из набора полей (разделитель - пробел):
L #коэффициент потерь;
D #отброшенные пакеты;
R #принятые пакеты;
S #отправленные пакеты;
N #последнее RTT [ms];
B #минимальное (лучшее) RTT [ms];
A #усредненное RTT [ms];
W #максимальное (худшее) RTT [ms];
V #стандартное отклонение;
G #среднее геометрическое;
J #текущий джиттер;
M #усредненный джиттер;
X #худший джиттер;
I #интервал джиттер;
-y n #режим ipinfo выводит следующую информацию о хопе:
0 #AS-номер (эквивалент {-z});
1 #IP-префикс;
2 #код страны происхождения AS;
3 #RIR (ripencc, arin, ...);
4 #данные распределения IP-префикса;
-z #AS-номер для каждого хопа (эквивалент {-y 0});
-i SECONDS #задание интервала между Эхо-ответами;
-c COUNT #задать количество циклов трассировки;
-s PACKETSIZE #задать размер пакета Эхо-запроса в [bytes];
-B [0-255] #битовый шаблон для использования в полезной нагрузке;
-G SECONDS #задание задержки между циклами (по умолчанию 5);
-Q [0-255] #тип (TOS) в сервисном поле IP-заголовка пакета ICMP;
-e #выводить MPLS-информацию ICMP пакетов;
-a ADDRESS #поле ADDRESS для всех исходящих пакетов;
-f NUM #задание начального TTL (по умолчанию 1);
-m NUM #задание максимального TTL (по умолчанию 30);
-U NUM #max число неизвестных хостов для опроса (по умолчанию 5);
-u #использовать UDP вместо ICMP;
-T #использовать TCP вместо ICMP (размер пакета игнорируется);
-P PORT #задание номера порта для UDP/TCP/SCTP трассировки;
-L LOCALPORT #номер порта отправителя для UDP трассировки;
-Z SECONDS #продолжительность соединения для TCP трассировки;
-M MARK #отсутствует;
-v #версия;
• HotKeys:
[?] #хелп;
[h] #хелп;
[p] #режим паузы ([space] для продолжения);
[d] #циклический выбор режима дисплея:
[0] - вывод статистики(по умолчанию);
[1] - без информации о задержке;
[2] - с информацией о задержке).
[e] #вкл/выкл вывод MPLS-информации;
[n] #вкл/выкл резолвинг DN;
[r] #сбросить все счетчики;
[o] str #задание набора полей для вывода информации;
[j] #выбор режимов: статический (LS NABWV)/динамический (DR AGJMXI);
[c] <n> #задание количества циклов в [раз] (по умолчанию бесконечно);
[i] <n> #задание интервала между Эхо-ответами в [сек] (по умолчанию 1);
[f] <n> #задание начального TTL в [сек] (по умолчанию 1);
[m] <n> #задание максимального TTL в [сек] (по умолчанию 30);
[s] <n> #задать размер пакета Эхо-запроса в [bytes];
[b] <0-255> #битовый шаблон для использования в полезной нагрузке;
[Q] <0-255> #тип (TOS) в сервисном поле IP-заголовка пакета ICMP;
[u] #переключение режима трассировки ICMP/UDP;
[y] #вкл/выкл режима вывода IP-информации;
[z] #вкл/выкл режима вывода AS-номера.
---------------------------------------------------------------------------------# (tcpdump) сетевой сниффер:
tcpdump -nnqt
tcpdump host host.one
tcpdump host host.one and \( host.two or host.three \)
tcpdump ip host host.one and not host.two
tcpdump gateway host.one and (port ftp or ftp-data)
tcpdump tcp[tcpflags] & (tcp-syn|tcp-fin)
tcpdump icmp[icmptype] icmp-echo
tcpdump icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply
tcpdump -n -i eth0 not port ssh and src \(192.168.1.10 or 192.168.1.15\)
tcpdump -n -i eth0 net 192.168.1.15
tcpdump -n -i eth0 net 192.168.1.0/24
tcpdump -l > dump & tail -f dump
tcpdump -i eth0 -w traffic
tcpdump -i eth0 -s 0 -w traffic
tcpdump -r traffic
tcpdump port 80
tcpdump host google.com
tcpdump -i eth0 -X port \(110 or 143\)
tcpdump -n -i eth0 icmp
tcpdump -i eth0 -s 0 -A port 80 | grep GET
• опции программы:
-A #вывод содержимого каждого пакета в ASCII (кроме заголовка);
-b #вывод AS номера BGP пакета в ASDOT нотации;
-c число #задать число захватываемых пакетов;
-C число #задать размер файла захватываемых пакетов {-w и -Z};
-D #вывод списка доступных интерфейсов для захвата трафика;
-e #вывод заголовков пакетов (полезно для просмотра MAC-адресов);
-E spi@ipaddr algo:secret #дешифрует трафик IPsec ESP;
-F file #использовать фильтры из file (фильтры заданные в cli игнорируются);
-G число #задать продолжительность записи капчи в секундах {-w и -Z};
-i interface #задать прослушиваемый интерфейс;
-I #задать режим мониторинга:
--monitor-mode #только для сетей стандарта 802.11 (WiFi);
--immediate-mode.
-j timestamp #задать timestamp;
-J #вывод списка доступных timestamp;
-K #не проверять чексумму пакетов IP, TCP и UDP;
-l #используется при одновременной записи в файл и в стандартный вывод:
tcpdump -l | tee file
tcpdump -l > file & tail -f file
-L #вывод списка доступных типов (link type) интерфейсов {-y};
-m module #задать модуль SMI|MBI;
-M secret #задать парольную фразу для TCP-MD5;
-n #резолвить доменные имена;
-nn #резолвить доменные имена и порты;
-N #не выводить расширенные доменные имена (*.com | *.ru);
-# #вывод нумерации пакетов;
-O #не использовать оптимизацию;
-p #не использовать promiscuous-режим;
-Q direction #задать направление прослушиваемого траффика (in|out|inout);
-q #вывод в сокращенной форме;
-r file #читать пакеты из file (offline режим);
-S #вывод пакетов в абсолютной нумерации TCP-последовательности;
-s число #задать размер капчи (по умолчанию 262144 байта);
-T type #задать тип прослушиваемого протокола:
aodv|carp|cnfp|lmp|pgm|resp|radius|rpc|rtp|rtcp|snmp|tftp|...
-t #не выводить timestamp;
-tt #выводить время в секундах от начала эпохи;
-ttt #выводить время отправки и получения связанных между собой пакетов;
-tttt #время в формате: год-месяц-день часы:минуты:секунды.миллисекунды;
-ttttt #выводить время отправки и получения всех пакетов;
-u #выводить не декодированный NFS-заголовок;
-U #задействовать пакетный буфер (может использоваться с {-w});
-v #подробный вывод (с {-w}, выводится только счетчик капчи* пакетов);
-vv #очень подробный вывод;
-vvv #ну просто ниибически подробный вывод {-X};
-V file #читать названия входных файлов из file;
-w file #записывать стандартный вывод в file {-U};
-W #х.з. (может использоваться с {-C и -G};
-x #вывод заголовка пакета в hex виде;
-xx #вывод заголовка и его уровня в hex виде;
-X #вывод заголовка в hex и ASCII виде;
-XX #вывод заголовка и его уровня в hex и ASCII виде;
-y linktype #задать тип прослушиваемых интерфейсов;
-z #задать постротационную команду, н-р gzip или bzip2 {-C и -G};
-Z user #задать пользователя (по умолчанию tcpdump).
ВНИМАНИЕ! Одна капча - два связанных пакета (отправленный и полученный).
• синтаксис фильтров:
связки:
or { || } #логическое или;
and { && } #логическое и;
not { ! } #логическое не (исключение);
= #равенство;
!= #неравенство;
( ) #объединение в скобках и изоляция от внешних переменных;
\( \) #объединение в скобках и взаимодействие с внешними переменными.
объекты:
port #задать порт (ssh | ftp | 443);
portrange #задать диапазон портов (33000-66000);
host #задать хост (example.com | 192.168.0.6);
net #задать сеть (127.0.0.1 | 192.168.0.1);
src #отправитель (192.168.0.6);
dst #получатель (192.168.0.4).
gateway #шлюз (10.10.10.1);
broadcast #широковещательный адрес (192.168.0.255 | 255.255.255.255);
multicast #мультивещательный адрес (192.168.0.0);
mask #маска (255.255.255.0);
less #размер пакета (истина=длина реального пакета<=заданной);
greater #размер пакета (истина=длина реального пакета>=заданной);
proto #задать протокол (ip | tcp | icmp);
protochain #задать связку протоколов (ip | ip6).
ra #протокол сетей стандарта 802.11;
ta #протокол сетей стандарта 802.11;
addr1 #протокол сетей стандарта 802.11;
...
addr4 #протокол сетей стандарта 802.11.
ether #выводить ether-пакеты;
arp #выводить arp-пакеты;
ip #выводить ip-пакеты;
ip6 #выводить ip6-пакеты;
udp #выводить udp-пакеты;
tcp #выводить tcp-пакеты;
tcpflags #задать tcp-флаги:
tcp-syn { tcp[2] } #пакеты SYN;
tcp-fin { tcp[0] } #пакеты FIN;
CWR|ECE|URG|ACK|PSH|RST|SYN|FIN
00000100=4=RST | 00000010=2=SYN
icmp6 #выводить icmp6-пакеты;
icmp #выводить icmp-пакеты:
icmptype #задать тип icmp-пакетов:
icmp-echo #эхо-запрос;
icmp-echoreply #эхо-запрос.
---------------------------------------------------------------------------------# (tshark) сетевой сниффер (входит в состав утилиты wireshark):
• установка:
dnf -y install tshark #установка CLI;
dnf -y install wireshark #установка CLI + GUI.
• использование:
tshark #запуск сниффера.
tshark -i 2 -f "host 192.168.1.100 and (dst port 53 or 80)"
tshark -i eth3 -f "not broadcast and not multicast"
tshark -i eth0 -Y "ip.addr==192.168.1.1"
tshark -i eth0 -R "!(ip.addr == 192.168.0.1)"
tshark -i eth0 -Y "tcp.port== 8800 and http.request" #вывод http-запросов;
tshark -i eth0 -Y "not arp or icmp"
tshark -i eth0 -Y "tcp.analysis.retransmission" #повторная передача пакетов;
tshark -i eth2 -O icmp
tshark -G fields | less
tshark -i wlan0 -O icmp -T fields -e frame.number -e data
tshark -b filesize:100 -a files:20 -w temp.pcap #автоостановка 20x100;
tshark -b filesize:10240 -b duration:1 -w temp.pcap #автосоздание файлов ~x10K;
tshark -z help #вывод списка всех доступных отчетов;
tshark -i ens1 -z smb,srt -z dns,tree -z http,tree z hosts
tshark -i ens1 -z "proto,colinfo,tcp.srcport,tcp.srcport"
tshark -r cap.pcap -z conv,ip
tshark -r encrypted-packets.pcap -Y "tcp.port == 443 " -O http -o "ssl.desegment_ssl_records: TRUE" -o "ssl.desegment_ssl_application_data: TRUE" -o "ssl.keys_list:
127.0.0.1,443,http,server-x.key" -o "ssl.debug_file: debug-ssl.log" #вывод подробной информации о протоколе HTTP|сегментация SSL|поиск приватного ключа в файле server-x.key
формата PEM|сохранение информации для отладки в файле debug-ssl.log;
tshark -r nmap_OS_scan_succesful -Y "tcp.ack" -T fie lds -e frame.number -e ip.src -e tcp.seq -e tcp.ack -e tcp.flags.str -e tcp.flags -e tcp.analysis.acks_f rame
tshark -r captured.cap -T fields -e frame.number -e frame.encap_type -e frame.protocols -e frame.len -e ip.addr -E separator=, -E quote=d > outfile.csv
tshark -i 2 -w file -f "tcp[13] = 0x14" #сохранять tcp пакеты с установленными флагами RST и ACK (с 13-ым битом в заголовке равным 0x14).
• опции программы:
-a pattern #автоостановка захвата при срабатывании заданного счетчика:
duration:num #задать время продолжительности захвата пакетов;
file:num #задать количество частей сохраняемого файла {-w};
-b pattern #задействовать кольцевой буфер:
filesize:num #задать размер одного сохраняемого файла {-w};
-B num #размер буфера пакетов (сброс на диск при достижении лимита);
-D #вывод списка всех поддерживаемых сетевых интерфейсов;
?
-D #вывод списка доступных для прослушивания сетевых портов;
-e fields1 -e fields2 .. #задать список выводимых полей {-T};
-E format1 -E format2 .. #форматирование выводимой информации;
-f filter #задать фильтр перехвата пакетов (синтаксис идентичен tcpdump);
-G #вывод списка всех доступных полей для вывода;
-i int #задать прослушиваемый сетевой интерфейс;
-n #резолвить доменные имена;
-o value #задать параметры разбора шифрованных соединений SSL|TLS;
-O #подробный вывод (информация о конкретном протоколе);
-r file #прочитать данные из файла;
-R filter #задать фильтр представления (синтаксис идентичен wireshark);
-s num #
-T fields #вывод заданных полей {-e};
-V #подробный вывод (номер кадра|поле протокола|данные,флаги пакета);
-w file #записать вывод в file;
-Y filter #задать фильтр представления (синтаксис идентичен wireshark);
-z value #задать тип статистического отчета.
• синтаксис фильтров представления (объекты):
ip.dst #IP-адрес получателя;
ip.src #IP-адрес отправителя;
ip.addr #IP отправителя или получателя;
tcp.dstport #порт назначения;
tcp.srcport #порт отправителя;
ip.proto #протокол;
ip.ttl #фильтр по ttl, определяет сетевое расстояние;
http.request_uri #запрашиваемый адрес сайта.
• синтаксис фильтров представления (операторы):
== #равно;
!= #не равно;
< #меньше;
> #больше;
<= #меньше или равно;
>= #больше или равно;
matches #регулярное выражение;
contains #содержит;
&& #оба выражения должны быть верными для пакета;
|| #может быть верным одно из выражений.
• фильтры по IP-адресам:
ip.addr == 192.168.0.5 #вывод только для 192.168.0.5;
!(ip.addr == 192.168.0.0/24) #вывод всех кроме 192.168.0.0/24.
• фильтры по протоколу:
tcp #вывод только протокола tcp;
udp #вывод только протокола udp;
http #вывод только протокола http;
tcp.port == 80 || udp.port == 80 #вывод или TCP:80 или UDP:80;
not arp and not (udp.port == 53) #вывод всех кроме ARP и UDP:53.
• извлечение полезных данных из перехваченного трафика:
- chaosreader #chaosreader.sourceforge.net:
воссоздание telnet-сессиий;
извлечение файлов из HTTP|FTP-сессий.
- pcapsipdump #sourceforge.net/projects/psipdump:
извлечение голосового трафика из SIP-сессий.
- smbsniff #hsc.fr/ressources/outils/smbsniff/index.html.en:
извлечение файлов из SMB/CIFS-сессий.
- tcpreplay #tcpreplay.synfin.net:
повторное воспроизведение сессий на основе перехваченного трафика:
tcprewrite #позволяет внести изменения в заголовки пакетов сохраненного дампа;
tcpreplay #«проигрывает» дамп в сеть на нужной скорости:
tcpreplay --intf1=eth0 sample.pcap.
---------------------------------------------------------------------------------# (nc|ncat) соединение и перенаправление сетевых сокетов:
nc example.org 8080
nc -l 8080
nc --sh-exec "nc example.org 80" -l 8080 --keep-open
nc --exec "/bin/bash" -l 8081 --keep-open
nc --exec "/bin/bash" --max-conns 3 --allow 192.168.0.0/24 -l 8081 --keep-open
nc --proxy socks4host --proxy-type socks4 --proxy-auth joe smtphost 25
nc --proxy socks5host --proxy-type socks5 --proxy-auth joe:secret smtphost 25
nc -l --proxy-type http localhost 8888
# скачивание файла:
nc -l 9876 > outputfile #хост A (отдающий);
nc hostA 9876 < inputfile #хост B (принимающий).
# отправка файла:
nc -l 9876 < inputfile #хост A (принимающий);
nc hostA > outputfile #хост B (отдающий).
# примеры:
S: tar -czf - /etc/ | nc -l 3333 #публикация архива tar;
C: nc 192.168.1.1 3333 | pv -b > mybackup.tar.gz #прием архива tar;
S: cat largefile | nc -l 3333 #публикация largefile;
C: nc 192.168.1.1 3333 > largefile #прием largefile;
S: cat backup.iso | pv -b | nc -l 3333 #публикация backup.iso;
C: nc 192.168.1.1 3333 | pv -b > backup.iso #прием backup.iso;
S: nc -v -w1 host -z 1-5901|grep succeeded! #сканирование диапазона портов;
S: nc -z 192.168.1.112 1-90 #сканирование диапазона портов;
S: nc -lp 4444 -e /bin/bash #удаленый shell (server backdoor);
S: nc -lp 4444 -e cmd.exe #удаленый shell для Windows.
• опции сетевых протоколов:
-4 #использовать сети IPv4;
-6 #использовать сети IPv6;
-U #использовать unix-сокеты;
-u #использовать протокол UDP (по умолчанию TCP);
--sctp #использовать протокол SCTP.
• опции режима соединений:
-g hop1[,hop2,..] #задать список узлов сети;
-G ptr #задать отправную точку маршрута;
-p port #задать исходящий порт;
-s host #задать исходящий хост.
• опции режима прослушки:
-l #включить режим прослушки;
-m numconns #задать число максимальных соединений (по умолчанию 100);
-k #разрешить мульти-соединения (по умолчанию одно);
--broker #разрешить подключения посредников;
--chat #включить режим чата (обмен сообщениями между пользователями).
• опции ssl:
--ssl #использовать ssl (для UDP используется DTLS);
--ssl-verify #использовать проверку сертификата сервера;
--ssl-cert certfile.pem #задать SSL-сертификат;
--ssl-key keyfile.pem #задать приватный ключ SSL;
--ssl-trustfile cert.pem #задать список доверенных сертификатов;
--ssl-ciphers cipherlist #задать шифр-последовательность;
--ssl-alpn ALPN list #задать список ALPN протоколов.
• опции proxy:
--proxy host[:port] #задать список прокси-серверов;
--proxy-type proto #задать протокол прокси;
--proxy-auth user[:pass] #задать логин:пароль.
• опции выполнения команд:
-e cmd #задать выполняемую команду после установки соединения;
-c cmd #то же что и {-e}, но выполняется через /bin/sh (полный путь);
--lua-exec file #задать выполняемый скрипт.
• опции контроля доступа:
--allow host[,host,..] #задать список разрешенных хостов (allow главнее deny);
--allowfile file #задать файл со списком разрешенных хостов;
--deny host[,host,..] #задать список запрещенных хостов;
--denyfile file #задать файл со списком запрещенных хостов.
• опции тайминга:
-d time #задать интервал задержки при отправке данных;
-i time #задать время простоя соединений;
-w time #задать тайм-аут для соединений.
• опции вывода:
-o file #записать сессию в файл;
-x file #записать сессию в hex формате;
--append-output #добавочный вывод (к {-o и -x};
-v #подробный вывод сообщений о работе программы {-vv|-vvv};
-z #отчет о статусе соединения.
• дополнительные опции:
-C #использовать CRLF (аналог EOL);
-t #автоматический ответ на запросы telnet;
--recv-only #только принять данные;
--send-only #только отправить данные;
--no-shutdown #не разрывать соединение посреди связи.
---------------------------------------------------------------------------------# (nmap) сетевой сканер:
• использование:
nmap --iflist #вывести список активных интерфейсов и маршрутов хоста;
nmap -sL 172.16.5.0/24 --exclude 172.16.5.1,255 -oN iplist #составить список хостов локальной сети с выводом в iplist;
nmap -sP 172.16.5.0/24 --exclude 172.16.5.1,255 -oN iplist #узнать занятые IP локальной сети (IP, MAC, hostname) с выводом в iplist;
nmap -PR 172.16.5.0/24 --exclude 172.16.5.1,255 -oN iplist #ARP сканирование локальной сети с выводом в iplist;
nmap -PA 172.16.5.0/24 --exclude 172.16.5.1,255 -oN iplist #TCP-ASK сканирование локальной сети с выводом в iplist;
nmap -PS 172.16.5.0/24 --exclude 172.16.5.1,255 -oN iplist #TCP-SYN сканирование локальной сети с выводом в iplist;
nmap -PU 172.16.5.0/24 --exclude 172.16.5.1,255 -oN iplist #UDP сканирование локальной сети с выводом в iplist;
nmap -F -iL iplist #быстрое сканирование из iplist;
nmap -sO 172.16.5.2 #сканирование хоста на поддерживаемые IP-протоколы;
nmap -sS 172.16.5.2 #скрытное TCP SYN сканирование наиболее распрастранённых портов хоста;
nmap -sT 172.16.5.2 #TCP сканирование наиболее распрастранённых портов хоста;
nmap -sU 172.16.5.2 #UDP сканирование наиболее распрастранённых портов хоста;
nmap -sA 172.16.5.2 #проверка наличия брандмауэра на хосте;
nmap -sN 172.16.5.2 #TCP Null сканирование хоста с целью обмана фаервола;
nmap -sF 172.16.5.2 #TCP FIN сканирование хоста с целью обмана фаервола;
nmap
nmap
nmap
nmap
nmap
nmap
nmap
nmap
nmap
nmap
nmap
nmap
?
nmap
?
nmap
nmap
nmap
nmap
nmap
nmap
nmap
nmap
• опции
-sX 172.16.5.2 #TCP Xmas сканирование хоста с целью обмана фаервола;
-f 172.16.5.2 #фрагментированное сканирование хоста с целью обмана фаервола;
-f fw2.nixcraft.net.in 172.16.5.2 #фрагментированное сканирование хоста с целью обмана фаервола;
-f 15 fw2.nixcraft.net.in 172.16.5.2 #фрагментированное сканирование хоста с целью обмана фаервола;
--mtu 32 -f 172.16.5.2 #фрагментированное сканирование хоста с целью обмана фаервола с размером пакета 32;
--mtu 32 -f fw2.nixcraft.net.in 172.16.5.2 #фрагментированное сканирование хоста с целью обмана фаервола с размером пакета 32;
--mtu 32 -f 15 fw2.nixcraft.net.in 172.16.5.2 #фрагментированное сканирование хоста с целью обмана фаервола с размером пакета 32;
-O 172.16.5.2 #выявление ОС хоста;
-O --osscan-guess 172.16.5.2 #выявление ОС хоста с угадыванием;
-sV 172.16.5.2 #выявление запущенных сервисов хоста;
--open 172.16.5.2 #вывод всех открытых портов хоста;
--reason -p T:22 172.16.5.2 #поиск причины, по которой TCP порт 22 находится в том, или ином состоянии;
-Advvvp- 172.16.5.2 #полное сканирование с подробным отчётом;
--packet-trace 172.16.5.2 #показать все переданные и отправленные пакеты;
-A -T5 host #быстрое определение версии ОС и сканирование с использованием скриптов и трассировки;
-n -T5 -O --osscan-guess -sV -sS -p- -dvvv --reason 192.168.5.5 #быстрое сканирование с подробным отчетом;
-sP 10.0.0.0/8 172.16.0.0/16 192.168.0.0/16 #ping сканирование всех локальных подсетей;
-PO --initial-rtt-timeout 3 192.168.0.0/16 #IP сканирование хостов с временем ожидания ответа 3 секунды;
--top-ports 5 -D 192.168.0.19,192.168.0.59,192.168.0.91 192.168.0.1 #сканирование ftp,ssh,telnet,http,https через подставные хосты;
-v -sT -PN --spoof-mac 0 192.168.0.1 #сканирование с рандомным MAC-адресом;
--traceroute host #трассировка до хоста.
программы - ОПРЕДЕЛЕНИЕ ЦЕЛИ СКАНИРОВАНИЯ:
-iL FILE #использовать список хостов|сетей из файла;
-iR N #сканировать случайно выбранные хосты (0=бесконечное сканирование);
--exclude HOST1,HOST2,HOST3,.. #исключить хосты|сети;
--excludefile FILE #исключить из сканирования список хостов|сетей, находящийся в файле.
• опции программы - ОБНАРУЖЕНИЕ ХОСТОВ:
-n #не производить DNS-резолв;
-PA PORTS #TCP ACK пингование заданных хостов (используется ACK-пакет);
?
-PB #ping-Both (одновременные запросы ACK и ICMP [по умолчанию]);
-PE #пингование с использованием ICMP-эхо запросов;
?
-PI #ping-ICMP (используется нормальный ping-пакет ICMP-echo);
-PM #пингование с использованием ICMP-сетевой маски;
-Pn #ping-No (не производить ping-опрос хостов перед их сканированием);
-PN #расценивать все хосты как работающие (пропустить обнаружение хостов);
-PO PROTO #пингование с использованием IP протокола (не производить ping-опрос перед сканированием);
-PP #пингование с использованием ICMP-запросов временной метки;
-PR #ARP сканирование (используется по умолчанию в локальной сети);
-PS PORTS #TCP SYN пингование заданных хостов (используется SYN-пакет);
?
-PT #ping-TCP (вместо запроса ICMP-echo, посылается TCP ACK-пакет);
-PU PORTS #UDP пингование заданных хостов;
-R #всегда производить разрешение (по умолчанию - иногда);
-sL #сканирование с целью составления списка (вывод списка адресов, которые будут просканированы);
-sP #пинг сканирование (просто определить, работает ли хост);
--dns-servers SRV1,SRV2,SRV3,.. #задать собственные DNS сервера для разрешения доменных имён;
--system-dns #использовать системный DNS-преобразователь.
• опции программы - РАЗЛИЧНЫЕ ПРИЕМЫ СКАНИРОВАНИЯ:
-b uname:pass@srv:port #FTP bounce сканирование (сканирование с "доверенного" ftp сервера);
-sA #сканирование с использованием системного вызова Connect(ACK) [определения набора правил (ruleset) фаервола];
-sF #FIN сканирование (невидимое с отправкой FIN-пакетов);
-sI HOST:PORT #"ленивое" (Idle) сканирование;
-sM #TCP сканирование с использованием системного вызова Connect(Maimon);
-sN #TCP Null сканирование (пакет без флагов);
-sO #сканирование IP протоколов;
?
-sR #RPC сканирование (определяет программу и версию на порте);
-sS #TCP SYN сканирование (отправлен SYN|получен SYN_ACK=true|обрыв соединения);
-sT #TCP сканирование (открытие соединения с его последующим закрытием);
-sU #UDP сканирование;
-sW #сканирование с использованием системного вызова Connect(Window) [похож на ACK-scan + можно определять открытые порты];
-sX #Xmas сканирование (пакет с набором флагов FIN|URG|PSH);
--reason #выводить причину, почему Nmap установил порт в определенном состоянии (развёрнутая информация по портам);
--scanflags FLAG #задать собственные TCP флаги:
URG, ACK, PSH, RST, SYN, FIN;
9 #задаёт флаги PSH и FIN;
•
•
•
•
•
•
•
URGACKPSHRSTSYNFIN #будут установлены все флаги (последовательность значения не имеет).
--traceroute #трассировка пути к хосту;
* если опций не задано, Nmap посылает ICMP эхо-запрос и TCP ACK пакет на порт 80.
опции программы - ОПРЕДЕЛЕНИЕ ПОРТОВ И ПОРЯДКА СКАНИРОВАНИЯ:
-p PORTS #сканирование только определенных портов:
-p- #все 65535 портов;
-p "*" #все 65535 портов;
-p1-65535 #все 65535 портов;
-p22 #только порт 22;
-p "2?" #20-29 порты;
-p "[-1024]" #все порты из nmap-services равные или меньше 1024;
-p U:53,111,137,T:21-25,80,139,8080
-p "ftp,http*" #21,80,443 порты.
-F #быстрое сканирование (сканирование портов служб файла services);
-r #сканировать порты последовательно (не использовать случайный порядок портов);
--top-ports N #сканировать заданное количество наиболее распространенных портов (от 1 и выше);
--port-ratio TOP #сканировать порты с рейтингом большим, чем заданный TOP (от 0 до 10).
опции программы - ОПРЕДЕЛЕНИЕ СЛУЖБ И ИХ ВЕРСИЙ:
-sV #узнать характеристики сервисов|служб (версий) запущенных на открытых портах;
--version-all #использовать каждый единичный запрос (интенсивность 9);
--version-intensity LEVEL #устанавливать от 0 (легкое) до 9 (пробовать все запросы);
--version-light #ограничиться наиболее легкими запросами (интенсивность 2);
--version-trace #выводить подробную информацию о процессе сканирования (для отладки).
опции программы - СКАНИРОВАНИЕ С ИПОЛЬЗОВАНИЕМ СКРИПТОВ:
-sC #эквивалентно опции --script=default;
--script=SCRIPS #разделенный запятыми список директорий, файлов скриптов или категорий скриптов;
--script-args=NAME1=BOOLEAN1,NAME2=BOOLEAN2, .. #передача аргументов скриптам;
--script-trace #выводить все полученные и отправленные данные;
--script-updatedb #обновить базу данных скриптов.
опции программы - ОПРЕДЕЛЕНИЕ ОС:
-O #узнать тип ОС и ее характеристики;
--osscan-guess #угадать результаты определения ОС;
--osscan-limit #использовать функцию определения ОС только для "перспективных" хостов.
опции программы - ОПЦИИ УПРАВЛЕНИЯ ВРЕМЕНЕМ И ПРОИЗВОДИТЕЛЬНОСТЬЮ:
-T[0-5] #установить шаблон настроек управления временем (больше - быстрее);
--host-timeout TIME #задать время на полное сканирование одного хоста;
--initial-rtt-timeout N #регулирует время ожидания ответа на запрос (заданное) [по умолчанию 6 s];
--max-hostgroup N #установить максимальный размер групп для параллельного сканирования;
--max-parallelism N #регулирует распараллеливание запросов (максимальное количество);
--max-rate N #посылать запросы с интенсивностью не больше чем N в секунду;
--max-retries N #задает максимальное количество повторных передач запроса;
--max-rtt-timeout N #регулирует время ожидания ответа на запрос (максимальное);
--max-scan-delay TIME #регулирует задержку между запросами;
--min-hostgroup N #установить минимальный размер групп для параллельного сканирования;
--min-parallelism N #регулирует распараллеливание запросов (минимальное количество);
--min-rate N #посылать запросы с интенсивностью не меньше чем N в секунду;
--min-rtt-timeout N #регулирует время ожидания ответа на запрос (минимальное);
--scan-delay TIME #регулирует задержку между запросами;
* 's' (секунды), 'm' (минуты), 'h' (часы), милисекунды (по умолчанию).
опции программы - ОБХОД БРАНДМАУЭРОВ|IDS:
-D HOST1,HOST2,HOST3,.. #задать ложные хосты для подмены IP-адреса текущего;
-e INT #использовать конкретный интерфейс;
-f #фрагментировать пакеты (использовать малый размер фрагментов [SYN|FIN|Xmas|NULL]) {--mtu};
-g PORT #задать исходящий порт;
-S IP #изменить исходный адрес (создание видимости сканирования кем-то другим);
--badsum #посылать пакеты с фиктивными TCP|UDP контрольными суммами;
--data-length N #добавить произвольные данные к посылаемым пакетам;
--ip-options OPTIONS #посылать пакет с заданным ip опциями;
--mtu N #задать значениме MTU {-f};
--source-port PORT #использовать заданный номер исходящего порта;
--spoof-mac MAC|ПРЕФИКС|ВЕНДОР #задать MAC адрес (подменить MAC-адрес [0=рандомный]);
--ttl N #установить IP поле time-to-live (время жизни).
опции программы - ВЫВОД РЕЗУЛЬТАТОВ:
-d LEVEL #установить уровень отладки (без LEVEL - максимальный|до 9);
?
•
?
?
?
?
•
•
•
•
•
?
•
-oA FILE #использовать сразу три основных формата вывода;
-oG FILE #выводить результаты grep формата вывода в заданный файл;
-oM FILE #выводить результаты машинного вывода в заданный файл;
-oN FILE #выводить результаты человекочитаемого формата вывода в заданный файл;
-oS FILE #выводить результаты s|<rIpt kIddi3 формата вывода в заданный файл;
-oX FILE #выводить результаты XML формата вывода в заданный файл;
-v|vv|vvv #задать уровень вербальности;
--append-output #добавлять выходные данные в конец, а не перезаписывать выходные файлы;
--iflist #вывести список интерфейсов и роутеров (для отладки);
--log-errors #записывать ошибки|предупреждения в выходной файл нормального режима;
--no-stylesheet #убрать объявление XSL таблицы стилей из XML;
--open #вывод только открытых (или возможно открытых) портов;
--packet-trace #отслеживание принятых и переданных пакетов;
--resume FILE #продолжить прерванное сканирование {-oM|-oN|..};
--stylesheet PATH|URL #устанавливает XSL таблицу стилей для преобразования XML вывода в HTML;
--webxml #загружает таблицу стилей с Nmap.Org.
опции программы - РАЗЛИЧНЫЕ ОПЦИИ:
-6 #включить IPv6 сканирование;
-A #задействовать все виды сканирований (определение ОС, версий, использование скриптов, трассировка);
-I #вскрыть имя пользователя процесса (только с {-sT});
-M num #задать количество параллельно используемых сокетов {-sT|-sS};
-V #вывести номер версии;
--datadir DIR #определяет место расположения файлов Nmap;
--privileged #подразумевать, что у пользователя есть все привилегии;
--randomize_hosts #использовать случайную перестановку групп хостов;
--send-eth #использовать сырой уровень Ethernet;
--send-ip #использовать сырой уровень IP;
--servicedb DB #задать свой файл nmap-services;
--unprivileged #подразумевать, что у пользователя нет привилегий для использования сырых сокетов.
HotKeys - ВЗАИМОДЕЙСТВИЕ ВО ВРЕМЯ СКАНИРОВАНИЯ:
[v|V] #увеличить|уменьшить уровень вербальности;
[d|D] #увеличить|уменьшить отладочный уровень;
[p|P] #включить|выключить отслеживание пакетов;
[?] #вывод справки по HotKeys;
[AnyKey] #вывод текущей статистики.
варианты задания адресов хостов:
128.210.*.*
128.210.0-255.0-255
128.210.1-50,51-255.1,3,8,9,19-255
128.210.0.0/16
варианты задания маски хоста:
/0 #сканировать адреса класса A;
/16 #сканировать адреса класса B;
/24 #сканировать адреса класса С;
/32 #сканировать заданный хост.
виды сканирований:
UDP;
TCP connect();
TCP SYN (полуоткрытое);
FTP proxy (прорыв через ftp);
Reverse-ident;
ICMP (ping);
FIN;
ACK;
SYN;
NULL.
варианты ответов порта:
closed #закрыт (не связан ни с каким приложением, но может быть открыт позже);
filtered #фильтруется (блокируется брандмауэром, определить открыт или закрыт порт нельзя);
open #открыт (приложение готово для принятия пакетов на этот порт);
tcpwrapped #сервер обрывает подключение до того, как данные были отправлены;
unfiltered #не фильтруется (отвечает на запросы, но нельзя определить, открыт или закрыт).
файлы и директории:
/usr/share/nmap/scripts/*.nse #доступные скрипты.
==================================================================================
# ADM [net] - DNSLOOKUP UTILS:
---------------------------------------------------------------------------------# (host) вывод информации о доменных именах (dnslookup utils):
host example.org #вывод информации о доменном имени example.org.
• опции программы:
-4 #использовать сети IPv4;
-6 #использовать сети IPv6;
-a #вывод всей информации (эквивалент {-v -t ANY});
-c class #задать класс, н-р HS или CH (по умолчанию IN);
-C #проверка соответствия хоста SOA-записям;
-d #дебаггинг (эквивалент {-v});
-i #использовать IP6.INT для резолвинга доменных имен IPv6 (устаревшее);
-l #вывод списка зон;
-m #задать флаг дебаггинга (trace|record|usege);
-N ndots #задать номер dots (по умолчанию 1);
-r #отключить рекурсию в запросе (стереть бит RD);
-R number #задать номер повторов для UDP запросов;
-s #не отправлять запрос следующему серверу DNS;
-t type #задать тип:
[A|AAAA|ANY|AXFR|CNAME|DNSKEY|IXFR|MX|NS|SIG|SOA|TXT].
-T #использовать TCP запрос (по умолчанию {-U} UDP);
-v #подробный вывод;
-w #использовать максимально возможное время ожидания ответа;
-W wait #задать время ожидания ответа (по умолчанию UDP=5|TCP=10).
---------------------------------------------------------------------------------# (dig) вывод информации о доменных именах (dnslookup utils):
dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
• опции программы:
-4 #использовать сети IPv4;
-6 #использовать сети IPv6;
-b address[#port] #задать адрес и порт отправителя;
-c class #задать класс (по умолчанию IN);
-f file #задать file со списком доменных имен;
-i #использовать IP6.INT для резолвинга доменных имен IPv6 (устаревшее);
-k keyfile #задать keyfile для использования TSIG-ключа;
-m #задействовать дебаггинг;
-p port #задать порт получателя (по умолчанию 53);
-q name #задать имя ресурса DNS;
-t type #задать тип запрашиваемой информации (по умолчанию A):
[A|AAAA|ANY|AXFR|CNAME|DNSKEY|IXFR|MX|NS|SIG|SOA|TXT].
-u #вывод времени запроса в млс или мкс;
-x addr #указать запрашиваемый адрес для упрощенного запроса;
-y [hmac:]keyname:secret #параметры для использования TSIG-ключа.
• дополнительные опции:
+[no]aaflag #синоним aaonly
+[no]aaonly #установить флаг "aa" в запросе;
...
==================================================================================
# ADM [net] - ЗАПРОС И ЗАГРУЗКА ДАННЫХ В|ИЗ СЕТИ:
---------------------------------------------------------------------------------# (wget) скачивание контента из сети:
wget http://example.com/file.zip #скачать file.zip
wget -pHEk http://site.com/page #скачать страницу;
wget -rpHEk -l 10 -nc http://site.com/ #скачивание сайта целиком.
• запуск:
-b #после запуска перейти в фоновый режим (лог пишется в wget.log);
-e КОМАНДА #выполнить команду в стиле ".wgetrc";
-V ##показать версию Wget и завершить работу.
• журналирование и входной файл:
-a ФАЙЛ #дописывать сообщения в конец ФАЙЛА;
-B URL #считать, что ссылки из входного файла (-i -F) указаны относительно URL;
-d #показать много отладочной информации;
-F #считать, что входной файл — HTML;
-i ФАЙЛ #загрузить URL-ы согласно локальному или внешнему ФАЙЛУ;
-nv #отключить вывод подробных сведений (не полностью);
-o ФАЙЛ #записывать сообщения в ФАЙЛ;
-q #ничего не выводить;
-v #показывать подробные сведения (по умолчанию);
--config=ФАЙЛ #задать файл настроек;
--input-metalink=ФАЙЛ #скачать файлы, перечисленные в локальном ФАЙЛЕ Metalink;
--no-config #не читать файлы настроек;
--rejected-log=ФАЙЛ #протоколировать причины отброса URL в ФАЙЛ;
--report-speed=ТИП #единицы измерения пропускной способности определить ТИПОМ (ТИП может быть равно bits).
• загрузка:
-4 #подключаться только к адресам IPv4;
-6 #подключаться только к адресам IPv6;
-c #возобновить загрузку частично загруженного файла (дозагрузка);
-nc #не перезаписывать существующие файлы (дозагрузка);
-N #не загружать повторно файлы, только если они не новее, чем локальные;
-O ФАЙЛ #записывать документы в ФАЙЛ;
-Q ЧИСЛО #установить величину квоты загрузки в ЧИСЛО;
-S #запрос информации о заголовках http и ftp серверов;
-T SECONDS #установка значений всех тайм-аутов равными числу SECONDS;
-t ЧИСЛО #установить ЧИСЛО повторных попыток на загрузку (0 без ограничения);
-w SECONDS #задать период задержки между загрузками в SECONDS;
--ask-password #запрашивать пароли;
--bind-address=АДРЕС #привязать АДРЕС (имя компьютера или IP) локального компьютера;
--connect-timeout=SECONDS #установка тайм-аута подключения в SECONDS;
--dns-timeout=SECONDS #установка тайм-аута поиска в DNS в SECONDS;
--ignore-case #игнорировать регистр при сопоставлении файлов и/или каталогов;
--keep-badhash #оставлять файлы с неправильными контрольными суммами (добавляя .badhash);
--limit-rate=СКОРОСТЬ #ограничить СКОРОСТЬ загрузки;
--local-encoding=КДР #использовать КДР как локальную кодировку для IRI;
--metalink-index=НОМЕР #порядковый НОМЕР metaurl Metalink application/metalink4+xml;
--metalink-over-http #использовать метаданные Metalink из заголовка ответов HTTP;
--no-dns-cache #отключить кэширование DNS-запросов;
--no-iri #выключить поддержку IRI;
--no-netrc #не пытаться получить данные из .netrc;
--no-proxy #явно выключить прокси;
--no-use-server-timestamps #не использовать проверку if-modified-since для запросов в режиме учёта меток времени;
--no-use-server-timestamps #не устанавливать метку времени локальному файлу, полученную с сервера;
--password=ПАРОЛЬ #установить ftp- и http-пароль в ПАРОЛЬ;
--prefer-family=СЕМЕЙСТВО #подключаться сначала к адресам указанного семейства (может быть IPv6, IPv4 или ничего);
--preferred-location #предпочитаемое расположение ресурсов Metalink;
--progress=ТИП #выбрать тип индикатора выполнения;
--random-wait #задействовать произвольные интервалы задержки между обращениями (0.5..1.5..);
--read-timeout=SECONDS #установка тайм-аута чтения в SECONDS;
--remote-encoding=КДР #использовать КДР как удалённую кодировку по умолчанию;
--restrict-file-names=ОС #использовать в именах файлов символы, допустимые в ОС;
--retry-connrefused #повторять, даже если в подключении отказано;
--retry-on-http-error=ОШИБКИ #список (через запятую) ошибок HTTP, вызывающих повтор;
--show-progress #показывать индикатор выполнения в любом режиме подробности;
--spider #ничего не загружать (проверка ссылки на доступность);
--start-pos=СМЕЩЕНИЕ #начинать загрузку со СМЕЩЕНИЯ (считается с 0);
--unlink #удалить файл перед затиранием;
--use-askpass=КОМАНДА #указать обработчик мандатов для запроса имени пользователя и пароля (если КОМАНДА не указана, то используется
или SSH_ASKPASS);
--user=ПОЛЬЗОВАТЕЛЬ #установить и ftp- и http-пользователя в ПОЛЬЗОВАТЕЛЬ;
?
--waitretry=SECONDS #wait 1..SECONDS between retries of a retrieval (applies if more then 1 URL is to be retrieved);
--xattr #включить хранилище метаданных в расширенных файловых атрибутах.
• каталоги:
-nd #не создавать каталоги;
-nH #не создавать каталоги как на узле;
-P /path/to/dir #сохранять файлы в /path/to/dir/..;
-x #принудительно создавать каталоги;
--cut-dirs=ЧИСЛО #игнорировать ЧИСЛО компонентов удалённого каталога;
--protocol-directories #использовать имя протокола в каталогах.
переменная окружения WGET_ASKPASS
• параметры HTTP:
-E #сохранять документы HTML/CSS с надлежащими расширениями;
-U USER-AGENT #идентифицировать себя как USER-AGENT вместо Wget/ВЕРСИЯ:
"Mozilla/5.0 (X11; Linux x86_64)";
"AppleWebKit/536.5 (KHTML, like Gecko)";
"Chrome/19.0.1084.9";
"Safari/536.5".
--auth-no-challenge #отправлять информацию об аутентификации Basic HTTP не дожидаясь первого ответа сервера;
--body-data=СТРОКА #отправка СТРОКИ в качестве данных {только с --method};
--body-file=ФАЙЛ #отправка содержимого ФАЙЛА {только с --method};
--compression=ТИП #тип сжатия: [auto|gzip|none] (по умолчанию none);
--content-disposition #учитывать заголовок Content-Disposition при выборе имён для локальных файлов (ЭКСПЕРИМЕНТАЛЬНЫЙ);
--content-on-error #выводить принятые данные при ошибках сервера;
--default-page=ИМЯ #изменить имя страницы по умолчанию (обычно это "index.html");
--header=СТРОКА #вставить СТРОКУ между заголовками;
--http-password=ПАРОЛЬ #установить http-пароль в ПАРОЛЬ;
--http-user=ПОЛЬЗОВАТЕЛЬ #установить http-пользователя в ПОЛЬЗОВАТЕЛЬ;
--ignore-length #игнорировать поле заголовка "Content-Length";
--keep-session-cookies #загрузить и сохранить кукисы сеанса (непостоянные);
--load-cookies=ФАЙЛ #загрузить кукисы из ФАЙЛА перед сеансом;
--max-redirect #максимально допустимое число перенаправлений на страницу;
--method=HTTPMethod #использовать метод "HTTPMethod" в заголовке;
--no-cache #отвергать кэшированные сервером данные;
--no-cookies #не использовать кукисы;
--no-http-keep-alive #отключить поддержание активности HTTP (постоянные подключения);
--post-data=СТРОКА #использовать метод POST (отправка СТРОКИ в качестве данных);
--post-file=ФАЙЛ #использовать метод POST (отправка содержимого ФАЙЛА);
--proxy-password=ПАРОЛЬ #установить ПАРОЛЬ в качестве пароля для прокси;
--proxy-user=ПОЛЬЗОВ #установить ПОЛЬЗОВАТЕЛЯ в качестве имени пользователя для прокси;
--referer=URL #включить в HTTP-запрос заголовок "Referer: URL";
--save-cookies=ФАЙЛ #сохранить кукисы в ФАЙЛ после сеанса;
--save-headers #сохранять HTTP-заголовки в файл.
• параметры HTTPS (SSL/TLS):
--ca-certificate=ФАЙЛ #файл с набором CA;
--ca-directory=КАТ #каталог, в котором хранится список CA;
--certificate=FILE #файл сертификата пользователя;
--certificate-type=ТИП #тип сертификата пользователя [PEM|DER];
--ciphers=СТРОКА #назначить строку приоритета (GnuTLS) или список шифров (OpenSSL) непосредственным образом:
использовать осторожно;
данный параметр заменяет значение --secure-protocol;
формат и синтаксис строки зависит от используемой библиотеки SSL/TLS.
--crl-file=ФАЙЛ #файл с набором CRL;
--https-only #переходить только по безопасным ссылкам HTTPS;
--no-check-certificate #не проверять сертификат сервера;
--pinnedpubkey=ФАЙЛ/ХЭШИ #файл с открытым ключом [PEM|DER] или любое количество хэшей sha256 в виде base64, начинающихся с "sha256//" и разделённых ";", по которым
проверяется ответный узел;
--private-key-type=ТИП #тип секретного ключа [PEM|DER];
--private-key=ФАЙЛ #файл секретного ключа;
--secure-protocol=ПР #выбор протокола безопасности: [auto|SSLv2|SSLv3|TLSv1|TLSv1_1|TLSv1_2|PFS].
• параметры HSTS:
--hsts-file #путь к базе данных HSTS (заменит значение по умолчанию);
--no-hsts #отключить HSTS.
• параметры FTP:
--ftp-password=ПАРОЛЬ #установить ftp-пароль в ПАРОЛЬ;
--ftp-user=ПОЛЬЗОВАТЕЛЬ установить ftp-пользователя в ПОЛЬЗОВАТЕЛЬ;
--no-glob #выключить маски для имён файлов FTP;
--no-passive-ftp #отключить "пассивный" режим передачи;
--no-remove-listing #не удалять файлы ".listing";
--preserve-permissions #сохранять права доступа удалённых файлов;
--retr-symlinks #при рекурсии загружать файлы по ссылкам (не каталоги).
• параметры FTPS:
--ftps-clear-data-connection #шифровать только канал управления; данные не шифруются;
--ftps-fallback-to-ftp #вернуться к FTP, если FTPS не поддерживается сервером;
--ftps-implicit #безусловно использовать FTPS (порт по умолчанию 990);
--ftps-resume-ssl #возобновлять сеанс SSL/TLS, начатый в канале управления, при открытии канала данных.
• параметры WARC:
--no-warc-compression #не сжимать файлы WARC с помощью GZIP;
--no-warc-digests #не вычислять дайджесты SHA1;
--no-warc-keep-log #не сохранять файл журнала в записи WARC;
--warc-cdx #записать индексные файлы CDX;
--warc-dedup=ФАЙЛ #не сохранять записи, перечисленные в файле CDX;
--warc-file=ФАЙЛ #записать данные запроса/ответа в файл .warc.gz;
--warc-header=СТРОКА #вставить СТРОКУ в запись warcinfo;
--warc-max-size=ЧИСЛО #максимальный размер файлов WARC равен ЧИСЛУ;
--warc-tempdir=КАТАЛОГ #расположение для временных файлов, создаваемых процедурой записи WARC.
• рекурсивная загрузка:
-k #делать ссылки локальными в загруженном HTML или CSS (для работы в автономном режиме);
-K #перед преобразованием файла X делать резервную копию в виде X.orig;
-l ЧИСЛО #глубина рекурсии (inf|0 — бесконечность, по умолчанию — 5);
-m #короткий параметр, эквивалентный -N -r -l inf --no-remove-listing;
-p #загрузить все изображения и проч., необходимые для отображения HTML-страницы;
-r #включение рекурсивной загрузки;
--backups=N #перед записью файла X, ротировать до N резервных файлов;
--convert-file-only #преобразовывать только файловую часть URL (базовую часть имени);
--delete-after #удалять локальные файлы после загрузки;
--strict-comments #включить строгую (SGML) обработку комментариев HTML.
• разрешения/запреты при рекурсии:
-A СПИСОК #список разрешённых расширений через запятую;
-D СПИСОК #список разрешённых доменов, через запятую;
-H #заходить на чужие узлы при рекурсии;
-I СПИСОК #список разрешённых каталогов;
-L #следовать только по относительным ссылкам;
-np #не подниматься в родительский каталог;
-R СПИСОК #список запрещённых расширений, разделённых запятыми;
-X #СПИСОК #список исключаемых каталогов;
--accept-regex=РЕГВЫР #регулярное выражение для разрешённых URL;
--exclude-domains=СПИСОК #список запрещённых доменов, через запятую;
--follow-ftp #следовать по ссылкам FTP в HTML-документах;
--follow-tags=СПИСОК #список используемых тегов HTML, через запятую;
--ignore-tags=СПИСОК #список игнорируемых тегов HTML, через запятую;
--regex-type=ТИП #тип регулярного выражения (posix|pcre);
--reject-regex=РЕГВЫР #регулярное выражение для запрещённых URL;
--trust-server-names #использовать имя, указанное в перенаправляющем URL, в качестве последнего компонента.
---------------------------------------------------------------------------------# (curl) осуществляет передачу данных используя URL-синтаксис:
curl http://example.com #получить содержание главной страницы;
curl -u username:password -O ftp://example.com/file.zip #скачать file.zip с FTP;
curl -u username:password -T file.zip ftp://example.com/ #закачать file.zip по FTP.
• опции программы:
-F #передача файла;
-H 'Host: google.ru' #передача своего заголовка (подменить домен);
-l #запрос http-заголовков;
-L #следовать по редиректам (если такие есть);
-o file #перенаправить вывод в файл;
-O #скачать файл;
-T file #передать файл;
-u username:password #ввод логин:пароль;
-x proxy.com:3128 #использовать прокси при запросе;
-X #запрос (POST,PUT);
--cookie "login=proft" #установить кукис;
--cookie cookies.txt #использовать кукис из файла;
--cookie-jar cookies.txt #сохранить кукис в файл;
--data #передаваемые данные;
--request #запрос (POST, PUT).
• особенности:
- поддерживамые протоколы:
DICT|FILE|FTP|FTPS|Gopher|HTTP|HTTPS|IMAP|IMAPS|LDAP|LDAPS|POP3|POP3S|RTMP|RTSP|SCP|SFTP|SMTP|SMTPS|Telnet|TFTP.
==================================================================================
# ADM [net] - FIREWALL:
---------------------------------------------------------------------------------# (iptables) настройка в Fedora:
• установка:
dnf -y install iptables-services iptables-utils #установка iptables.
• настройка:
systemctl disable --now firewalld.service #отключение firewalld;
systemctl mask firewalld.service #перенаправление firewalld в /dev/null;
systemctl enable --now iptables.service #включение iptables;
systemctl enable --now ip6tables.service #включение ip6tables.
• файлы и директории:
/etc/sysconfig/iptables #правила iptables;
/etc/sysconfig/iptables-config #настройки iptables;
/etc/sysconfig/ip6tables #правила ip6tables;
/etc/sysconfig/ip6tables-config #настройки ip6tables.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [pm] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# ADM [pm] - RHEL-ПОДОБНЫЕ ДИСТРИБУТИВЫ:
---------------------------------------------------------------------------------# (dnf|yum) пакетный менеджер RHEL систем [установка из репозиториев]:
dnf config-manager #управлять параметрами конфигурации и репозиториями dnf;
dnf shell #запустить интерактивную командную оболочку DNF;
dnf list installed #вывод списка всех установленных пакетов;
dnf list available #вывод списка всех доступных пакетов;
dnf search pkg #поиск пакета pkg;
dnf info pkg #отобразить информацию о пакете pkg;
dnf -y install pkg1 pkg2 .. #установка пакетов с автоподтверждением;
dnf reinstall pkg #переустановка пакета pkg;
dnf debug-dump #вывести информацию об установленных rpm-пакетах в файл;
dnf repograph #вывести полную диаграмму зависимостей пакета в точечном формате;
dnf repomanage #управление каталогом пакетов rpm;
dnf remove pkg #удалить пакет pkg из системы;
dnf check #поиск проблем в packagedb;
dnf check-update #проверить доступные обновления для пакетов;
dnf distro-sync #обновить установленные пакеты до последних имеющихся версий;
dnf upgade #обновить установленные пакеты;
dnf autoremove #удалить все ненужные пакеты, установленные по зависимостям;
dnf clean all #удалить все кэшированные данные.
• репозитории - установка:
dnf install rpmfusion.rpm #установить репозиторий RPMFusion;
rm -rf /etc/yum.repos.d/rpmfusion.repo #удалить репозиторий RPMFusion.
• репозитории - управление:
dnf repolist #отобразить настроенные репозитории;
dnf repolist all #вывод списка всех репозиториев;
dnf repository-packages rname list --all #вывод списка пакетов репозитория;
dnf repository-packages rname list --available #список доступных пакетов;
dnf repository-packages rname list --installed #список установленных пакетов;
dnf config-manager --add-repo=https://... #добавить новый репозиторий;
dnf config-manager --set-enabled rname #включить репозиторий;
dnf config-manager --set-disabled rname #отключить репозиторий;
dnf --enablerepo=rname install prg #использовать только заданный репозиторий;
dnf --disablerepo=rname install prg #не использовать заданный репозиторий.
• опции программы:
-4 #разрешение только в адреса IPv4;
-6 #разрешение только в адреса IPv6;
-b #попытаться использовать наиболее подходящие версии пакетов в транзакциях;
-c CFG #расположение файла конфигурации;
-C #брать полностью из системного кэша, не обновлять его;
-d N #уровень отладочных сообщений;
-e N #уровень сообщений об ошибках;
-q #работать без вывода сообщений;
-R MIN #максимальное время ожидания команды;
-v #подробно описывать действия;
-x PACKAGE #исключить пакеты по имени или маске;
-y #автоматически отвечать утвердительно на все вопросы;
--advisories ADVISORY #включить в обновления пакеты, необходимые для исправлений в связи с данной рекомендацией;
--advisory ADVISORY #включить в обновления пакеты, необходимые для исправлений в связи с данной рекомендацией;
--allowerasing #разрешить удаление установленных пакетов для разрешения зависимостей;
--assumeno #автоматически отвечать отрицательно на все вопросы;
--bugfix #включить в обновления пакеты для исправлений ошибок;
--bz BUGZILLA #включать в обноления пакеты, требуемые для исправления данной ошибки из багзиллы;
--bzs BUGZILLA #включать в обноления пакеты, требуемые для исправления данной ошибки из багзиллы;
--color COLOR #использовать ли цветовые схемы;
--comment COMMENT #добавить к транзакции комментарий;
--cve CVES #включать в обновления пакеты, требуемые для исправления данной уязвимости CVE;
--cves CVES #включать в обновления пакеты, требуемые для исправления данной уязвимости CVES;
--debugsolver #сохраняет подробные результаты в файлах;
--destdir DESTDIR #задать каталог для копирования в него пакетов;
--downloaddir DESTDIR #задать каталог для копирования в него пакетов;
--disableexcludes REPO #отключить excludepkgs;
--disableexcludepkgs REPO #отключить excludepkgs;
--disableplugin PLUGIN #отключить модули по названию;
--disablerepo REPO #Отключить дополнительные репозитории (параметр списка|поддерживает маски, может быть задан несколько раз);
--disable #отключить репозитории командой config-manager (сохранение автоматическое);
--downloadonly #только загрузить пакеты;
--enableplugin PLUGIN #включить модули по названию;
--enablerepo REPO #включить дополнительные репозитории (параметр списка|поддерживает маски, может быть задан несколько раз);
--enable #подключить репозитории командой config-manager (сохранение автоматическое);
--enhancement #включить в обновления пакеты, связанные с улучшениями;
--forcearch ARCH #принудительно использовать архитектуру;
--installroot PATH #настройка корневого каталога установки;
--newpackage #включить в обновления пакеты, связанные с newpackage;
--noautoremove #запретить удаление зависимостей, которые больше не используются;
--nobest #не ограничивать транзакцию наилучшим кандидатом;
--nodocs #не устанавливать документацию;
--nogpgcheck #отключить проверку подписи gpg (если позволяет политика RPM);
--noplugins #отключить все модули;
--obsoletes #включает устаревшую логику обработки dnf для обновления или отображения возможностей, которые пакет замещает, для info|list|repoquery;
--refresh #установить метаданные как истекшие перед запуском команды;
--releasever RELEASEVER #заместить значение $releasever в файлах конфигурации и репозиториев;
--repofrompath [REPO|PATH] #метка и путь к дополнительному репозиторию (такой же путь, что и в baseurl), можно указывать несколько раз;
--repo REPO #включить только определенные репозитории по идентификатору или маске, можно задать несколько раз;
--repoid REPO #включить только определенные репозитории по идентификатору или маске, можно задать несколько раз;
--rpmverbosity [DEBUG|LEVEL|NAME] #уровень отладочных сообщений для rpm;
--sec-severity {CRITICAL|IMPORTANT|MODERATE|LOW} #включать в обновления пакеты, связанные с безопасностью, с указанным уровнем опасности;
--secseverity {CRITICAL|IMPORTANT|MODERATE|LOW} #включать в обновления пакеты, связанные с безопасностью, с указанным уровнем опасности;
--security #включить в обновления пакеты, связанные с безопасностью;
--setopt SETOPTS #установить произвольные настройки и параметры репозиториев;
--showduplicates #показывать повторяющиеся в репозиториях пакеты для команд list/search;
--skip-broken #разрешить проблемы зависимостей, пропустив пакеты;
--version #показать версию DNF и завершить работу.
• список основных команд:
alias #перечислить или создать псевдонимы команд;
autoremove #удалить все ненужные пакеты, первоначально установленные по зависимостям;
check-update #проверить доступные обновления для пакетов;
check #поиск проблем в packagedb;
clean #удалить кэшированные данные:
all #удаление всех метаданных.
deplist [устарело, использовать repoquery] #показывать список зависимостей пакета и какие пакеты их предоставляют;
distro-sync #обновить установленные пакеты до последних имеющихся версий;
downgrade #откат к предыдущей версии пакета;
group #показать или использовать информацию о группах:
install #установка всех пакетов из группы с заданным именем;
list #вывод имен всех существующих групп пакетов;
remove #удаление всех пакетов из группы с заданным именем;
update #обновление всех пакетов из группы с заданным именем.
help #отобразить подсказку по использованию;
history #отобразить (или использовать) историю транзакций;
info #отобразить информацию о пакете или группе пакетов;
install #установка пакета(ов) в систему;
list #вывести список пакетов или групп пакетов:
installed #вывод списка всех установленных пакетов;
available #вывод списка всех доступных пакетов.
makecache #создание кэша метаданных;
mark #отметить или снять отметку пользовательской установки с установленных пакетов;
module #взаимодействие с MODULES;
provides #найти пакет по заданному значению;
reinstall #переустановка пакета;
remove #удалить пакет или пакеты из системы;
repolist #отобразить настроенные репозитории ПО:
all #вывод списка всех репозиториев.
repoquery #поиск пакетов по ключевому слову;
repository-packages #выполнить команды над всеми пакетами заданного репозитория;
search #поиск информации о пакете по заданной строке;
shell #запустить интерактивную командную оболочку DNF;
swap #запустите интерактивный DNF для удаления и установки одной спецификации;
updateinfo #показать рекомендации к пакетам;
upgrade #обновить пакет или пакеты в системе;
upgrade-minimal #обновление, но только «новейших» пакетов, которые исправляют проблему в вашей системе.
• список команд подключаемых модулей:
?
builddep #Install build dependencies for package or spec file;
changelog #показывать данные журнала изменений для пакетов;
config-manager #управлять параметрами конфигурации и репозиториями dnf;
copr #взаимодействие с репозиториями Copr;
debug-dump #вывести информацию об установленных rpm-пакетах в файл;
debuginfo-install #установить пакеты debuginfo;
debug-restore #восстановить пакеты, записанные в файл debug-dump;
download #загрузить пакет в текущий каталог;
groups-manager #создать и редактировать файл метаданных групп;
needs-restarting #определить обновленные двоичные файлы, требующие перезапуска;
offline-distrosync #подготовить автономную синхронизацию дистрибутива системы;
offline-upgrade #подготовить автономное обновление системы;
playground #взаимодействие с репозиторием Playground;
repoclosure #показать список неразрешенных зависимостей для репозиториев;
repodiff #показать список различий двух наборов репозиториев;
repograph #вывести полную диаграмму зависимостей пакета в точечном формате;
repomanage #управление каталогом пакетов rpm;
reposync #загрузить все пакеты из удаленного репозитория;
system-upgrade #подготовка системы к обновлению до новой версии.
---------------------------------------------------------------------------------# отключение автоматического обновления системы в fedora:
systemctl disable --now dnf-makecache.timer
systemctl disable --now dnf-makecache.service
systemctl disable --now dnf-system-upgrade-cleanup.service
systemctl disable --now dnf-system-upgrade.service
gsettings set org.gnome.software download-updates false
---------------------------------------------------------------------------------# (rpm) установка локальных пакетов без подтягивания зависимостей (RHEL):
rpm -qa #вывод списка всех установленных пакетов ОС;
rpm -qa | egrep ^kmod- #вывод установленных пакетов обновлений ОС;
rpm -q pkg.rpm #вывод имени и версии пакета;
rpm -qi pkg.rpm #вывод информации о пакете;
rpm -qa pkg.rpm #все установленные пакеты содержащие package;
rpm --checksig pkg.rpm #проверка подписи пакета;
rpm -qf filename #вывод пакета содержащего filenames;
rpm -ivhU pkg.rpm #установка с прогрессбаром и выводом информации;
rpm -e pkg.rpm #удаление установленной программы.
• опции программы:
-a #запросить/проверить все пакеты;
•
•
•
•
•
-f #запросить/проверить пакет, которому принадлежит файл;
-g #запросить/проверить пакеты в группе;
-K #проверка подписи и дайджеста пакета(ов);
-p #запросить/проверить файл пакета;
-q #вывод информации о наличии пакета (установлен или нет);
-qf #вывод информации о принадлежности файла;
-qi #вывод подробной информации о пакете;
-ql #список файлов пакета;
-V #проверка пакетов;
--hdrid #запросить/проверить пакет(ы), по идентификатору заголовка;
--pkgid #запросить/проверить пакет(ы) по идентификатору пакета;
--triggeredby #запросить пакеты с триггер-сценариями на пакет;
--whatconflicts #найти/проверить пакеты, требующие сервис;
--whatprovides #найти/проверить пакеты, предоставляющие сервис;
--whatrequires #найти/проверить пакеты, требующие сервис.
фильтрующие опции:
-c #вывести только конфигурационные файлы (подразумевает -l);
-d #вывести только файлы документации (подразумевает -l);
-L #вывести только файлы лицензий (подразумевает -l).
параметры запроса (с -q или --query):
-l #показать список файлов пакета;
-s #показать состояние перечисленных файлов;
--dump #показать основную информацию о файле;
--queryformat=QUERYFORMAT #используйте следующий формат запроса.
параметры проверки (с -V или --verify):
--nodeps #не проверять зависимости пакета;
--nofiles #не проверять файлы пакета;
--noscript #не исполнять сценарий(и) проверки.
параметры установки|обновления|удаления:
-e #удалить (деинсталлировать) пакет;
-F #обновить пакет(ы) если уже установлен;
-h #прогрессбар (хорошо с -v);
-i #установить пакет(ы);
-U #обновить пакет(ы);
--allfiles #устанавливать все файлы, даже конфигурационные, которые могли бы быть пропущены;
--allmatches #удалить все пакеты, совпадающие с <пакет> (обычно, если <пакет> соответствует нескольким пакетам, генерируется ошибка);
--badreloc #relocate files in non-relocatable package;
--excludedocs #не устанавливать документацию;
--excludepath=PATH #пропустить файлы в пути PATH;
--force #сокращение для --replacepkgs --replacefiles;
--ignorearch #не проверять архитектуру пакета;
--ignoreos #не проверять операционную систему пакета;
--ignoresize #не проверять дисковое пространство перед установкой;
--justdb #обновить базу данных, но не модифицировать файловую систему;
--nocaps #не устанавливать капабилитис;
--nocontexts #не устанавливать контекст SELinux;
--nodeps #не проверять зависимости пакета;
--nofiledigest #не проверять дайджест пакета(ов);
--noorder #не менять порядок установки пакетов для удовлетворения зависимостей;
--noscripts #не исполнять никаких сценариев пакета(ов);
--notriggers #не исполнять триггер-сценариев, взведенных этим пакетом;
--noverify #сокращение для --ignorepayload --ignoresignature;
--oldpackage #откат на более старую версию пакета (--force при обновлении делает это автоматически);
--percent #выводить процент готовности по мере установки пакета;
--prefix=КАТАЛОГ #переместить пакет в КАТАЛОГ, если пакет это позволяет;
--reinstall=ФАЙЛ ПАКЕТА #заново установить пакет(ы);
--relocate=OLD=NEW #переместить файлы из пути OLD в NEW;
--replacefiles #заменять старые файлы на новые без предупреждений.
--replacepkgs #переустановить, если пакет уже установлен;
--test #не устанавливать, а только сообщить, удастся ли установка.
общие параметры для всех режимов и компонентов rpm:
-D MACRO EXPR #определить MACRO со значением EXPR;
-E EXPR #вывести значение макроса EXPR;
-r ROOT #использовать ROOT как корневой каталог (default: "/");
-v #выводить более детальные сообщения;
--dbpath=DIRECTORY #use database in DIRECTORY;
--load=FILE #load a single macro file;
--macros=FILE #использовать FILE вместо файла(ов) по умолчанию;
--nodigest #не проверять дайджест пакета(ов);
--noplugins #не задействовать плагин;
--nosignature #не проверять подпись(и) в пакете(ах);
--querytags #отобразить известные ключи запроса;
--quiet #выводить минимум сообщений;
--rcfile=FILE #использовать FILE вместо файла(ов) по умолчанию;
--showrc #показать текущее значение rpmrc и макросов;
--target=CPU-VENDOR-OS #задать специфичную платформу;
--undefine=MACRO #undefine MACRO;
--version #вывести номер версии этой прграммы.
---------------------------------------------------------------------------------# установка локальных пакетов с подтягиванием необходимых зависимостей:
dnf --nogpgcheck install pkg.rpm #установка со всеми зависимостями:
--nogpgcheck #отключение проверки ключа GPG.
==================================================================================
# ADM [pm] - DEBIAN-ПОДОБНЫЕ ДИСТРИБУТИВЫ:
---------------------------------------------------------------------------------# (apt-get|aptitude) пакетный менеджер debian систем (из репозиториев):
apt-cache depends progname #список зависимостей пакета;
apt-cache pkgnames #вывод списка всех доступных пакетов;
apt-cache rdepends progname #список обратных зависимостей (кому пакет нужен);
apt-cache search progname #поиск пакета и вывод результата с описанием;
apt-cache show progname #вывод подробной информации о пакете;
apt-cache showpkg progname #вывод общей информации о пакете;
apt-cache stats #вывод статистики кэша;
apt-get autoclean #автоматическая очистка кэша (/var/cache/apt/archives);
apt-get autoremove progname #удаление пакета со всеми зависимостями;
apt-get changelog progname #вывод журнала изменений и версии пакета;
apt-get check #анализ кэша пакетов на предмет сломанных зависимостей;
apt-get clean #очистка локального репозитория;
apt-get dist-upgrade #обновление системы;
apt-get download progname #загрузить пакет без установки;
apt-get install progname #установка пакета;
apt-get install progname --no-upgrade #установка пакета без обновления;
apt-get install progname --only-upgrade #обновление пакета без установки;
apt-get install progname=progversion #установка определенной версии пакета;
apt-get install progname --reinstall #переустановка/обновление пакета;
apt-get install --reinstall programm #переустановка программы;
apt-get purge #выполняется вслед за remove для очистки системы от мусора;
apt-get remove progname #удаление программы;
apt-get remove progname --purge #удаление мусора/путей/следов программы;
apt-get update #обновление репозиториев;
apt-get upgrade #обновление программ с выводом списка.
• опции программы:
-y предполагается ответ Yes на все вопросы, сами вопросы не выводить;
-f продолжать, даже если проверка целостности не удачна;
-u выводить список обновленных пакетов.
---------------------------------------------------------------------------------# (dpkg) установка локальных пакетов без подтягивания зависимостей (debian):
dpkg -l #список установленных программ;
dpkg -L package #список файлов пакета;
dpkg --get-selections #просмотр списка установленных программ;
dpkg -i progname #установка *.deb-пакета (при условии что удовлетворены все зависимости);
dpkg -r progname #удаление *.deb-пакета.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [print] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# ADM [print] - АДМИНИСТРИРОВАНИЕ CUPS:
---------------------------------------------------------------------------------# (lpasswd) задание пароля администратора сервера печати CUPS:
lpasswd -i uname #изменение пароля пользователя username в CUPS.
• опции программы:
-F file #задать file с паролем;
-f file #задать file с хэшем пароля;
-g gname #задать имя группы;
-i #интерактивный режим;
-P password #задать пароль;
-p encrypted #задать хэш шифрованного пароля.
---------------------------------------------------------------------------------# (lpinfo) вывод информации о доступных принтерах и драйверах:
lpinfo -l #отображение доступных устройств принтеров и драйверов.
• опции программы:
-E #использовать шифрование при соединении с сервером печати;
-h srv[:port] #задать имя хоста:порт для соединения с сервером печати;
-l #вывод подробного листинга о принтерах и драйверах;
--device-id device-id-string #задать ID принтера стандарта IEEE-1284;
--exclude-schemes schemes-list #задать список устройств или схем PPD;
--include-schemes schemes-list #задать список устройств или схем PPD;
--language locale #задать локаль языка {-m};
--make-and-model name #задать изготовителя и модель {-m};
--product name #задать название продукта {-m};
--timeout seconds #задать таймаут {-v}.
---------------------------------------------------------------------------------# (lpadmin) администрирование CUPS:
lpadmin -p myprinter -E -v ipp://myprinter.local/ipp/print -m evetywhere
• опции программы:
-c class #задать класс (если не задавать, то будет создан автоматически);
-i ppd-file #задать ppd-файл;
-P ppd-file #задать ppd-файл;
-m model #задать модель принтера (использовать {-v lpinfo});
-o cupsIPPSupplies=true|false #задать поддержку IPP;
-o cupsSNMPSupplies=true|false #задать поддержку SNMP;
-o job-k-limit=value #квота объема в килобайтах на пользователя;
-o job-page-limit=value #квота количества страниц на пользователя;
-o job-quota-period=value #квота по времени в секундах на пользователя;
-o job-sheets-default=banner #задать банеры по умолчанию;
-o job-sheets-default=banner,banner #задать банеры по умолчанию;
-o name=value #задать PPD опции;
-o name-default=value #задать опции по умолчанию;
-o port-monitor=name #задать настройки мониторинга [none|bcp|tbcp];
-o printer-error-policy=name #задать настройки политики ошибок:
[abort-job|retry-job|retry-current-job|stop-printer];
-o printer-is-shared=true|false #расшарить принтер или нет;
-o printer-of-policy=name #задать имя политики IPP по умолчанию;
-R name-default #удалить опции для принтера;
-r class #удалить класс принтера;
-u allow:{user|@group}{,user|,@group}* #задать разрешенных пользователей;
-u deny:{user|@group}{,user|,@group}* #задать запрещенных пользователей;
-u allow:all #задать разрешенных пользователей;
-u deny:none #задать запрещенных пользователей;
-v "device-uri" #задать device-uri (использовать {-v lpinfo});
-D "info" #задать описание принтера;
-E #принять настройки и запустить сервер печати (cupsaccept|cupsenable);
-L "location" #задать локацию принтера.
---------------------------------------------------------------------------------# (lpoptions) управление принтерами:
lpoptions -E -h host:port -l #запрос опций принтера;
lpoptions -E -h host:port -d pname #установка pname принтером по умолчанию.
• опции программы:
-E #использовать шифрование при соединении с сервером печати;
-d dst[/inst] #задать принтер и класс принтером по умолчанию;
-h srv[:port] #задать имя хоста:порт для соединения с сервером печати;
-l #вывод списка принтеров и их опций;
-o option[=value] #задать новую опцию;
-p dst[/inst] #???
-r option #удалить заданную опцию;
-x dst[/inst] #удалить настройки принтера и класса по умолчанию.
==================================================================================
# ADM [print] - ВЫВОД ДОКУМЕНТОВ НА ПЕЧАТЬ И УПРАВЛЕНИЕ ОЧЕРЕДЯМИ:
---------------------------------------------------------------------------------# (lpc) проверка статуса принтеров:
lpc status #запрос состояния принтера по умолчанию.
• опции программы:
queue #задать класс опрашиваемых принтеров или имя принтера.
---------------------------------------------------------------------------------# (lp) печать документов:
lp -E -U uname -h host:port -P 4-10 filename #печать файла;
lp -d Canon-IP3600-series -n 10 -q 100 -o scaling=99 -o colormodel=rgb -o resolution=600 -o media=A4.bl -o mediatype=otherphoto -o cnextension=0 -o inputslot=asf -o
position=center -o page-left=0 -o page-right=0 -o page-top=0 -o page-bottom=0 picture.jpg;
lp -d Canon-IP3600-series -n 1 -q 100 -o scaling=100 -o colormodel=rgb -o resolution=600 -o media=4x6.bl -o mediatype=otherphoto -o cnextension=2 -o inputslot=asf -o
position=center -o page-left=0 -o page-right=0 -o page-top=0 -o page-bottom=0 picture.jpg.
• опции программы:
-E #использовать шифрование при соединении с сервером печати;
-H hh:mm #
-P page-list #задать страницы для печати ("1,3-5,85");
-U uname #задать имя пользователя для соединения с сервером печати;
-d pname #задать имя принтера;
-h hname[:port] #задать имя хоста:порт для соединения с сервером печати;
-m #отправить сообщение на почту при удачном завершении печати;
-n num #задать количество печатаемых копий документа;
-o name=value [..name=value] #задать одну или более опций:
cnextension=[0..3] #растягивание картинки;
collate=true #????
colormodel=val #цветовая модель (rgb);
fit-to-page #????
inputslot=val #источник бумаги (asf: задний лоток|cassette: нижний лоток);
job-hold-until=when #задать время печати:
[day-time|night|second-shift|third-shift|weekend];
job-hold-until=hh:mm #задать время печати (22:22);
job-priority=priority #задать приоритет печати от 1 до 100;
job-sheets=name #печатать баннера:
job-sheets=start-name,end-name #печатать баннера;
[classified|confidential|secret|standard|topsecret|unclassified];
media=val #задать формат листа (bl - печать без полей):
[a4|letter|legal|bl];
mediatype=val #тип бумаги (otherphoto|glossypaper);
mirror #зеркальная печать;????
number-up={2|4|6|9|16} #????
number-up-layout=layout #????
[btlr|btrl|lrbt|lrtb|rlbt|rltb|tblr|tbrl], где:
bt [bottom-to-top];
lr [left-to-right];
rl [right-to-left];
tb [top-to-bottom];
orientation-requested=4 #горизонтальная печать:
[поворот на 90 градусов против часовой стрелки];
orientation-requested=5 #горизонтальная печать:
[поворот на 90 градусов по часовой стрелке];
orientation-requested=6 #вертикальная печать:
[поворот на 180 градусов];
outputorder=reverse #реверсивная печать;????
page-[left|right|top|bottom]=num #отступы слева, справа, сверху и снизу;
page-border=border #печать границы на каждой странице документа:
[double|double-thick|single|single-thick];
page-ranges=page-list #задать страницы для печати ("1,3-5,85");
position=val #позиция документа на листе (center);
resolution=num #разрешение печати в dpi;
scaling=num #масштабирование [%];
sides=one-sided #односторонняя печать;
sides=two-sided-long-edge #двусторонняя вертикальная печать;
sides=two-sided-short-edge #двусторонняя горизонтальная печать.
-q num #задать приоритет печати от 1 до 100 (по умолчанию 50);
-s #не выводить отчет о печати (тихий режим);
-t "name" #задать имя задания.
---------------------------------------------------------------------------------# (lpr) печать документов:
lpr -E -U uname -h host:port -P pname file #печать файла.
• опции программы:
-E #использовать шифрование при соединении с сервером печати;
-H hname[:port] #задать имя хоста:порт для соединения с сервером печати;
-C "name" #задать заголовок;
-J "name" #задать заголовок;
-T "name" #задать заголовок;
-P dst[/inst] #задать имя принтера и класс;
-U uname #задать имя пользователя;
-# copies #задать количество печатаемых копий документа;
-h #отключить печать баннера;
-l #отправить задание без применения фильтров (эквивалент {-o raw});
-m #отправить сообщение на почту при удачном завершении печати;
-o name=value [..name=value] #задать одну или более опций;
-p #печатать заголовок на каждой странице (эквивалент {-o prettyprint});
-q #проводить работу для печати;????
-r #удалить информацию после удачного завершения печати.
• расширенные опции для {-o}:
-z #см. lp.
---------------------------------------------------------------------------------# (lpq) запрос очереди печати:
lpq -E -U uname -h host:port -al -P pname #запрос очереди печати.
• опции программы:
-E #использовать шифрование при соединении с сервером печати;
-P dst[/inst] #задать имя принтера и класс;
-U uname #задать имя пользователя;
-a #вывод отчетов для всех принтеров;
-h srv[:port] #задать имя хоста:порт для соединения с сервером печати;
-l #вывод подробного отчета.
---------------------------------------------------------------------------------# (lpstat) вывод статуса заданий, классов и принтеров:
lpstat -E -U uname -h host:port -HRtl pname #отображение статуса для pname.
• опции программы:
-E #использовать шифрование при соединении с сервером печати;
-H #вывод имени хост:порт;
-R #вывод рейтинга заданий печати;
-U uname #задать имя пользователя;
-W wich-jobs #задать интересующий статус заданий на печать:
[completed|not-completed];
-a [printer(s)] #задать интересующий принтер (иначе все доступные);
-c [class(es)] #задать интересующий класс (иначе все доступные);
-d #вывод текущего принтера по умолчанию;
-e #вывод всех доступных получателей для локального хоста;
-h srv[:port] #задать имя хоста:порт для соединения с сервером печати;
-l #вывод подробного листинга принтеров и классов;
-o [dst(s)] #задать интересующий принтер (иначе все доступные);
-p [printer(s)] #задать интересующий принтер (иначе все доступные);
-r #вывод информации о сервере печати CUPS;
-s #вывод суммарной информации (эквивалент {-dcv});
-t #вывод полной информации (эквивалент {-rdcvapo});
-u [user(s)] #задать интересующего пользователя (иначе все доступные);
-v [printer(s)] #задать интересующий принтер (иначе все доступные).
---------------------------------------------------------------------------------# (lprm) удаление заданий на печать:
lprm -E -U uname -h host:port JID #задать JID для удаления задания на печать;
lprm - #удаление всех заданий на печать.
• опции программы:
-E #использовать шифрование при соединении с сервером печати;
-P dst[/inst] #задать имя принтера и класс;
-U uname #задать имя пользователя;
-h srv[:port] #задать имя хоста:порт для соединения с сервером печати.
---------------------------------------------------------------------------------# (cancel) удаление заданий на печать:
cancel -E -U uname -h host:port -u uname -a #удалить все задания на печать.
• опции программы:
-E #использовать шифрование при соединении с сервером печати;
-U uname #задать имя пользователя для соединения с сервером печати;
-a #отменить все задания на печать для всех принтеров;
-h srv[:port] #задать имя хоста:порт для соединения с сервером печати;
-u uname #задать имя пользователя, чьи задания необходимо отменить;
-x #удалить файл данных заданий на печать.
---------------------------------------------------------------------------------# (cupsreject) запрет на постановку заданий в очередь:
cupsreject -E -U uname -h host:port -r "reason" pname #запретить печать.
• опции программы:
-E #использовать шифрование при соединении с сервером печати;
-U uname #задать имя пользователя;
-h srv[:port] #задать имя хоста:порт для соединения с сервером печати;
-r "reason" #сообщение о запрете постановки заданий в очередь.
---------------------------------------------------------------------------------# (cupsaccept) разрешение на постановку заданий в очередь:
cupsaccept -E -U uname -h host:port pname #разрешить принимать задания.
• опции программы:
-E #использовать шифрование при соединении с сервером печати;
-U uname #задать имя пользователя;
-h srv[:port] #задать имя хоста:порт для соединения с сервером печати.
---------------------------------------------------------------------------------# (cupsdisable) остановка очереди на печать:
cupsdisable -E -U uname -c -h host:port -r "reason" --hold pname #остановка.
• опции программы:
-E #использовать шифрование при соединении с сервером печати;
-U uname #задать имя пользователя;
-c #отменить все задания;
-h srv[:port] #задать имя хоста:порт для соединения с сервером печати;
--hold #завершить все работы перед проведением обслуживания;
-r "reason" #сообщение о запрете постановки заданий в очередь.
---------------------------------------------------------------------------------# (cupsanable) запуск очереди на печать:
cupsanable -E -U uname -c -h host:port --release pname #запуск очереди.
• опции программы:
-E #использовать шифрование при соединении с сервером печати;
-U uname #задать имя пользователя;
-c #отменить все задания;
-h srv[:port] #задать имя хоста:порт для соединения с сервером печати;
--release #запуск очереди (использовать после cupsdisable --hold).
==================================================================================
# администрирование CUPS:
lpasswd -i uname #изменение пароля пользователя username в CUPS.
lpinfo -l #отображение доступных устройств принтеров и драйверов.
lpadmin -p myprinter -E -v ipp://myprinter.local/ipp/print -m evetywhere #CUPS;
lpoptions -E -h host:port -l #запрос опций принтера;
lpoptions -E -h host:port -d pname #установка pname принтером по умолчанию.
lpc status queue #запрос состояния заданного класса принтеров.
lp -E -U uname -h host:port -P 4-10 filename #печать файла.
lpr -E -U uname -h host:port -P pname file #печать файла.
lpq -E -U uname -h host:port -al -P pname #запрос очереди печати.
lpstat -E -U uname -h host:port -HRtl pname #отображение статуса для pname.
lprm -E -U uname -h host:port JID #задать JID для удаления задания на печать;
lprm - #удаление всех заданий на печать.
cancel -E -U uname -h host:port -u uname -a #удалить все задания на печать.
cupsreject -E -U uname -h host:port -r "reason" pname #запретить печать.
cupsaccept -E -U uname -h host:port pname #разрешить принимать задания.
cupsdisable -E -U uname -c -h host:port -r "reason" --hold pname #остановка.
cupsanable -E -U uname -c -h host:port --release pname #запуск очереди.
---------------------------------------------------------------------------------# практическое применение программ печати:
export PRINTER=hp4600 #задать принтер по-умолчанию;
lpr text #печать на принтер по-умолчанию;
lpr -P hp4500 #2 text #печать 2-х экземпляров на принтер hp4500;
lpr -o Duplex=DuplexNoTumble #печать двухсторонних страниц;
lpr -o PageSize=A4,Duplex=DuplexNoTumble #формат A4;
lpq #проверить очередь печати принтера по-умолчанию;
lpq -l -P hp4500 #очередь печати hp4500 с отладочной информацией;
lprm #удалить все задания на печать с принтера по-умолчанию;
lprm -P hp4500 3186 #удалить задание из очереди печати с номеров 3186;
lpc status #список всех доступных принтеров;
lpc status hp4500 #проверка доступности принтера и длины очереди печати.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [log] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# общая информация по системным журналам:
• устройство логирования:
/dev/log #симлинк на сокет логирования dev-log;
/run/systemd/journal/dev-log #сокет логирования.
• список системных журналов:
/var/log/* #основная директория логирования;
/var/log/anaconda/anaconda.log #журнал установки системы;
/var/log/audit/audit.log #журнал службы аудита (auditd);
/var/log/auth.log #журнал службы аудита и безопасности [программа su|ssh];
/var/log/boot.log #журнал загрузки системы;
/var/log/btmp #журнал аудита неудачных попыток входа в систему [программа lastb];
/var/log/cron #журнал службы crond;
/var/log/cups #журнал сервера печати CUPS;
/var/log/dmesg #события в буфере кольца ядра, связанные с драйверами устройств;
/var/log/dnf.log #журнал пакетного менеджера dnf (yum) для RHEL;
/var/log/dpkg.log #журнал управления программными пакетам;
/var/log/journal/* #главный системный журнал для RHEL;
/var/log/kern.log #журнал событий ядра Linux;
/var/log/lastlog #журнал крайних пользовательских входов в систему [программа lastlog];
/var/log/messages #журнал rsyslog;
/var/log/samba/ #журналы файлового сервера Samba;
/var/log/secure #журнал службы аудита и безопасности (устаревший, сей час auth.log) [программа su|ssh];
/var/log/sssd/sssd.log #журнал системного демона безопасности;
/var/log/syslog #коллекция всех журналов;
/var/log/tallylog #журнал аудита неудачных попыток входа в систему;
/var/log/wtmp #журнал аудита входов пользователей в систему [программа last];
/var/run/utmp #журнал залогиненых пользователей в текущий момент времени [программа who].
• программы работающие с системными журналами:
auditctl #журналирование и управление аудитом;
dmesg #журнал ядра;
journalctl #системный журнал;
rsyslog #системный журнал с функцией отправки логов на сервер;
syslogd #демон, отвечающий за перераспределение логов в соответствии с метаданными.
• виды алертов в системных журналах:
emerg #система неиспользуемая;
alert #действие должно быть произведено немедленно;
crit #условия критичности;
err #условия ошибок;
warn #условия предупреждений;
notice #обычные, но значимые условия;
info #информационный;
debug #отладочные сообщения.
• программы для отправки логов на сервер:
systemd-netlogd
rsyslog
---------------------------------------------------------------------------------# (auditctl) наблюдение за системными вызовами и контроль файлов ОС:
auditctl -a entry,always -S all -F pid=1005 #увидеть все системные вызовы, используемые определенным процессом;
auditctl -a exit,always -S open -F auid=510 #увидеть все файлы, открытые определенным пользователем;
auditctl -a exit,always -S open -F success!=0 #увидеть неудачные попытки вызова системной функции 'open'.
• опции программы:
-a СПИСОК,ДЕЙСТВИЕ #добавить правило с указанным действием к концу списка:
СПИСОК:
task #добавить правило к списку, отвечающему за процессы:
используется только во время создания процесса - когда родительский процесс вызывает fork() или clone();
при использовании этого списка вы можете использовать только те поля, которые известны во время создания процесса: uid|gid|..
entry #добавить правило к списку, отвечающему за точки входа системных вызовов:
применяется, когда необходимо создать событие для аудита, привязанное к точкам входа системных вызовов.
exit #добавить правило к списку, отвечающему за точки выхода из системных вызовов:
применяется, когда необходимо создать событие для аудита, привязанное к точкам выхода из системных вызовов.
user #добавить правило, отвечающего за список фильтрации пользовательских сообщений:
используется ядром, чтобы отфильтровать события приходящие из пользовательского пространства, перед тем как они будут переданы демону аудита;
необходимо отметить, что только следующие поля могут быть использованы: uid|auid|gid|pid;
все остальные поля будут обработаны, как если бы они не совпали.
exclude #добавить правило к списку, отвечающего за фильтрацию событий определенного типа:
используется, чтобы отфильтровывать ненужные события;
тип сообщения задается в поле msgtype.
ДЕЙСТВИЕ:
never #аудит не будет генерировать никаких записей:
может быть использовано для подавления генерации событий;
обычно необходимо подавлять генерацию в верху списка, а не внизу, т.к. событие инициируется на первом совпавшем правиле.
always #установить контекст аудита:
всегда заполнять его во время входа в системный вызов, и всегда генерировать запись во время выхода из системного вызова.
-A СПИСОК,ДЕЙСТВИЕ #добавить правило с указанным действием в начало списка;
-b N #установить максимальное количество доступных для аудита буферов, ожидающих обработки:
64 #значение в ядре по умолчанию;
если все буфера заняты, то флаг сбоя будет выставлен ядром для его дальнейшей обработки.
-d СПИСОК,ДЕЙСТВИЕ #удалить правило с указанным действием из списка:
правило удаляется только в том случае, если полностью совпали и имя системного вызова и поля сравнения.
-D #удалить все правила и точки наблюдения;
-e [0..2] #установить флаг блокировки:
0 #временно отключить аудит;
1 #включить аудит;
2 #защитить конфигурацию аудита от изменений:
можно поставить эту команду последней в audit.rules;
после этой команды все попытки изменить конфигурацию будут отвергнуты с уведомлением в журналах аудита;
чтобы задействовать новую конфигурацию аудита, необходимо перезагрузить систему аудита.
-f [0..2] #установить способ обработки для флага сбоя (обработка критических ошибок ядром):
0=silent #тихий режим;
1=printk #(по умолчанию);
2=panic #паника (для систем с повышенными требованиями к безопасности, значение 2 более предпочтительно);
флаг сбоя выставляется при следующих условиях:
ошибки передачи в пространство демона аудита;
превышение лимита буферов, ожидающих обработки;
выход за пределы памяти ядра;
превышение лимита скорости выдачи сообщений.
-F [n=v|n!=v|n<v|n>v|n<=v|n>=v|n&v|n&=v] #задать поле сравнения для правила:
атрибуты поля следующие:
объект;
операция;
значение.
возможно задать до 64 полей сравнения в одной команде;
каждое новое поле должно начинаться с -F;
аудит будет генерировать запись, если произошло совпадение по всем полями сравнения;
-h
-i
-k
-l
-m
-p
-r
-R
допустимо использование одного из следующих 8 операторов:
= #равно;
!= #не равно;
< #меньше;
> #больше;
<= #меньше либо равно;
>= #больше либо равно;
битовая маска (n&v) #просто выполняет операцию 'and';
битовая проверка (n&=v) #выполняет операцию 'and' над значениями и проверяет, равны ли они.
поля, оперирующие с идентификатором пользователя, могут также работать с именем пользователя - программа автоматически получит идентификатор пользователя из его имени;
то же самое можно сказать и про имя группы;
поля сравнения могут быть заданы для следующих объектов:
a0|a1|a2|a3 #четыре первых аргумента, переданных системному вызову (использовать только цифровые значения):
arch [$(uname -m)|b32|b64] #архитектура процессора, на котором выполняется системный вызов;
auid #идентификатор пользователя, использованный для входа в систему;
devmajor #главный номер устройства (Device Major Number);
devminor #вспомогательный номер устройства (Device Minor Number);
egid #действительный идентификатор группы;
euid #действительный идентификатор пользователя;
exit #значение, возвращаемое системным вызовом при выходе;
fsgid #идентификатор группы, применяемый к файловой системе;
fsuid #идентификатор пользователя, применяемый к файловой системе;
gid #идентификатор группы;
inode #номер inode;
key #альтернативный способ установить ключ фильтрации (см. {-k});
msgtype #используется для проверки совпадения с числом, описывающим тип сообщения [только для списка exclude].
obj_user #имя пользователя-владельца ресурса (в контексте SELinux);
obj_role #роль ресурса (в контексте SELinux);
obj_type #тип ресурса (в контексте SELinux);
obj_lev_low #нижний уровень ресурса (в контексте SELinux);
obj_lev_high #верхний уровень ресурса (в контексте SELinux);
path #полный путь к файлу для точки наблюдения (см. {-w}) [только для списка exit];
perm #фильтр прав доступа для файловых операций (см. {-p}) [только для списка exit];
pers #персональный номер операционной системы;
pid #идентификатор процесса;
ppid #идентификатор родительского процесса;
subj_user #имя пользователя-владельца процесса (в контексте SELinux);
subj_role #роль процесса (в контексте SELinux);
subj_type #тип процесса (в контексте SELinux);
subj_sen #чувствительность процесса (в контексте SELinux);
subj_clr #допуск процесса (в контексте SELinux);
sgid #установленный идентификатор группы;
success [0|1] #если значение, возвращаемое системным вызовом, больше либо равно 0, данный объект будет равен "true/yes", иначе "false/no":
0 = false = no;
1 = true = yes.
suid #установленный идентификатор пользователя;
uid #идентификатор пользователя.
#краткая помощь по аргументам командной строки;
#игнорировать ошибки при чтении правил из файла;
КЛЮЧ #установить на правило ключ фильтрации:
ключ фильтрации #это произвольная текстовая строка длиной не больше 31 символа;
ключ помогает уникально идентифицировать записи, генерируемые в хода аудита за точкой наблюдения.
#вывести список всех правил по одному правилу в строке;
ТЕКСТ #послать в систему аудита пользовательское сообщение (только из-под учетной записи root);
[R|W|X|A] #установить фильтр прав доступа для точки наблюдения:
r #чтение;
w #запись;
x #исполнение;
a #изменение атрибута;
N #установить количество выдаваемых сообщений в секунду:
0 #нет ограничения (по умолчанию);
если количество сообщений не нулевое и оно превышается в ходе аудита, флаг сбоя выставляется ядром для выполнения соответствующего действия.
FILE #читать правила из файла:
правила должны быть расположены по одному в строке и в том порядке, в каком они должны исполняться;
владельцем должен быть root;
правила, расположенные в файле, идентичны тем, что набираются в командной строке, без указания 'auditctl'.
-s #получить статус аудита;
-S [ИМЯ|НОМЕР СИСТЕМНОГО ВЫЗОВА|ALL] #задать используемый системный вызов:
если значения полей сравнения заданы, а системный вызов не указан, правило будет применяться ко всем системным вызовам;
в одном правиле может быть задано несколько системных вызовов, что положительно сказывается на производительности.
-w ПУТЬ #добавить точку наблюдения за файловым объектом, находящемуся по указанному пути:
добавлять точку наблюдения к каталогу верхнего уровня запрещено ядром;
групповые символы (wildcards) также не могут быть использованы, попытки их использования будут генерировать предупреждающее сообщение;
внутренне точки наблюдения реализованы как слежение за inode;
если установить точку наблюдения за каталогом, будут видны файловые события, которые в действительности будут означать обновления метаданных этой inode, и можно не
увидеть событий, непосредственно связанных с файлами;
если необходимо следить за всеми файлами в каталоге, рекомендуется создавать индивидуальную точку наблюдения для каждого файла;
в противоположность к правилам аудита системных вызовов, точки наблюдения не оказывают влияния на производительность, связанную с количеством правил посылаемых в ядро.
-W ПУТЬ #удалить точку наблюдения за файловым объектом, находящемуся по указанному пути.
• файлы и директории:
/etc/audit/audit.rules #конфигурационный файл;
/etc/audit/rules.d/*.rules #правила.
• особенности:
- сопутствующие утилиты #ausearch, aureport.
---------------------------------------------------------------------------------# (last) логирование входов в систему:
last #история входов/длительность сессий/start-stop-reboot системы.
• опции программы:
-a #вывод имени хоста;
-d #отрезолвить IP обратно в имя хоста;
-f file #использовать file отличный от /var/log/wtmp;
-F #полный вывод информации за все время;
-i #вывод IP удаленного хоста;
-number #задать количество выводимых строк;
-p time #вывод записей за заданную дату;
[YYYY-MM-DD hh:mm|now|yesterday|today|-{N}day]
-R #не выводить имя хоста;
-s #вывод записей после заданной даты;
-t #вывод записей до заданной даты;
--time-format format #задать формат выводимой даты:
[notime|short|full|iso]
-w #вывод полных имен;
-x #вывод информации о shutdown, reboot, runlevel.
• файлы и директории:
/var/log/wtmp
• timestamp:
YYYYMMDDhhmmss
YYYY-MM-DD hh:mm:ss
YYYY-MM-DD hh:mm
YYYY-MM-DD
hh:mm:ss
hh:mm
now
yesterday
today
tomorrow
+5min
-5days
---------------------------------------------------------------------------------# (lastb) логирование неудачных попыток входа в систему:
lastb #информация о неудачных попытках входа в систему.
• опции программы:
см. last.
• файлы и директории:
/var/log/btmp
---------------------------------------------------------------------------------# (lastlog) логирование крайних входов в систему:
lastlog #лог крайнего входа всех зарегистрированных пользователей.
• опции программы:
-b Nday #показать записи lastlog за последние N дней;
-C #очистить запись lastlog пользователя (только вместе с -u);
-R /path/to/dir #каталог, в который выполняется chroot;
-S #поставить в записи lastlog текущее время (только вместе с -u);
-t Nday #показать записи lastlog за последние N дней;
-u user #показать запись lastlog для учётной записи user.
---------------------------------------------------------------------------------# (dmesg) протоколирование ядра Linux:
dmesg --level=emerg,alert,crit,err,warn #задать фильтр приоритетов сообщений;
dmesg --level=notice,info,debug #задание фильтра приоритетов сообщений;
dmesg | grep -i usb #сообщения об оборудовании USB;
dmesg | grep -i isa #сообщения об оборудовании ISA;
dmesg | grep -i memory #сообщения касающиеся памяти;
dmesg | grep -i scsi #сообщения об оборудовании SCSI;
dmesg | grep -i tty #сообщения устройств tty;
dmesg | grep -i cpu #сообщения о процессоре;
dmesg | grep -i eth0 #сообщения сетевого оборудования.
• опции программы:
-H #человекочитаемый вывод;
-t #используется для удаления из вывода временных отметок;
-T #вывод меток времени;
-k #вывод сообщений пространства ядра;
-u #вывод сообщений пространства пользователя;
-c #очищает содержимое кольцевого буфера ядра после вывода;
-w #вывод сообщений в режиме реального времени;
-s размбуфера #размер буфера сообщений (по умолчанию 16392 байт);
-n level #приоритет при котором сообщения будут выводиться на консоль;
--level #задает приоритет сообщений.
alert #действие должно быть произведено немедленно;
crit #условия критичности;
debug #отладочные сообщения;
emerg #система неиспользуемая;
err #условия ошибок;
info #информационный;
notice #обычные, но значимые условия;
warn #условия предупреждений.
--facility #задает источник сообщений:
auth #сообщения безопасности/авторизации;
daemon #сообщения системных служб;
kern #сообщения ядра;
lpr #сообщения от подсистемы печати;
mail #сообщения почтовой системы;
news #сообщения подсистемы сетевых новостей;
syslog #сообщения системных журналов;
user #сообщения пространства пользователя.
• файлы и директории:
/proc/kmsg #буфер сообщений ядра.
---------------------------------------------------------------------------------# (journalctl) просмоторщик системных журналов:
journalctl -b 0 _PID=1 #вывод журнала запуска всех сервисов systemd;
journalctl -xeu name.service #вывод журнала сервиса name.service с пояснениями;
journalctl --list-boots #вывод журнала загрузок (список Boot-ID);
journalctl -b 0 #вывод сообщений с момента текущей загрузки (по умолчанию);
journalctl -b -1 #вывод сообщений с момента предыдущей загрузки;
journalctl /usr/lib/systemd/systemd #вывод для конкретного исполняемого файла:
systemd-coredump;
systemd-fsck;
systemd-logind;
..
journalctl -fl SYSLOG_FACILITY=10 #вывод сообщений auth.log online;
journalctl -S "2020-10-01 18:19:20" #вывод сообщений начиная с даты (и времени);
journalctl -U "2020-10-01 18:19:20" #вывод сообщений до даты (и времени);
journalctl -S "-6h20m" #вывод сообщений за последние 6 часов и 20 минут;
•
•
•
•
•
journalctl -f #вывод новых сообщений в режиме реального времени;
journalctl _PID=1 #вывод сообщений для конкретного процесса (systemd);
journalctl -eu netcfg #вывод сообщений для конкретного юнита;
journalctl -kg error #вывод ошибок из кольцевого буфера ядра;
использование - ЛОГИРОВАНИЕ:
journalctl --disk-usage #вывод объёма имеющихся на текущий момент времени логов;
journalctl --vacuum-size=1G #задать максимальный размер для хранимых логов;
journalctl --vacuum-time=1years #задать максимальное время хранения логов.
опции программы:
-a #показать все строки журнала;
-b #задать идентификатор загрузки (Boot-ID);
-D /var/log/journal #задать специфический путь до журнала;
-e #автоматически переместиться в окончание журнала;
-f #выводить новые сообщения в режиме реального времени;
-F field #вывод списка всех доступных выражений для заданного поля:
_SYSTEMD_UNIT;
_HOSTNAME;
_COMM;
...
-g error #фильтр по шаблону (grep);
-k #выводить только сообщения ядра (kernel);
-l #эквивалентно --full;
-o format #переключение формата вывода:
short;
verbose;
export;
json;
cat;
...
-p PRIO #задать приоритет (уровень серьёзности) событий:
emerg
[0];
alert
[1];
crit
[2];
err
[3];
warning [4];
notice [5];
info
[6];
debug
[7].
-S YYYY-MM-DD (HH:MM:SS) #задать дату (и время) верхней границы:
HH:MM:SS #задать время верхней границы текущего дня;
yesterday #задать время верхней границы журнала - вчерашний день;
today #журнал за текущий день.
-U "YYYY-MM-DD (HH:MM:SS)" #задать дату (и время) нижней границы;
-u avahi-daemon.service #отфильтровать журнал по юниту;
-x #вывести каталог информационных сообщений;
_SYSTEMD_UNIT=avahi-daemon.service #отфильтровать журнал по юниту;
_PID=2345 #отфильтровать журнал по PID процесса;
--disk-usage #вывод объёма имеющихся логов;
--full #вывод полных (не сокращенных) строк журнала;
--list-boots #вывод журнала загрузок (список Boot-ID);
--system #просмотр системного журнала;
--user #просмотр журнала пользователя;
--vacuum-size=N #задать максимальный размер для хранимых логов;
--vacuum-time=N #задать максимальное время хранения логов.
особенности:
- строки с приоритетом error и выше подсвечены красным;
- строки с приоритетом notice и warning выделены жирным шрифтом;
- для доступа ко всем системным логам пользователь должен входить в группу systemd-journal или adm.
опции конфигурационного файла:
SystemMaxUse=100M #максимальный размер журнала 100M.
файлы и директории:
/etc/systemd/journald.conf #конфигурационный файл [K|M|G|T|P|E]:
MaxRetantionSec=N #задать срок хранения логов во времени;
RuntimeMaxUse=N #максимальный объём, который логи могут занимать в файловой системе /run;
RuntimeKeepFree=N #объём свободного места, которое должно оставаться в файловой системе /run после сохранения логов;
RuntimeMaxFileSize=N #объём файла лога, по достижении которого он должен быть удален из файловой системы /run;
SplitMode=UID #создать отдельную базу для каждого пользователя;
Storage=AUTO #systemd проверяет наличие директории /var/log/journal:
если директория есть, то логи пишутся в неё;
если директории нет, то логи хранятся в ОЗУ до перезагрузки;
права на доступ к логам выставляются автоматически.
SystemKeepFree=N #объём свободного места, которое должно оставаться на диске после сохранения логов;
SystemMaxFileSize=N #удалять старые логи при достижении заданного объёма;
SystemMaxUse=N #задать ограничение на используемое логами пространство:
по умолчанию 10% от общего объёма ФС и не более 4GB.
---------------------------------------------------------------------------------# (syslog) система лонирования с возможностью отправки логов на сервер [устаревшая]:
• опции программы:
-a SOCKET #задать дополнительный слушающий сокет (сокет необходимо предварительно создать);
-d #отладочный режим (вывод в stdout);
-f CONFIG #задать имя альтернативного конфигурационного файла;
-l HOSTNAME #задать список хостов, имена которых не должны записываться с указанием полного доменного имени (FQDN - Full Qwalified Domain Name);
-m N #задать интервал между записью сообщений категории mark (по умолчанию 20 минут);
-p SOCKET #задать альтернативный сокет UNIX (вместо прослушиваемого по умолчанию /dev/log);
-r #разрешить принимать сообщения от удаленных хостов;
-x #запретить определение имени хоста по его адресу (для предотвращения зависания при работе на одном хосте с сервером DNS).
• синтаксис конфигурационного файла:
FACILITIES.PRIORITIES ACTIONS
ОБЪЕКТ.ПРИОРИТЕТ ДЕЙСТВИЕ, где:
*.ПРИОРИТЕТ #правило применяется ко всем объектам для заданного приоритета;
ОБЪЕКТ.* #правило применяется ко всем приоритетам для заданного объекта;
ОБЪЕКТ.none #не логировать сообщения для заданного объекта;
ОБЪЕКТ.info #правило применяется к объекту с заданным приоритетом и выше;
ОБЪЕКТ.=info #правило применяется к объекту с заданным приоритетом;
ОБЪЕКТ.!=info #правило применяется ко всем приоритетам объекта, кроме заданного;
ОБЪЕКТ.!info #правило для объекта не должно применяться, начиная с заданного приоритета и выше;
ОБЪЕКТ.ПРИОРИТЕТ;*.ПРИОРИТЕТ;ОБЪЕКТ.*;ОБЪЕКТ.none;ОБЪЕКТ.=ПРИОРИТЕТ;ОБЪЕКТ.!=ПРИОРИТЕТ;ОБЪЕКТ.!ПРИОРИТЕТ #возможная форма записи;
ДЕЙСТВИЕ:
обычный файл #сохранить лог в файл:
/path/to/log
-/path/to/log #отменить синхронизацию файла после каждой записи (может привести к потере информации, но повысить производительность).
именованные каналы (пайпы) #иногда используются для отладки:
| #перед именем файла;
для создания пайпа необходимо создать fifo при помощи команды mkfifo.
терминал и консоль #вывод в stdin консоли:
/dev/console
удаленная машина #для отправки сообщений на другой хост:
@hostname
сообщения не пересылаются с принимающего хоста;
в файле /etc/services должна быть прописана строчка syslog 514/udp, и открыт UDP-порт 514.
список пользователей:
разделенный запятыми список пользователей, получающих сообщения (если пользователь зарегистрирован в системе).
для одного сообщения может быть выполнено произвольное количество действий.
• объекты логирования (facilities):
------------------------------------------------------------------------------------------------| КОД |
ОБЪЕКТ
|
ОПИСАНИЕ
|
------------------------------------------------------------------------------------------------| 0
| kern
| сообщения ядра
|
| 1
| user
| сообщения польлзовательских программ
|
| 2
| mail
| сообщения подсистемы почты
|
| 3
| daemon
| сообщения системных служб
|
| 4
| auth
| сообщения авторизации (безопасность, вход в ОС, аутентификация)
|
| 5
| syslog
| сообщения syslogd
|
| 6
| lpr
| сообщения подсистемы печати
|
| 7
| news
| сообщения новостных групп (usenet)
|
| 8
| uucp
| сообщения UUCP (Unix-to-Unix CoPy, копирование файлов между ПК)
|
| 9
| cron
| сообщения планировщика заданий
|
| 10 | authpriv
| сообщения защищённой авторизации (безопасность, вход в ОС, аутентификация) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 | ftp
| сообщения FTP сервера
|
12 | ntp
| сообщения подсистемы NTP (синхронизация времени)
|
13 | security
| сообщения log audit (есть не везде)
|
14 | console
| сообщения log alert направляемые в консоль
|
15 | solaris-cron | сообщения Cron в Solaris
|
16 | local0
| сообщения самописных скриптов
|
17 | local1
| сообщения самописных скриптов
|
18 | local2
| сообщения самописных скриптов
|
19 | local3
| сообщения самописных скриптов
|
20 | local4
| сообщения самописных скриптов
|
21 | local5
| сообщения самописных скриптов
|
22 | local6
| сообщения самописных скриптов
|
23 | local7
| сообщения самописных скриптов
|
24 | mark
| без цифрового эквивалента (syslogd)
|
------------------------------------------------------------------------------------------------• приоритеты сообщений (priorities):
------------------------------------------------------------------------------------------------------------------| VALUE |
SEVERITY
| KEYWORD | DEPRECATED |
ОПИСАНИЕ
|
------------------------------------------------------------------------------------------------------------------| 0
| emergency
| emerg
| panic
| выход системы из строя
|
| 1
| alert
| alert
|
| серьёзная проблема, требующая немедленного действия администратора |
| 2
| critical
| crit
|
| сообщения о критических ошибках
|
| 3
| error
| err
| error
| сообщения об ошибках
|
| 4
| warning
| warning | warn
| предупреждающие сообщения
|
| 5
| notice
| notice |
| важные информационные сообщения
|
| 6
| informational | info
|
| информационные сообщения
|
| 7
| debug
| debug
|
| отладочные сообщения
|
------------------------------------------------------------------------------------------------------------------• файлы и директории:
/etc/syslog.conf #конфигурационный файл:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
логи любых объектов приоритета info, кроме mail, authpriv, cron записывать в /var/log/messages.
auth.*;authpriv.*
/var/log/secure
логи любого приоритета объектов auth, authpriv записывать в /var/log/secure.
mail.*
-/var/log/maillog
логи любого приоритета объекта mail записывать в /var/log/maillog с буферизизацией логов в ОЗУ перед записью на диск.
*.emerg
*
логи любых объектов приоритета emerg должны немедленно получить все пользователи системы.
*.emerg
:omusrmsg:*
логи любых объектов приоритета emerg выводить польлзователям в виртуальной консоли omusrmsg.
mail.*;mail.!=info
/var/log/mail
логи любого приоритета, кроме info для объекта mail записывать в /var/log/mail.
kern.crit
@sysloger
логи объекта kern приоритета crit отправить на удалённый хост sysloger.
kern.emerg
/dev/console
логи объекта kern приоритета emerg вывести в stdout консоли.
kern.alert;kern.!notice
/var/log/kernel-info
логи объекта kern приоритета alert, notice, info, debug записывать в /var/log/kernel-info.
/etc/default/syslog #конфигурационный файл;
/etc/sysconfig/syslog #конфигурационный файл;
/var/lock/subsys/syslog #файл статуса нулевой длины;
/var/run/syslogd.pid #файл с PID процесса.
• особенности:
UDP:514 #слушает на данном сокете (не безопасно);
в системе стартуют два демона протоколирования (оба входят в состав пакета sysklogd):
syslogd #основная система логирования:
klogd #система логирования событий ядра системы (сообщения пересылаются в syslogd).
---------------------------------------------------------------------------------# (rsyslog) система лонирования с возможностью отправки логов на сервер [обновлённая]:
• установка:
dnf -y install rsyslog
dnf -y install rsyslog-mysql #установка расширения для работы с БД MySQL.
• файлы и директории - ОБЩИЕ:
/dev/log #сокет для получения локальных логов;
/etc/default/rsyslog #задает опции, передаваемые демону rsyslogd при запуске:
RSYSLOGD_OPTIONS="-c5 -x" #отключить резолвинг ip адресов в хостнеймы.
/etc/init.d/rsyslog #стартовый скрипт;
/etc/logrotate.d/rsyslog #настройки ротации логов;
/etc/pki/rsyslog/ #список ключей для шифрования соединения;
/etc/rsyslog.conf #основной конфиг;
/etc/rsyslog.d/*.conf #конфигурационные файлы клиента для различных программ, объектов, фильтров;
/etc/rsyslog.d/50-default.conf #конфигурационный файл имеющихся логфайлов;
/usr/lib/rsyslog/* #библиотеки для работы rsyslog;
/usr/sbin/rsyslogd #бинарник демона, который работает в фоне;
/usr/share/doc/rsyslog/* #файлы документации;
/var/run/rsyslogd.pid #PID файл для хранения id процесса rsyslogd.
• файлы и директории - СЕРВЕР:
/etc/rsyslog.conf #конфигурационный файл сервера:
# МОДУЛИ ПРОГРАММЫ (MODULES):
#
ВВОДА (начинаются с im) #можно рассматривать, как способ сбора информации из различных источников;
#
ВЫВОДА (начинается на om) #позволяют отправлять сообщения в файлы или по сети, или отзывов в базу данных;
#
ФИЛЬТРАЦИИ (начинаются с fm) #позволяют фильтровать сообщения по разным параметрам;
#
ПАРСИНГА (начинаются с pm) #предоставляют расширенные возможности для синтаксического анализа сообщения.
$ModLoad imuxsock #обеспечивает поддержку локальной системы логирования (читай - из /dev/log);
$ModLoad imklog #обеспечивает поддержку журналирования ядра;
$ModLoad immark #обеспечивает возможности маркирования сообщений --MARK--;
$ModLoad imudp #разрешить протокол передачи данных UDP;
$ModLoad ommail #отправка на почту;
$ModLoad omfile #вывод в файл;
$ModLoad onmysql #задействовать БД MySQL;
$ModLoad ompgsql #задействовать БД PgSQL;
$ModLoad omoracle #задействовать БД Oracle;
$ModLoad omelasticsearch #запись в ElasticSearch;
$ModLoad omamqp1 #пересылка по протоколу AMQP 1.0;
$ModLoad omrelp #пересылка по сети по протоколу RELP;
$ModLoad omfwd #пересылка по сети, через UDP или TCP;
$UDPServerRun 514 #задать порт приёма данных;
$ModLoad imtcp #разрешить протокол передачи данных TCP (можно зашифровать TLS);
$InputTCPServerRun 514 #задать порт приёма данных.
# КОНФИГУРАЦИОННЫЕ ДИРЕКТИВЫ (CONFIGURATION DIRECTIVES):
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #использовать стандартный формат времени;
# ШАБЛОНЫ ДИРЕКТИВЫ ActionFileDefaultTemplate:
#
RSYSLOG_SyslogProtocol23Format #соответствует шаблону:
#
"<%PRI%>1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%\n\"
#
RSYSLOG_FileFormat #традиционный формат журнала, с добавлением долей секунды и зоны:
#
"%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n\"
#
RSYSLOG_TraditionalFileFormat #традиционный формат журнала для записи в файл:
#
"%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n\"
#
RSYSLOG_ForwardFormat #традиционный формат журнала для передачи с добавлением долей секунды и зоны:
#
"<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%\"
#
RSYSLOG_TraditionalForwardFormat #традиционный формат журнала для передачи на удалённый сервер:
#
"<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%\"
$MarkMessagePeriod 1200 #маркировать соединения и выводить сообщения о работе syslog каждые 20 минут;
$FileOwner root #набор прав разрешений для файлов журналов, которые будут созданы в системе;
$FileGroup adm #набор прав разрешений для файлов журналов, которые будут созданы в системе;
$FileCreateMode 0640 #набор прав разрешений для файлов журналов, которые будут созданы в системе;
$DirCreateMode 0750 #набор прав разрешений для файлов журналов, которые будут созданы в системе;
$Umask 0027 #набор прав разрешений для файлов журналов, которые будут созданы в системе;
$IncludeConfig /etc/rsyslog.d/*.conf #задать директорию дополнительный конфигурационных файлов;
$WorkDirectory /var/spool/rsyslog #задает размещение spool и статических файлов (для хранения таких файлов, как очередь сообщений);
# шифрование трафика:
$MaxOpenFiles 2048 #задать лимит открытых файлов;
$DefaultNetstreamDriver gtls #поток идет через TLS;
$DefaultNetstreamDriverCAFile /etc/pki/rsyslog/ca.pem #задать путь для ключей шифрования;
$DefaultNetstreamDriverCertFile /etc/pki/rsyslog/rslserver-cert.pem #задать путь для ключей шифрования;
$DefaultNetstreamDriverKeyFile /etc/pki/rsyslog/rslserver-key.pem #задать путь для ключей шифрования;
module(load="imtcp" #передть шифрованный поток данных в модуль imtcp:
MaxSessions="2000"
StreamDriver.mode="1"
StreamDriver.authmode="x509/name" #задать проверку авторизации по полю x509/name;
PermittedPeer="example.com"
)
input(type="imtcp" port="10514" name="tcp-tls") #общие настройки соединения.
# ШАБЛОНЫ (TEMPLATE) ДЛЯ ОБРАБОТКИ ЛОГОВ:
#
СИНТАКСИС #$TEMPLATE ИМЯ_ШАБЛОНА,"ОПИСАНИЕ_ШАБЛОНА"[,ОПЦИИ] ДЕЙСТВИЕ [& ДЕЙСТВИЕ]:
#
$TEMPLATE #указывает, что далее пойдет описание шаблона;
#
ИМЯ_ШАБЛОНА #произвольное значение понятно описывающее, что за шаблон и для чего (имя будет использоваться в правилах для обращения к шаблону);
#
"ОПИСАНИЕ_ШАБЛОНА" #текст, воспринимаемый буквально, как есть, но может содержать:
#
%ТЕКСТ% #текст является переменной и позволяет "получить доступ" к внутреннему содержимому:
#
%ИМЯ_PROPER[:НАЧАЛО_СТРОКИ:КОНЕЦ_СТРОКИ:ОПЦИИ[:FIELDNAME]]%
#
ИМЯ_PROPER (ИМЯ_СВОЙСТВА, или ИМЯ_ПЕРЕМЕННОЙ):
#
$DAYS #текущее число;
#
$FROMHOST #имя хоста, от которого пришло сообщение;
#
$FROMHOST-IP #адрес хоста, от которого пришло сообщения (127.0.0.1 для локальных сообщений);
#
$HOSTNAME #имя хоста\ip из сообщения;
#
$HOUR #текущий час;
#
$INPUTNAME #имя входного модуля;
#
$MINUTE #текущие минуты;
#
$MONTH #текущий месяц;
#
$MSG #тело сообщения;
#
$MYHOSTNAME #имя хоста обработки;
#
$PRI #источник и приоритет, в виде числа;
#
$PRI-TEXT #декодированные источник и приоритет (facility.priority, например syslog.emer);
#
$PROGRAMNAME #имя процесса, который выдал сообщение (извлекается из сообщения);
#
$PROGRAMNAME #поле TAG без ID процесса;
#
$RAWMSG #сообщение целиком до обработки парсером
#
$SYSLOGFACILITY #facility в числовой форме;
#
$SYSLOGFACILITY-TEXT #facility в текстовой форме ("local0");
#
$SYSLOGSEVERITY #severity в числовой форме;
#
$SYSLOGSEVERITY-TEXT #severity в текстовой форме ("debug");
#
$SYSLOGTAG #имя и номер процесса (" rsyslogd[12125]:"), который выдал сообщение (извлекается из сообщения);
#
$TIMEGENERATED #время получения (с высоким разрешением);
#
$TIMEREPORTED #время, извлечённое из сообщения;
#
$YEAR #текущий год;
#
..
#
НАЧАЛО_СТРОКИ:КОНЕЦ_СТРОКИ #используются для регулярных выражений;
#
ОПЦИИ #позволяют модифицировать переменную в границе от..до знака %:
#
UPPERCASE #преобразование к верхнему регистру;
#
LOWERCASE #преобразование к нижнему регистру;
#
DATE-MYSQL #преобразовать в формат даты MySQL;
#
SPACE-CC #заменить управляющие символы пробелами;
#
DROP-CC #удалить управляющие символы;
#
..
#
* можно применять несколько опций через запятую;
#
* если указать несколько противоречащих, то будет применена последняя указанная.
#
FIELDNAME #можно ее забыть..
#
ESCAPE-ПОСЛЕДОВАТЕЛЬНОСТИ #\n = новая строка, ..
#
ОПЦИИ #может принимать значение sql и sqlstd, что заставляет отформатировать конечный результат в вид, пригодный для SQL|MySQL.
#
ДЕЙСТВИЕ #применяемое к шаблону|правилу|фильтру:
#
/PATH/TO/FILE #отправить сообщения в файл (по умолчанию, rsyslogd умеет создавать новые файлы):
#
?ИМЯ_ШАБЛОНА #задать шаблон, в соответствии с которым будет формироваться имя нового файла;
#
?ИМЯ_ШАБЛОНА;ШАБЛОН_ФИЛЬТРА #к шаблону имени файла задать шаблон фильтра записываемых сообщений.
#
|/PATH/TO/FIFO #отправить в именованный канал через пайп;
#
/DEV/[TERMINAL|CONSOLE] #отправить на заданный терминал|консоль;
#
@HOSTNAME[:PORT] #отправить на удаленный хост по UDP;
#
@@[zN]HOSTNAME[:PORT] #отправить на удаленный хост по TCP:
#
zN #задать gzip сжатие от 0 до 9 (по умолчанию 6).
#
USER1,USER2,USERN #отправить сообщение на терминал заданным пользователям;
#
* #отправить всем пользователям (аналог команды wall);
#
:ИМЯ_МОДУЛЯ_ВЫВОДА:ПАРАМЕТРЫ_МОДУЛЯ[:ИМЯ_ШАБЛОНА] #отправляет сообщение в модуль вывода с заданными параметрами и заданным шаблоном;
#
~ #после данного символа сообщение будет удалено и дальнейшая обработка не продолжится;
#
^ИМЯ_ПРОГРАММЫ[;ИМЯ_ШАБЛОНА] #задать обработчик сообщений в соответствии с шаблоном, который будет отправлен программе в stdin.
#
& ДЕЙСТВИЕ #повторяет выполнение прошлого фильтра и запускает ДЕЙСТВИЕ, указанное после данного символа.
$template #создание шаблона для приёма логов от удалённого ПК:
RemoteLogs,"/var/log/rsyslog/%FROMHOST-IP%/syslog.log" #%FROMHOST-IP% - собирать со всех ПК/syslog.log - название файла назначения;
*.* ?RemoteLogs #принимать лог любого ОБЪЕКТА любого ПРИОРИТЕТА и сохранять в /var/log/rsyslog/%FROMHOST-IP%/syslog.log;
& ~ #обработка принимаемых логов завершена.
$template #создание шаблона для приёма определённых логов от удалённого ПК:
HostAudit,"/var/log/rsyslog/%HOSTNAME%/audit.log" #%HOSTNAME% - имя удалённого ПК/audit.log - название файла назначения;
local6.* ?HostAudit #принимать логи ОБЪЕКТА local6 любого ПРИОРИТЕТА.
$template #сохранять логи для каждого клиента в отдельный файл:
FileForRemote,"/var/log/remote/%fromhost-ip%/syslog.log"
if ($inputname contains "tcp-tls") then
{
?FileForRemote
stop
}
# ПРАВИЛА СОРТИРОВКИ (RULE LINE) [стандартный синтаксис syslog]:
#
СИНТАКСИС #КАК В SYSLOG [& ДЕЙСТВИЕ]:
#
& ДЕЙСТВИЕ #повторяет выполнение прошлого фильтра и запускает ДЕЙСТВИЕ, указанное после данного символа.
auth,authpriv.*
/var/log/auth.log #стандартные фильтры;
*.*;auth,authpriv.none
-/var/log/syslog #стандартные фильтры;
cron.*
/var/log/cron.log #стандартные фильтры;
daemon.*
-/var/log/daemon.log #стандартные фильтры;
kern.*
-/var/log/kern.log #стандартные фильтры;
lpr.*
-/var/log/lpr.log #стандартные фильтры;
mail.*
-/var/log/mail.log #стандартные фильтры;
user.*
-/var/log/user.log #стандартные фильтры;
local2.*
/var/log/remote-cisco.log #настроить приём сообщений от устройства Cisco;
& ~ #завершить обработку сообщений от устройства Cisco;
*.=crit
/var/log/somefile #сохранить любой ОБЪЕКТ для ПРИОРИТЕТА crit в /var/log/somefile;
& root #сохранить любой ОБЪЕКТ для ПРИОРИТЕТА crit в /var/log/somefile для пользователя root;
& /var/log/criticalmessages #сохранить любой ОБЪЕКТ для ПРИОРИТЕТА crit в /var/log/criticalmessages.
# ПРАВИЛА СОРТИРОВКИ (RULE LINE) [фильтрация на основе свойств сообщения (property-based filters)]:
#
СИНТАКСИС #:ПЕРЕМЕННАЯ, [!]ОПЕРАЦИЯ_СРАВНЕНИЯ, "ИСКОМОЕ_ЗНАЧЕНИЕ" ДЕЙСТВИЕ:
#
:ПЕРЕМЕННАЯ #в данном случае без % или $;
#
[!]ОПЕРАЦИЯ_СРАВНЕНИЯ #может быть:
#
CONTAINS #проверяет соответствие ИСКОМОЕ_ЗНАЧЕНИЕ с любой частью строки в ПЕРЕМЕННАЯ;
#
ISEQUAL #проверяет, совпадает ли (целиком) ИСКОМОЕ_ЗНАЧЕНИЕ с ПЕРЕМЕННАЯ;
#
ISEMPTY #проверяет, является ли ПЕРЕМЕННАЯ пустой;
#
STARTSWITH #проверяет, начинается ли ПЕРЕМЕННАЯ с ИСКОМОЕ_ЗНАЧЕНИЕ;
#
REGEX|EREREGEX #сравнивает содержимое ПЕРЕМЕННАЯ с ИСКОМОЕ_ЗНАЧЕНИЕ в синтаксисе регулярки (Regular|Extended Regular Expression).
#
"ИСКОМОЕ_ЗНАЧЕНИЕ" #например :msg, contains, "syslog" будет искать слово syslog;
#
ДЕЙСТВИЕ #действие выполняемое над сообщением (например записать в ПУТЬ_К_ФАЙЛУ).
:syslogtag, isequal, "giomanager:" /var/log/giomanager.log #фильтрация по имени программы;
& stop #остановить фильтрацию по имени программы;
*.* /var/log/allmsgs-incl-informational.log #сохранить любой ОБЪЕКТ для любого ПРИОРИТЕТА в /var/log/allmsgs-incl-informational.log;
:msg, contains, "informational" ~ #фильтр будет искать слово "informational";
*.* /var/log/allmsgs-no-informational.log #сохранить любой ОБЪЕКТ для любого ПРИОРИТЕТА в /var/log/allmsgs-no-informational.log.
# ПРАВИЛА СОРТИРОВКИ (RULE LINE) [фильтрация RainerScript (RainerScript-based filters)]:
#
СНИТАКСИС #IF УСЛОВИЕ THEN БЛОК_ДЕЙСТВИЙ ELSE БЛОК_ДЕЙСТВИЙ:
#
IF|THEN[ELSE] #обязательные операторы;
#
БЛОК_ДЕЙСТВИЙ #может содержать одно действие, либо вложенный блок условий:
#
блок условий, который содержит несколько действий, заключается в скобки.
#
УСЛОВИЕ #содержит условие отбора сообщений для блока_действий:
#
AND|OR|NOT #логические выражения (например NOT условие0 AND условие1 OR условие2);
#
$ИМЯ_ПЕРЕМЕННОЙ #переменные (properties);
#
ОПЕРАЦИИ СРАВНЕНИЯ:
#
== #равно;
#
!= #не равно;
#
> #больше;
#
< #меньше;
#
<= #меньше или равно;
#
>= #больше или равно;
#
(!)CONTAINS #(не)содержит;
#
(!)STARTSWITH #(не)начинается_с.
#
/*|*/ #комментарии.
if $syslogfacility-text == 'local7' and $msg startswith 'CISCO' and ($msg contains 'warn' or $msg contains 'emer') then /var/log/cisco-alarm
if $syslogtag == 'giomanager' then /var/log/giomanager.log #фильтрация по имени программы;
if $fromhost-ip contains '192.168.1.10' then /var/log/proxyserver.log #фильтрация по IP отправителя логов.
/etc/pki/rsyslog/ #список ключей на сервере для шифрования соединения:
ca.pem
rslserver-cert.pem
rslserver-key.pem
• файлы и директории - КЛИЕНТ Linux:
/etc/rsyslog.conf #конфигурационный файл клиента:
$IncludeConfig /etc/rsyslog.d/*.conf #читать конфигурационные файлы из директории rsyslog.d.
/etc/rsyslog.d/all.conf #конфигурационный файл клиента (совместим с синтаксисом syslog.conf):
*.* #перенаправлять любой лог.
/etc/rsyslog.d/kern.conf #настройка отправки на сервер сообщений для заданных объектов:
kern.* @192.168.0.15:514 #только сообщения объекта kern по протоколу UDP.
/etc/rsyslog.d/erors.conf #настройка отправки на сервер сообщений с заданным приоритетом:
*.err @@192.168.0.15:514 #только сообщения с приоритетом err по протоколу TCP.
/etc/rsyslog.d/iptables.conf #настройка логирования сообщений с заданным приоритетом для iptables:
:msg, contains, "IPT: " -/var/log/iptables.log
& ~ #завершить обработку лога.
/etc/rsyslog.d/audit.conf #настройка аудита для определённого лог-файла:
$ModLoad imfile
$InputFileName /var/log/audit/audit.log
$InputFileTag tag_audit_log:
$InputFileStateFile audit_log
$InputFileSeverity info
$InputFileFacility local6
$InputRunFileMonitor
*.* @@192.168.0.15:514 #осуществлять отправку всех ОБЪЕКТОВ для всех ПРИОРИТЕТОВ на хост:порт 192.168.0.15:514 по протоколу TCP.
/etc/rsyslog.d/mail.conf #отправка сообщений на почтовый сервер SMTP:
$ModLoad ommail
$ActionMailSMTPServer адрес_smtp
$ActionMailSMTPPort 25
$ActionMailFrom адрес@отправителя
$ActionMailTo адрес@получателя
$template mail_subject,"On host %hostname%, Error-level by serverity"
$template mail_body,"Facility.Serverity: %syslogfacility%.%syslogpriority% at %timegenerated% on host: %HOSTNAME%\r\n %msg%"
$ActionMailSubject mail_subject
$ActionExecOnlyOnceEveryInterval 10 #интервал времени (пауза между письмами);
if #фильтр отбора и действие:
not ($msg contains 'что_то'\
or $msg contains 'еще_что_то'\
or $msg contains 'может_еще_что_то' )\
and ($syslogseverity-text =='err'\
or $syslogseverity-text =='crit'\
or $syslogseverity-text =='alert'\
or $syslogseverity-text =='emerg' )\
then :ommail:;mail_body
/etc/rsyslog.d/mysql.conf #отправлять логи на сервер MySQL:
$ModLoad ommysq #задействовать модуль MySQL (предварительно необходимо установить расширение rsyslog-mysql);
*.* :ommysql:адрес_сервера,имя_базы,имя_пользователя,пароль
/etc/rsyslog.d/tls.conf #настройка отправки логов для шифрованного соединения:
$DefaultNetstreamDriver gtls #поток данных идет через TLS;
$DefaultNetstreamDriverCAFile /etc/pki/rsyslog/ca.pem #задать путь для ключей шифрования;
$DefaultNetstreamDriverCertFile /etc/pki/rsyslog/rslreverb-cert.pem #задать путь для ключей шифрования;
$DefaultNetstreamDriverKeyFile /etc/pki/rsyslog/rslreverb-key.pem #задать путь для ключей шифрования;
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #использовать стандартный формат времени;
$ActionSendStreamDriverAuthMode x509/name #задать проверку авторизации по полю x509/name;
$ActionSendStreamDriverPermittedPeer server.com #задать адрес сервера;
$ActionSendStreamDriverMode 1 #переключить драйвер в режим TLS;
kern.* @@server.com:10514 #задать объект и приоритет для передачи на указанный сервер.
/etc/pki/rsyslog/ #список ключей на клиенте для шифрования соединения:
ca.pem
rslclient-cert.pem
rslclient-key.pem
/etc/rsyslog.d/50-default.conf #конфигурационный файл имеющихся логфайлов (лог-файлы необходимо предварительно создать):
cron.* /var/log/cron.log #отправлять записи для объекта cron с любым приоритетом в /var/log/cron.log;
kern.info /var/log/iptables.log #отправлять записи для объекта kern с приоритетом info в /var/log/cron.log.
/etc/rsyslog.d/60-samba.conf #настройка системы логирования для samba:
$ModLoad imfile
$InputFileName /var/log/samba/audit.log
$InputFileTag squid-samba
$InputFileStateFile stat-samba-access
$InputFileSeverity info
$InputFileFacility local5
$InputRunFileMonitor
local5.* @10.10.10.14:514;RSYSLOG_SyslogProtocol23Format
• файлы и директории - КЛИЕНТ Cisco:
hostname#conf t
hostname(config)#logging trap ? #вывод объектов логирования;
hostname(config)#logging trap debugging #установить объект логирования debugging;
hostname(config)#logging facility local2 #задать источник сообщений (facility) local0..7;
hostname(config)#logging 10.0.0.1 #отправлять логи на сервер 10.0.0.1;
hostname(config)#exit
• особенности:
- последовательность обработки логов:
сообщение пришло в систему через один из модулей ввода #сеть|файл|/dev/log|..;
сообщение становиться в главную очередь (если не хватает системных ресурсов);
сообщение поступает в обработчик, который использует модули парсинга:
сообщение сверяется с фильтрами (с селекторами объект.приоритет), заданными в правилах:
если сообщение подпадает под селектор, то перед применением действия к сообщению применяется соответствующий шаблон;
если шаблон для действия не указан, то применяется шаблон по умолчанию, либо тот, который задан в глобальных параметрах.
к сообщению применяется соответствующее действие (отправка в заданное место):
если место требует применения модуля (ommysql|ompgsql|..), то используются соответствующий модуль вывода.
---------------------------------------------------------------------------------# (logrotate) ротация логов:
• установка:
dnf -y install logrotate
• использование:
logrotate -d /etc/logrotate.d/configname #выполнить отладку ротации логов;
logrotate -v -f /etc/logrotate.d/configname #выполнить ротацию логов;
* в дальнейшем ротация будет выполняться автоматически в соответствии с конфигурационным файлом.
• опции программы:
-d #задействовать режим отладки (использует -v) [действий с логами выполнено не будет];
-f #выполнить ротацию логов;
-m "Theme" name@mail.com #отправка журналов по почте (по умолчанию /bin/mail);
-s FILE #задать альтернативный файл состояния (по умолчанию /var/lib/logrotate/status);
-v #вывод диагностических сообщений;
--usage #вывод краткой справки по использованию программы.
• файлы и директории:
/etc/logrotate.conf #главный конфигурационный файл:
/etc/logrotate.d/configname #конфигурационный файл для заданной программы:
/var/log/progname/*.log { #задать директорию для логов с последующими настройками ротации;
compress #использовать сжатие;
compresscmd CMD #задать программу для сжатия (по умолчанию gzip);
compressext .ZZ #определяет расширение сжатых файлов журналов, если используется сжатие (по умолчанию .gz);
compressoptions -9 #передать опцию программе сжатия (по умолчанию для gzip "-6");
?
copy PATH #создать копию оригинального log-файла, не изменяя его:
несовместимость #create.
copytruncate #"обнулить" оригинальный log-файл после создания его копии:
несовместимость #create.
create 0640 USER GROUP #после ротации создать пустой файл с заданными правами;
daily #производить ротацию логов раз в день;
dateext #добавить дату при ротации (по умолчанию "-%Y%m%d");
dateformat [%Y|%m|%d|%s] #задать форматную строку (по умолчанию "-%Y%m%d");
delaycompress #ротируемый файл не сжимается, остальные - сжимаются:
зависимость #compress;
несовместимость #nocompress.
endscript #окончание скрипта {только с prerotate/postrotate};
extension .ZZ #задать расширение для Файлов журналов;
hourly #производить ротацию логов раз в час;
ifempty #архивировать даже пустой файл (по умолчанию);
include [FILE|DIR] #задействовать дополнительные конфигурационные файлы (по умолчанию /etc/logrotate.d);
mail name@mail.com #отправить журнал по окончании цикла обращения на заданный адрес;
mailfirst #посылать только что сдвинутый файл, а не закончивший цикл обращения файла журнала {только с mail};
maillast #посылать закончивший цикл обращения, а не только что сдвинутый файл журнала (по умолчанию) {только с mail};
maxage N #хранить ротированные файлы за последние N дней, остальные удалять;
maxsize N #ротация логов начинается при достижении заданного размера, но:
ДО наступления следующего интервала ротации (hourly|daily|weekly|monthly|yearly).
minsize N #ротация логов начинается при достижении заданного размера, но:
НЕ РАНЬШЕ наступления следующего интервала ротации (hourly|daily|weekly|monthly|yearly).
missingok #отсутствие файла не является ошибкой;
monthly #производить ротацию логов раз в месяц;
nocompress #не использовать сжатие;
nocopy #не создавать копию log-файла;
nocopytruncate #не обнулять исходный файл журнала;
nocreate #не создавать пустой файл после ротации;
nodateext #не использовать дату в названиях log-файлов;
nodelaycompress #ротируемый файл так же сжимается;
nomail #отключает mail;
nomissingok #в случае отсутствия оригинального log-файла вызовет ошибку;
noolddir #отключает olddir;
nosharedscripts #скрипты будут выполняются при ротации каждого log-файла:
при определении /var/log/progname/*.log скрипт будет выполнен столько раз, сколько уникальных log-файлов будет находится в данной директории.
notifempty #не обрабатывать пустые файлы;
olddir PATH #перемещать старые логи в заданную директорию (каталог должен размещаться на том же БУ);
postrotate #выполнить скрипт после ротации:
/path/to/script
prerotate #выполнить скрипт перед ротацией:
/path/to/script
rotate N #задать количество ротаций (если 4, то 4 деня|недели|месяца);
sharedscripts #скрипты prerotate/postrotate будут выполнены только один раз;
size N #производить ротацию по достижении файлом указанного размера [k|M|G];
start N #задать номер, с которого будет начата нумерация log-файлов;
su USER GROUP #выполнить с правами заданного пользователя:
если возникает ошибка "because parent directory has insecure permissions".
tabooext [+]LIST #список запрещённых расширений (применимо для include):
+ #добавить список расширений к текущему (по умолчанию заменить его);
.rpmorig|.rpmsave|,v|.swp|.rpmnew|~ #список расширений по умолчанию.
uncompresscmd CMD #задать программу для декомпрессии (по умолчанию gunzip);
weekly #производить ротацию логов раз в неделю;
yearly #производить ротацию логов раз в год.
}
---------------------------------------------------------------------------------# (logger) отправка логов из консоли и скриптов:
logger -p news.alert STRING #отправка сообщения STRING объекта news приоритета alert;
logger -n hostname.com STRING #отправка сообщения STRING на hostname.com.
• файлы и директории:
-d #использовать протокол UDP;
-f FILE #задать FILE с содержанием сообщения;
-n HOSTNAME #задать имя хоста на который отправить сообщение;
-p SEVERITY.KEYWORD #адать объект и уровень серьёзности сообещния;
-P PORT #задить порт отправки сообщения;
-s #отправить сообщение из stderr;
-S N #задать максимальный размер сообщения (по умолчанию 1KiB);
-T #использовать протокол TCP;
-u SOCKET #задать сокет (по умолчанию /dev/log).
• доступные объёкты сообщений:
auth
authpriv
cron
daemon
ftp
kern
lpr
mail
news
syslog
user
uucp
local[0..7]
security #алиас auth.
• доступные уровни серьёзности:
emerg
alert
crit
err
warning
notice
info
debug
panic #алиас emerg;
error #алиас err;
warn #алиас warning.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [mon] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# (watch) вывод обновляемой информации:
watch cmd #бесконечный вывод cmd один раз в 2 секунды;
• опции программы:
-d #подцвечивать изменения;
-n second #задать частоту обновления экрана;
-p #принудительно отделить watch от выполняемого кода cmd;
-t #не выводить заголовок.
-g #завершить выполнение программы когда вывод изменится.
---------------------------------------------------------------------------------# (head) единоразовый вывод головных строк файла или потока:
head -n 15 file #вывод первых пятнадцати строки file.
• опции программы:
-c [-]N #напечатать первые N байт каждого файла (если перед N стоит "-", напечатать все, кроме N последних байт каждого файла):
[b|kB|K|MB|M|GB|G|T|P|E|Z|Y].
-n [-]N #напечатать N строк каждого файла, а не первые 10 (если перед N стоит "-", напечатать все, кроме N последних строк каждого файла);
-q #не печатать заголовки с именами файлов;
-v #всегда печатать заголовки с именами файлов;
-z #разделитель строк NUL, а не символ новой строки.
---------------------------------------------------------------------------------# (tail) вывод хвостовых строк файла или потока:
tail -f /var/log/log #просмотр лога в режиме реального времени.
• опции программы:
-c [+]N #показать последние N байт (+N = начать вывод каждого файла с N-го байта) [b|kB|K|MB|M|GB|G|T|P|E|Z|Y];
-f [NAME|DESCRIPTOR] выводить поступающие данные по мере роста файла (при отсутствии параметра используется DESCRIPTOR);
-F NAME #эквивалент -qf NAME;
-n N #выводить последние N строк (или +N для вывода, начиная с N-ной);
--max-unchanged-stats=N #повторно открывать ФАЙЛ, который не изменялся последние N (по умолчанию 5) итераций, чтобы проверить, не был ли он удалён или переименован, при
использовании механизма inotify этот параметр не требуется {-f};
--pid=PID #прерваться, когда процесс PID завершает работу {-f};
-q #не выводить заголовки с именами файлов;
--retry #продолжать пытаться открыть файл даже когда он недоступен;
-s N #бездействовать между повторениями N секунд (по умолчанию 1); при использовании механизма inotify и --pid=P, проверять процесс P, по крайней мере, каждые N секунд {f};
-v #всегда выводить заголовки с именами файлов;
-z #разделитель строк NUL, а не символ новой строки.
• особенности:
- по умолчанию печатает последние 10 строк каждого из ФАЙЛОВ на стандартный вывод;
- если задано несколько ФАЙЛОВ, сначала печатает заголовок с именем файла;
- если ФАЙЛ не задан или задан как -, читает стандартный ввод;
- после N может стоять один из умножающий суффиксов:
[b 512|kB 1000|K 1024|MB 1000*1000|M 1024*1024|GB 1000*1000*1000|G 1024*1024*1024|..|T..|P..|E..|Z..|Y..]];
можно использовать двоичные префиксы: [KiB=K|MiB=M|..].
---------------------------------------------------------------------------------# (tee) печатает входные аргументы в файл и на экран одновременно:
journalctl -f | tee -ai logfile #вывод системного журнала на экран и в logfile.
• опции программы:
-a #дописать в заданные файлы (не переписывать);
-i #игнорировать сигналы прерывания;
-p #обнаруживать ошибки записи не в каналы;
--output-error=РЕЖИМ #задать поведение при ошибке:
warn #диагностические ошибки записи в любой вывод;
warn-nopipe #диагностические ошибки записи в любой вывод кроме канала (по умолчанию);
exit #завершать работу при ошибках записи в любой вывод;
exit-nopipe #завершать работу при ошибках записи в любой вывод кроме канала.
---------------------------------------------------------------------------------# (vmstat) вывод системной информации:
vmstat 1 30 #построчный вывод информаци один раз в секунду (30 повторов).
• опции программы:
-a #[proc|memory|swap|io|system|cpu];
-f #вывод общего числа системных вызовов (статичные данные);
-m #подборка информации из proc (системная статистика);
-n #единоразовый заголовок;
-s #[proc|memory|swap|io|system|cpu] (статичная вертикальная таблица);
-d #[disk|reads|writes|IO];
-D #[disk|reads|writes|IO] (статичная вертикальная таблица);
-p /dev/.. #[sdxN|reads|read sector|writes|requested writes];
-S #задать единицы измерения [k|K|m|M];
-t #вывод timestamp в каждой строке;
-w #растянуть таблицу на весь экран.
---------------------------------------------------------------------------------# (top) мониторинг системных процессов:
top -id1 -Em -o%CPU #запуск программы.
• опции программы:
-b1 #построчный вывод программы;
-c1 #полный вывод всех процессов для всех доступных процессоров;
-d time #задать период обновления данных;
-E [k|m|g|t|p|e] #задать размерность единиц измерения;
-H1 #вывод строки Threads (переключение на Tasks хоткеем [H]);
-i1 #вывод только изменяющихся процессов;
-n num #количество обновлений, после которых программа закроется;
-o field #задать поле для сортировки данных;
-O field #задать поле
-pPID -pPID #задать PID процессов для мониторинга;
-s1 #
-S1 #
-u|U uname #задать имя пользователя для мониторинга;
-w num #задать ширину программы в символах (максимум 512).
• интерфейс программы - HEAD:
top #время в системе;
up #время работы системы после загрузки;
users #количество залогиненных пользователей в системе;
load average #среднее значение загрузки системы:
time1 #время загрузки за 1 минуту;
time2 #время загрузки за 5 минут;
time3 #время загрузки за 15 минут.
Tasks #процессы в системе:
total #общее количество процессов;
running #количество запущенных процессов;
sleeping #количество спящих процессов;
stopped #колличество остановленных процессов;
zombie #колличество зомби-процессов.
•
•
•
•
•
%Cpu #нагруза на процессор за последние 3 секунды:
us [user space] #время затраченное на обработку процессов пользовательского пространства;
sy [system spooltime] #время затраченное на обработку процессов пространства ядра (kernel space);
ni [nice spooltime] #время затраченное на обработку процессов с низким приоритетом;
id [idle] #время проведённое в ожидании;
wa [input-output-wait] #время потраченное процессом на ожидание записи-чтения на диск;
hi [hardware interrupts] #время потраченное процессом на аппаратные прерывания;
si [software interrupts] #время потраченное процессом на программные прерывания;
st [steel time] #время потраченное виртуальной машиной на доступ к процессору.
MiB Mem #количество используемой оперативной памяти:
total #общее количество ОЗУ;
free #количество свободной ОЗУ;
used #количество используемой ОЗУ;
buff/cache #количество ОЗУ используемое для кэша.
MiB Swap #количество используемой оперативной памяти:
total #общее количество памяти файла подкачки;
free #количество свободной памяти файла подкачки;
used #количество используемой памяти файла подкачки;
avail mem #количество доступной (буферизированной) памяти файла подкачки.
интерфейс программы - TAIL:
PID #номер процесса в системе;
USER #пользователь от которого запущен процесс;
PR #приотитет процесса в ядре:
rt [real time] #выполнение процесса моментально без ожидания.
NI #приотитет процесса;
VIRT #адресное пространство виртуальной памяти [KB];
RES #оперативная память используемая процессом [KB];
SHR #склолько виртуальной памяти может быть разделено с другими процессами;
S #статус процесса:
I [Idle] #ожидание;
R [Run] #работа;
S [Speed] #скорость;
Z [Zombie] #зомби;
..
%CPU #использование одного ядра процессора [%];
%MEM #оперативная память используемая процессом [%];
TIME+ #время, затраченное на обработку процесса;
COMMAND #исполняемая программа.
HotKeys - СПРАВКА:
[?] #хелп;
[h] #хелп;
[f] #краткая справка по колонкам программы;
[F] #краткая справка по колонкам программы;
[Z] #вывод справки по расцветке программы.
HotKeys - НАСТРОЙКА ГОЛОВНОЙ ЧАСТИ ПРОГРАММЫ:
[I] #включение|отключение первой строки;
[t] #выбор формата второй строки;
[m] #выбор формата третьей строки;
[1] #выбор количества отображаемых процессоров;
[3] #вывод %Node0;
[H] #переключение Threads|Tasks;
[C] #включение|отключение строки с координатами курсора;
[E] #изменение размерности единиц измерения в башке [k|m|g|t|p|e].
HotKeys - НАСТРОЙКИ ОСНОВНОГО ТЕЛА ПРОГРАММЫ:
[J] #выравнивание колонок с данными по левому|правому краю;
[e] #изменение размерности единиц измерения в теле [k|m|g|t|p|e];
[X] #изменение ширины колонки USER;
[j] #выравнивание колонки COMMAND по левому|правому краю;
[c] #выводить полный путь процесса в колонке COMMAND;
[V] #вывод дерева процессов;
[d] #задать период обновления информации;
[s] #задать период обновления информации.
HotKeys - НАВИГАЦИЯ:
[Alt+j] #листать список программ построчно вниз;
[Down] #листать список программ построчно вниз;
[Alt+k] #листать список программ построчно вверх;
[Up] #листать список программ построчно вверх;
[PageDown] #листать список программ на один экран вниз;
[PageUp] #листать список программ на один экран вверх;
[End] #перейти к окончанию списка программ;
[Home] #перейти в начало списка программ.
—
[Alt+h] #листать список программ влево;
[Left] #листать список программ влево;
[Alt+l] #листать список программ вправо;
[Right] #листать список программ вправо.
• HotKeys - ПОДЦВЕТКА:
[B] #подцветка информации (вкл|выкл);
[b] #выбор режима выделения;
[y] #подцветка процесса top (вкл|выкл);
[x] #подцветка отсортированной колонки (%CPU|PID|%MEM|USER);
[L] #задать шаблон для выделения (подцветки);
[&] #поиск заданного шаблона [L];
[z] #переключения цветового режима программы (ч/б|цвет).
• HotKeys - СОРТИРОВКА:
[R] #реверс сортировки;
[M] #сортировка по колонке %MEM;
[N] #сортировка по колонке PID;
[P] #сортировка по колонке %CPU;
[T] #сортировка по колонке TIME;
[<] #отсортировать следующий левый столбец;
[>] #отсортировать следующий правый столбец.
• HotKeys - ФИЛЬТРАЦИЯ:
[0] #убрать информацию с нулевым содержанием;
[#] #задать количество отображаемых процессов;
[n] #задать количество отображаемых процессов;
[i] #вывод только изменяющихся процессов;
[u] #задать фильтр пользователей;
[U] #задать фильтр пользователей;
[o] #задать фильтр (игнорировать регистр);
[O] #задать фильтр (регистрозависимый).
• HotKeys - НАБОРЫ КОЛОНОК:
[A] #выбор режима просмотра (используется с [g|a]);
[a] #переключение наборов столбцов вперед (1-4);
[w] #переключение наборов столбцов назад (1-4);
[g] #задать отдельный набор отображаемых столбцов (1-4);
[-] #отключить отображение первого набора;
[_] #переключение между наборами 1 и 2-4 (при включенном [-]);
[=] #вернуть вывод всех четырех наборов;
[+] #принудительно вернуть вывод всех четырех наборов;
[G] #переименовать текущий набор колонок.
• HotKeys - УПРАВЛЕНИЕ ПРОЦЕССАМИ:
[k] #послать процессу управляющий сигнал;
[r] #изменение приоритета процесса;
[Y] #инспектирование выбранного процесса.
• HotKeys - ВО ВРЕМЯ РАБОТЫ С ПРОГРАММОЙ:
[Enter] #обновление экрана;
[Space] #обновление экрана;
[2] #единоразовое обновление информации.
• HotKeys - ДРУГОЕ:
[I] #режим IrixMode (вкл|выкл);
[S] #суммирование времени работы программ;
[W] #записать конфигурационный файл программы.
• HotKeys - ВЫХОД:
[q] #закрыть меню|выход.
---------------------------------------------------------------------------------# (htop) мониторинг системных процессов:
htop #запуск мониторинга системных процессов:
• колонки:
{PID} #порядковый номер процесса в системе;
{USER} #имя пользователя от которого запущен процесс;
{PRI} #приоритет процесса планировщика процессов ядра;
{NI} #nice приоритет процесса (изменяемый пользователем);
{VIRT} #объем виртуальной памяти занимаемой процессом;
{RES} #объем резидентной памяти занимаемой процессом;
{SHR} #объем разделяемой памяти занимаемой процессом;
{S} #статус процесса:
[S]leeping|[R]unning|[T]raced-stoped|[Z]ombie|[D]isk sleep.
{CPU%} #загрузка процессом процессора в %;
{MEM%} #загрузка процессом ОЗУ в %;
{TIME+} #продолжительность работы процесса;
{Command} #имя процесса.
• HotKeys - НАВИГАЦИЯ:
[^n] #переход к следующей строке;
[^p] #переход к предыдущей строке;
[^f] #пролистывание вправо;
[^a] #возврат в начало.
• HotKeys - СОРТИРОВКА:
[P] #сортировка по загруженности процессора;
[M] #сортировка по загруженности памяти;
[T] #сортировка по времени работы;
[.|,] #вызов меню выбора сортировки;
[I] #инверсия сортировки.
• HotKeys - ОСТАЛЬНОЕ:
[S] #настройки программы;
[[] #повышение приоритета выбранной программы (IN);
[]] #понижение приоритета выбранной программы (IN);
[k] #отправка управляющего сигнала выбранному процессу;
[a] #выбор процессора ядра;
[i] #изменение приоритета I/O оп-ций для планировщика ввода-вывода;
[e] #просмотр значений переменных окружения;
[space] #выбор процесса;
[c] #выбор процесса со всеми дочерними;
[U] #отмена выделения;
[/] #поиск по имени или PID процесса:
[F3] переход к следующему процессу;
[ESC] завершение поиска.
[\] #фильтр по имени процесса:
[\+ESC] завершение фильтрации.
[l] #просмотр файлов открытых процессом;
[s] #отслеживание системных вызовов|вызовов библиотечных ф-ций;
[u] #просмотр процессов от имени определенного пользователя;
[t] #вывод процессов в виде дерева;
[H] #просмотр потоков пользователя;
[K] #просмотр потоков ядра;
[p] #отображать или скрывать пути в имени процессов;
[F] #привязать курсор к выделенному процессу и следовать за ним;
[+|-] #свернуть|развернуть выбранную ветку куста|дерева;
[h] #хелп;
[q] #выход.
---------------------------------------------------------------------------------# (dstat) мониторинг производительности системы (CPU/MEM/Disk/Net/...):
dstat -cdmsgnpl #запуск программы.
• опции программы:
-c #отображать статистику CPU;
-C 0,3,total #отображать статистику CPU0,CPU3,итоговую;
-d #отображать статистику Disk;
-D total,hda #отображать статистику итоговую,hda;
-g #отображать статистику страниц;???
-i #отображать статистику прерываний;
-I 5,eth2 #отображать статистику прерываний int5 и прерываний eth2;
-l #отображать статистику загрузки;
-m #отображать статистику MEM;
-n #отображать статистику Net;
-N eth1,total #отображать статистику eth1,итоговую;
-p #отображать статистику процессов;
-r #отображать статистику I/O;
-s #отображать статистику SWAP;
-S swap1,total #отображать статистику swap1,итоговую;
-t #отображать дату и время;
-T #отображать счетчик времени в [секундах];
-y #отображать системную статистику.
--aio #отображать статистику aio;
--fs #отображать статистику fs;
--ipc #отображать статистику ipc;
--lock #отображать статистику lock;
--raw #отображать статистику raw;
--socket #отображать статистику socket;
--tcp #отображать статистику tcp;
--udp #отображать статистику udp;
--unix #отображать статистику unix;
--vm #отображать статистику vm.
--plugin-name #задействовать плагин name;
--list #вывести список всех доступных плагинов.
-a #эквивалентно опциям -cdngy (запуск программы по умолчанию);
-f #автоматически расширяет списки -C,-D,-I,-N,-S;
-v #эквивалентно опциям -pmgdsc,-D,total.
--float #принудительный вывод дробных значений;
--integer #принудительный вывод целых значений.
--bw #изменить палитру цветов для терминала с белым фоном;
--nocolor #вывод в монохромном режиме;
--noheaders #не выводить заголовок (шапку);
--noupdate #отключить промежуточные обновления;
--output file #записать вывод в *.CSV файл.
• HotKeys:
[Ctrl+C] #выход.
---------------------------------------------------------------------------------# (iotop) мониторинг обращений программ к диску:
iotop #запуск программы.
• опции программы:
-a #убрать единицы измерения [*/s] (сжать вывод);
-b #вывод данных в виде текста (не интерактивный режим);
-d SEC #задать период обновления данных в [секундах] (по умолчанию [1]);
-k #задать единицы измерения в [K] (по умолчанию [M]);
-n NUM #задать количество обновлений до завершения программы;
-o #вывести только актуальные процессы и потоки;
-p PID #задать PID интересующего процесса (по умолчанию [all]);
-P #вывести только процессы, без потоков;
-q #убрать заголовок (шапку) из вывода (только для режима batch);
-t #вывести маркер времени для каждой строки (только для режима batch);
-u USER #задать имя интересующего пользователя (по умолчанию [all]).
• HotKeys:
[a] #убрать единицы измерения [*/s] (сжать вывод);
[any other key] #обновить данные;
[i] #изменить приоритет процесса;
[left] #переместиться на следующий столбец;
[o] #вывести только актуальные процессы и потоки;
[p] #вывести потоки, помимо процессов;
[r] #упорядочить рекурсивно;
[right] #переместиться на предыдущий столбец;
[q] #выход;
[Ctrl+C] #выход.
---------------------------------------------------------------------------------# (powertop) мониторинг и управление электропитанием оборудования:
powertop #запуск мониторинга.
• опции программы:
-c #запуск в режиме калибровки;
-C #сгенерировать отчет в формате *.csv;
-i #задание количества попыток запуска каждого теста;
-q #задействовать тихий режим и подавлять вывод stderr;
-r #сгенерировать отчет в формате *.html;
-t #задание периода времени обновления данных в [секундах];
-w #файл для выполнения для рабочей нагрузки;???
--auto-tune #настройка всех параметров в автоматическом режиме;
--debug #запуск в режиме поиска ошибок;
--extech #анализ с использованием режима Extech Power Analyzer для отдельных устройств, н-р USB (powertop --extech /dev/ttyUSB0).
• HotKeys:
[Tab|Shift+Tab] #перейти на следующую вкладку;
[Right] #пролистать вправо;
[Left] #пролистать влево;
[Up|PageUp] #пролистать вверх;
[Down|PageDown] #пролистать вниз;
[Space|Enter] #активировать настройку;
[s] #задать период обновления данных в [секундах] (по умолчанию 20);
[r] #обновить данные;
[q|Ctrl+c|Escape] #выход.
---------------------------------------------------------------------------------# (xrestop) мониторинг нагрузки на X-сервер:
xrestop #запуск мониторинга.
• опции программы:
-b #запуск в текстовом режиме (xrestop -b | less);
-d #выбор дисплея (xrestop -d :0);
-m #задание периода работы программы в [секундах] с последующим выходом;
-t #задание периода обновления данных в [секундах].
• HotKeys:
[q] #выход.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [terminal] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# ADM [terminal] - СПИСОК СУЩЕСТВУЮЩИХ ТЕРМИНАЛОВ:
---------------------------------------------------------------------------------• alacritty #самый быстрый терминал (C++);
• aterm #разработка прекращена в 2007;
• eterm;
• gnome-terminal;
• guake #выпадающий терминал для Gnome;
• hyper;
• kitty;
• konsole #мультиоконный терминал для KDE;
• lilyterm #легковесный терминал;
• lxterminal;
• mate-terminal;
• qterminal #легковесный выпадающий терминал;
• roxterm;
• rxvt #разработка прекращена в 2003;
• sakura;
• st;
• terminator #мультиоконный терминал;
• terminix;
• terminology;
• termit;
• termite;
• tilda #мультиоконный выпадающий терминал;
• tilix #мультиоконный выпадающий терминал;
• urxvt;
• uxterm;
• x-terminal-emulator;
• xfce4-terminal;
• xterm;
• yakuake #выпадающий терминал для KDE.
==================================================================================
# ADM [terminal] - ОСНОВЫ СИНТАКСИСА ПРИ РАБОТЕ В КОНСОЛИ:
---------------------------------------------------------------------------------# (bash) директории:
~/.bashrc #пользовательский файл настроек bash;
~/.profile #пользовательский файл настроек bash с возможностю использования переменных вне bash;
/etc/bashrc #глобальный файл настроек bash;
/etc/environment #глобальный файл переменных среды пользователя;
/etc/profile #глобальный файл настроек bash.
---------------------------------------------------------------------------------# (bash) HotKeys:
• HotKeys - НАВИГАЦИЯ:
[Ctrl+A] #перевод курсора в начало строки;
[Ctrl+E] #перевод курсора в конец строки;
[Ctrl+F] #посимвольный переход между словами вправо;
[Ctrl+B] #посимвольный переход между словами влево;
[Alt+F] #быстрый переход между словами вправо;
[Alt+B] #быстрый переход между словами влево;
[Alt+L] #быстрый переход между символами вправо;
[Ctrl+XX] #реверсивный переход между двумя последними позициями курсора.
• HotKeys - БАЗОВЫЕ ФУНКЦИИ:
[Ctrl+J] #ввод (аналог Enter);
[Ctrl+M] #ввод (аналог Enter);
[Ctrl+L] #очистка экрана с сохранением набранной команды в строке;
[Ctrl+D] в пустой строке #завершение работы интерпретатора (exit 0).
• HotKeys - УДАЛЕНИЕ:
[Ctrl+H] #удалить символ слева (до) от курсора (аналог BackSpace);
[Ctrl+/] #удалить символ слева (до) от курсора (аналог BackSpace);
[Ctrl+-] #удалить последнюю набранную комбинацию символов;
[Ctrl+D] #удалить символ под курсором (аналог Delete);
[Alt+P] #удалить всю строку и вывести ":";
[Alt+N] #удалить всю строку и вывести ":".
• HotKeys - ВЫРЕЗАТЬ|ВСТАВИТЬ:
[Ctrl+U] #вырезать все что слева (до) от курсора;
[Ctrl+K] #вырезать все что справа (после) курсора;
[Ctrl+W] #вырезать слово слева (до) курсора;
[Alt+D] #вырезать слово справа (после) от курсора;
[Ctrl+Y] #вставить последнюю вырезанную часть.
• HotKeys - ПЕРЕМЕЩЕНИЕ:
[Ctrl+T] #переместить символ слева (до) от курсора вправо;
[Alt+T] #переместить слово слева (до) от курсора вправо.
• HotKeys - ИЗМЕНЕНИЕ РЕГИСТРА:
[Alt+C] #увеличить регистр первого символа слова и переместиться вправо;
[Alt+U] #увеличить регистр всего слова и переместить курсор вправо;
[Alt+L] #уменьшить регистр всего слова и переместить курсор вправо.
• HotKeys - ИСТОРИЯ КОМАНД:
[Ctrl+R] #активация поиска по истории команд;
[Ctrl+P] #поиск команд с пролистыванием назад;
[Ctrl+N] #поиск команд с пролистыванием вперед;
[Ctrl+O] #ввод (Enter) с пролистыванием последующих команд;
[Alt+.] #быстрый переход по предыдущим аргументам команды.
---------------------------------------------------------------------------------# краткие обозначение каталогов:
. #текущий рабочий каталог;
.. #родительский каталог текущего рабочего каталога;
~ #домашний каталог текущего пользователя.
---------------------------------------------------------------------------------# (bash) группировка команд, чтение содержимого и перенаправления в bash:
• ; #последовательное выполнение cmd [cmd1; cmd2; cmd3];
• | #вывод первой cmd передать на вход второй cmd [cmd1|cmd2] (пайп или конвейер FIFO [First In/First Out]);
• & #перевести выполнение cmd в фоновый режим [cmd &];
• && #выполнить вторую cmd только после успешного выполнения первой [cmd1 && cmd2];
• || #выполнение второй cmd при условии, что предыдущая завершилась с ошибкой [cmd1 || cmd2];
• () #команды выполняются в дочернем интерпретаторе, т.е. без сохранения переменных, каталогов и т.д. в текущем [( cmd1; cmd2; cmd3 ) > logfile] #запись вывода всех команд в
файл;
• $() #использование выходных данных одной команды при вызове другой команды [cmd $(cmd)].
---------------------------------------------------------------------------------# (bash) потоки данных:
• для командной строки:
stdin | 0 (файловый дескриптор) | стандартный ввод
| клавиатура;
stdout | 1 (файловый дескриптор) | стандартный вывод
| терминал;
stderr | 2 (файловый дескриптор) | стандартный поток сообщений об ошибках | терминал;
& #объединяет stdout и stderr;
> #перенаправление выходных данных в файл (перезаписать данные), или /dev/null;
>> #перенаправление выходных данных в файл (дописать данные);
< #использование содержимого файла в качестве входных данных;
cmd 1> file #пренаправить stdout в file;
cmd 1>> file #перенаправить stdout в file (дописать его);
cmd 1>0 #пренаправить stdout в null;
cmd 2> file #перенаправить stderr в file;
cmd 2>0 #перенаправить stderr в null;
cmd &> file #перенаправить stdout и stderr в file;
cmd &>0 #перенаправить stdout и stderr в null;
cmd > file 2>&1 #пренаправить stdout и stderr в file;
cmd1 2>&1 | cmd2 #передать stdout и stderr команде cmd2.
• для скриптов:
cmd >&0 #перенаправить stdout в null;
?
cmd >&1 #перенаправить stdout в stdout;
?
cmd >&2 #перенаправить stdout в stderr.
---------------------------------------------------------------------------------# (bash) использование кавычек:
• "xxx" #содержимое "" воспринимается интерпретатором как один аргумент;
• 'xxx' #содержимое '' воспринимается интерпретатором как один аргумент;
• "xxx" #интерпретатор выводит содержимое переменной xxx (zzz);
• 'xxx' #интерпретатор выводит имя переменной xxx (xxx);
• {} #используются в неочевидных выражениях для выделения переменной.
---------------------------------------------------------------------------------# (bash) различные символы:
• символы используемые в конфигурационных файлах:
# #комментарий;
// #комментарий;
; #комментарий.
• символы в именах файлов запрещенные к использованию:
/ #использовать запрещено;
- #нельзя использовать в начале имени файла или каталога.
• символы в именах файлов не рекомендуемые к использованию:
{},*,?,',",[,],\,>,<,|,&,space #каждый из символов должен быть предварен \ (символом экранирования).
• символьные последовательности:
\a #звуковой сигнал (bell);
\b #перемещает позицию печати на один символ назад (backspace, или забой);
\e #следующие за ним символы имеют какое-то другое значение, отличное от того, которое определено в ASCII (обычно начинает управляющие последовательности);
\E #escape;
\f #перевод страницы (обычно эквивалентно переводу строки);
\n #новая строка;
\r #перемещает позицию курсора в крайнее левое положение (возврат каретки);
\t #горизонтальная табуляция;
\v #вертикальная табуляция (обычно эквивалентно переводу строки);
\\ #обратная косая черта (backslash);
\' #single quote;
\" #double quote;
\? #question mark;
\nnn #знак с восьмеричным кодом (от 1 до 3 цифр);
\xHH #знак с шестнадцатеричным кодом (от 1 до 2 цифр);
\uHHHH #знак в формате Unicode [ISO/IEC 10646] (от 1 до 4 цифр);
\UHHHHHHHH #знак в формате Unicode [ISO/IEC 10646] (от 1 до 8 цифр);
\cN #control+N.
---------------------------------------------------------------------------------# (global) джокеры *, ?, []:
• * #любое количество (в том числе нулевое) любых символов;
• ? #любой одиночный символ;
• [] #определенный набор символов;
• {} #определить множество.
[т,М,х] #любой символ из перечисленных в скобках;
[a-nA-N] #любой символ из указанных интервалов;
[^а-n,х,у] #любой символ, не указанный в скобках.
test[1-5] #совпадет с: test1|test2|test3|test4|test5;
myfile[12] #совпадет с: myfile1|myfile2;
[Cc]hange[Ll]og #совпадет с: Changelog|ChangeLog|changeLog|changelog;
[0-9]* #все файлы начинающиеся с десятичной цифры;
[A-Za-z]* #все файлы, начинающиеся с большой или маленькой латинской буквы;
myfile[!9] #все файлы myfile[оканчивающиеся цифрой] кроме файла myfile9;
g* #все файлы начинающиеся на g включая g;
test?txt #совпадет с: test.txt|test_txt|test-txt|...
---------------------------------------------------------------------------------# (regex) регулярные выражения:
• спецсимволы:
\
#экранирует специальные символы;
.
#любой символ;
*
#любое количество любых символов, в том числе и нулевое;
.*
#совпадает 0 или более символов;
^
#начало строки (прикрепляет шаблон к началу строки);
$
#конец строки (прикрепляет шаблон к концу строки);
.$
#любой единичный символ в конце строки;
^$
#совпадает со строкой, состоящей из одного пробела (пустой строкой);
^.*$ #совпадает со строкой, состоящей из одного и более пробелов;
+
#указывает на то, что в строке может быть как один символ, так и несколько;
?
#впереди идущий символ может быть, а может и отсутствовать;
{}
#определяет множество (количество повторов);
()
#группировка регулярных выражений;
|
#оператор ИЛИ.
• примеры:
^ *$ #пустая строка;
^[ \t]*$ #пустая строка с символом табуляции в начале;
^[ \t]*% #строка, первым непробельным символом которой является %;
a|b = [ab] #символ a или символ b или оба;
(dog)|(cat) #соответствует dog, или cat, или dog и cat;
[a-z]{4} = [a-z][a-z][a-z][a-z] #задаёт строго фиксированное количество повторов;
[a-z]{2,4} = [a-z][a-z][a-z]?[a-z]? #задаёт диапазон количества повторов;
-?[0-9]+\.?[0-9]* = -25.2 = 33. = 17.125;
a(bc)?d #строка, начинающиеся с буквы a, за которой идёт символ d или последовательность символов bcd;
^#.*\.$ #шаблон ищет все строки начинающиеся на # и оканчивающиеся на .;
foo.* #любая строка начинающаяся с "foo";
\[box\] = [box];
\*funny\* = *funny*;
ld\.so = ld.so;
dev.sda[12] = dev/sda1 or dev/sda2;
dev.sda[^12] = dev/sda3 or dev/sda4 != dev/sda1 or dev/sda2;
dev[.]sda = dev.sda;
dev\.sda = dev.sda;
ab*c = "abbbbc" != "abqc";
ab*c = "abc" != "abbqbbc";
ab*c = "ac" != "cba";
b[cq]*e = "bqe" и с "be";
b[cq]*e = "bccqqe" != "bccc";
b[cq]*e = "bqqcce" != "cqe";
b[cq]*e = "bbbeee".
---------------------------------------------------------------------------------# (SIGxxx) сигналы:
SIGHUP
1 term #перечитать конфигурационные файлы;
SIGINT
2 term #прекратить выполнение [Ctrl+c] (перехватывается);
SIGQUIT
SIGILL
SIGTRAP
SIGABRT
SIGIOT
SIGBUS
SIGEMT
SIGFPE
SIGKILL
SIGUSR1
SIGSEGV
SIGUSR2
SIGPIPE
SIGALRM
SIGTERM
SIGSTKFLT
SIGCHLD
SIGCLD
SIGCONT
SIGSTOP
SIGTSTP
SIGTTIN
SIGTTOU
SIGURG
SIGXCPU
SIGXFSZ
SIGVTALRM
SIGPROF
SIGWINCH
SIGIO
SIGPOLL
SIGPWR
SIGINFO
SIGLOST
SIGSYS
SIGUNUSED
SIGRTMIN
SIGRTMIN+1
SIGRTMIN+2
SIGRTMIN+3
SIGRTMIN+4
SIGRTMIN+5
SIGRTMIN+6
SIGRTMIN+7
SIGRTMIN+8
SIGRTMIN+9
SIGRTMIN+10
SIGRTMIN+11
SIGRTMIN+12
SIGRTMIN+13
SIGRTMIN+14
SIGRTMIN+15
SIGRTMAX-14
SIGRTMAX-13
SIGRTMAX-12
SIGRTMAX-11
SIGRTMAX-10
SIGRTMAX-9
SIGRTMAX-8
SIGRTMAX-7
SIGRTMAX-6
SIGRTMAX-5
SIGRTMAX-4
SIGRTMAX-3
3
4
5
6
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
31
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
core
core
core
core
core
core
term
core
term
term
core
term
term
term
term
term
ign
ign
cont
stop
stop
stop
stop
ign
core
core
term
term
ign
term
term
term
term
term
core
core
#прекратить выполнение [Ctrl+\] (перехватывается);
#обработать ошибку (прекратить выполнение);
#;
#;
#;
#;
#;
#обработать ошибку (прекратить выполнение);
#немедленно прекратить выполнение (не перехватывается);
#;
#обработать ошибку (прекратить выполнение);
#;
#обработать ошибку;
#;
#корректно завершить выполнение (перехватывается);
#;
#принять возвращенное им значение;
#;
#;
#остановить процесс;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#алиас SIGIO;
#;
#алиас SIGPWR;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
#;
SIGRTMAX-2 62
#;
SIGRTMAX-1 63
#;
SIGRTMAX
64
#.
---------------------------------------------------------------------------------# коды завершения команд:
0 #условие верно;
? 1 #условие не верно;
? 2 #условие не верно;
? 3 #условие не верно;
? ..
? 255 #условие не верно.
==================================================================================
# ADM [terminal] - НАСТРОЙКА КОНСОЛИ:
---------------------------------------------------------------------------------# (tput) восстановление консоли:
tput reset #если была сбита кодировка языка, команду ввести вслепую.
• опции программы:
-S << #прочитать команду из stdin;
-T TERM #использовать переменную $TERM;
-x #не пытаться очистить scrollback;
clear #очистить экран;
init #инициализировать терминал;
reset #реинициализировать терминал;
capname #задать капабилити "capname".
---------------------------------------------------------------------------------# (shell) вывод списка доступных командных интерпретаторов:
cat /etc/shells #вывод всех доступных интерпретаторов командной строки.
---------------------------------------------------------------------------------# (toe) таблица терминалов terminfo с описанием:
toe -as #вывод таблицы терминалов.
• опции программы:
-a #вывод таблицы терминалов terminfo с описанием;
-s #сортировка вывода (только вместе с {-a}).
---------------------------------------------------------------------------------# (fc-*) набор программ по выводу информации осистемных шрифтах:
fc-cache -Efsv #поиск новых директорий со шрифтами;
fc-match {v,b} #вывод информации о используемом установленном шрифте;
fc-match -s{v,b} #вывод информации о установленных шрифтах;
fc-match -a{v,b} #вывод информации о всех найденных шрифтах;
fc-list {v,b} #вывод директорий доступных системных шрифтов списком;
fc-conflist #вывод директорий конфигурационных файлов шрифтов;
fc-pattern -c|d|f #вывод паттернов для текущего шрифта;
fc-query -i|b|f font #вывод информации по заданному шрифту;
fc-scan -b|f|y font #вывод информации по заданному шрифту;
fc-validate -i|l|v font #вывод информации по заданному шрифту.
---------------------------------------------------------------------------------# (setfont) программа по установке шрифта:
setfont Cyr_a8x14 #установка шрифта Cyr_a8x14.
• опции установки шрифта:
-hN (без пробела) #заменить высоту шрифта;
-d #удвоить размер шрифта по горизонтали и вертикали;
-m fn #загрузить экранную карту консоли;
-u fn #загрузить юникодную карту шрифта;
-m none #не загружать и не активировать экранную карту;
-u none #не загружать юникодную карту;
-v #выводить подробности выполнения;
-C console #указать используемое консольное устройство;
-V #показать версию и закончить работу.
• опции записи в файл:
-o file #записать текущий шрифт в file;
-O file #записать текущий шрифт и карту Юникода в file;
-om file #записать текущую consolemap в file;
-ou file #записать текущую unicodemap в file.
• файлы и директории:
/etc/fonts/ #конфигурационные файлы;
/usr/share/fontconfig/ #конфигурационные файлы;
/usr/share/fonts/ #шрифты;
/lib/kbd/consolefonst/ #шрифты.
---------------------------------------------------------------------------------# (localectl) настройки локали, раскладки и переключения клавиатуры:
localectl #вывод текущих настроек настроек;
localectl set-keymaps us ru #задать основной раскладкой us, переключаемой ru;
localectl set-locales ru_RU.UTF-8 #задать основную локаль (язык консоли);
localectl set-locales en_US.UTF-8 #задать основную локаль (язык консоли).
* после изменения настроек перелогиниться.
• опции программы:
list-keymaps #вывод списка доступных раскладок;
list-locales #вывод списка доступных локалей;
list-x11-keymap-layouts #список доступных для X11 раскладок;
list-x11-keymap-models #список доступных для X11 моделей клавиатур;
list-x11-keymap-variants #список доступных для X11 вариантов;
list-x11-keymap-options #список доступных для X11 комбинаций клавиш;
set-locales #задать основную локаль (язык консоли);
set-keymaps #задать раскладки клавиатуры;
set-x11-keymap LAYOUT [MODEL [VARIANT [OPTIONS]]] #задать параметры.
• файлы и директории:
/etc/vconsole.conf #конфигурация раскладки клавиатуры и шрифта;
/etc/locale.conf #конфигурация общесистемной локали.
---------------------------------------------------------------------------------# формат приглашения командной строки:
• стандартный:
export PS1="[\u@\h\w]\\$ "
• модифицированный:
export PS1="\[\e[1;32m\]\\w\\$:\[\e[0m\]"
• символы:
u #имя текущего пользователя;
h #имя компьютера;
w #домашний каталог пользователя;
t #время в 24-часовом формате (HH:MM:SS);
A #время в 24-часовом формате (HH:MM);
e #передает более сложные опции (управляющий символ в коде ASCII);
[ #начало последовательности непечатаемых символов;
] #окончание последовательности непечатаемых символов.
==================================================================================
# ADM [terminal] - РАБОТА В КОНСОЛИ:
---------------------------------------------------------------------------------# (hash) просмотр top-list'а запускаемых программ:
hash #вывод top-list'а запускаемых программ в командной строке;
hash -d cmdname #очистить запись для cmdname;
hash -r #очистить записи для всех программ.
---------------------------------------------------------------------------------# (alias|unalias) алиасы команд:
alias #вывод всех доступных алиасов;
alias cmdname='cmd -options' #задать новый алиас cmdname в .bashrc;
unalias cmdname #удалить алиас cmdname;
\cmd #запуск команды cmd без алиаса (если таковой уже имеется);
"cmd" #запуск команды cmd без алиаса (если таковой уже имеется);
command cmd #запуск команды cmd без алиаса (если таковой уже имеется).
---------------------------------------------------------------------------------# (history) история команд:
history #вывод всей истории команд;
history N #отображает последние N строк истории;
history -d N #удаляет строку N из истории (н-р для удаления строки с паролем);
export HISTIGNORE="&:ls:[bf]g:exit" #запретить записывать в историю команды &/ls/bf/bg/exit.
• опции программы:
-a #загрузить историю текущей сессии в основной файл;
-c #очистить историю текущей сессии;
-d num #удалить из истории строку с заданным номером;
-r #загрузить историю из основного файла;
-w #применить изменения истории к основному файлу.
• спецсимволы для использования команд из истории:
!! #последняя введенная команда;
!N #запуск команды из истории с номером N;
!-N #запускается команда, введенная N шагов назад (!-1 эквивалентно !!);
!string #последняя введенная команда, начинающаяся на string;
!?string? #последняя введенная команда, содержащая строку string.
---------------------------------------------------------------------------------# (jobs|bg|fg) приостановка и запуск программ:
• приостановка программ:
[Ctrl+z] #свернуть программу в фон (приостановить выполнение).
• просмотр приостановленных программ:
jobs #вывод списка приостановленных программ.
-l #вывод списка программ в фоне;
-p #вывод PID программ;
-r #вывод только запущенных программ в фоне;
-s #вывод только остановленных программ в фоне.
• продолжить выполнение программы в фоне:
bg #запустить приостановленную программу в фоне.
• вывод программы из фона:
fg #вывести программу из фона (развернуть).
---------------------------------------------------------------------------------# (nohup|&|disown) перевод процесса в фоновый режим:
nohup cmd & disown #наиболее грамотный перевод процесса в фон.
• каждый параметр отдельно:
nohup #отсоединяет процесс от терминала (перенаправляет его вывод в nohup.out и предохраняет его от SIGHUP);
& #переводит задачу в фон (блокирует попытки читать stdin и делает так, что оболочка не ждёт завершения задачи);
disown #удаляет процесс из контроля задач оболочки (но всё ещё оставляет её связанной с терминалом).
---------------------------------------------------------------------------------# (disown) завершение программ находящихся в фоне:
disown -a #завершить все программы в фоне;
disown -r #завершить только запущенные программы в фоне.
---------------------------------------------------------------------------------# (set) настройка командной строки:
set -o #вывод состояния всех опций интерпретатора;
set -u|-o nounset / set +u|+o nounset #вкл/выкл оператора ошибок;
set -x|-o xtrace / set +x|+o xtrace #вкл/выкл дебаггер аутпута;
set -e|-o errexit / set +e|+o errexit #вкл/выкл остановку выполнения скрипта при ошибках;
set -o emacs / set -o vi #переключение шорткатов для работы в интерпретаторе;
set -o history / set +o history #вкл/выкл истории вводимых команд;
set -o|+o pipefail #вкл/выкл критического уровня обработки ошибок.
• опции программы:
-o arg #включить заданную функцию;
+o arg #выключить заданную функцию.
---------------------------------------------------------------------------------# (source) выполнение списка команд:
source ./cmdlist #выполнить список команд cmdlist.
---------------------------------------------------------------------------------# (env) переменные среды:
env #вывод всех переменных среды для текущего пользователя.
• опции программы:
-i #начать с пустым окружением;
-0 #завершать каждую выводимую строку NUL, a не символом новой строки;
-u NAME #удалить переменную с NAME из окружения;
-C /path/to/DIR #изменить рабочий каталог на DIR;
-S S #обработать и разделить S на отдельные аргументы (используется для указания нескольких аргументов в строках с #!);
--block-signal=SIG #блокировать доставку сигнала(ов) SIG КОМАНДЕ;
--default-signal=SIG #сбросить обработку сигнала(ов) SIG в значение по умолчанию;
--ignore-signal=SIG #назначить обработке сигнала(ов) SIG пустое значение;
--list-signal-handling #выдать обработчики сигнала, отличные от значений по умолчанию, в stderr;
-v #выводить подробную информацию на каждом шаге обработки.
• особенности:
"-" = "-i";
СИГ = [имя сигнала (PIPE)|номер сигнала (13)];
при отсутствии СИГ включаются все известные сигналы;
несколько сигналов можно перечислить через запятую.
• некоторые переменные пользовательского окружения:
BASH #полный путь до исполняемого файла командной оболочки Bash;
BASH_VERSION #версия Bash;
CLASSPATH #список каталогов для поиска файлов классов и архивов Java;
HOME #домашний каталог текущего пользователя;
HOSTNAME #имя компьютера;
LANG #текущая установка локали для работы на различных языках;
OSTYPE #описание операционной системы;
PATH #список каталогов команд и приложений (когда полный путь не задан);
PS1 #основная строка приглашения;
PS2 #вторичная строка приглашения;
PROMPT_COMMAND #выполняется до отображения строки приглашения Bash;
PWD #полный путь к текущему рабочему каталогу;
SHELL #полный путь к текущей командной оболочке;
USER #имя текущего пользователя.
---------------------------------------------------------------------------------# (export) установка атрибута экспорта для переменных командного процессора:
export EDITOR=/usr/bin/vi #экспорт переменной EDITOR;
export -p #вывод списка всех экспортированных переменных;
export -n EDITOR=/usr/bin/vi #удалить переменную EDITOR.
• опции программы:
-f #использовать функции командного процессора;
-n #удалить свойство экспорта изо всех имён;
-p #вывести список всех экспортированных переменных и функций;
-- #отключает дальнейшую обработку параметров.
---------------------------------------------------------------------------------# (pv) прогрессбар:
pv file | nc -w 1 example.com 3000 #прогрессбар для передачи файла;
cat file | pv -s 1234 | nc -w 1 example.com 3000 # — z — ;
pv -EE /dev/sdxN > disk.img #архивирование диска;
pv disk.img > /dev/sdxN #разархивация бэкапа;
pv < /dev/zero > /dev/sdxN #обнуление диска;
pv -d PID #вывод прогрессбара для запущенного процесса с заданным PID;
dd if=/dev/zero | pv -s 3788M | dd of=/dev/sdx #заполнение флэшки нулями;
dd image.iso | pv -s 2G | dd of=/dev/sdx bs=2048 #запись image.iso на диск sdx;
pv -tprebs 1G /dev/zero | dd of=/dev/sdxN bs=128M #забить флэшку sdxN нулями.
• опции программы:
-b #вывод переданного количества байт;
-e #вывод времени оставшегося до завершения операции;
-E #задействовать пропуск ошибок;
-EE #задействовать пропуск ошибок (с выводом отчета);
-i number #задать периодичность вывода информации;
-n #вывод построчный вывод информации (используется с {-b|t});
-p #вывод бегунка (progress);
-r #вывод скорости загрузки данных;
-s size #задать размер передаваемого файла (для бегунка);
-t #вывод времени прошедшего с момента запуска операции.
---------------------------------------------------------------------------------# (progress) прогрессбар:
progress -mc firefox #прогрессбар загрузки для firefox;
progress -wdm #вывод прогрессбара для уже запущенного процесса;
progress -mp 1234 #вывод прогрессбара для процесса с PID=1234;
cp oldfile newfile & progress -mp $! #прогрессбар для копирования.
• опции программы:
-q #тихий режим (без вывода сообщений);
-d #дебаггинг (вывод информационных сообщений);
-w #использовать уточнение времени до окончания операции;
-W #единоразово использовать уточнение времени до окончания операции;
-m #задействовать мониторинг до завершения процесса;
-M #задействовать постоянный мониторинг (watch);
-c cmd #мониторить только процесс cmd;
-a cmd #добавить cmd в список мониторинга программ по умолчанию;
-p PID #мониторинг процесса с заданным PID;
-i file #игнорировать мониторинг заданного файла;
-o {r|w} #мониторинг процессов только на чтение {r} и только на запись {w}.
---------------------------------------------------------------------------------# (xargs) перехват stdout и перенаправление в stdin заданной программы:
find dir -type f -name '*.jpg' | xargs eog -fs #слайдшоу;
find -name *.png -type f | xargs tar -cvzf arh.tar.gz #поиск и архивация *.png.
• опции программы:
-0 #элементы разделяются null, а не пробельным символом. Отключается обработка кавычек, обратной косой черты и логического EOF;
-a FILE #читать аргументы из ФАЙЛа, а не стандартного ввода;
-d SYMBOL #входные элементы разделяются СИМВОЛом, а не пробельным символом. Отключается обработка кавычек, обратной косой черты и логического EOF;
-e END #эквивалентно -E END, если указан END. Иначе, строка конец-файла отсутствует;
-E END #задаёт логический EOF строки. Если в входных данных встречается END в виде строки, то оставшиеся входные данные игнорируются (игнорируются, если указан -0 или -d);
?
-i R #replace R in INITIAL-ARGS with names read from standard input, split at newlines (if R is unspecified, assume {});
-I R #тоже, что и --replace=R;
-l MAX-LINES #подобен -L, но по умолчанию использует не более одной непробельной входной стро на командную строку, если не указан MAX-LINES;
-L MAX-LINES #использовать не более MAX-LINES непробельных входных строк на командную строку;
-n MAX-ARGS #использовать не более MAX-ARGS аргументов на командую строку;
?
-o #reopen stdin as /dev/tty in the child process before executing the command (useful to run an interactive application);
-p #спрашивать перед выполнением команд;
-P MAX-PROCS #выполнять до MAX-PROCS процессов одновременно;
-r #если аргументы не указаны, то КОМАНДУ выполнять (если не указан этот параметр, КОМАНДА будет выполнена не менее одного раза);
-s MAX-CHARS #ограничить длину командной строки до MAX-CHARS;
-t #выводить команды перед их выполнением;
-x #выйти, если превышен размер (см. -s);
--process-slot-var=VAR #добавлять переменную окружения VAR процессы-потомки;
--show-limits #показать ограничения на длину командной строки.
---------------------------------------------------------------------------------# (setterm) настройка курсора в терминале:
setterm --cursor off #выключить курсор;
setterm --cursor on #включить курсор.
---------------------------------------------------------------------------------# (stty) настройка вывода stdout:
stty --all #напечатать все текущие настройки в форме, понятной человеку;
stty -echo #не отображать набираемый текст в терминале (как при вводе пароля);
stty echo #снова сделать набираемый текст в терминале видимым.
• описание программы:
- управляет терминальной линией, подключённой к стандартному вводу;
- запущенная без аргументов, печатает скорость передачи информации, протокол линии и отличия от обычных установок;
- при установке, SYMBOL'S трактуются буквально или задаются в как ^c, 0x37, 0177 или 127;
- для отмены специальных символов служат значения ^- и undef.
• пояснения:
- необязательный знак минус перед НАСТРОЙКОЙ означает отрицание;
- звездочкой отмечены настройки, не описанные в стандарте POSIX;
- доступность той или иной настройки определяется используемой системой.
• опции программы:
-F УСТРОЙСТВО #открыть и использовать указанное устройство вместо стандартного ввода;
-g #напечатать все текущие настройки в форме, понятной программе stty;
--all #напечатать все текущие настройки в форме, понятной человеку.
• специальные символы:
* discard SYMBOL #SYMBOL будет переключать отбрасывание вывода;
eof SYMBOL #SYMBOL будет означать конец файла (прекращать ввод);
eol SYMBOL #SYMBOL будет означать конец строки;
* eol2 SYMBOL #другой SYMBOL для конца строки;
erase SYMBOL #SYMBOL будет стирать последний введённый до него;
intr SYMBOL #SYMBOL будет посылать сигнал прерывания;
kill SYMBOL #SYMBOL будет стирать текущую строку;
* lnext SYMBOL #SYMBOL будет вводить следующий символ как обычный;
quit SYMBOL #SYMBOL будет посылать сигнал выхода;
* rprnt SYMBOL #SYMBOL будет посылать сигнал перерисовки текущей строки;
start SYMBOL #SYMBOL будет перезапускать вывод после остановки;
stop SYMBOL #SYMBOL будет останавливать вывод;
susp SYMBOL #SYMBOL будет посылать терминалу сигнал останова;
•
•
•
•
•
* swtch SYMBOL #SYMBOL будет переключать уровень вложенности оболочки;
* werase SYMBOL #SYMBOL будет стирать последнее введённое слово.
специальные настройки:
Н #установить скорости ввода и вывода равными Н бод;
* cols Н #сообщить ядру, что терминал имеет Н столбцов;
* columns Н #синоним cols;
* [-]drain #дождаться передачи до применения настроек (по умолчанию вкл);
ispeed Н #установить скорость ввода равной Н;
* line Н #использовать протокол линии Н;
min Н #установить Н как минимальным число символов для завершени операции чтения (используется с параметром -icanon);
ospeed Н #установить скорость вывода равной Н;
* rows Н #сообщить ядру, что терминал имеет Н строк;
* size #напечатать числа столбцов и строк, известные ядру;
speed #напечатать скорость терминала;
time Н #установить временной предел для операции чтения равны Н десятым секунды (используется с параметром -icanon).
управляющие настройки:
[-]clocal #отменить управляющие сигналы модема;
[-]cread #разрешить приём входных данных;
* [-]crtscts #разрешить использование RTS/CTS;
csН #установить размер символа равным Н бит, Н от 5 до 8;
[-]cstopb #использовать два стоп бита на символ (один, если с «-»);
[-]hup #посылать сигнал обрыва терминальной линии, когда последни процесс закрывает терминал;
[-]hupcl #синоним [-]hup;
[-]parenb #генерировать при выводе бит чётности и ожидать бит чётност на вводе;
[-]parodd #установить проверку на нечётность (или чётность с «-»);
* [-]cmspar #использовать чётность «stick» (mark/space).
настройки ввода:
[-]brkint #символ break будет вызывать сигнал прерывания;
[-]icrnl #преобразовывать возврат каретки в перевод строки;
[-]ignbrk #игнорировать символы прерывания;
[-]igncr #игнорировать символы возврата каретки;
[-]ignpar #игнорировать символы с ошибками чётности;
* [-]imaxbel #при переполненном буфере ввода подавать звуковой сигнал и н сбрасывать буфер, игнорируя дальнейший ввод;
[-]inlcr #преобразовывать перевод строки в возврат каретки;
[-]inpck #использовать проверку чётности ввода;
[-]istrip #очищать старший (восьмой) бит вводимых символов;
* [-]iutf8 #предполагать, что входные символы в кодировке UTF-8;
* [-]iuclc #преобразовывать заглавные буквы в строчные;
* [-]ixany #позволить любому символу возобновить ввод;
[-]ixoff #разрешить посылку символов приостановки/возобновления;
[-]ixon #разрешить управление потоком данных;
[-]parmrk #отмечать ошибки четности (последовательностью из 255 нулей);
[-]tandem #синоним [-]xioff.
настройки вывода:
* bsН #значение паузы после забоя, допустимые Н [0..1];
* crН #значение паузы после возврата каретки, допустимые Н [0..3];
* ffН #значение паузы после перевода страницы, допустимые Н [0..1];
* nlН #значение паузы после новой строки, допустимые Н [0..1];
* [-]ocrnl #преобразовывать возврат каретки в перевод строки;
* [-]ofdel #использовать символы стирания вместо NUL для заполнения;
* [-]ofill #использовать символы заполнения для задержек;
* [-]olcuc #преобразовывать строчные буквы в заглавные;
* [-]onlcr #преобразовывать перевод строки в возврат каретки и новую строку;
* [-]onlret #перевод строки производит возврат каретки;
* [-]onocr #не печатать возврат каретки в первом столбце;
[-]opost #форматировать вывод;
* tabН #значение паузы после горизонтальной табуляции допустимые Н [0..3];
* tabs #синоним tab0;
* -tabs #синоним tab3;
* vtН #значение паузы после вертикальной табуляции, допустимые Н [0..1].
локальные настройки:
[-]crterase #стирать символы как забой-пробел-забой;
* crtkill #стирать всю строку, подчиняясь установкам echoprt и echoe;
* -crtkill #стирать всю строку, подчиняясь установкам echoctl и echok;
* [-]ctlecho #отображать управляющие символы с крышкой («^c»);
[-]echo #отображать вводимые символы;
* [-]echoctl #синоним [-]ctlecho;
[-]echoe #синоним [-]crterase;
[-]echok #отображать перевод строки после символа уничтожения;
* [-]echoke #синоним [-]crtkill;
[-]echonl #отображать перевод строки, даже если другие символы не отображаются;
* [-]echoprt #выводить стираемые символы в обратном порядке, между «\» и «/»;
* [-]extproc #включить «LINEMODE»; полезно на линиях с большой задержкой;
[-]flusho #отбросить вывод;
[-]icanon #использовать специальные символы: erase, kill, werase, rprnt;
[-]iexten #использовать специальные символы, отсутствующие в стандарте POSIX;
[-]isig #использовать специальные символы interrupt, quit, и suspend;
[-]noflsh #запретить сброс буфера после приема специальных символов interrupt и quit;
* [-]prterase #синоним [-]echoprt;
* [-]tostop #приостанавливать фоновые программы, пытающиеся произвести запись на терминал;
* [-]xcase #отображать «\» для заглавных букв, используется с icanon.
• комбинации настроек:
* [-]LCASE #синоним [-]lcase;
cbreak #синоним -icanon;
-cbreak #синоним icanon;
cooked #синоним brkint ignpar istrip icrnl ixon opost isig icanon, символы eof и eol имеют значения по умолчанию;
-cooked #синоним raw;
crt #синоним echoe echoctl echoke;
dec #синоним echoe echoctl echoke -ixany intr ^c erase 0177 kill ^u;
* [-]decctlq #синоним [-]ixany;
ek #установить для символов erase и kill значения по умолчанию;
evenp #синоним parenb -parodd cs7;
-evenp #синоним -parenb cs8;
* [-]lcase #синоним xcase iuclc olcuc;
litout #синоним -parenb -istrip -opost cs8;
-litout #синоним parenb istrip opost cs7;
nl #синоним -icrnl -onlcr;
-nl #синоним icrnl -inlcr -igncr onlcr -ocrnl -onlret;
oddp #синоним parenb parodd cs7;
-oddp #синоним -parenb cs8;
[-]parity #синоним [-]evenp;
pass8 #синоним -parenb -istrip cs8;
-pass8 #синоним parenb istrip cs7;
raw #синоним -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -icanon -opost -isig -iuclc -ixany -imaxbel -xcase min 1 time 0;
-raw #синоним cooked;
sane #синоним cread -ignbrk brkint -inlcr -igncr icrnl icanon iexten echo echoe echok -echonl -noflsh -ixoff -iutf8 -iuclc -ixany imaxbel -xcase -olcuc -ocrnl opost ofill onlcr -onocr -onlret nl0 cr0 tab0 bs0 vt0 ff0 isig -tostop -ofdel -echoprt echoctl echoke -extproc -flusho, все специальные символы установлены в их значения по умолчанию.
==================================================================================
# ADM [terminal] - КОДИРОВКА КЛАВИШ:
---------------------------------------------------------------------------------# (dumpkeys) вывод клавишных кодов:
dumpkeys -l #вывод кодов клавиш keysym.
• опции программы:
-1 #по одной паре (модификатор, код клавиши) на строку;
-c CHARSET #считать, что коды действий клавиш заданы в указанной кодировке;
-C DEV #будет использовано консольное устройство;
-d #показать только комбинации составных (compose) клавиш;
-f #не использовать условные сокращения, один код клавиши на строку;
-i #показать информацию о драйвере клавиатуры;
-k #показать только клавиатурные комбинации;
-l #показать информацию о драйвере клавиатуры, плюс символы известные loadkeys;
-n #показать keytable в шестнадцатеричном виде;
-S [2|4|8|16];
-s #показать информацию о драйвере клавиатуры, плюс символы известные loadkeys;
-t #показать только строки функциональных клавиш;
-v #подробный режим.
• доступные кодировки:
iso-8859-{2,3,4,5,7,8,9,10,15}
koi8-{r,u}
mazovia
cp-1250
tis-620
iso-10646-18
iso-ir-197
iso-ir-209
• вариатны вывода:
2 #по умолчанию;
4 #по одному коду клавиши на строку;
8 #по одной паре (модификатор, код клавиши) на строку;
16 #по одному коду клавиши на строку до первого пропуска.
---------------------------------------------------------------------------------# (getkeycodes) вывод клавишных кодов:
getkeycodes #вывод краткой информации о клавишах и кодах.
---------------------------------------------------------------------------------# (setkeycodes) присвоение скан-кода пустым (медийным) клавишам:
setkeycodes [scancode] [keycode]
setkeycodes 0xec 118
• опции программы:
-C DEV #задать консольное устройство.
• особенности:
- клавишных команд в консоли не может быть больше 128 (значения от 0 до 127);
- просмотр свободных значений для Debian-подобных дистрибутивов:
/etc/console-setup/boottime.kmap.gz
---------------------------------------------------------------------------------# (showkey) перехват клавиатурных нажатий keycode:
showkey #запуск менеджера нажатий клавиш;
showkey -s #запуск менеджера нажатий клавиш в шеснадцатеричном виде.
• опции программы:
-a #показывать десятичные|восьмеричные|шестнадцатеричные значения клавиш [ascii];
-k #показывать только обработанные коды клавиш [keycodes] (по умолчанию);
-s #показывать только необработанные скан-коды [scancodes].
==================================================================================
# ADM [terminal] - КОНСОЛЬНЫЙ ФАЙЛОВЫЙ МЕНЕДЖЕР:
---------------------------------------------------------------------------------# (ranger) консольный файловый менеджер:
• установка:
dnf -y install ranger
• использование:
ranger -c #запуск программы в чистом режиме;
ranger -r file.conf #запуск программы с внешним конфигурационным файлом.
• опции программы:
-c #чистая загрузка (без существующих файлов конфигурации);
-d #режим дебаггинга;
-r file #задать конфигурационный file;
--cachedir=path #задать директорию кэша;
--cmd=cmd #выполнить cmd после запуска;
--copy-config=[all|commands|commands_full|rc|rifle|scope] #создать копию конфигурационных файлов в ~/;
--datadir=path #задать директорию данных;
--list-unused-keys #вывод неиспользованных ключей;
--selectfile=file #запуск программы с открытием заданных файлов;
--show-only-dirs #отображать только директории.
---------------------------------------------------------------------------------• HotKeys - СОРТИРОВКА:
[oa] #по времени доступа выкл.;
[oA] #по времени доступа вкл.;
[ob] #по имени выкл.;
[oB] #по имени вкл.;
[oc] #по времени изменения метаданных выкл.;
[oC] #по времени изменения метаданных вкл.;
[oe] #по расширению выкл.;
[oE] #по расширению вкл.;
[om] #по времени модификации выкл.;
•
•
•
•
•
[oM] #по времени модификации вкл.;
[on] #по умолчанию выкл.;
[oN] #по умолчанию вкл.;
[os] #по размеру выкл.;
[oS] #по размеру вкл.;
[ot] #по типу выкл.;
[oT] #по типу вкл.;
[oz] #в случайном порядке;
[or] #обратная сортировка.
HotKeys - НАВИГАЦИЯ:
[gg] #быстрый переход в начало директории;
[G] #быстрый переход в конец директории;
[gd] #быстрый переход в /dev;
[ge] #быстрый переход в /etc;
[gh] #быстрый переход в /home;
[gm] #быстрый переход в /media;
[gM] #быстрый переход в /mnt;
[go] #быстрый переход в /opt;
[g/] #быстрый переход в /;
[gr] #быстрый переход в /;
[gs] #быстрый переход в /srv;
[gu] #быстрый переход в /usr;
[gv] #быстрый переход в /var;
[h] #влево;
[l] #вправо;
[j] #листать построчно вниз;
[k] #листать построчно вверх;
[J] #листать на полстраницы вниз;
[K] #листать на полстраницы вверх;
[Ctrl]+[d] #листать на полстраницы вниз;
[Ctrl]+[u] #листать на полстраницы вверх;
[Ctrl]+[f] #листать постранично вниз;
[Ctrl]+[b] #листать постранично вверх;
[Alt]+[j] #листать область предпоказа вверх;
[Alt]+[k] #листать область предпоказа вниз;
[H] #вернуться назад по истории навигации;
[L] #перейти вперёд по истории навигации;
[)] #быстрый переход к первому файлу в директории;
[cd] #задать путь для перехода.
HotKeys - ИНФОРМАЦИЯ О ФАЙЛАХ И ДИРЕКТОРИЯХ:
[Mf] #сопровождающая информация - размер;
[Mi] #сопровождающая информация - тип;
[Mm] #сопровождающая информация - время модификации полное;
[Mh] #сопровождающая информация - время модификации краткое;
[Mp] #сопровождающая информация - права DAC;
[Ms] #сопровождающая информация - размер+время модификации полное;
[MH] #сопровождающая информация - размер+время модификации краткое;
[Mt] #сопровождающая информация - размер+метазаголовок;
[du] #вывод размера всех файлов в директории;
[dU] #вывод размера всех каталогов в директории.
HotKeys - DAC:
[+w|x|X|s|t] #задать права DAC для пользователя;
[-w|x|X|s|t] #задать права DAC для пользователя;
[+u|g|o|ar|w|x|X|s|t] #задать права DAC;
[-u|g|o|ar|w|x|X|s|t] #задать права DAC.
HotKeys - ПОИСК:
[f] #быстрый переход к искомому файлу/директории/слову;
[/] #поиск в текущей директории:
[n] #перейти к следующему совпадению;
[N] #перейти к предыдущему совпадению.
HotKeys - ФИЛЬТРЫ:
[.d] #только директории;
[.f] #только файлы;
[.l] #только линки;
?
[.m] #;
[.n] #только заданный шаблон имени;
[.#] #только заданный хэш;
[."] #операнд дубликат;
[.'] #операнд совпадение;
[.|] #операнд или;
[.&] #операнд и;
[.!] #операнд не;
[.r] #изменить ротацию фильтров;
[.c] #сбросить все фильтры;
[.*] #удалить последний операнд;
[.p] #удалить последний фильтр;
[..] #вывод наложенных фильтров;
[zf] #вкл./выкл. фильтр имени;
[zz] #вкл./выкл. фильтр имени.
• HotKeys - ОТОБРАЖЕНИЕ|ПРЕДПОКАЗ|РЕДАКТИРОВАНИЕ|ОТКРЫТИЕ:
[Ctrl]+[r] #перезагрузить программу;
[Ctrl]+[l] #перечитать окно программы;
[z] #изменить настройки отображения;
?
[zu] #задать общий размер автообновления;
?
[zc] #задать предварительный просмотр сворачивания;
?
[zI] #;
[zm] #вкл./выкл. поддержку мыши;
[zP] #вкл./выкл. предпоказ содержимого директорий;
[zp] #вкл./выкл. предпоказ содержимого файлов;
[zi] #вкл./выкл. предварительный просмотр изображений;
[zh] #вкл./выкл. показ скрытых файлов;
[zs] #вкл./выкл. сортировку по регистру;
[zd] #вкл./выкл. директории сверху;
[zv] #вкл./выкл. использовать сценарий предварительного просмотра;
[Ctrl]+[h] #показать/скрыть скрытые файлы;
[i] #предпоказ файла на весь экран;
[E] #редактировать в текстовом редакторе;
[Ctrl]+[j] #открыть/редактировать;
[Ctrl]+[m] #открыть/редактировать;
[r] #открыть с помощью;
[F] #заморозить программу (не подгружать изменяемые файлы для повышения производительности).
• HotKeys - ВЫДЕЛЕНИЕ:
[Space] #выделить файл/директорию;
[V] #выделить с..по (аналог Shift);
[v] #выделить всё;
[t] #поставить/снять метку на файл/директорию;
["] #поставить/снять буквенную метку.
• HotKeys - СОЗДАТЬ|ПЕРЕИМЕНОВАТЬ|КОПИРОВАТЬ|ВЫРЕЗАТЬ|ВСТАВИТЬ|УДАЛИТЬ:
[I] #переименовать (курсор вначале);
[a] #переименовать (курсор вконце);
[A] #переименовать (курсор вконце);
[cw] #переименовать;
[yy] #копировать;
?
[yt] #копировать ..;
[ygg] #копировать от текущего файла до начала директории;
[yG] #копировать от текущего файла до конца директории;
[dd] #вырезать;
?
[dt] #вырезать ..;
[dgg] #вырезать от текущего файла до начала директории;
[dG] #вырезать от текущего файла до конца директории;
[ud] #отменить вырезание/копирование;
[uy] #отменить вырезание/копирование;
[pp] #вставка без перезаписи при совпадении (автопереименование);
[po] #вставка с перезаписью при совпадении;
[dT] #удалить в корзину;
[dD] #удалить безвозвратно;
[Ctrl]+[c] #прервать действие;
[w] #вывод списка текущих операций и возможность управлять ими:
[j] #перемещение вниз по списку задач;
[k] #перемещение вверх по списку задач;
[J] #перемещение текущей задачи вниз по списку задач (изменение приоритета);
[K] #перемещение текущей задачи вверх по списку задач (изменение приоритета);
[dd] #отмена задачи.
• HotKeys - ЗАКЛАДКИ:
[mSYMBOL] #создать закладку на текущую директорию (быстрый переход по SYMBOL);
[`] #вывод всех существующих закладок;
['] #вывод всех существующих закладок;
[`SYMBOL] #перейти к закладке SYMBOL;
['SYMBOL] #перейти к закладке SYMBOL;
[umSYMBOL] #удалить закладку.
• HotKeys - ВКЛАДКИ:
[~] #переключение режима отображения: текущая вкладка|все вкладки;
[gn] #создать новую вкладку;
[Ctrl]+[n] #создать новую вкладку;
[Alt]+[1] #создать/открыть вкладку 1;
[Alt]+[2] #создать/открыть вкладку 2;
..
[Alt]+[9] #создать/открыть вкладку 9;
[Tab] #перейти на следующую вкладку;
[Shift]+[Tab] #перейти на предыдущую вкладку;
[gt] #перейти на следующую вкладку;
[gT] #перейти на предыдущую вкладку;
[Ctrl]+[i] #перейти на следующую вкладку;
[Alt]+[r] #перейти на следующую вкладку (с возможностью перенумерования крайней);
[Alt]+[l] #перейти на предыдущую вкладку (с возможностью перенумерования крайней);
[q] #закрыть вкладку;
[gc] #закрыть вкладку;
[Ctrl]+[w] #закрыть вкладку.
• HotKeys - ЛИНКИ:
[yy] #выбрать файл для создания симлинка;
[pl] #создать симлинк на выбранный файл;
[phl] #создать хардлинк на выбранный файл.
• HotKeys - РАЗНОЕ:
[Esc] #переход в нормальный режим;
[S] #переход в терминал:
[Ctrl]+[d] #переход из терминала в ranger.
[W] #вывод лога.
• HotKeys - СПРАВКА:
[?] #переход в режим справки:
[m] #man;
[k] #HotKeys;
[c] #cmd командного режима;
[s] #настройки.
• HotKeys - ВЫХОД:
[q] #выход;
[Q] #выход из программы.
---------------------------------------------------------------------------------• cli - ПЕРЕХОД В РЕЖИМ КОМАНДНОЙ СТРОКИ:
: #выполнить команду в ranger;
! #выполнить команду в терминале;
[s] #выполнить команду в терминале.
• cli - HOTKEYS:
[Tab] #автодополнение вперёд;
[Ctrl]+[i] #автодополнение вперёд;
[Shift]+[Tab] #автодополнение назад;
[Esc] #закрыть консоль;
[Ctrl]+[c] #закрыть консоль;
[Ctrl]+[j] #выполнить команду.
• cli - ДЕЙСТВИЯ С ФАЙЛАМИ:
!chmod +x %f #задать права для текущего файла;
!chmod +x %s #задать права для всех выделенных файлов директории;
:delete file #удалить файл;
:mkdir dir #создать директорию;
:touch file #создать файл;
:rename newname #переименовать теукщий файл/директорию;
:save_copy_buffer #сохранить пути всех скопированных/перемещённых файлов в буфер;
:load_copy_buffer #сохранить пути всех скопированных/перемещённых файлов в буфер.
• cli - КОПИРОВАТЬ ИЗ ИСХОДНИКОВ ПОЛЬЗОВАТЕЛЬСКИЕ КОНФИГУРАЦИОННЫЕ ФАЙЛЫ В "~/.config/ranger/":
:ranger --copy-config=all #активирует rc.conf|scope.sh|rifle.conf|rifle.conf;
:ranger --copy-config=commands_full #активирует commands_full.py.
• cli - СОЗДАНИЕ БЫСТРЫХ ПЕРЕХОДОВ И ЗАКЛАДОК:
:map gd cd ~/Documents #создание быстрого перехода по [gd];
:map md cd ~/Documents #создание закладки с переходом по [md].
• cli - СОЗДАНИЕ АЛИАСОВ (выполнение различных действий по нажатию [Symbol]):
:map md shell mv %s ~/Documents #переместить все файлы директории в ~/Documents по [md];
:map yd shell cp %s ~/Documents #копировать все файлы директории в ~/Documents по [yd].
• cli - ИСПОЛЬЗУЕМЫЕ ОПЕРАНДЫ:
-s #игнорировать вывод текущей команды;
-d #отключить процесс и работать в фоновом режиме;
-p #вернуть вывод в пейджер Ranger;
-w #не возвращать сразу после выполнения команды;
-c #выполнить команду на текущий файл (не на выбранные файлы);
%f #текущий файл;
%d #текущий каталог;
%s #все выделенные файлы текущей директории;
%t #все помеченные файлы текущей директории;
%c #полные пути к текущим скопированным вырезанным файлам;
%p #полные пути к выбранным файлам.
---------------------------------------------------------------------------------• файлы и директории:
- bookmarks #список закладок;
- colorschemes #цветовыe схемы;
- commands_full.py #пользовательские команды, игнорируемые программой;
- commands.py #список команд для командного режима;
- copy_buffer #пути скопированных/перемещённых файлов;
- history #история команд;
- plugins #плагины, python-скрипты;
- rc.conf #главный конфигурационный файл (настройки/HotKeys):
autosave_bookmarks #автосохранение закладок сразу после их создания;
autoupdate_cumulative_size #вывод размера директорий;
collapse_preview #переопределять размер интерфейса при отсутствии инструментов предпоказа;
colorscheme #цветовая схема:
default #синий;
jungle #зелёный;
snow #монохром.
column_ratios #количество и размер окон;
confirm_on_delete #запрос подтверждения на удаление файлов:
always #спрашивать всегда;
never #не спрашивать никогда;
multiple #спрашивать однин раз, при условии что файлов несколько.
dirname_in_tabs #вывод дополнительной информации в именах вкладок;
display_size_in_main_column #вывод размера файлов в текущей колонке;
display_size_in_status_bar #вывод размера файлов в статусбаре;
draw_borders #отрисовка границ окон;
draw_progress_bar_in_status_bar #прогрессбар в статусной строке (при его поддержке);
hidden_filter #правила по которым "видимые" файлы отличаются от "невидимых";
max_console_history_size #количество строк истории команд;
max_history_size #количество строк истории действий;
mouse_enabled #поддержка мыши;
padding_right #вывод файлов в окне предпоказа при отсутствии инструмента представления;
preview_directories #предпоказ содержимого директорий;
preview_files #включение/выключение функции предпоказа файлов;
preview_script #настройки обработки предпоказа файлов;
scroll_offset #количество строк до начала скроллинга при навигации;
show_hidden #отображать/не отображать скрытые файлы;
show_hidden_bookmarks #отображать скрытые папки на панели закладок;
sort #сортировка файлов:
atime #по времени доступа;
basename #по имени;
ctime #по времени создания;
extension #по расширению;
mtime #по времени изменения;
natural #без сортировки (по-умолчению);
type #по типу;
size #по размеру;
random #хаотично.
sort_directories_first #директории всегда в начале списка;
sort_reverse #инверсия сортировки;
use_preview_script #включение/выключение функции предпоказа файлов;
xterm_alt_key #включить, если не работает [Alt].
- rifle.conf #правила обработки файлов (открытие/исполнение):
пример: ext pdf, has evince, X, flag f = evince -- "$@", где:
ext #определяет формат [pdf|video|audio];
has #определяет все возможные приложения для запуска [evince|X];
flag #определяет условия для запуска [f = в графической среде];
= #определяет конкретное приложение для запуска [evince];
-- $@ #внутренняя передача пути файла.
- scope.sh #поведение файлов при предпоказе:
use_preview_script
preview_files
- tagged #помеченные тегом файлы.
==================================================================================
# (mc) консольный файловый менеджер:
mc -adbk #запуск файлового менеджера.
• опции программы:
-a #отключить использование графических символов для отрисовки линий;
-b #запуск в ч-б режиме;
-d #отключает поддержку мыши;
-e file #открыть файл для редактирования при запуске;
-g #режим мыши для терминальных мультиплексоров;
-k #назначает клавиши по умолчанию;
-K file #задать файл комбинаций клавиш;
-l file #сохранить историю ftp и smbfs;
--nokeymap #не загружать список горячих клавиш из файла;
-s #медленный режим (минимум отрисовки и информационных сообщений);
-S skin #задать свой скин;
-v file #открыть file при запуске во встроенном просмоторщике файлов.
• HotKeys - ФУНКЦНОНАЛЬНЫЕ КЛАВИШИ:
[F1] #справка;
[F2] #меню пользователя | восстановление скрытых каталогов (дерево);
[F3] #просмотр документов | скрыть каталоги под курсором (дерево);
[F4] #правка документов | ASCII/HEX кодировка;
[F5] #копирование | переход к строке по номеру;
[F6] #переименование/перемещение;
[F7] #создание каталога;
[F8] #удаление | переключение режимов Raw/Parsed;
[F9] #вызов верхнего меню | форматированный/не форматированный текст;
[F10]|[ESC]|[q] #выход.
• HotKeys - НАВИГАЦИЯ:
[Ctrl+n] #перемещение курсора к предыдущей строке;
[Ctrl+p] #перемещение курсора к следующей строке;
[Alt+Shift+<] #перемещение курсора на самый первый файл;
[Alt+Shift+>] #перемещение курсора на самый последний файл;
[Alt+v] #перемещение курсора на одну страницу вверх;
[Alt+g] #перемещение курсора на верх текущего экрана;
[Alt+r] #перемещение курсора на середину текущего экрана;
[Alt+j] #перемещение курсора в низ текущего экрана;
[Alt+y] #перемещение к предыдущему каталогу из истории;
[Alt+u] #перемещение к следующему каталогу из истории;
• HotKeys - ПОИСК ФАЙЛОВ И ДИРЕКТОРИЙ:
[Ctrl+s] #быстрый поиск (двойное нажатие активирует предыдущий шаблон);
[Alt+s] #быстрый поиск (двойное нажатие активирует предыдущий шаблон);
[Alt+c] #быстрая смена каталогов (ручной набор);
[Alt+Shift+/] #поиск файла;
• HotKeys - КАТАЛОГИ БЫСТРОГО ДОСТУПА:
[Ctrl+x h] #добавить каталог в каталоги быстрого доступа;
[Ctrl+\] #вывод каталогов быстрого доступа;
• HotKeys - ОПЕРАЦИИ С ПАНЕЛЯМИ:
[Ctrl+x i] #перевод пассивной панели в информационный режим;
[Ctrl+x q] #перевод пассивной панели в режим быстрого просмотра;
[Ctrl+x d] #сравнить содержимое двух каталогов;
[Ctrl+i] #переключение панелей;
[Ctrl+o] #отключить панели;
[Ctrl+u] #переставить панели;
[Alt+i] #зеркалировать панели;
[Alt+o] #зеркалировать директорию под курсором с продвижением вперед;
[Alt+t] #циклическое переключение режимов отображения списков;
[Alt+e] #переключить кодировку панелей;
[Alt+.] #показать/скрыть скрытые файлы;
[Alt+,] #вертикальное/горизонтальное разделение панелей;
• HotKeys - ОПЕРАЦИИ С ФАЙЛАМИ И ДИРЕКТОРИЯМИ:
[Ctrl+t] #выделение файла;
[Ctrl+x c] #chmod;
[Ctrl+x o] #chown;
[Ctrl+x l] #создание жесткой ссылки;
[Ctrl+x s] #создание абсолютной символической ссылки;
[Ctrl+x v] #создание относительной символической ссылки.
• HotKeys - КОМАНДНАЯ СТРОКА:
[Alt+Enter] #копировать название текущего объекта в cli;
[Alt+Tab] #автонабор в cli;
[Alt+h] #вывод меню истории команд cli;
[Alt+p] #перемещение по истории команд назад в cli;
[Alt+n] #перемещение по истории команд вперед в cli.
• HotKeys - РЕЖИМ ПРОСМОТРА ДОКУМЕНТОВ:
[Ctrl+f] #перейти к просмотру следующего файла в каталоге;
[Ctrl+b] #перейти к просмотру предыдущего файла в каталоге;
[Ctrl+s] #поиск вперед;
[Ctrl+r] #поиск назад;
* остальное почти как в less.
• HotKeys - РАЗНОЕ:
[Ctrl+x j] #управление фоновыми процессами;
[Ctrl+x !] #меню критерии панелизации.
==================================================================================
# ADM [terminal] - ТЕРМИНАЛЬНЫЙ МУЛЬТИПЛЕКСОР:
---------------------------------------------------------------------------------# (tmux) терминальный мультиплексор:
tmux attach-session #запуск зааттаченной терминальной сессии;
tmux attach-session -t sn #восстановление сессии sn;
tmux new-session -s sn -n wn -d / #запуск новой сессии sn, окна wn, дир. /;
tmux set -g status-position top #переместить строку состояния вверх;
tmux set -g status-bg green #изменить цвет строки состояния;
tmux set -g status off #выключить строку состояния;
tmux kill-server #закрыть все запущенные сессии.
• опции программы:
-2 #включить поддержку 256 цветов;
-C #включить режим контроля (-СС выключает echo);
-c cmd #выполнить команду cmd и выйти;
-f file #задать cfg файл (по умолчанию /etc/tmux.conf | ~/.tmux.conf);
-L socket-name #имя сокета (по умолчанию default в /tmp/tmux-UPID);
-l #использовать tmux как login-shell;
-S socket-name #задать путь и имя сокета (опция {-L} игнорируется);
-u #включить поддержку UTF-8;
-v #включить логирование (~/tmux-client-PID.log | ~/tmux-server-PID.log).
• HotKeys - СЕССИИ:
[Ctrl+b] #перейти в режим hotkeys;
[Ctrl+b ?] #вызов справки по командам;
[Ctrl+b :] #вызов командной строки;
[Ctrl+b d] #задетачить tmux (выход с сохранением сессий);
[Ctrl+b $] #переименовать сессию;
[Ctrl+b s] #переключение между сессиями.
• HotKeys - ОКНА:
[Ctrl+b c] #создать новое окно;
[Ctrl+b &] #закрыть текущее окно;
[Ctrl+b x] #закрыть текущее окно;
[Ctrl+b n] #переключиться на окно вправо;
[Ctrl+b p] #переключиться на окно влево;
[Ctrl+b 0-9] #выбор окна под соответствующим номером;
[Ctrl+b '] #выбор окна под номером x;
[Ctrl+b w] #выбор окна из списка;
[Ctrl+b l] #переход между двумя последними использованными окнами;
[Ctrl+b ,] #переименовать окно;
[Ctrl+b .] #переименовать номер окна.
• HotKeys - ФРЕЙМЫ:
[Ctrl+b "] #разделить текущее окно по горизонтали;
[Ctrl+b %] #разделить текущее окно по вертикали;
[Ctrl+b Space] #листать "слои" (маски расположения фреймов);
[Ctrl+b o] #переключиться на следующий фрейм;
[Ctrl+b ;] #циклическое переключение между двумя последними фреймами;
[Ctrl+b q] #показать индексы панелей;
[Ctrl+b q 1] #выбрать панель по индексу 1;
[Ctrl+b стрелки] #переключиться на фрейм вверх|вниз|влево|вправо;
[Ctrl+b {] #переместить фрейм вверх|влево (против ч.с.);
[Ctrl+b }] #переместить фрейм вправо|вниз (по ч.с.);
[Ctrl+b !] #переместить текущий фрейм в новое окно.
• HotKeys - ДРУГОЕ:
[Ctrl+b t] #показать часы (any key = выход);
[Ctrl+b r] #обновить клиент.
• cli - КОМАНДНАЯ СТРОКА:
:ls #просмотр запущенных сессий;
:lsw #просмотр запущенных окон;
:lsw -a #просмотр всех запущенных окон;
:lsp #просмотр запущенных фреймов;
:lsp -a #просмотр всех запущенных фреймов (вкл полноэкранные окна).
:new-session -s sn -n wn #запуск tmux с сессией sn, окном wn;
:attach-session -t sn #восстановление сессии sn;
:kill-session -t sn #закрыть сессию sn;
:kill-session -a #закрыть все сессии;
:kill-session -a -t sn #закрыть все сессии кроме sn.
:new-window -n wn #создать окно wn;
:last-window #переход к предыдущему окну;
:next-window #переход к следующему окну;
:split-window -h #разделить окно по горизонтали;
:split-window -v #разделить окно по вертикали;
:kill-window -t wn #закрыть окно wn
:kill-window -a #закрыть все окна;
:kill-window -a -t wn #закрыть все окна кроме wn;
:resize-pane -UDLR|xy N (%) #изменить размер текущего фрейма в UDLR|xy на N;
:resize-window -UDLR|xy N (%) #изменить размер текущего окна в UDLR|xy на N.
==================================================================================
# ADM [terminal] - РАЗНОЕ:
---------------------------------------------------------------------------------# (bc) калькулятор:
bc -lq #запуск калькулятора без шапки.
• перевод из различных систем счисления:
ibase=2;obase=A;101010 #перевод из двоичной системы счисления в десятеричную;
ibase=2;obase=B;101010 #перевод из двоичной системы счисления в ?;
ibase=2;obase=C;101010 #перевод из двоичной системы счисления в шеснадцетеричную;
ibase=A;obase=2;42 #перевод из десятеричной системы счисления в двоичную;
ibase=B;obase=2;39 #перевод из ? системы счисления в двоичную;
ibase=C;obase=2;36 #перевод из шеснадцетеричной системы счисления в двоичную;
ibase=C;obase=A;36 #перевод из шеснадцетеричной системы счисления в десятеричную;
ibase=C;obase=B;36 #перевод из шеснадцетеричной системы счисления в ?;
ibase=C;obase=2;36 #перевод из шеснадцетеричной системы счисления в двоичную.
• опции программы:
?
-h #print this usage and exit;
?
-i #force interactive mode;
?
-l #use the predefined math routines;
-q #не выводить хэдер;
?
-s #non-standard bc constructs are errors;
?
-w #warn about non-standard bc constructs;
?
-v #print version information and exit.
---------------------------------------------------------------------------------# (dc) калькулятор:
dc #запуск калькулятора.
• опции программы:
?
-e EXPR #evaluate expression;
?
-f FILE #evaluate contents of file.
---------------------------------------------------------------------------------# (factor) разложить целое положительное число на множители:
factor 3579731 #разложить 3579731 на множители.
---------------------------------------------------------------------------------# погода:
curl wttr.in #вывод подробного прогноза погоды на три дня по текущей геолокации на английском;
curl 'wttr.in/Углич?0M&lang=ru' #вывод краткого прогноза погоды на один день на русском;
curl 'wttr.in/Углич?1M&lang=ru' #вывод подробного прогноза погоды на один день на русском;
...
curl 'wttr.in/Углич?3M&lang=ru' #вывод подробного прогноза погоды на три дня на русском.
---------------------------------------------------------------------------------# IP-info:
• мой IP:
curl http://smart-ip.net/myip #запрос своего внешнего IP-адреса;
curl icanhazip.com #запрос своего внешнего IP-адреса;
curl curlmyip.net #запрос своего внешнего IP-адреса;
curl ipecho.net/plain #запрос своего внешнего IP-адреса.
• IP-info:
curl ipinfo.io xxx.xxx.xxx.xxx #запрос информации о заданном IP-адресе.
---------------------------------------------------------------------------------# цифровой дождь:
cmatrix -bu8 #запуск в комфортном режиме.
---------------------------------------------------------------------------------# выбор терминала по умолчанию:
update-alternatives --config terminal-name
---------------------------------------------------------------------------------# (yes) автоматический ответ на запросы:
yes #вывод строки в бесконечном цикле.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ADM [GURB] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# GRUB (GRand Unified Bootloader) - РАЗНОВИДНОСТИ:
---------------------------------------------------------------------------------• GRUB (Legacy) #первая версия загрузчика GRUB:
/boot/grub/menu.lst #главный конфигурационный файл.
• GRUB2 #вторая версия загрузчика GRUB (полностью переписан с нуля):
* далее GRUB.
==================================================================================
# GRUB - ЭТАПЫ ЗАГРУЗКИ:
---------------------------------------------------------------------------------• BIOS > MBR|GPT > GRUB #загрузка системы с BIOS;
• UEFI > GPT > ESP > GRUB #загрузка системы с UEFI;
- MBR|GPT #содержит ссылку на загрузчик GRUB, или раздел ESP;
- ESP [EFI System Partition] #содержит bootx64.efi, или grubx64.efi;
- GRUB #основной загрузчик расположенный в /boot/grub/*.
==================================================================================
# GRUB - HOTKEYS:
---------------------------------------------------------------------------------• Up #листать меню вверх;
• Down #листать меню вниз;
• e #редактировать выбранный пункт меню:
[Ctrl]+[x] #выполнить запуск;
[Ctrl]+[c] #перейти в режим командной строки;
[Escape] #перейти в предыдущее меню;
[Tab] #автодополнение.
• c #перейти в режим командной строки.
==================================================================================
# GRUB - КОНСОЛЬ ЗАГРУЗЧИКА:
---------------------------------------------------------------------------------• список команд режима командной строки:
background_image #изменить фоновое изображение:
background_image /path/to/imagename.jpg
set color_normal=black/black #сделать консоль прозрачной (обязательно).
boot #производит загрузку указанного ядра;
cat #вывод содержимого заданного файла:
chainloader #передать управление загрузкой по цепочке другому загрузчику (загрузчик ищется на заданном в качестве root разделе):
chainloader /path/to/file
chainloader +1 #для windows;
configfile #загрузить другой файл конфигурации с другим меню вместо текущего "grub.cfg":
configfile /path/to/config
find #произвести поиск файла во всех смонтированных логических разделах;
halt #выключить ПК;
help #вывод всех доступных команд:
help r #вывод команд начинающимся на "r";
help search #вывод справки по команде "search".
initrd #загрузить заданный initrd-образ (подготавливает образ initrd для загрузки ядра):
initrd /boot/initrd.img-2.6.32-020632-generic
* версия initrd должна соответствовать версии загружаемого ядра!
insmod #загрузить модуль из папки с модулями GRUB;
kernel #загрузить ядро системы с корневого устройства;
linux #загрузить заданное ядро:
linux файл_ядра опция1=значение опция2 опция3
linux /boot/vmlinuz-2.6.32-020632-generic root=/dev/sda5 single
load_env -f file #загрузить переменные окружения из файла:
-f #переопределяет местоположение блока среды по умолчанию.
ls #вывод списка БУ, информации о заданном разделе и содержимого директорий:
ls
ls /boot/grub
ls (hd0,1)
lsfonts #вывод списка загруженных шрифтов;
menuentry #позволяет создать пункт меню;
play #вывод звука:
play file.mid
play темп [высота1 длина1] [высота2 длина2]
play 300 100 2 200 2 300 2 400 2 500 2 400 2 300 2 200 2 100 2 0 0 100 2 200 2 300 2 400 2 500 2 400 2 300 2 200 2 100 2 0 0
reboot #перезагрузить ПК;
root #задать раздел для использования в качестве корневого:
root (hd0,5)
или
set root (hd0,5)
save_env #сохранить переменные среды;
search #установить значение переменной выполнив поиск по заданным параметрам (UUID|метке|заданному файлу):
-u #поиск раздела по UUID;
-l #поиск по метке раздела;
-f #поиск по указанному файлу;
-n #не проверять флоппи-дисковод;
-s #установить найденный раздел в качестве значения заданной переменной.
search -u uuid_нужного_раздела
search -f /grub/grub.cfg
search -l C_drive -s
set #установить значение переменной окружения:
set переменная=значение
set color_normal=magenta/green #изменение цвера текста и фона в консоли;
set color_highlight=light-blue/black #изменение цвера текста и фона в консоли.
terminal_output.console #переключиться на обычную черно-белую цветовую гамму;
testspeed #протестировать скорость чтения файла с диска:
testspeed [-s РАЗМЕР] [путь до файла]
-s N #объём данных каждой операции чтения.
time #измерить время выполнения любой команды:
time [команда] [аргументы]
tr #заменить буквы в тексте:
tr [опции] [что] [на что изменить] [текст]
-U #перевести все символы в верхний регистр;
-D #перевести все символы в нижний регистр;
--set=ЗНАЧЕНИЕ #установить полученный результат в переменную ЗНАЧЕНИЕ.
sleep #заморозить grub на указанное количество секунд:
sleep [КЛЮЧИ] [СЕКУНДЫ]
-v #вывод отсчёта секунд;
-i #разрешить прерывание сна кнопкой [ESC].
vbeinfo #вывод списка поддерживаемых видеорежимов.
---------------------------------------------------------------------------------• соответствие дисков и разделов:
sda = hd0
sda1 = hd0,1
sda2 = hd0,2
sdb = hd1
sdb1 = hd1,1
sdb2 = hd1,2
..
---------------------------------------------------------------------------------• загрузка Linux (пример 1):
ls #вывод карты БУ;
set root=(hd0,1) #задать раздел на котором расположена ОС Linux;
linux /boot/vmlinuz-2.6.32-020632rc6-generic root=/dev/sda1 #задаль ядро для загрузки ОС;
или
linux /boot/vmlinuz root=/dev/sda1 #задаль ядро для загрузки ОС;
initrd /boot/initrd.img-2.6.32-020632rc6-generic #возможно пропустить данную команду;
или
initrd /boot/initrd #возможно пропустить данную команду;
boot #выполнить загрузку ОС.
---------------------------------------------------------------------------------• загрузка Linux (пример 2):
ls (hd0,1)/ #устанавливается раздел с установленным загрузчиком;
set root=(hd0,1) #установка пути корневой файловой системы;
set prefix=(hd0,1)/boot/grub #установка пути к модулям загрузчика;
insmod /boot/grub/linux.mod #загрузка модуля загрузки linux;
linux /vmlinuz root=/dev/sda1 ro #установка расположения модуля ядра linux;
initrd /initrd.img #установка стартовой файловой системы ядра linux;
boot #загрузка установленной linux-системы.
---------------------------------------------------------------------------------• загрузка Windows:
set root=(hd0,1) #задать раздел на котором расположена ОС Windows;
chainloader +1
boot #выполнить загрузку ОС.
---------------------------------------------------------------------------------• даунгрейд до grub-legacy (предыдущей версии):
advanced
==================================================================================
# GRUB - КОМАНДЫ GRUB:
---------------------------------------------------------------------------------# (grub2-bios-setup) #Set up images to boot from a device:
grub2-bios-setup
• опции программы:
---------------------------------------------------------------------------------# (grub2-editenv) #редактирования блока окружения:
grub2-editenv
grub-editenv set recordfail=0 #задать таймаут задержки загрузки recordfail;
grub-editenv unset recordfail #сбросить таймаут задержки загрузки recordfail.
• опции программы:
---------------------------------------------------------------------------------# (grub2-file) #Check if FILE is of specified type:
grub2-file
• опции программы:
---------------------------------------------------------------------------------# (grub2-fstest) #unknown subject:
grub2-fstest
• опции программы:
---------------------------------------------------------------------------------# (grub2-get-kernel-settings) #Evaluate the system's kernel installation settings for use while making a grub configuration file:
grub2-get-kernel-settings
• опции программы:
---------------------------------------------------------------------------------# (grub2-glue-efi) #Create an Apple fat EFI binary:
grub2-glue-efi
• опции программы:
---------------------------------------------------------------------------------# (grub2-install) #установка загрузчика (запись производится в MBR или GPT):
grub2-install /dev/sdN #установить загрузчик на диск sdN;
grub2-install --recheck /dev/sdN #установить загрузчик на диск sdN с перезаписью карты БУ.
• опции программы:
--boot-directory #использовать другой каталог для файлов Grub;
--bootloader-id #имя загрузчика в меню EFI;
--compress #сжать файлы загрузчика;
--core-compress #сжимать образ, загружаемый в MBR;
--efi-directory #использовать системный раздел EFI;
--force #установить несмотря на ошибки;
--install-modules=модули #установить только эти модули;
--modules #записать эти модули в MBR;
--recheck #пересоздатдь карту БУ;
--removable #установка grub на флешку (только EFI);
--version #вывод версии загрузчика.
---------------------------------------------------------------------------------# (grub2-kbdcomp) #Generate a GRUB keyboard layout file:
grub2-kbdcomp
• опции программы:
---------------------------------------------------------------------------------# (grub2-macbless) #Mac-style bless utility for HFS or HFS+:
grub2-macbless
• опции программы:
---------------------------------------------------------------------------------# (grub2-menulst2cfg) #Convert a configuration file from GRUB 0.xx to GRUB 2.xx format:
grub2-menulst2cfg
• опции программы:
---------------------------------------------------------------------------------# (grub2-mkconfig) #создание главного конфигурационного файла загрузчика из скриптов /etc/grub.d/* и /etc/default/grub:
grub2-mkconfig -o /boot/grub/grub.cfg
• опции программы:
-o file #сохранить grub.cfg в file.
• примеры названия ядер, которые GRUB может определить:
/boot/vmlinuz-3.4.3
/boot/kernel-2.6.39-gentoo
/boot/kernel-genkernel-x86_64-3.17.1-gentoo-r1
• примеры initramfs имён, которые GRUB может определить:
/boot/initrd.img-3.4.3
/boot/initrd-3.4.3.img
/boot/initrd-3.4.3.gz
/boot/initrd-3.4.3
/boot/initramfs-3.4.3.img
/boot/initramfs-genkernel-3.4.3-gentoo
/boot/initramfs-genkernel-x86_64-2.6.39-gentoo
---------------------------------------------------------------------------------# (grub2-mkfont) #Convert common font file formats into the PF2 format:
grub2-mkfont
• опции программы:
---------------------------------------------------------------------------------# (grub2-mkimage) #Make a bootable GRUB image:
grub2-mkimage
• опции программы:
---------------------------------------------------------------------------------# (grub2-mklayout) #Generate a GRUB keyboard layout file:
grub2-mklayout
• опции программы:
---------------------------------------------------------------------------------# (grub2-mknetdir) #Prepare a GRUB netboot directory:
grub2-mknetdir
• опции программы:
---------------------------------------------------------------------------------# (grub2-mkpasswd-pbkdf2) #Generate a PBKDF2 password hash:
grub2-mkpasswd-pbkdf2
• опции программы:
---------------------------------------------------------------------------------# (grub2-mkrelpath) #Generate a relative GRUB path given an OS path:
grub2-mkrelpath
• опции программы:
---------------------------------------------------------------------------------# (grub2-mkrescue) #Generate a GRUB rescue image using GNU Xorriso:
grub2-mkrescue
• опции программы:
---------------------------------------------------------------------------------# (grub2-mkstandalone) #Generate a standalone image in the selected format:
grub2-mkstandalone
• опции программы:
---------------------------------------------------------------------------------# (grub2-probe) #Probe device information for a given path:
grub2-probe
• опции программы:
---------------------------------------------------------------------------------# (grub2-reboot) #выбор пункта загрузочного меню (только для следующей загрузки):
grub2-reboot 1 #однократно выбирает второй пункт меню по-умолчанию.
• опции программы:
---------------------------------------------------------------------------------# (grub2-render-label) #Render an Apple disk label:
grub2-render-label
• опции программы:
---------------------------------------------------------------------------------# (grub2-rpm-sort) #Sort input according to RPM version compare:
grub2-rpm-sort
• опции программы:
---------------------------------------------------------------------------------# (grub2-script-check) #Check GRUB configuration file for syntax errors:
grub2-script-check
• опции программы:
---------------------------------------------------------------------------------# (grub2-set-bootflag) #Set a bootflag in the GRUB environment block:
grub2-set-bootflag
• опции программы:
---------------------------------------------------------------------------------# (grub2-set-default) #выбор пункта загрузочного меню (на постоянной основе):
grub2-set-default 0 выбирает на постоянной основе первый пункт меню по-умолчанию.
• опции программы:
---------------------------------------------------------------------------------# (grub2-set-password) #Generate the user.cfg file containing the hashed grub bootloader password:
grub2-set-password
• опции программы:
---------------------------------------------------------------------------------# (grub2-setpassword) #Generate the user.cfg file containing the hashed grub bootloader password:
grub2-setpassword
• опции программы:
---------------------------------------------------------------------------------# (grub2-switch-to-blscfg) #Switch to using BLS config files:
grub2-switch-to-blscfg
• опции программы:
---------------------------------------------------------------------------------# (grub2-syslinux2cfg) #Transform a syslinux config file into a GRUB config:
grub2-syslinux2cfg
• опции программы:
---------------------------------------------------------------------------------# (grubby) #command line tool for configuring grub and zipl:
grubby
• опции программы:
---------------------------------------------------------------------------------# (update-grub) #обновление загрузчика:
update-grub
• опции программы:
==================================================================================
# GRUB - КОНФИГУРАЦИОННЫЕ ФАЙЛЫ:
---------------------------------------------------------------------------------/boot/grub/custom.cfg #дополнительное меню загрузки:
have_grubenv=true
load_env
set default=0 #задаёт пункт меню по умолчанию (номер|точное название);
set timeout=2 #таймаут меню (-1 для отключения таймера);
set gfxmode=800x600x32,800x600x24,800x600 #разрешение экрана;
insmod ext2
search -u 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 -s
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else terminal gfxterm; fi
insmod png
background_image /usr/share/images/grub/yellow.png #фоновое изображение (разрешение картинки должно соответствовать заданному разрешению экрана);
set color_normal=black/black
set menu_color_normal=green/light-blue #цвет пунктов меню и фон прямоугольника, в котором они находятся;
set menu_color_highlight=red/blue #цвет/фон выделенного пункта меню;
menuentry "9.10 @ 2.6.32" {
search -u 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 -s
linux /boot/vmlinuz-2.6.32-020632-generic root=UUID=0e717c2a-24bd-4abe-acfe-ecf98fc814f8 ro quiet splash
initrd /boot/initrd.img-2.6.32-020632-generic
}
menuentry "9.10 @ 2.6.32 (recovery)" {
search -u 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 -s
linux /boot/vmlinuz-2.6.32-020632-generic root=UUID=0e717c2a-24bd-4abe-acfe-ecf98fc814f8 ro single
initrd /boot/initrd.img-2.6.32-020632-generic
}
menuentry "windooz"{
search -u AC9C75E59C75AA8A -s
chainloader +1
}
---------------------------------------------------------------------------------/boot/grub/grub.cfg #главный конфигурационный файл GRUB версии 2;
---------------------------------------------------------------------------------/boot/grub/grubenv #блок переменных среды загрузчика и записи информации (1024-байтовый файл);
---------------------------------------------------------------------------------/boot/grub/menu.lst #главный конфигурационный файл GRUB версии 1;
---------------------------------------------------------------------------------/etc/default/grub #файл настроек debian (изменения вступают в силу после update-grub):
GRUB_BACKGROUND="/boot/grub/bg.png" #задать фоновое изображение;
GRUB_BADRAM #задать адреса оперативной памяти, которые не нужно использовать;
GRUB_CMDLINE_LINUX="[ |param1 paramN]" #задаёт параметры для всех ядер, как обычных, так и режима восстановления;
"" #параметры загрузки ядра отсутствуют;
"param1 paramN" #задать параметры загрузки ядра;
"init=/usr/lib/systemd/systemd" #загрузка systemd.
GRUB_CMDLINE_LINUX_DEFAULT="[ |quiet splash|quiet splash param1 paramN]" #задаёт параметры для загрузки обычного ядра;
"" #показ текстовой информации при запуске системы;
"quiet" #тихая загрузка;
"quiet splash" #показ графической заставки при запуске системы вместо текстовой информации;
"quiet splash param1 paramN" #задать необходимые параметры.
GRUB_CMDLINE_LINUX_RECOVERY #задаёт опции ядра, только для режима восстановления;
GRUB_DEFAULT=[0|1|2|..|saved|"OSName"] #определяет очерёдность загрузки:
0 #выбор первого пункта загрузочного меню (по умолчанию);
1 #выбор второго пункта загрузочного меню;
saved #будет выбран пункт, который был загружен в прошлый раз (при наличии GRUB_SAVEDEFAULT=true);
"Ubuntu, Linux 2.6.32-020632rc6-generic" #возможно указание точного наименования ОС.
GRUB_DISABLE_LINUX_RECOVERY=[true|false] #не включать|включить в меню пункты восстановления;
GRUB_DISABLE_LINUX_UUID=[true|false] #передача параметра системе "root=UUID=xxx";
GRUB_DISABLE_OS_PROBER="[true|false]" #не искать|искать другие операционные системы (Windows|Linux|OSX|Hurd|..);
GRUB_DISABLE_RECOVERY #не включать в меню пункты восстановления;
?
GRUB_DISABLE_SUBMENU="[y|n]" #задействовать|скрыть подменю;
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` #название дистрибутива в загрузочном меню (Ubuntu|Xubuntu|Debian|..);
GRUB_FONT="/boot/grub/fonts/name.pf2" #использование пользовательского шрифта, конвертированного с помощью утилиты grub-mkfont;
GRUB_GFXMODE=640x480 #разрешение графического меню:
[640x480|800x600|1024x768|1600×1200] #для соотношения сторон 4:3;
[640x400|800x500|1024x640|1280x800|1680x1050] #для соотношения сторон 16:10;
[NxN{x16|x24|x32|..|x480}] #добавить битность изображения;
[1280x1024x16,800x600x24,640x480] #перечислить все допустимые разрешения.
* увидеть все доступные разрешения из меню загрузчика можно путём нажатия [с] + >vbeinfo;
* если строка закомментирована или выбранное разрешение недоступно, загрузчик использует настройки по умолчанию.
GRUB_GFXPAYLOAD_LINUX=keep #сохранить разрешение после загрузки ядра;
GRUB_HIDDEN_TIMEOUT=N #вывод скрытого загрузочного меню (можно использовать только в случае одной ОС Linux):
[Escape] #переход в скрытое меню при отображении таймера;
[Shift] #переход в скрытое меню при отсутствии таймера (удерживать при загрузке).
GRUB_HIDDEN_TIMEOUT_QUIET=[true|false] #отображение таймера скрытого загрузочного меню:
true #таймер показан не будет;
false #таймер показан будет.
GRUB_RECORDFAIL_TIMEOUT=0 #таймаут задержки загрузки recordfail, автоматически выставляющийся после предыдущей неудачной попытки загрузки;
GRUB_SAVEDEFAULT=true #при загрузке будет выбран пункт, который был загружен в прошлый раз (при наличии GRUB_DEFAULT=saved);
GRUB_TERMINAL=[console|gfxterm] #отключить|задействовать графический терминал:
console #только для текстового режима;
gfxterm #режим с поддержкой графики.
GRUB_THEME #задать тему GRUB;
GRUB_TIMEOUT="[-1|0|1|..|N]" #время отобразения загрузочного меню [s]:
-1 #меню отображается бесконечно (до выбора пункта меню в ручную);
0 #меню не отображается;
3 #меню отображается 3 секунды.
WALLPAPER="/path/to/image/imagename.jpg" #задать фоновое изображение.
---------------------------------------------------------------------------------/etc/grub.d #скрипты загрузчика:
00_header #настройки загрузчика по умолчанию;
05_debian_theme #задаёт фоновое изображение:
COLOR_NORMAL=[color1/color2] #цвет пункта меню (не выделенного):
color1 #цвет текста;
color1 #цвет фона строки;
black/black #даёт прозрачный фон.
COLOR_HIGHLIGHT=[color1/color2] #цвет выделенного пункта меню.
color1 #цвет текста;
color1 #цвет фона строки;
* цвета:
black #черный;
blue #синий;
brown #коричневый;
cyan #голубой;
dark-gray #темно-серый;
green #зеленый;
light-cyan #светло-голубой;
light-blue #светло-синий;
light-green #ярко-зеленый;
light-gray #серый;
light-magenta #розовый;
light-red #светло-красный;
magenta #пурпурный;
red #красный;
white #белый;
yellow #желтый.
WALLPAPER="/path/to/bg.png" #задать фоновое изображение.
10_linux #поиск linux-ядер;
20_linux_xen #;
30_os-prober #поиск ОС на других разделах;
40_custom #позволяет добавлять свои пункты загрузки (должен заканчиваться пустой строкой):
menuentry "НАЗВАНИЕ МЕНЮ"{
configfile /boot/grub/custom.cfg
}
41_custom #.
---------------------------------------------------------------------------------/etc/sysconfig/grub #файл настроек fedora (изменения вступают в силу после update-grub).
==================================================================================
# GRUB - ВОССТАНОВЛЕНИЕ ЗАГРУЗЧИКА С ДВУМЯ УСТАНОВЛЕННЫМИ ОС [Win|Lin]:
---------------------------------------------------------------------------------mount /dev/sda1 /mnt #корневой раздел linux;
mount /dev/sdb1 /mnt/boot #если раздел boot расположен отдельно;
mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /run /mnt/run
mount --bind /tmp /mnt/tmp
chroot /mnt
grub2-install /dev/sda #если загрузчик убит;
?
grub2-install --target=i386-pc /dev/sda #если загрузчик убит (для режима Legacy);
os-prober #если при загрузке пункт Windows отсутствует;
update-grub
exit
init 6
?
* если используется EFI, может потребоваться восстановить загрузчик в ESP-разделе (EFI System Partition), который монтируется в /boot/efi:
?
mount -a #смонтировать /boot/efi;
?
grub-efi-autoupdate
==================================================================================
# GRUB - УСТАНОВКА ПАРОЛЯ НА ЗАГРУЗЧИК:
---------------------------------------------------------------------------------grub-mkpasswd-pbkdf2 #генерация пароля;
echo "Setting password protection..." >&2 #создание и редактирование файла паролей /etc/grub.d/05_password;
cat << EOF
set superusers="username"
password_pbkdf2 username
grub.pbkdf2.sha512.10000.783FF454C75813562C035726A694A56B4E3B010B7816A3F903D264255B6BDAEBD61C6DC67020C3A09D400B28E68CF682355CB1EA99AF0287207AFDC2A01D3D5B.C097CD29EC739953EE1A747F7
C2CA7C75DA8450DE4270CA609DB02A83A979051EDD2507ED372FC7A33C11EBDE23BF3A67C60C74C7F2753BF1359325468EF6DB7
EOF
chmod u+x,go-rw /etc/grub.d/05_password #задать DAC права на файл 05_password;
vi /etc/default/grub #редактирование файла настроек:
GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=0
vi /etc/grub.d/10_linux #установка пароля на пункты меню (добавить опцию --unrestricted к тому пункту меню, на который необходимо установить пароль):
fi
echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option
'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
else
echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} --unrestricted \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
fi
echo "recordfail" | sed "s/^/$submenu_indentation/"
update-grub2 #применение изменений в конфигурации GRUB;
reboot #перезагрузка.
---------------------------------------------------------------------------------• Итого:
- на загрузчик установлен пароль;
- linux грузится без запросов пароля на стадии загрузчика GRUB;
- меню GRUB не отображается;
- попасть в меню GRUB можно удерживая [Shift] при загрузке;
- для выбора любого пункта меню, отличного от дефолтной загрузки, потребуется ввести имя superuser'а и пароль.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - TXT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# TXT - ТЕКСТОВЫЙ РЕДАКТОР VIM:
---------------------------------------------------------------------------------# (vi|vim) консольный текстовый редактор:
vi file #открыть файл для редактирования.
• опции программы:
+ #поместить курсор на последнюю строку;
+45 #поместить курсор на строку 45;
+/шаблон #курсор будет помещён в начало строки с первым совпадением;
-d #режим diff для поиска различий (указывается два или три файла);
-o3 #открыть 3 фрейма, разделённых по горизонтали;
-O3 #открыть 3 фрейма, разделённых по вертикали;
-p5 #открыть 5 вкладок;
-r #вывести список своп-файлов для восстановления после сбоя;
-r файл.swp #выбор файла для восстановления после сбоя;
-- #окончание ключей.
• HotKeys - БАЗОВЫЕ КОМБИНАЦИИ:
[esc] #возврат в режим hotkeys из режима набора и отмена команды;
[del] #прерывание и выход из режима;
[ZZ] #сохранить изменения и завершить работу редактора;
[ZQ] #моментальный выход без сохранения и подтверждения;
[Ctrl]+[G] #показать информацию о текущем файле и строке;
[K] #вызов справки (help).
• HotKeys - УДАЛЕНИЕ И ИСПРАВЛЕНИЯ В ХОДЕ НАБОРА ТЕКСТА И ПОСЛЕ:
[Ctrl]+[H] #стереть последний набранный символ в ходе набора;
[Ctrl]+[W] #стереть последнее набранное слово в ходе набора;
[x] #удалить символ под курсором;
[X] #удалить символ слева от курсора.
• HotKeys - ОТМЕНА И ПОВТОР ДЕЙСТВИЙ:
[u] #отменить последние изменения (по истории изменений к началу);
[U] #восстановить текущую строку;
[Ctrl]+[R] #отмена отмены (по истории изменений к концу);
[.] #повторить последнее изменение.
• HotKeys - НАВИГАЦИЯ ПО ТЕКСТУ (посимвольное перемещение курсора):
[k] #перемещение курсора вверх;
[j] #перемещение курсора вниз;
[h] #перемещение курсора влево;
[l] #перемещение курсора вправо;
[0] #перемещение курсора в начало строки;
[$] #перемещение курсора в конец строки;
[^] #перемещение курсора на первый непробельный символ в строке;
[+] #перемещение курсора на следующую строку, первый непробельный символ;
[Enter] #перемещение курсора на след. строку, первый непробельный символ;
[-] #перемещение курсора на предыдущую строку, первый непробельный символ;
[H] #перемещение курсора на верхнюю строку экрана;
•
•
•
•
•
•
[L] #перемещение курсора на последнюю строку экрана;
[M] #перемещение курсора на среднюю строку экрана.
HotKeys - НАВИГАЦИЯ ПО ТЕКСТУ (с переходом по словам, предложениям, абзацам, ...):
[w] #на слово вперед в начало слова;
[b] #на слово назад в начало слова;
[e] #на слово вперед в конец слова;
[W] #вперед на слово, отделенное пробелом;
[B] #назад на слово, отделенное пробелом;
[E] #в конец слова, отделенного пробелом;
[(] #вверх в начало предыдущего предложения;
[)] #вниз в начало следующего предложения;
[{] #перемещение курсора вверх к предыдущему абзацу;
[}] #перемещение курсора вниз к следующему абзацу;
[gg] #перемещение курсора в начало первой строки файла;
[[[] #перемещение курсора в начало первой строки файла;
[Shift]+[G] #перемещение курсора в начало последней строки файла;
[]]] #перемещение курсора в начало последней строки файла;
45 [Shift]+[G] #перемещение курсора в начало строки 45.
HotKeys - НАВИГАЦИЯ ПО ТЕКСТУ (пролистывание текста):
[Ctrl]+[F] #перемещение на экран вперед;
[Ctrl]+[B] #перемещение на экран назад;
[Ctrl]+[D] #прокрутить вниз пол-экрана;
[Ctrl]+[U] #прокрутить вверх пол-экрана;
[Ctrl]+[E] #прокрутить окно вниз на 1 строку;
[Ctrl]+[Y] #прокрутить окно вверх на 1 строку.
HotKeys - ПЕРЕХОД В РЕЖИМ НАБОРА ТЕКСТА:
[i] #переход в режим набора текста левее курсора;
[a] #переход в режим набора текста правее курсора;
[I] #переход в режим набора текста в начало строки;
[A] #переход в режим набора текста в конец строки;
[o] #создать пустую строку под текущей и перейти к набору текста;
[O] #создать пустую строку НАД текущей и перейти к набору текста;
[r] #переход в режим замены текста для одного символа под курсором;
[R] #переход в режим замены текста под курсором и далее;
[s] #удалить символ под курсором и перейти к набору текста;
[S] #удалить всю строку целиком и перейти к набору текста;
[cc] #удалить всю строку целиком и перейти к набору текста;
[C] #удалить строку от курсора и перейти к набору текста;
[ch] #удалить символ перед курсором и прейти к набору текста;
[cl] #удалить символ под курсором и перейти к набору текста;
[cj] #удалить текущую строку и строку вниз и перейти к набору текста;
[ck] #удалить текущую строку и строку вверх и перейти к набору текста;
[ce] #удалить слово от курсора и перейти к набору текста;
[cw] #удалить слово от курсора и перейти к набору текста.
HotKeys - ОБЩИЕ ОПЕРАТОРЫ ПО РАБОТЕ С ТЕКСТОМ:
[v] #выделение;
[y] #копирование;
[d] #удаление;
[p] #вставка;
[c] #изменение;
[w] #слово;
[e] #слово;
[j] #строка;
[k] #строка;
[h] #символ;
[l] #символ.
HotKeys - ВЫДЕЛЕНИЕ НАБРАННОГО ТЕКСТА:
[v] #посимвольное выделение текста;
[V] #построчное выделение текста;
[Ctrl]+[V] #блочное выделение (применимо для таблиц);
[ggVG] #выделить весь текст.
HotKeys - ВСТАВКА СКОПИРОВАННОГО ТЕКСТА:
[p] #вставить текст после курсора;
[P] #вставить текст перед курсором;
[Ctrl]+[p] #вставка в режиме набора текста.
• HotKeys - РАБОТА С БУФЕРАМИ:
["ay] #копирование в буфер a;
["ad] #вырезание в буфер a;
["ap] #вставка из буфера a.
• HotKeys - ИЗМЕНЕНИЕ РЕГИСТРА СИМВОЛОВ, СЛОВ И СТРОК:
[~] #ИНВЕРТИРУЕТ верхний регистр одного символа;
[g~~] #ИНВЕРТИРОВАТЬ регистр всей строки;
[Vg~] #выделить построчно фрагмент и ИНВЕРТИРОВАТЬ его регистр;
[vg~] #выделить посимвольно фрагмент и ИНВЕРТИРОВАТЬ его регистр;
[gUl] #перевести символ в верхний регистр;
[gul] #перевести символ в нижний регистр;
[Vu] #выделить построчно фрагмент и перевести в нижний регистр;
[vu] #выделить посимвольно фрагмент и перевести в нижний регистр;
[VU] #выделить построчно фрагмент и перевести в верхний регистр;
[vU] #выделить посимвольно фрагмент и перевести в верхний регистр.
• HotKeys - ОПЕРАЦИИ С СИМВОЛОМ:
[dl] #удалить символ под курсором (x);
[dh] #удалить символ перед курсором; (X);
[cl] #удалить символ под курсором и перейти к набору текста (s);
[ch] #удалить символ перед курсором и перейти к набору текста;
[r] #замена одного символа под курсором;
[Ctrl]+[a] #увеличить число под курсором на единицу;
[Ctrl]+[x] #уменьшить число под курсором на единицу;
[3yl] #скопировать 3 символа.
• HotKeys - ОПЕРАЦИИ СО СЛОВОМ:
[cw] #удаляет часть слова от курсора вправо и переводит в режим правки;
[ce] #удаляет часть слова от курсора вправо и переводит в режим правки;
[cb] #удаляет часть слова от курсора влево и переводит в режим правки;
[dw] #удалить часть слова от курсора до конца, включая последующий пробел;
[de] #удалить часть слова от курсора до конца, не включая последующий пробел;
[db] #удалить часть слова до курсора, не включая последующий пробел;
[d2w] #удаление двух слов подряд с пробелом на конце;
[d2e] #удаление двух слов подряд без пробела на конце;
[d2b] #удаление двух предыдущих слов перед курсором;
[yw] #копирует часть слова от позиции курсора до конца вместе с пробелом;
[ye] #копирует часть слова от позиции курсора до конца без пробела;
[yb] #копирует часть слова перед курсором без пробела.
• HotKeys - ОПЕРАЦИИ СО СТРОКОЙ:
[C] #переписать от курсора до конца строки (c$);
[S] #переписать строку полностью (cc);
[3S] #переписать 3 строки полностью;
[D] #удалить от курсора до конца строки (d$);
[d^] #удалить от курсора до начала строки;
[dd] #удаление строки полностью;
[5dd] #удалить 5 строк от курсора вниз;
[5D] #удалить 5 строк от курсора вниз;
[d5d] #удалить 5 строк от курсора вниз;
[J] #соединить строки в одну (удалить перевод на новую строку);
[Y] #скопировать строку в буфер (yy);
[<<] #сдвиг всей строки влево;
[>>] #сдвиг всей строки вправо.
• HotKeys - АВТОДОПОЛНЕНИЕ ТЕКСТА ИЗ УЖЕ НАБРАННОГО:
[Ctrl]+[n] #листать буфер автодополнения вниз;
[Ctrl]+[p] #листать буфер автодополнения вверх.
• HotKeys - ПОИСК:
[*] #переместить курсор на следующее слово, такое же, как под курсором;
[#] #переместить курсор на предыдущее слово, такое же, как под курсором;
[f]+[symbol] #переместить курсор на следующий symbol внутри строки;
[F]+[symbol] #переместить курсор на предыдущий symbol внутри строки;
[t]+[symbol] #переместить курсор слева от следующего symbol внутри строки;
[T]+[symbol] #переместить курсор справа от предыдущего symbol внутри строки;
[/шаблон] #поиск текста "шаблон" вперёд;
[?шаблон] #поиск текста "шаблон" назад;
•
•
•
•
•
•
•
•
[n] #следующее найденное совпадение;
[N] #предыдущее найденное совпадение;
[/шаблон/+n] #n-ная строка после шаблона;
[?шаблон?-n] #n-ная строка перед шаблоном;
[Ctrl+o] #вернуться туда, откуда начали поиск (назад);
[Ctrl+i] #вернуться обратно (назад в будущее);
[%] #поиск парных скобок: (), [] или {};
[/\<sTep\>] #поиск абсолютного совпадения со sTep;
[/\d] #поиск любой цифры (0-9);
[/\d\+] #поиск любого числа (0x-9x).
HotKeys - МЕТКИ (маркеры) И ВОЗВРАТ К НИМ:
[mx] #пометить текущую позицию однобайтовой буквой нижнего регистра x;
[`x] #переместить курсор на метку x;
['x] #переместить курсор на первый непробельный символ в строке, помеченной буквой x;
[``] #переместить курсор на предыдущий контекст.
HotKeys - ВКЛАДКИ (табы):
[gt] #перейти на следующую вкладку;
[gT] #перейти на предыдущую вкладку.
HotKeys - ФРЕЙМЫ:
[Ctrl]+[W] [s] #разбить окно/фрейм по горизонтали;
[Ctrl]+[W] [v] #разбить окно/фрейм по вертикали;
[Ctrl]+[W] [j] #переместиться в нижний фрейм;
[Ctrl]+[W] [k] #переместиться в верхний фрейм;
[Ctrl]+[W] [h] #переместиться в левый фрейм;
[Ctrl]+[W] [l] #переместиться в правый фрейм;
[Ctrl]+[W] [w] #циклическое переключение между фреймами;
[Ctrl]+[W] [r] #поменять фреймы местами;
[Ctrl]+[W] [+] #увеличить высоту текущего фрейма;
[Ctrl]+[W] [-] #уменьшить высоту текущего фрейма;
[Ctrl]+[W] [>] #сдвинуть границу текущего фрейма вправо;
[Ctrl]+[W] [<] #сдвинуть границу текущего фрейма влево;
[Ctrl]+[W] [_] #развернуть текущий фрейм во весь экран;
[Ctrl]+[W] [=] #сделать фреймы равного размера;
[Ctrl]+[W] [c] #закрыть фрейм;
[Ctrl]+[W] [o] #закрыть все фреймы.
HotKeys - ПЕРЕРИСОВКА ЭКРАНА:
[Ctrl]+[L] #очистить и перерисовать окно.
HotKeys - МАКРОСЫ #ЗАПИСЬ ПОСЛЕДОВАТЕЛЬНОСТИ ДЕЙСТВИЙ:
[qa] #начало записи макроса;
[q] #окончание записи макроса;
[@a] #повторение записанного макроса.
cli - ПЕРЕХОД В КОМАНДНЫЙ РЕЖИМ:
:
cli - РАБОТА С ФАЙЛАМИ:
:ene #создать новый файл;
:q #выход;
:q! #выход игнорируя внесенные изменения;
:x #выход с сохранением изменений;
:w #сохранить внесенные изменения в текущий файл;
:wa #сохранить изменения во всех файлах;
:wq #выход с сохранением в текущего файла;
:w! #принудительное сохранение в текущем readonly файле;
:wq! #принудительное сохранение в текущем readonly файле с выходом;
:w newfile #сохранить изменения в newfile;
:w! newfile #принудительно перезаписать newfile;
:e file #редактировать file;
:e + file #редактировать file начиная с последней строки;
:e +n file #редактировать file начиная со строки номер n;
:e ++enc=CP1251 #смена кодировки файла;
:ls #просмотр списка открытых файлов (работа с несколькими документами);
:b2 #переключение на второй файл (работа с несколькими документами);
:bd3 #закрыть третий файл (работа с несколькими документами).
cli - РАЗЛИЧНЫЕ КОМАНДЫ:
:!cmd #выполнить внешнюю cmd, а затем вернуться;
• cli
• cli
• Cli
• cli
• cli
• cli
• cli
:n #переход к строке n;
:reg #показать содержимое всех буферов;
:'<,'>w file #сохранение выделенного фрагмента;
:center #центрирование текущей строки (заголовка);
:left #смещение к левому краю текущей строки;
:right #смещение к правому краю текущей строки.
- СОХРАНЕНИЕ ПРИ ОТСУТСТВИИ ПРАВ:
:w !sudo tee %
- ВСТАВКА:
:r file #вставить содержимое файла file в позицию ниже курсора;
:r !ls #вставить вывод внешней команды ls.
- (sed) ВСТРОЕННЫЙ ТЕКСТОВЫЙ РЕДАКТОР:
:%s/old/new/gc #поиск и замена во всём файле с подтверждением;
:30,90s/old/new/g #поиск и замена с 50й по 100ю строки;
:%s/^\(.*\)\n\1$/\1/ #удалить строки, повторяющиеся дважды;
:%s/\(old\) \(new\)/\2 \1/g #замена old new на new old;
# где:
:s/ #текущая строка;
:30,90s/ #диапазон строк с 30й по 90ую;
:%s/ #весь файл;
g #во всей строке;
c #с подтверждением.
- ВКЛАДКИ (табы):
:tabnew #создать новую вкладку;
:tabc #закрыть вкладку;
:tabn #перейти на следующую вкладку;
:tabp #перейти на предыдущую вкладку;
:tabs #список всех вкладок;
:buffers #посмотреть список всех открытых файлов (вкладок);
:buffer 4 #перейти к редактированию документа 4.
- ФРЕЙМЫ:
:new #создание нового фрейма;
:sp #создание горизонтального дублирующего фрейма;
:vsp #создание вертикального дублирующего фрейма;
:resize=5 #изменить размер текущего фрейма.
- НАСТРОЙКИ:
:set ic #игнорирование регистра при поиске или замене;
:set noic #вернуть регистрозависимый поиск или замену;
:set smartcase #включает частичное (часть слова) совпадение при поиске;
:set hls #подсвечивать найденное;
:set nohls #не подсвечивать найденное;
:set is #инкрементный поиск (отображение частичных совпадений);
:set nois #отключить инкрементальный поиск, искать по enter;
:set tabstop=4 #задание длины табуляции;
:set expandtab #замена табуляции пробелами;
:set textwidth=70 #задание ширины текста;
:set wrap #разрешить перенос строк (по умолчанию);
:set nowrap #запретить перенос строк;
:set number #включить нумерацию строк;
:set nonumber #отключить нумерацию строк;
:set scrollbind #одновременное прокручивание нескольких окон;
:set laststatus=2 #информативная статусная строка;
:set statusline=%<%F%m%r%h%w\ %y\ %=%b\ 0x%B\ [%l,%v] [%p%%]
:set wildmenu #меню, вызываемое при автодополнении;
:set bs=2 #клавишей BackSpace удалять все, включая переводы строк;
:set guifont=Lucida\ Console\ 12 #установка шрифта для gvim;
:syntax on #включить подсветку синтаксиса;
:syntax off #выключить подсветку синтаксиса (по умолчанию);
:marks #просмотр меток (маркеров).
- ОТМЕНА ДЕЙСТВИЙ:
:undolist #история;
:earlier 1h #откат на час назад;
:later 1h #на час вперед;
:g- #предыдущее состояние;
:g+ #следующее состояние.
• cli - АББРЕВИАТУРЫ И СОКРАЩЕНИЯ:
:ab Lunix Linux;
:ab MS Mandrake Software.
• cli - ПРОВЕРКА ОРФОГРАФИИ:
# подготовка:
mkdir -p ~/.vim/spell #создание необходимых директорий;
cd ~/.vim/spell #переход в созданные директории;
# загрузка необходимых модулей:
wget http://ftp.vim.org/vim/runtime/spell/ru.koi8-r.sug
wget http://ftp.vim.org/vim/runtime/spell/ru.koi8-r.spl
wget http://ftp.vim.org/vim/runtime/spell/en.ascii.sug
wget http://ftp.vim.org/vim/runtime/spell/en.ascii.spl
# проверка орфографии:
:set spell #включить проверку орфографии;
:set spelllang=ru #сменить язык проверки орфографии;
:set spell spelllang=ru,en #включение проверки орфографии;
:set nospell #отключение проверки орфографии;
[]s] #следующее слово с ошибкой;
[[s] #предыдущее слово с ошибкой;
[z=] #замена слова на альтернативу из списка;
[zg] #правильно написанное слово (good);
[zw] #неправильно написанное слово (wrong);
[zG] #игнорировать;
[zug] #отменить последнее добавление в словарь.
---------------------------------------------------------------------------------# (neovim) форк vim для программеров:
• установка:
dnf -y install neovim python3-neovim
flatpak install flathub io.neovim.nvim #установка из flatpak;
flatpak run io.neovim.nvim #установка из flatpak.
---------------------------------------------------------------------------------# (nano) текстовый редактор:
nano file #открыть file для редактирования.
• HotKey:
[Ctrl+a] #быстрый переход в начало строки;
[Ctrl+c] #номер строки\текущая позиция;
[Ctrl+e] #быстрый переход в конец строки;
[Ctrl+k] #вырезать строку;
[Ctrl+o] #сохранение файла без выхода;
[Ctrl+t] #переход к строке №;
[Ctrl+u] #вставить из буфера;
[Ctrl+w] #поиск;
[Ctrl+x] #сохранение файла с выходом;
[Ctrl+space] #быстрый переход к началу следующего слова;
[Alt+a] #выделение (вне X);
[Alt+6] #копировать в буфер.
---------------------------------------------------------------------------------# (echo) печатает свои аргументы на терминал:
echo -e 'foo\nfoo' #вывод foo | новая строка | вывод foo;
echo -n text #запретить echo добавлять символ новой строки в конец вывода, как это сделано по-умолчанию.
---------------------------------------------------------------------------------# (cat) выводит в stdout содержимое заданног файла:
cat > test #перенаправление набираемого текста в файл (> перезапишет, >> добавит текст в конец файла).
• опции программы:
-A #синоним -vET;
-b #нумеровать непустые строки при выводе;
-e #подавляет -n, синоним -vE;
-E #показывать $ в конце каждой строки;
-n #нумеровать все строки при выводе;
-s #выводить не более одной пустой строки при повторе;
-t #синоним -vT;
-T #показывать символы табуляции как ^I;
-u #(игнорируется);
-v #использовать запись с ^ и M-, за исключением символов перевода строки и табуляции.
---------------------------------------------------------------------------------# (tac) выводит в stdout все строки в вертикальном обратном порядке.
tac file #вывести file в вертикальном обратном порядке.
• опции программы:
-b #присоединять разделитель к началу, а не к концу;
-r #воспринимать разделитель как регулярное выражение;
-s СТРОКА #использовать как разделитель СТРОКУ, а не символ.
---------------------------------------------------------------------------------# (grep) фильтрация содержимого файла по шаблону:
# (egrep) фильтрация содержимого файла по шаблону с использованием regex:
grep --color reference /usr/share/dict/words #подсвечивать reference при выводе;
grep -r "string" /dir #рекурсивный поиск строки "string";
grep -v "^$" file.txt > myfile #удаление всех пустых строк;
grep -vE "^#|^$" #выводить только НЕзакомментированные строки;
ps -ef | grep "process" | grep -v grep #последний блок отфильтровывает (убирает) вывод самой команды grep (строку grep --color=auto process);
grep -r "string" /dir 2> /dev/null #вывод на экран найденного содержимого с отправкой ошибок в /dev/null;
grep -r "string" /dir > file 2> /dev/null #сохранение найденного содержимого в file с отправкой ошибок в /dev/null;
grep -r "string" /dir &> file #сохранение найденного содержимого в file, включая ошибки.
• шаблон выбора и его интерпретация:
-e ШАБЛОНЫ #использовать ШАБЛОНЫ для поиска;
-E #ШАБЛОНЫ — расширенные регулярные выражения;
-f ФАЙЛ #брать ШАБЛОНЫ из ФАЙЛа;
-F #ШАБЛОНЫ — строки;
-G #ШАБЛОНЫ — простые регулярные выражения;
-i #игнорировать различие регистра;
-P #ШАБЛОНЫ — регулярные выражения языка Perl;
-w #совпадение обязательно с целым словом;
-x #совпадение обязательно с целой строкой;
-z #строки разделяются байтом с нулевым значением, а не символом конца строки;
--no-ignore-case #учитывать регистр (по умолчанию).
• разное:
-s #не показывать сообщения об ошибках;
-v #выбирать не подходящие строки.
• управление выводом:
-a #тоже, что и --binary-files=text;
-b #печатать вместе с выходными строками смещение в байтах;
-c #вывод количества совпадений;
?
-D ACTION #how to handle devices, FIFOs and sockets:
['read'|'skip'].
?
-d ACTION #how to handle directories:
['read'|'recurse'|'skip'].
-h #не начинать вывод с имени файла;
-H #печатать имя файла для каждой выводимой строки;
-I #тоже, что и --binary-files=without-match;
-l #вывод имени файла, содержащего совпадение;
-L #вывод имени файла, не содержащего совпадение;
-m ЧИСЛО #остановиться после указанного ЧИСЛА совпавших строк;
-n #печатать номер строки вместе с выходными строками;
-o #показывать только совпавшие непустые части строк;
-q #подавлять весь обычный вывод;
-r #рекурсия;
-R #рекурсия с учётом симлинков;
-T #вывод отделить табуляцией {-n};
-Z #печать "^@" после каждого имени файла {-H};
--binary-files=ТИП #считать, что двоичный файл имеет ТИП:
["binary"|"text"|"without-match"].
--exclude-dir=МАСКА #пропустить каталоги, подпадающие под МАСКУ;
--exclude-from=ФАЙЛ #пропустить файлы, подпадающие под маску файлов из ФАЙЛА;
--exclude=МАСКА #пропустить файлы, подпадающие под МАСКУ;
--include=МАСКА #обработать только файлы, подпадающие под МАСКУ (файловый шаблон);
--label=МЕТКА #использовать МЕТКУ в качестве имени файла для стандартного ввода;
--line-buffered #сбрасывать буфер после каждой строки.
• управление контекстом:
-NUM #тоже, что и --context=NUM;
-A ЧИСЛО #вывести совпадение и заданное ЧИСЛО строк после него;
-B ЧИСЛО #вывести совпадение и заданное ЧИСЛО строк перед ним;
-C ЧИСЛО #печатать ЧИСЛО строк контекста;
?
-U #do not strip CR characters at EOL (MSDOS/Windows);
?
--color[=WHEN] #use markers to highlight the matching strings:
['always'|'never'|'auto'].
?
--colour[=WHEN] #use markers to highlight the matching strings:
['always'|'never'|'auto'].
?
--group-separator=SEP #use SEP as a group separator;
?
--no-group-separator #use empty string as a group separator.
• особенности:
- если в качестве ФАЙЛА указан символ "-", то читается стандартный ввод;
- если ФАЙЛ не указан, то читается текущий каталог "." и "-" в противном случае;
- если указано менее двух ФАЙЛОВ, то предполагается -h;
- при нахождении совпадений любой строки кодом завершения будет 0 и 1, если ничего не совпало;
- при возникновении ошибок и если не указан параметр -q, кодом завершения будет 2.
---------------------------------------------------------------------------------# (sort) выведет содержимое файла, указанного в командной строке, в алфавитном порядке:
sort -t. -k1,1n -k2,2n -k3,3n -k4,4n # отсортировать IPv4 адреса;
sort -u file1 file2 #объединение неотсортированных файлов и удаление задвоенных строк;
sort file1 file2 | uniq -d #поиск повторяющихся строк и удаление остальных;
sort file1 file2 | uniq -u #поиск не повторяющихся строк и удаление остальных;
sort file1 file1 file2 | uniq -u #поиск не повторяющихся строк только file2 и удаление остальных.
• опции программы:
-b #игнорировать начальные пропуски;
-d #рассматривать только пропуски, буквы и цифры;
-f #игнорировать регистр букв;
-g #сравнивать в соответствии с общим числовым значением;
-h #сравнивать числа в удобном для человека виде, н-р [2K|1G];
-i #рассматривать только печатные символы;
-M #сравнивать (неизвестно) < "JAN" < .. < "DEC";
-n #сравнивать по числовым значениям строк;
-r #изменить результаты сравнения на противоположные;
-R #перетасовать, но группировать одинаковые параметры, смотрите shuf(1);
-V #сортировать по номерам (версии) в текстовом представлении;
--random-source=ФАЙЛ #брать случайные байты из ФАЙЛА;
--sort=СЛОВО #сортировать согласно СЛОВУ:
[general-numeric -g|human-numeric -h|month -M|numeric -n|random -R|version -V].
• другие параметры:
-c #проверять, сортированы ли входные файлы (сортировка не выполняется);
-C #как -c, но не сообщать о первой плохой строке;
-k ОПР_КЛЮЧА #сортировать по ключу (в ОПР_КЛЮЧА задано расположение и тип);
-m #объединить уже отсортированные файлы, сортировку не выполнять;
-o ФАЙЛ #выводить в ФАЙЛ, а не на стандартный вывод;
-s #стабилизировать сортировку, исключив проверку на равенство;
-S РАЗМЕР #использовать в основной памяти буфер указанного РАЗМЕРА;
-t РАЗДЕЛИТЕЛЬ #использовать при поиске ключевых полей РАЗДЕЛИТЕЛЬ, а не переход от непробельных символов к пробельным;
-T КАТАЛОГ #использовать для временных файлов КАТАЛОГ, а не $TMPDIR или /tmp (несколько таких параметров задают несколько каталогов);
-u #с -c, проверять порядок строго (без -c, выводить только первое среди нескольких равных);
-z #разделитель строк NUL, а не символ новой строки;
--batch-size=NMERGE #объединять не более чем NMERGE ввода за раз (для большего — использовать временные файлы);
--compress-program=ПРОГ #сжимать временные файлы командой ПРОГ (разжимать командой ПРОГ -d);
--debug #комментировать часть строки, используемой для сортировки и предупреждать о сомнительном использовании в stderr;
--files0-from=Ф #читать ввод из файлов, имена которых (завершённые нулем) перечислены в файле Ф (если Ф равно -, то читать имена файлов из стандартного ввода);
--parallel=N #изменить количество одновременно запущенных сортировок до N.
---------------------------------------------------------------------------------# (uniq) удаление повторяющихся строк:
sort file1 file2 | uniq -d #поиск повторяющихся строк и удаление остальных;
sort file1 file2 | uniq -u #поиск не повторяющихся строк и удаление остальных.
• опции программы:
-c #выводить число повторов в начале каждой строки;
-d #выводить только повторяющиеся строки, одну для каждой группы;
-D #вывести все повторяющиеся строки;
-f число #не сравнивать первые "число" полей;
-i #игнорировать регистр при сравнении;
-s число #не сравнивать первые "число" символов;
-u #выводить только не повторяющиеся строки;
-z #разделитель строки NULL, а не символ новой строки;
-w число #сравнивать первые "число" символов строк;
--all-prepared= #подобно {-D}, но позволяет разделить группы пустой строкой:
=none (по умолчанию);
=prepend;
=separate.
--group= #показывать все элементы, разделяя группы пустой строкой:
=separate (по умолчанию);
=prepend;
=append;
=both.
---------------------------------------------------------------------------------# (wc) посчитать количество строк, слов и символов:
input | wc -lwm #посчитать число строк|слов|символов.
• опции программы:
-c #посчитать количество байт;
-l #подсчитать количество строк;
-L #подсчитать количество символов по ширине экрана;
-m #посчитать количество символов;
-w #посчитать количество слов;
--files0-from=file #читать ввод из файлов перечисленных в file, или из файлов стандартного ввода, если задано "-".
---------------------------------------------------------------------------------# (expand) конвертирует входные символы табуляции в пробелы:
expand input > output #преобразовать все символы табуляции в пробелы.
• опции программы:
-i #не преобразовывать символы табуляции после непробельных символов;
-t N #задать ширину табуляции равной N (по умолчанию 8);
-t LIST #использовать разделённый запятыми список позиций табуляции.
• пояснения:
- последняя задаваемая позиция может начинаться с «/» для указания используемого размера табуляции после последней явно
- также можно использовать префикс «+» для выравнивания оставшихся остановок табуляции относительно последней указанной
---------------------------------------------------------------------------------# (unexpand) конвертирует входные пробелы в символы табуляции:
unexpand -a input > output #преобразовать все пробельные символы в табуляцию.
• опции программы:
-a #преобразовывать все пробельные символы, а не только начальные;
-t N #задать ширину табуляции равной N (по умолчанию 8) {включает -a};
-t LIST #использовать разделённый запятыми список позиций табуляции;
--first-only #преобразовывать только начальные последовательности пробельных символов {заменяет -a}.
• особенности:
- последняя задаваемая позиция может начинаться с «/» для указания используемого размера табуляции после последней явно
- также можно использовать префикс "+" для выравнивания оставшихся остановок табуляции относительно последней указанной
---------------------------------------------------------------------------------# (column) форматирование текста в таблицы (столбцы):
sed 's/#.*//' /etc/fstab | column -t -N SOURCE,TARGET,TYPE -H sed 's/#.*//' /etc/fstab | column -t -N SOURCE,TARGET,TYPE,OPTIONS,PASS,FREQ -R PASS,FREQ
cat /etc/group | column -ts ':'
• опции программы:
-J #вывод в формате Json;
-c width #задать количество обрабатываемых столбцов;
-d #не выводить заголовок таблицы;
-o string #задать разделитель, который будет отображаться;
-s separator #указать разделитель по которому форматировать;
-t #автоматически выстроить столбцы (возможно с {-s});
-N names #задать заголовки столбцов для вывода;
-R columns #выровнять заданные колонки по правому краю;
-T columns #
-E columns #
-e #выводить заголовок для каждой страницы;
-W columns #
указанной остановки табуляции;
остановки вместо первого столбца.
указанной остановки табуляции;
остановки вместо первого столбца.
-H columns|-#скрыть заданные колонки|не выводить не указанные в {-N};
-O columns #поместить заданные колонки вперед;
-n name #задать имя таблицы для вывода в формате Json {-J};
-r columns #задать номер колонки для ветвления;
-i columns #задать уровень ветвления для вывода как "начальный";
-p columns #задать уровень родителя для веток дерева;
-x #заполнение строк перед заполнением колонок.
---------------------------------------------------------------------------------# (cut) вывод определенных столбцов:
blkid /dev/sda1|cut -d' ' -f2 #вывод UUID диска (для записи в fstab);
cat /etc/passwd|cut -d':' -f1,6|column -ts':'|sort|less #passwd в читаемом виде;
cat /etc/passwd|cut -b1-9|sort|less #вывод первых 9-ти байт всех строк;
cat /etc/passwd|cut -c1-9|sort|less #вывод первых 9-ти символов всех строк.
• опции программы:
-b LIST #выбрать только заданные байты;
-c LIST #выбрать только заданные символы;
-d 'РАЗДЕЛИТЕЛЬ' #использовать для разделения полей РАЗДЕЛИТЕЛЬ вместо табуляции;
-f LIST #задать номер выводимого столбца;
-n #не разделять многобайтовые символы {-b};
-s #не печатать строки, не содержащие разделителей;
-z #разделитель строк NUL, а не символ новой строки;
--complement #дополнить множество выбранных байт, символов или полей;
--output-delimiter=STRING #использовать СТРОКУ для разделения полей при выводе, по умолчанию используется разделитель для ввода.
---------------------------------------------------------------------------------# (sed) мощный потоко-ориентированный текстовый редактор:
sed 's/string1/string2/g' #заменить string1 на string2;
sed -e '/^$/d' in > out #удалить все пустые строки из файла in;
sed ‘/^[_<TAB>]*$/d’ file > newfile #удалить все пустые строки и строки состоящие только из пробелов|табуляторов;
sed '/.*#/d;/^$/d' #удалить комментарии и пустые строки;
sed 's/[ \t]*$//' #удалить пробелы и символы табуляции в конце строки;
sed 's/^[ \t]*//;s/[ \t]*$//' #удалить пробелы в начале и конце;
sed 's/[^*]/[&]/' #заключить первый символ в квадратные скобки;
sed = file | sed 'N;s/\n/\t/' #порядковый номер в каждой строке;
sed ':a; /\\$/N; s/\\\n//; ta' #соединить строки (линии) с предшествующим \;
seq 10 | sed "s/^//; s/ *\(.\{7,\}\)/\1/" #напечатать числа с 1 по 10 и выровнять их по правой границе;
sed -n '1000p;1000q' # напечатать 1000-ную строку;
sed -n '10,20p;20q' # напечатать строки с 10 по 20-ую;
sed -n 's/.*<title>\(.*\)<\/title>.*/\1/ip;T;q' #получить страницы title из HTML;
sed ‘s/.*/(&)/’ file > newfile #заключить все строки в скобки;
sed ‘s/YES/NO/g’ /etc/rc.conf > /etc/rc.conf.local #поменять все слова YES на NO.
• опции программы:
-b #does nothing (for compatibility with [WIN32|CYGWIN|MSDOS|EMX] (open files in binary mode (CR+LF are not processed specially)));
?
-c #use copy instead of rename when shuffling files in -i mode;
-e script #добавить сценарий (script) в исполняемые команды;
-E #использовать в сценарии расширенные регулярные выражения (для переносимости используйте -E (POSIX));
-f script-file #добавить содержимое файла-сценария (script-file) в исполняемые команды;
-i СУФФИКС #править файлы на месте (создаёт копию, если указан СУФФИКС);
-l N #задать желаемую длину до переноса строки для команды "l";
-n #выключить автоматическую печать образца;
-r #использовать в сценарии расширенные регулярные выражения (для переносимости используйте -E (POSIX));
-s #рассматривать файлы раздельно, а не в виде одного длинного непрерывного потока;
-u #загружать минимальный объём данных из входных файлов и чаще сбрасывать выходные буферы на диск;
-z #разделять строки символами NUL;
--debug #комментировать выполнение программы;
--follow-symlinks #переходить по символьным ссылкам при обработке на месте;
--posix #отключить все расширения GNU;
--sandbox #работать в режиме «песочницы» (отключает команды [e|r|w]).
• особенности:
- если не указан параметр -e, --expression, -f или --file, то в качестве интерпретируемого сценария sed берётся первый необязательный аргумент;
- все оставшиеся аргументы являются именами входных файлов (если входные файлы не указаны, тогда читается стандартный ввод).
---------------------------------------------------------------------------------# (diff) сравнение двух текстовых файлов:
diff file1 file2 #сравнивает два указанных файла (позволяет сравнивать каталоги);
• опции программы:
-a #считать все файлы текстовыми;
-b #игнорировать изменения количества пробельных символов;
-B #игнорировать изменения количества пустых строк;
-c Н #выводить по Н (по умолчанию 3) строк копируемого контекста;
-C Н #выводить по Н (по умолчанию 3) строк копируемого контекста;
-d #пытаться найти наименьший набор изменений;
-D ИМЯ #выводить заплаты, использующие конструкцию ?#ifdef ИМЯ?;
-e #выводить как сценарий ed;
-E #игнорировать изменения, вызванные раскрытием табуляции;
-F RE отображать последнюю совпавшую с RE строку;
-I RE #игнорировать изменения строк, совпадающих с RE;
-i #игнорировать регистр в содержимом файла;
-l #направить вывод в pr для разбиения на страницы;
-N #воспринимать несуществующие файлы как пустые;
-n #выводить в формате RCS diff;
-p #отображать в какой функции Си находится каждое изменение;
-q #напечатать только различаются ли файлы;
-r #рекурсивно сравнивать подкаталоги;
-s #сообщать об одинаковых файлах;
-S ФАЙЛ #при сравнении каталогов начать с ФАЙЛА;
-T #выравнивать строки, добавляя в начало символ табуляции;
-t #раскрывать при выводе символы табуляции в пробелы;
-u Н #выводить по Н (по умолчанию 3) строк объединенного контекста;
-U Н #выводить по Н (по умолчанию 3) строк объединенного контекста;
-w #игнорировать все пробельные символы;
-W Н #выводить не более Н знаков в строке (по умолчанию 130);
-x ОБРАЗЕЦ #исключить файлы, чьи имена совпадают с ОБРАЗЦОМ;
-X ФАЙЛ #исключить файлы с именами, совпадающими с любым образцом из ФАЙЛА;
-y #выводить в две колонки;
-Z #игнорировать пробельные символы в конце строки;
--color=КОГДА #вывод в цвете, КОГДА может быть:
"always";
"auto";
"never";
без уточнения используется --color='auto'.
--from-file=ФАЙЛ1 #сравнить ФАЙЛ1 со всеми операндами (ФАЙЛ1 может быть каталогом);
--GTYPE-group-format=GFMT #форматировать входные группы типа GTYPE в соответствии GFMT;
--horizon-lines=Н #оставлять Н общих строк до и после различающихся;
--ignore-file-name-case #игнорировать регистр в именах файлов;
--label МЕТКА #использовать МЕТКУ вместо имени файла и времени (может повторяться);
--left-column #выводить только левую колонку общих строк;
--line-format=LFMT #форматировать все входные строки в соответствии с LFMT;
--LTYPE-line-format=LFMT #форматировать входные строки типа LTYPE в соответствии LFMT;
--no-dereference #не переходить по символьным ссылкам;
--no-ignore-file-name-case #учитывать регистр в именах файлов;
--palette=ПАЛИТРА #набор цветов при активном --color (ПАЛИТРА это список свойств terminfo через двоеточие);
--speed-large-files #предполагать, что файлы большие и есть много разбросанных мелких изменений;
--strip-trailing-cr #удалять из ввода завершающий возврат каретки;
--suppress-blank-empty #не вставлять пробел или табуляцию перед выводом пустых строк;
--suppress-common-lines #не выводить общие строки;
--tabsize=Н #табуляция через каждые Н знаков (по умолчанию 8);
--to-file=ФАЙЛ2 #сравнить все операнды с ФАЙЛОМ2 (ФАЙЛ2 может быть каталогом);
--unidirectional-new-file #воспринимать несуществующие первые файлы как пустые.
• параметры форматирования предоставляют точный контроль над конечным diff обобщающими -D:
LTYPE = [?old?|?new?|?unchanged?];
GTYPE = [?old?|?new?|?unchanged?|?changed?];
GFMT может содержать (только):
%< #строки из ФАЙЛА1;
%> #строки из ФАЙЛА2;
%= #строки, общие для ФАЙЛА1 и ФАЙЛА2;
%[-][ШИРИНА][.[ТОЧН]]{doxX}БУКВА #формат для БУКВЫ в стиле printf:
БУКВА принимает следующие значения для новых групп, для старых строчные:
F #номер первой строки;
L #номер последней строки;
N #число строк = L-F+1;
E #F-1;
M #L+1.
%(A=B?T:E) #если A равно B, то T, иначе E.
LFMT может содержать (только):
%L #содержимое строки;
%l #содержимое строки, исключая все конечные символы новой строки;
%[-][ШИРИНА][.[ТОЧН]]{doxX}n #формат номера входной строки в стиле printf.
GFMT и LFMT могут содержать:
%% %;
%c'С' #один символ С;
%c'\OOO' #символ в восьмеричным коде OOO;
C #символ C (символы, представляющие сами себя).
• пояснения:
- ФАЙЛы это ?ФАЙЛ1 ФАЙЛ2?, ?КАТАЛОГ1 КАТАЛОГ2?, ?КАТАЛОГ ФАЙЛ?? или ?ФАЙЛ? КАТАЛОГ?;
- если задан --from-file или --to-file, то на ФАЙЛЫ нет ограничений;
- если ФАЙЛ задан как ?-?, читает стандартный ввод.
---------------------------------------------------------------------------------# (diff3) трёх текстовых файлов:
• синтаксис:
diff3 [КЛЮЧ]? МОЙ_ФАЙЛ СТАРЫЙ_ФАЙЛ ВАШ_ФАЙЛ
• использование:
diff3 file1 file2 file3 #сравнивает три файла и выводит результаты аналогично diff.
• опции программы:
-3 #как -e, но только непересекающиеся изменения;
-A #выводить все изменения, заключая конфликтные места в скобки;
-A #если не указаны другие параметры;
-a #считать все файлы текстовыми;
-e #вывести сценарий ed, изменяющий СТАРЫЙ_ФАЙЛ из ВАШ_ФАЙЛ, в МОЙ_ФАЙЛ;
-E #как -e плюс конфликты в скобках;
-i #добавить команды ?w? и ?q? в сценарий ed;
-L МЕТКА #использовать МЕТКУ вместо имени файла (может повторяться до трёх раз);
-m #выводить объединенный файл согласно;
-T #выравнивать строки, добавляя в начало символ табуляции;
-x #как -e, но только перекрывающиеся изменения;
-X #как -x плюс конфликты в скобках;
--diff-program=ПРОГРАММА #для сравнения файлов использовать ПРОГРАММУ;
--strip-trailing-cr #удалять из ввода завершающий возврат каретки.
---------------------------------------------------------------------------------# (fold) изменение ширины текста:
fold -50 file1 > file2 #задать новую ширину в 50 символов.
---------------------------------------------------------------------------------# (iconv) конвертирование кодировок:
iconv -c -t UTF-8 infile -o outfile #конвертирование из неизвестной кодировки;
iconv -f ASCII -t UTF-8 infile -o outfile #конвертировать из ASCII в UTF-8;
iconv -f KOI-8 -t UTF-8 infile > outfile #конвертировать KOI-8 в UTF-8.
• спецификация формата ввода/вывода:
-f ИМЯ #кодировка оригинального текста;
-t ИМЯ #кодировка для вывода.
• информация:
-l #перечислить все известные встроенные кодировки.
• управление выводом:
-c #пропускать на выводе недопустимые знаки (используется, если неизвестна исходная кодировка);
-o ФАЙЛ #выходной файл;
-s #не печатать предупреждения;
--usage #выдает краткую информацию об использовании.
---------------------------------------------------------------------------------# (enca) вывод и изменение кодировок файлов:
• установка:
dnf -y install enca
• использование:
enca -l lists #вывод доступных списков;
enca -l languages #вывод списка доступных языков;
enca -L ru file #вывод информации о кодировке file;
enca
enca
enca
• опции
-L ru -i file #вывод информации о кодировке file в формате программы iconv;
-L ru -x UTF-8 file #конвертировать file в кодировку UTF-8;
-L ru -c -x UTF-8 file #конвертировать file в кодировку UTF-8.
программы:
-c #автоконвертация файла;
-C LIST #задать список кодировок (по умолчанию built-in, iconv);
-d #подробный вывод;
-e #выводить только кодировку файла;
-E /path #задать путь программы для конвертации;
-f #вывод в чловекочитаемом виде;
-i #вывод информации о кодировке в формате программы iconv;
-L LANG #задать выходной язык;
-l NAME #вывод заданного списка:
built-in-charsets #вывод списка доступных встроенных кодировок;
built-in-encodings #;
charsets #вывод списка всех доступных кодировок;
converters #вывод списка доступных программ-конвертетов для {-E};
encodings #;
languages #вывод списка языков для {-L};
lists #вывод доступных списков для {-l};
names #вывод списка доступных форматов вывода для {-n};
surfaces #.
-m #вывод в формате MIME;
-n NAME #задать формат вывода:
aliaces;
cstocs;
details #{-d};
enca #{-e};
human-readable #{-f};
iconv;
mime #{-m};
rfc1345 #{-r};
..
-p #выводить имя тестируемого файла;
-P #не выводить имя тестируемого файла;
-r #вывод в формате RFC-1345;
-s #вывод информации о кодировке в формате программы cstocs;
-x ENC #задать выходную кодировку.
---------------------------------------------------------------------------------# (join) объединять два файла по общему полю (по-умолчанию первое поле в каждой строке) [похожа на paste]:
join -t'\0' -a1 -a2 file1 file2 #объединение отсортированных файлов и удаление задвоенных строк;
join -t'\0' file1 file2 #поиск повторяющихся строк и удаление остальных;
join -t'\0' -v2 file1 file2 #поиск не повторяющихся строк и удаление остальных;
join -t'\0' -v1 -v2 file1 file2 #поиск не повторяющихся строк и удаление остальных.
• опции программы:
-1 ПОЛЕ #считать общим заданное ПОЛЕ файла 1;
-2 ПОЛЕ #считать общим заданное ПОЛЕ файла 2;
-a НОМЕР #также печатать не имеющие пары строки из файла НОМЕР, где НОМЕР может быть 1 или 2, которые соответствуют ФАЙЛУ1 и ФАЙЛУ2;
-e СТРОКА #замещать при выводе пустые строки указанной СТРОКОЙ;
-i #игнорировать регистр букв при сравнении полей;
-j ПОЛЕ #эквивалентно "-1 ПОЛЕ -2 ПОЛЕ";
-o ФОРМАТ #выводить в соответствии с ФОРМАТОМ;
-t СИМВОЛ #использовать СИМВОЛ как разделитель полей ввода и вывода;
-v НОМЕР #как -а НОМЕР, но не печатать объединяемые выходные строки;
-z #разделитель строк NUL, а не символ новой строки;
--check-order #проверить правильность сортировки ввода, даже если все входные строки имеют пару;
--header #считать первую строку каждого файла названиями полей, выводить их без выполнения поиска пары;
--nocheck-order #не проверять правильность сортировки ввода.
• особенности:
- если ФАЙЛ1 или ФАЙЛ2 (но не оба) задан как "-", читается стандартный ввод;
- если не задан -t СИМВОЛ, начальные пробельные символы разделяют поля и игнорируются, в противном случае поля разделяются СИМВОЛОМ;
- ПОЛЕ — это номер поля, отсчитываемый от 1;
- ФОРМАТ — это одно или несколько разделяемых запятыми или пробельными символами описаний формата в виде "НОМЕР_ФАЙЛА.ПОЛЕ" или "0";
- по умолчанию ФОРМАТ выводит общее поле, остальные поля из ФАЙЛА1 и остальные поля из ФАЙЛА2, разделённые СИМВОЛОМ;
- если значение ФОРМАТ равно «auto», то первая строка каждого файла определяет количество полей в каждой строке результата;
- ФАЙЛ1 и ФАЙЛ2 должны быть отсортированы по общим полям:
н-р, используйте "sort -k 1b,1", если у "join" нет параметров или "join -t ''", если у "sort" нет параметров;
заметим, что при сравнении действуют правила, задаваемые "LC_COLLATE";
если ввод не отсортирован и одинаковые строки не объединены, то будет выдано предупреждающее сообщение.
---------------------------------------------------------------------------------# (look) проверка орфографии по английскому словарю:
look posta #выводит все возможные слова, начинающиеся на posta.
• опции программы:
-a WORDS #использовать альтернативный словарь.
• файлы и директории:
/usr/share/dict/linux.words #словарь.
---------------------------------------------------------------------------------# (nl) добавляет к каждой входной строке ее номер (удобно для распечатки):
nl file > newfile #пронумеровать file с выводом в newfile.
• опции программы:
-b стиль #использовать стиль нумерования строк;
-d NN #использовать разделитель страниц (если задан один символ, то второй выводится как : );
-f стиль #использовать стиль нумерования строк нижнего колонтитула;
-h стиль #использовать стиль нумерования строк верхнего колонтитула;
-i число #шаг увеличения номеров строк;
-l число #заданное число пустых строк считать одной;
-n формат #использовать формат для номеров строк;
-p #не назначать нумерацию заново для каждого раздела;
-s СТРОКА #добавлять СТРОКА после каждого номера;
-v число #первый номер строки для каждого раздела;
-w число #использовать заданное число столбцов для номеров строк.
• стиль:
a #нумеровать все строки;
t #нумеровать только не пустые строки;
n #не нумеровать строки;
pБРВ #нумеровать только строки, часть которых совпадает с базовым регулярным выражением БРВ.
• формат:
ln #выравнивать по левому краю, не выводить начальные нули;
rn #выравнивать по правому краю, не выводить начальные нули;
rz #выравнивать по правому краю, выводить начальные нули.
---------------------------------------------------------------------------------# (paste) объединяет построчно несколько файлов в один (создание таблиц):
paste -d "|" file1 file2 > result #построчное объединение двух файлов с использованием разделителя "|".
• опции программы:
-d "РАЗДЕЛИТЕЛЬ" #задать разделитель (по умолчанию табуляция);
-s #обрабатывать файлы последовательно;
-z #разделитель строк NULL, а не символ новой строки.
---------------------------------------------------------------------------------# (fmt) переформатирует каждый абзац в документе и печатает в stdout:
• опции программы:
-c #сохранять отступы двух первых строк;
-g ЧИСЛО #ширина задаваемого показателя (goal, по умолчанию 93% ширины);
-p СТРОКА #форматировать только строки, начинающиеся со СТРОКИ, сохраняя при этом префикс строк;
-s #разбивать длинные строки, но не заполнять;
-t #отступ первой строки отличен от отступа второй;
-u #один пробел после слова, два после предложения;
-w ЧИСЛО #максимальная ширина строки (по умолчанию 75 столбцов).
---------------------------------------------------------------------------------# (pr) разбивает файл на страницы и нумерует их (обычно используется для печати):
pr -h "ЗАГОЛОВОК" file > newfile #разбить file на страницы с текущей датой, ЗАГОЛОВКОМ и номером стр. на каждой из них;
pr +1:23 file > newfile #вывести постранично с первой по двадцать третью.
• опции программы:
+ПЕРВАЯ_СТРАНИЦА:ПОСЛЕДНЯЯ_СТРАНИЦА #задать ПЕРВУЮ и ПОСЛЕДНЮЮ страныци для печати;
-ЧИСЛО #выводить заданное ЧИСЛО колонок и печатать их вниз, если только не указан параметр -a (балансировать число строк в колонке на каждой странице);
-a #выводить колонки вдоль, а не вниз (используется вместе с параметром -ЧИСЛО);
-c #использовать запись с шапочкой (^G) или обратной косой чертой (и восьмеричным кодом);
-d #вставлять пустую строку после каждой выходной строки;
-D ФОРМАТ #использовать для даты в заголовке указанный ФОРМАТ;
-e СИМВОЛ ЧИСЛО #преобразовывать входные СИМВОЛы (табуляцию) в заданное ЧИСЛО пробелов (8);
-f #использовать для разделения страниц символ перевода страницы, а не новой строки (с трёхстрочным заголовком, если есть параметр -F, и пятистрочным заголовком и
завершителем, если параметр -F не задан);
-F #использовать для разделения страниц символ перевода страницы, а не новой строки (с трёхстрочным заголовком, если есть параметр -F, и пятистрочным заголовком и
завершителем, если параметр -F не задан);
-h ЗАГОЛОВОК #использовать для страниц центрированный ЗАГОЛОВОК, а не имя файла (-h "" выводит пустую строку, не используйте -h "");
-i СИМВОЛ ШИРИНА #заменить пробелы на СИМВОЛы (табуляции) заданной ШИРИНЫ (8);
-J #объединять полные строки, отключить усечение строк (-W), не выравнивать колонки, --sep-string[=СТРОКА] задает разделители;
-l ДЛИНА_СТРАНИЦЫ #установить ДЛИНУ_СТРАНИЦЫ (66) в строках (по умолчанию число строк текста равно 56, а с -F — 63) (подразумевается -t, если ДЛИНА_СТРАНИЦЫ <= 10);
-m #печатать все файлы параллельно, по одному в колонке, усекать строки, а с использованием параметра -J соединять полные строки;
-N НОМЕР #начать нумерацию с НОМЕРА с первой строки первой выводимой страницы (смотри +ПЕРВАЯ_СТРАНИЦА);
-n РАЗД ЦИФРЫ #нумеровать строки, используя заданные ЦИФРЫ (5) и РАЗДелитель (табуляцию) (по умолчанию нумерация начинается с первой входной строки);
-o ПОЛЕ #сдвигать каждую строку на ПОЛЕ (ноль) пробелов (не влияет на -w или -W) (ПОЛЕ добавляется к ШИРИНЕ_СТРАНИЦЫ);
-r #не предупреждать о невозможности открытия файла;
-s СИМВОЛ #выключает усечение строк для всех трёх колонок параметров (-КОЛОНКА|-a -КОЛОНКА|-m), если только нет параметра -w;
-s СИМВОЛ #разделять колонки одним символом, по умолчанию СИМВОЛ равен <TAB>, если нет параметра -w, и пуст, если есть параметр -w;
-S СТРОКА #разделять колонки СТРОКОЙ, с параметром -J (если -S не задан) будет использоваться по умолчанию разделитель <TAB>, в остальных случаях используется пробел (то
же, что -S" ") [не влияет на параметры для колонок];
-T #не выводить заголовки и игнорировать символы перевода страницы во входных файлах;
-t #не выводить заголовки и окончания страниц (подразумевается, если ДЛИНА_СТРАНИЦЫ <= 10);
-v #использовать запись восьмеричным кодом с обратной косой чертой;
-w ШИРИНА_СТРАНИЦЫ #установить ШИРИНУ_СТРАНИЦЫ (72) для вывода в несколько колонок, -s[символ] выключает (72);
-W ШИРИНА_СТРАНИЦЫ #установить ШИРИНУ_СТРАНИЦЫ (72), усекать строки, если нет параметра -J (не затрагивается параметрами -S или -s).
---------------------------------------------------------------------------------# (shuf) перемешивание строк:
shuf file -o outfile #перемешать строки file и записать в outfile;
shuf -rzi 0-1 #бесконечный вывод нулей и единиц;
shuf -rzi 0-0 -o outfile #заполнить outfile нулями до сигнала прерывания;
shuf -zi 1-16 ; echo #вывод строки из шестнадцати рандомных цифр (; echo = \n).
• опции программы:
-e arg1 arg2 .. #считать каждый аргумент выходной строкой;
-i n-N #считать числа ОТ и ДО выходными строками;
-n count #выводить не более заданного количества строк;
-o file #записать результат в file;
-r #допускать повторение выходных строк бесконечное количество раз;
-z #разделитель строк null, а не символ новой строки;
--random-source=file #получать случайные байты из файла.
---------------------------------------------------------------------------------# (split) разделяет файл на несколько небольших частей (по умолчанию длина части 1000 строк):
split file rezult #разбить file на n частей длиной 1000 строк каждая и названиями rezultxaa, rezultxab, rezultxac, ...
• опции программы:
-a ЧИСЛО #задает длину суффикса [*xaa|*xab|*xac|*...];
-b ЧИСЛО #записывать в выходной файл заданное ЧИСЛО байт [K|M|G|..];
-C ЧИСЛО #записывать не более заданного ЧИСЛА байт из строки в выходной файл [K|M|G|..];
-d #использовать числовые суффиксы (начинающиеся с нуля), а не буквенные суффиксы;
-e #не генерировать пустые выходные файлы (при использовании {-n});
-l ЧИСЛО #записывать в каждый выходной файл заданное ЧИСЛО строк;
-n ПОРЦИИ #разделить выходной файл на заданные порции:
N #разделить на N файлов;
K/N #вывести K-тую порцию из N на стандартный вывод (предпросмотр);
l/N #разделить на N файлов без разделения строк/записей;
l/K/N #вывести K-тую порцию из N на стандартный вывод без разделения строк/записей (предпросмотр);
r/N #как l, но использовать циклический перебор;
r/K/N #то же, но вывести только K-тую порцию из N на стандартный вывод (предпросмотр).
-t РАЗДЕЛИТЕЛЬ #задать разделитель записей;
-u #сразу копировать ввод в вывод при указании {-n /r*};
--additional-suffix=СУФФИКС #прибавлять дополнительный СУФФИКС к именам файлов;
--filter=cmd [less|cat|...] #вывести результат в заданную команду и не производить реальное разбиение (предпросмотр);
--numeric-suffixes=число #задать начальное значение суффикса (по умолчанию 0);
--verbose #печатать диагностику перед открытием очередного выходного файла.
---------------------------------------------------------------------------------# (tr) преобразует, уплотняет и|или удаляет символы со стандартного ввода и печатает на стандартный вывод:
cat input | tr [:space:] '\t' > output #замена вертикальных и горизонтальных пробелов на знаки табуляции;
cat input | tr '\n' ' ' > output #замена переносов строк пробелами;
cat input | tr -d [:space:] > output #удаление всех пробелов;
cat input | tr -d '\n' > output #удаление переносов строки (склеивание строк);
cat input | tr a-z A-Z > output #изменение нижнего регистра на верхний;
cat input | tr [:lower:] [:upper:] > output #изменение нижнего регистра на верхний.
• опции программы:
-c #сначала получить дополнение ТАБЛИЦЫ1;
-d #удалять символы из ТАБЛИЦЫ1 и не преобразовывать;
-s #замещать каждую последовательность повторяющихся символов перечисленных в последней указанной ТАБЛИЦЕ на единственный такой символ;
-t #сначала сократить ТАБЛИЦУ1 до размера ТАБЛИЦЫ2.
• символьные последовательности:
\HHH #знак с восьмеричным кодом (от 1 до 3 цифр);
\\ #обратная косая черта;
\a #звуковой сигнал;
\b #забой;
\f #перевод страницы;
\n #новая строка;
\r #возврат каретки;
\t #горизонтальная табуляция;
\v #вертикальная табуляция;
СИМ1-СИМ2 #все символы от СИМ1 до СИМ2 в порядке возрастания;
[СИМ*] #СИМВОЛ заполняет ТАБЛИЦУ2 до ТАБЛИЦЫ1;
[СИМ*ЧИСЛО] #заданное ЧИСЛО (восьмеричное, если начинается с 0) одинаковых СИМВОЛОВ;
[:alnum:] #все буквы и цифры;
[:alpha:] #все буквы;
[:blank:] #все горизонтальные пробельные символы;
[:cntrl:] #все управляющие символы;
[:digit:] #все цифры;
[:graph:] #все печатные символы, исключая пробел;
[:lower:] #все строчные буквы;
[:print:] #все печатные символы, включая пробел;
[:punct:] #все знаки препинания;
[:space:] #все вертикальные и горизонтальные пробельные символы;
[:upper:] #все заглавные буквы;
[:xdigit:] #все шестнадцатеричные цифры;
[=СИМ=] #все символы, эквивалентные единичному СИМволу.
==================================================================================
# TXT - ПРОСМОТОРЩИКИ [CBA|DJVU|EPUB|FB2|PDF|PS|..]:
---------------------------------------------------------------------------------# просмотр PDF:
• (ps2ascii) просмотр текстовых PDF:
ps2ascii file.pdf|less #просмотр file.pdf.
• (fbi) просмотр PDF через фреймбуфер (debian):
dnf -y install fbi #установка;
usermod -a -G video user #добавить пользователя в группу video;
fbgs file.pdf #просмотр file.pdf.
• (fbi) просмотр PDF через фреймбуфер (fedora):
dnf -y install fbida-fbpdf #установка;
fbpdf file.pdf #просмотр file.pdf.
-w #вывод краев страницы во всю ширину экрана.
• (pdftohtml|pdftotext) конверторы PDF в html и txt:
pdftotext -layout in.pdf - | less #просмотр file.pdf в консоли;
pdftohtml -c in.pdf out.html #конвертация с изображениями;
links2 -g out.html #открыть в браузере с поддержкой изображений.
• (mc) в MidnightCommander есть скрипты для просмотра PDF.
• (swftools) конвертирование PDF в SWF и просмотр в браузере:
pdf2swf in.pdf out.swf #конвертирование PDF в SWF;
pdf2swf --pages 1,3-6 in.pdf out.swf #конвертирование отдельных страниц.
---------------------------------------------------------------------------------# (evince) просмоторщик pdf|djvu|fb2-документов:
evince -f -p 4 file.pdf #просмотр file.pdf в полноэкранном режиме с 4-ой страницы.
evince -l 'string' file.pdf #просмотр file.pdf начиная со строки string.
• опции программы:
-f #запуск программы в полноэкранном режиме;
-i N #открыть документ на заданной странице (нумерация по документу);
-p N #открыть документ на заданной странице (нумерация по тексту);
-l string #открыть документ на заданной фразе.
• HotKeys - ОСНОВНЫЕ ОПЕРАЦИИ С ДОКУМЕНТОМ:
[Crtl+o] #открыть документ;
[Crtl+n] #открыть копию документа;
[Crtl+s] #сохранить документ как...;
[Crtl+p] #вывести документ на печать;
[Alt+Enter] #открыть информацию о документе;
[Esc] #закрыть дополнительные окна;
[Ctrl+w] #закрыть документ.
• HotKeys - ИЗМЕНЕНИЕ ОТОБРАЖЕНИЯ СТРАНИЦЫ ДОКУМЕНТА:
[w] #развернуть документ на всю ширину страницы;
[f] #развернуть документ на всю высоту страницы;
[-] #уменьшить страницу документа;
[Crtl+-] #уменьшить страницу документа;
[=] #увеличить страницу документа;
[Crtl+=] #увеличить страницу документа;
[Ctrl+0] #выставить 100% объёма страницы;
[d] #переключение отображения 1/2 страницы;
[Ctrl+Right] #поворот страницы на 90 градусов по часовой стрелке;
[Ctrl+Left] #поворот страницы на 90 градусов против часовой стрелки.
• HotKeys - НАВИГАЦИЯ ПО СТРАНИЦАМ ДОКУМЕНТА:
[j] #перейти к следующей строке;
[k] #перейти к предыдущей строке;
[l] #перейти к следующей странице/вправо;
[h] #перейти к предыдущей странице/влево;
[n] #перейти к следующей странице;
[p] #перейти к предыдущей странице.
• HotKeys - ПОИСК ПО ТЕКСТУ ДОКУМЕНТА:
[/] #активация поиска по тексту;
[Crtl+f] #активация поиска по тексту:
[Ctrl+g] #переход к следующему совпадению;
[Enter] #переход к следующему совпадению;
[Ctrl+Shift+g] #переход к предыдущему совпадению;
[Shift+Enter] #переход к предыдущему совпадению;
[Esc] #прекратить поиск.
• HotKeys - МЕНЮ ПРОГРАММЫ:
[F9] #показать/скрыть панель страниц документа;
[Ctrl+l] #переход в область задания номера страницы документа;
[Crtl+Tab] #переход в меню программы:
[Tab] #переход между областями меню программы;
[Esc] #закрыть меню программы.
• HotKeys - ДРУГИЕ ОПЕРАЦИИ С ДОКУМЕНТОМ:
[F11] #переход в полноэкранный режим;
[F5] #переход в режим презентации;
[c] #переключение между весем документом и текущей страницей;
[Crtl+a] #выделить всё;
[Crtl+c] #копировать выделенную область;
[Crtl+Insert] #копировать выделенную область;
[Crtl+i] #инвертировать цветовую гамму документа (ночной режим);
[Crtl+r] #обновить документ.
---------------------------------------------------------------------------------# преобразование PDF (вывод информации):
• (pdfinfo) просмотр информации о PDF файле:
pdfinfo in.pdf | grep -i encrypted #вывод информации о шифровании.
• (pdffonts) вывод информации о шрифтах.
• (poppler) извлечение данных из PDF:
pdfdetach -list file.pdf #просмотр вложений;
pdfdetach -saveall file.pdf #извлечение вложений из file.pdf;
pdfimages file.pdf images/ #извлечь изображения из file.pdf.
---------------------------------------------------------------------------------# преобразование PDF (разбить|объединить):
• (pdfseparate) разбить PDF на части:
pdfseparate -f 10 -l 20 in.pdf out.pdf #извлечь страницы.
• (pdfunite) объединение PDF:
pdfunite in1.pdf in2.pdf out.pdf #объединить файлы.
---------------------------------------------------------------------------------# преобразование PDF (сравнить):
• (diffpdf|comparepdf) сравнение PDF:
comparepdf file1.pdf file2.pdf #сравнить файлы;
diffpdf file1.pdf file2.pdf #сравнить файлы.
---------------------------------------------------------------------------------# преобразование PDF (конвейеры):
• (qpdf) PDF-конвейер: создание|шифрование|слияние|разделение:
qpdf --decrypt in.pdf out.pdf #дешифровать PDF;
qpdf in.pdf --pages in1.pdf 1-5 in2.pdf 20-31 -- out.pdf #разобрать|собрать PDF.
• (pdftk) PDF-конвейер:
pdftk in1.pdf in2.pdf cat output out.pdf #объединить несколько в один;
pdftk in.pdf cat 10-20 output page3.pdf #объединить несколько в один;
pdftk A=in1.pdf B=in2.pdf cat A1east B2-20even output out.pdf #— z —;
pdftk in.pdf burst output out%03d.pdf #разделить PDF;
pdftk in.pdf dump_data output mdata #извлечь метаданные;
pdftk in.pdf update_info mdata output incopy.pdf #загрузить метаданные;
pdftk secured.pdf input_pw password output unsecured.pdf #дешифровка;
pdftk broken.pdf output fixed.pdf #восстановление.
---------------------------------------------------------------------------------# преобразование PDF (GUI):
• (pdfshuffler) PDF-конвейер для GUI:
dnf -y install pdfshuffler #установка.
• (pdfmod) легкий PDF-конвейер для GUI:
dnf -y install pdfmod #установка.
• редактирование и создание PDF:
LibreOffice;
PDFedit;
Scribus;
Master PDF Editor.
---------------------------------------------------------------------------------# (unoconv) создание PDF [пакет LibreOffice]:
unoconv file #конвертировать file txt в file.pdf с тем же именем;
unoconv -e PageRange=1-23 file #конвертировать txt в pdf с 1 по 23 страницу;
unoconv -P PaperOrientation=landscape file #конвертировать в горизонтальной ориенатции.
• опции программы:
-e PageRange=N-N #задать диапазон конвертируемых страниц;
-P PaperFormat=A3 #задать формат листа;
-P PaperOrientation=landscape #задать горизонатльное ориентирование страницы;
-P PaperSize=130x200 #задать специфический формат бумаги [width=130|height=200].
==================================================================================
# (fdreader) FB2 ридер:
dnf -y install fdreader #установка.
• особенности:
- поддерживаемые форматы #ePub|fb2|chm|rtf|plucker|..;
- файлы можно читать напрямую из архивов #zip|tar|gzip|bzip2.
==================================================================================
# (zathura) просмоторщик документов [cba|djvu|epub|fb2|pdf|ps]:
• установка:
dnf -y install zathura #установка программы;
dnf -y install zathura-plugins-all #все плагины;
dnf -y install zathura-pdf-mupdf #плагин PDF через mupdf;
dnf -y install zathura-pdf-poppler #плагин PDF через poppler;
dnf -y install zathura-devel #плагин Development-PDF;
dnf -y install zathura-djvu #плагин DjVu;
dnf -y install zathura-cb #плагин Comic book;
dnf -y install zathura-ps #плагин PS;
dnf -y install zathura-bash-completion #плагин bash;
dnf -y install zathura-fish-completion #плагин fish;
dnf -y install zathura-zsh-completion #плагин zsh.
• использование:
zathura --fork #запуск программы без привязки к терминалу.
• опции программы:
-c path #задать директорию с конфигурационными файлами;
-d path #задать директорию с данными;
-e xid #задать родительское окно (X11);
-f string #открыть документ на заданной строке;
-l [debug|info|warning|error] #задать режим логирования;
-p path #задать директорию с плагинами;
-P number #открыть документ на заданной странице;
-w password #задать пароль на документ;
--fork #запустить форк в фоне.
• HotKeys - ДЕЙСТВИЯ С ДОКУМЕНТОМ:
[o] #открыть;
[O] #открыть.
• HotKeys - РЕЖИМЫ:
[Tab] #режим оглавления/чтения;
[F11] #полноэкранный режим;
[F5] #режим презентации;
[Ctrl]+[n] #показать/скрыть статусную строку;
[Ctrl]+[m] #показать/скрыть командную строку;
[Ctrl]+[Tab] #переход в открытую командную строку;
[Ctrl]+[c] #прервать операцию;
[Esc] #прервать операцию.
• HotKeys - ОТОБРАЖЕНИЕ:
[+] #приблизить;
[-] #отдалить;
[=] #выстввить оригинальный размер;
[z];[i] #приблизить;
[z];[o] #отдалить;
[z];[0] #выстввить оригинальный размер;
[N];[=] #выставить в заданный размер в N % (по умолчанию 100 %);
[a] #выравнивание по высоте;
[s] #выравнивание по ширине;
[d] #разворот;
[r] #повернуть по часовой стрелке;
[N]+[r] #повернуть по часовой стрелке N раз;
[Ctrl]+[r] #инвертировать цвет;
[R] #перезагрузить документ.
• HotKeys - НАВИГАЦИЯ:
[h] #прокрутка влево;
[l] #прокрутка вправо;
[t] #прокрутка полстраничная влево;
[y] #прокрутка полстраничная вправо;
[k] #прокрутка строчная вниз;
[j] #прокрутка строчная вверх;
[Ctrl]+[f] #прокрутка четвертьстраничная вверх;
[Ctrl]+[b] #прокрутка четвертьстраничная вниз;
[Ctrl]+[t] #прокрутка полстраничная влево;
[Ctrl]+[d] #прокрутка полстраничная вверх;
[Ctrl]+[u] #прокрутка полстраничная вниз;
[Ctrl]+[y] #прокрутка полстраничная вправо;
[J] #прокрутка страничная вверх;
[K] #прокрутка страничная вниз;
[N]+[J] #прокрутка постраничная вверх на N страниц;
[N]+[K] #прокрутка постраничная вниз на N страниц;
[gg] #быстрый переход в начало документа;
[G] #быстрый переход в конец документа;
[P] #быстрый переход вначало страницы;
[H] #быстрый переход вначало страницы;
[L] #быстрый переход вконец страницы;
[N]+[G] #быстрый переход на N`ную страницу;
[N]+[gg] #быстрый переход на N`ную страницу;
[f] #перейти по ссылке;
[F] #показать адрес ссылки.
• HotKeys - РЕЖИМ ОГЛАВЛЕНИЯ:
[j] #переход к следующему пункту;
[k] #переход к предыдущему пункту;
[l] #развернуть пункт;
[L] #развернуть всё;
[h] #свернуть пункт;
[H] #свернуть всё;
[Space]+[Enter] #открыть пункт.
• HotKeys - ПОИСК:
[/] #поиск по тексту;
[?] #поиск по тексту;
[n] #переход к следующему результату поиска;
[N] #переход к предыдущему результату поиска;
[Ctrl]+[o] #быстрый возврат к результатам поиска вверх;
[Ctrl]+[i] #быстрый возврат к результатам поиска вниз;
[Ctrl]+[j] #быстрый переход между двумя точками поиска вверх;
[Ctrl]+[k] #быстрый переход между двумя точками поиска вниз.
• HotKeys - ЗАКЛАДКИ:
[m];[N] #задать закладку N;
['];[N] #перейти к закладке N.
• HotKeys - ВЫХОД:
[q] #выход.
• cli - ПЕРЕХОД В РЕЖИМ КОМАНДНОЙ СТРОКИ:
: #выполнить команду;
[Tab] #автодополнение.
• cli - ОПЕРАЦИИ С ДОКУМЕНТОМ:
:close #закрыть документ;
:open #открыть документ;
:info #вывод информации о документе;
:print #печать документа;
:write #сохранить документ;
:write! #сохранить документ с принудительной перезаписю.
• cli - ЗАКЛАДКИ:
:bmark #сохранить закладку;
:bdelete #удалить закладку;
:blist #переход на закладку.
• cli - НАСТРОЙКИ ОТОБРАЖЕНИЯ:
:offset #настройка смещения страницы.
• cli - РАЗНОЕ:
:dump FILE #записать содержимое, описание, etc. о документе в файл;
:exec CMD #выполнить внешнюю команду;
:export #экспорт приложений;
:help #вывод справки.
• файлы и директории:
~/.config/zathura/zathurarc #пользовательский конфигурационный файл:
:set first-page-column :1 #первая страница в левой колонке;
:set first-page-column :2 #первая страница в правой колонке;
:set selection-clipboard clipboard #выделение мышью копировать в буфер обмена.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - MEDIA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# MEDIA - POST:
---------------------------------------------------------------------------------# (gpg) шифрование файлов и почтовых сообщений GnuPG:
• генерация ключей:
gpg --gen-key #генерация новой пары keys.
• вывод информации о ключах и списков ключей:
gpg --list-keys #просмотр списка keys;
gpg -k [7EFE74E5] #вывод списка всех или заданных pubkeys;
gpg -K [7EFE74E5] #вывод списка всех или заданных seckeys;
gpg --keyid-format LONG --list-keys #просмотр списка pubkeys с полным id;
gpg --keyid-format 0xLONG -k 7EFE74E5 #просмотр pubkey с полным id;
gpg --fingerprint user@example.xyz #вывод отпечатка pubkey;
•
•
•
•
•
•
•
•
•
•
•
•
•
gpg --list-sigs #вывод сигнатуры keys;
gpg --check-sigs #проверить сигнатуры keys.
редактирование ключей:
gpg --edit-key IDs #редактировать seckey (email|подпись|пароль|..).
удаление ключей:
gpg --delete-secret-keys 8640D6B9 #удаление seckey;
gpg --delete-keys 8640D6B9 #удаление pubkey;
gpg --delete-secret-and-public-key 8640D6B9 #удалить все заданные keys.
экспорт|импорт ключей:
gpg -o pubkey.txt -a --export 8640D6B9 #экспорт pubkey;
gpg -o privkey.txt -a --export-secret-keys 8640D6B9 #экспорт seckey;
gpg --import 8640D6B9 #импорт pubkey;
gpg --allow-secret-key-import --import 8640D6B9 #импорт seckey.
поиск ключей на keyserver:
gpg --keyserver key.com --search-keys 8640D6B9 #найти pubkey на сервере.
экспорт ключей на keyserver:
gpg --keyserver key.com --send-keys 8640D6B9 #отправить pubkey на сервер;
импорт ключей с keyserver:
gpg --keyserver key.com --recv-keys 8640D6B9 #получить pubkey с сервера;
gpg --keyserver key.com --refresh-keys #обновить pubkeys с сервера.
отзыв ключей:
gpg --gen-revoke 'yourname' #сгенерировать CRL (certificate revocation list).
симметричное шифрование/дешифровка (по паролю):
gpg -o output -c --cipher-algo TWOFISH -a file #зашифровать file в output;
gpg -o output -d file.gpg #дешифровка file.gpg в output.
шифрование/дешифровка pubkey:
gpg -r 8640D6B9 --clearsign file > file.gpg #подписать file;
gpg -e -r MyName file #зашифровать file своим pubkey;
gpg -o outfile -d file.gpg #расшифровать file.gpg в outfile;
gpg -e -r 8640D6B9 file #зашифровать file для 8640D6B9.
опции программы:
-a #вывод в текстовом формате ASCII;
-c #зашифровать только симметричным шифром;
--clearsign #подписать сообщение (подпись вместе с сообщением);
-d #дешифровать данные (по умолчанию);
-e #зашифровать данные;
-o file #вывод в указанный файл;
-r name #зашифровать для получателя name;
-s #подписать сообщение (подпись отдельно от сообщения);
--textmode #использовать канонический текстовый режим;
-u #использовать данный (локальный) ID для подписи и расшифровки.
список всех доступных опций:
--dump-options #вывести список всех доступных опций.
опции для работы с конфигурационными файлами:
--gpgconf-list #~{--list-config}, но используется gpgconf tool;
--list-config #вывод конфигурационных файлов gpg.
опции для работы с ключами:
--check-sigs #~{--list-sigs} + проверяет сигнатуры ключей;
--delete-key name #удалить заданный публичный ключ (возможно {--yes});
--delete-secret-and-public-key name #удалить секретный и публичный ключи;
--delete-secret-key name #удалить заданный секретный ключ;
--edit-key #редактировать ключи:
clean #очистка полей ключа;
passwd #задать новый пароль;
...
save #сохранить изменения и выйти;
quit #выход без сохранения;
--export file #экспортировать все ключи в file или stdout;
--export-secret-keys file #~{--export}, но выгружает только секретные ключи;
--export-secret-subkeys file #~{--export-secret-keys};
--fingerprint #вывод всех доступных открытых ключей;
--gen-key #создать новую связку ключей (приватный и публичный);
--gen-revoke name #сгенерировать сертификат отзыва заданного ключа;
--import #импорт ключей;
-k|--list-keys|--list-public-keys #вывод списка публичных ключей;
-K|--list-secret-keys #вывод списка секретных ключей;
--list-sigs #~{-k} + выводит сигнатуры ключей;
--lsign-key #~{--sign-key} + маркировать как неэкспортируемый ключ;
--recv-keys key IDs #импорт заданных ключей с keyserver;
--refresh-keys #выполнить обновление ключей с keyserver;
--search-keys names #поиск заданных ключей на keyserver;
--send-keys key IDs #~{--export}, но отправляет ключи на keyserver;
--sign-key name #подписать публичный ключ секретным ключом.
• опции для работы с файлами:
-b|--detached-sign #выполнить отдельную подпись;
-c|--symmetric #использовать симметричное шифрование;
--clearsign file #очистить подпись;
-d|--decrypt file #расшифровать file;
--decrypt-files #задать список файлов;
-e|--encrypt file #зашифровать file;
--encrypt-file #задать список файлов;
-o|--output file #задать выходной файл (с {-d|--verify|--export|..});
-s|--sign file #подписать file;
--verify file.gpg #проверка file.gpg;
--verify-files #задать список файлов;
• вспомогательные опции для работы с файлами:
-a|--armor #использовать ASCII вывод (по умолчанию bin);
--cipher-algo algo #задать алгоритм симметричного шифрования:
IDEA
3DES
CAST5
BLOWFISH
AES128|192|256
TWOFISH
CAMELLIA128|192|256
--disable-large-rsa #не использовать длинные ключи RSA;
--enable-large-rsa #использовать длинные ключи RSA;
--group name=gname #задать имя группы почтового агента;
--homedir dir #задать домашнюю директорию;
--interactive #задавать вопросы перед изменениями;
--no #автоответ НЕТ;
--no-options #это --options /dev/null + ~/.gnupg;
--no-tty #не выводить сообщения на терминал;
--options file #прочитать настройки из заданного файла;
--quiet #тихий режим;
-r|--recipient uname #пользователь для которого шифруется сообщение;
-R #~{-r}, но зашифровать пользовательским ключом;
-u|--local-user uname #использовать uname как ключ для подписи;
--yes #автоответ ДА;
-z num #задать уровень компрессии (по умолчанию 6).
• файлы и директории:
~/.gnupg/gpg-agent.conf #файл настроек gpg-agent:
pinentry-program /usr/bin/pinentry-tty #отключить GUI gpg-agent.
---------------------------------------------------------------------------------# (openssl) симметричное шифрование/дешифровка файлов и директорий:
• шифрование файлов:
openssl aes-128-cbc -salt -in file -out file.aes #шифровать файл;
openssl aes-128-cbc -d -salt -in file.aes -out file #расшифровать файл.
• архивация и шифрование объектов:
tar -cf - dir | openssl aes-256-cbc -salt -out dir.tar.aes #архивировать tar и зашифровать;
openssl aes-256-cbc -d -salt -in dir.tar.aes | tar -x -f - #расшифровать и распаковать архив;
tar -zcf - dir | openssl aes-256-cbc -salt -out dir.tar.gz.aes #архивировать tar+gzip и зашифровать;
openssl aes-256-cbc -d -salt -in dir.tar.gz.aes | tar -xz -f - #расшифровать и распаковать архив.
---------------------------------------------------------------------------------# (msmtp) отправка почты по зашифрованному протоколу SMTPS:
echo "bablabla" | msmtp user@mail.com #отправка сообщения с аккаунта по умолчанию на адрес user@mail.com;
echo "bablabla" | msmtp -a name user@mail.com #отправка сообщения с аккаунта name на адрес user@mail.com;
echo "bablabla" | msmtp --debug user@mail.com #отправка сообщения с аккаунта по умолчанию на адрес user@mail.com с выводом подробного отчета.
---------------------------------------------------------------------------------# (mutt) консольный почтовый клиент по протоколам IMAP(S)/SMTP(S)/POP(S):
mutt -z #запустить почтовый клиент;
mutt -fR /var/spool/mail/captain #запуск только в режиме чтения файла;
echo "text" | mutt -s "subject" -a /path/to/file -- user@mail.com #отправка письма.
• опции программы:
-a /path #присоединить файл к сообщению;
-b user@mail.com #указать скрытый адрес копии (Bcc:);
-c user@mail.com #указать адрес копии (Cc:);
-e command #команда, которая будет выполнена после инициализации;
-f /path #указать почтовый ящик для чтения;
-F /path #указать альтернативный файл muttrc;
-H /path #указать черновик файла для чтения заголовка из файла;
-i /path #указать файл, который Mutt должен включить в ответ;
-m type #указать тип почтового ящика по умолчанию;
-n #заставляет Mutt не читать систему Muttrc;
-p #вызвать отложенное сообщение;
-R #почтовый ящик в режиме чтения;
-s subject #указать тему (в кавычках, если в ней есть пробелы);
-v #показать версию и определения время компиляции;
-x #имитировать режим отправки почты mailx;
-y #выбрать почтовый ящик, указанный в вашем списке "mailboxes";
-z #немедленно выйти, если в почтовом ящике нет сообщений;
-Z #открыть первую папку с новым сообщением и выйти, если ее нет;
-- #окончание списка опций.
• HotKeys:
[Ctrl+C] #отменить действие (выводится запрос на выход из программы);
[Up|Down] #перемещение между письмами не отмеченными для удаления;
[j|k] #перемещение между письмами не отмеченными для удаления;
[J|K] #перемещение между письмами (в т.ч. отмеченными для удаления);
[/] #поиск (в отправителе/теме/сообщении);
[|] #передать файл (приложение к письму) программе (открыть в ...);
[Tab] #след. новое сообщение, при отсутствии - следующее непрочитанное;
[Enter] #прочитать сообщение либо подтвердить команду;
[%] #запретить/разрешить изменения почтового ящика;
[l] #задать фильтр: [unread] непрочитанные / [read] прочитанные / [all] все;
[d] #выделить письмо для удаления;
[Ctrl+D] #выделить для удаления всю дискуссию;
[u] снять выделение с письма;
[Ctrl+U] #снять выделение со всей дискуссии;
[$] #применить изменения (удалить помеченные письма, и т.д.);
[G] #получить новую почту;
[N] #пометить письмо как прочитанное/непрочитанное;
[m] #написать новое письмо;
[r] #ответить отправителю подсвеченного/читаемого письма;
[g] #ответить всем (group reply);
[f] #перенаправить письмо (forward);
[h] #показать/скрыть все заголовки письма;
[a] #создать алиас для отправителя письма;
[t] #поставить/снять метку + ;<команда> (например ;d - удалить);
[s] /path #сохранить/переместить письмо в папку (сохраняет вложения);
[c ?] #просмотр списка папок;
[c =folder]|[c +folder] #перейти в папку folder;
[c !] #переподключение к почтовому серверу;
[C] #копировать текущее сообщение в другой файл;
[o] #сортировать по ... (выбрать из предложенного списка по буКве);
[O] #инвертирует порядок сортировки;
[v] #показ меню вложения;
[V] #вывод версии программы в командной строке;
[q] #выход из программы / меню вложений / письма / ...;
[?] #помощь;
• HotKeys - ФИЛЬТР ПИСЕМ:
[T] #установить метку (*):
~B pattern #поиск по содержимому писем;
~s pattern #поиск по теме писем (subject).
[Ctr+T] #снять метку (*):
~B pattern #по содержимому писем;
~s pattern #по теме писем (subject).
• HotKeys - ТЕКСТ СООБЩЕНИЯ:
[S] #быстрый переход к содержимому письма;
[t] #переход к следующему сообщению;
[j] #переход к следующему сообщению;
[k] #переход к предыдущему сообщению;
[space] #пролистать сообщение вперед;
[-] #пролистать сообщение назад;
[i] #выход
• HotKeys - РЕДАКТИРОВАНИЕ ПОДГОТОВЛЕННЫХ К ОТПРАВКЕ СООБЩЕНИЙ:
[t] #изменить адрес получателя;
[c] #редактирование адреса копии (Cc:);
[b] #редактирование скрытого адреса копии (Bcc:);
[s] #редактирование темы (Subject:);
[r] #редактирование поля пересылки (Reply-To:);
[a] #прикрепить файл в виде вложения;
[A] #прикрепить файл из почтового ящика;
[e] #вернуться к редактированию сообщения;
[m] #возобновить отправку сообщения;
[C] #копировать сообщение в файл;
[q] #отложить/удалить сообщение;
[y] #отправить подготовленные к отправке письма;
• HotKeys - ПОДПИСЬ И ШИФРОВАНИЕ ПИСЬМА:
[p] #вывод опций GnuPG;
[s] #подписать письмо;
[e] #шифровать сообщение;
[a] #подписать как;
[b] #оба;
[m] #mime;
[c] #отменить действия связанные с GnuPG.
• командная строка:
:source /path/muttrc #подгрузка настроек в запущенной программе;
426 #быстрый переход к сообщению номер 426.
==================================================================================
# MEDIA - WWW:
---------------------------------------------------------------------------------# (lynx) консольный текстовый браузер:
lynx -restrictions=all -vikeys -editor=vi -scrollbar example.com #запуск браузера;
lynx page.html -dump #конвертация HTML в текст.
• опции программы:
--accept_all_cookies #разрешить cookie-файлы для всех сайтов;
--anonymous #задействовать анонимный режим;
--auth=ID:PASS #задать параметры авторизации;
--book #задействовать книжный режим для просмотра страниц;
--cache=num #задать число кэшируемых документов (по умолчанию 10);
--center #задействовать центрирование HTML;
--cfg=file #задать конфигурационный файл отличный от дефолтного;
--cmd_log=file #задать file для сохранения сессии;
--connect_timeout=num #задать таймаут подключения в секундах;
--cookie_file=file #задать cookie-файл (для авторизации);
--cookies #ручное управление cookie'сами;
--curses_pads #задействовать горизонтальный скроллинг страниц;
--display=DISPLAY #задать X дисплей;
--display_charset=MIMEname #задать кодировку для вывода терминала;
--editor=EDITOR #задать текстовый редактор для редактирования текста;
--force_html #интерпретировать док-ты с различными суффиксами как HTML;
--force_secure #использовать SSL;
--ftp #выключить FTP доступ;
--hiddenlinks= #контроль скрытых ссылок:
merge #отображать скрытые ссылки;
listonly #отобразить только списком;
ignore #игнорировать скрытые ссылки.
--homepage=URL #задать URL домашней страницы;
--image_links #отображать ссылки для всех изображений;
--localhost #работать локально (offline);
--mime_header #выводить MIME-заголовок;
--nobold #отключить видео-атрибуты;
--nobrowse #отключить каталог просмотра;
--noexec #отключить выполнение программ (по умолчанию);
--nofilereferer #отключить переключение .. заголовков для файлов URL;???
--nolog #отключить лог;
--nomargins #отключить левые и правые отступы;
--noprint #отключить поддержку печати;
--noreverse #отключить реверс видео-атрибутов;
--nosocks #отключить поддержку протоколов socks;
--notitle #отключить вывод заголовка с названием документа;
--nounderline #отключить поддержку подчеркивания видео-атрибутов;
--pauth=ID:PASS #задать параметры авторизации для proxy-сервера;
--print #задействовать функцию печати (по умолчанию);
--reload #автоматическое переподключение к proxy-серверу;
--restrictions=all #ограничить браузер по максимуму:
bookmark #отключено;
bookmark_exec #отключено;
change_exec_perms #отключено;
default #отключено;
...
--rlogin #отключить rlogin;
--scrollbar #задействовать скроллбар;
--short_url #отображать короткие URL в строке статуса;
--show_cfg #вывод cfg файла;
--syslog=text #задать заголовок сообщения в syslog;
--syslog_url #задействовать логирование в syslog;
--telnet #отключить поддержку telnet;
--useragent=uagent #задать альтернативный useragent;
--vikeys #задействовать переключение клавиш [h|j|k|l] как в vim.
• HotKeys - ХЕЛП:
[k] #вывод меню HotKeys;
[h] #хелп;
[?] #хелп;
[F1] #хелп.
• HotKeys - НАВИГАЦИЯ (листание):
[Ctrl+n] #пролистать документ (страницу) на одну строку вперед;
[Delete] #пролистать документ (страницу) на одну строку вперед;
[Ctrl+p] #пролистать документ (страницу) на одну строку назад;
[Insert] #пролистать документ (страницу) на одну строку назад.
[(] #пролистать документ (страницу) на пол экрана вперед;
[)] #пролистать документ (страницу) на пол экрана назад.
[Ctrl+f] #пролистать документ (страницу) на один экран вперед;
[PageDown] #пролистать документ (страницу) на один экран вперед;
[Space] #пролистать документ (страницу) на один экран вперед;
[3] #пролистать документ (страницу) на один экран вперед;
[+] #пролистать документ (страницу) на один экран вперед;
[b] #пролистать документ (страницу) на один экран назад;
[Ctrl+b] #пролистать документ (страницу) на один экран назад;
[PageUp] #пролистать документ (страницу) на один экран назад;
[9] #пролистать документ (страницу) на один экран назад;
[-] #пролистать документ (страницу) на один экран назад.
[Ctrl+e] #переход в окончание документа (страницы);
[End] #переход в окончание документа (страницы);
[1] #переход в окончание документа (страницы);
[Ctrl+a] #переход в начало документа (страницы);
[Home] #переход в начало документа (страницы).
[}] #сдвиг экрана вправо;
[{] #сдвиг экрана влево.
• HotKeys - НАВИГАЦИЯ (гиперссылки):
•
•
•
•
•
[>] #перейти на следующую гиперссылку;
[2] #перейти на следующую гиперссылку;
[Tab] #перейти на следующую гиперссылку или поле;
[Down] #перейти на следующую гиперссылку или поле;
[<] #перейти на предыдущую гиперссылку;
[8] #перейти на предыдущую гиперссылку;
[Up] #перейти на предыдущую гиперссылку или поле.
[x] #перейти по гиперссылке не кэшируя ее;
[Ctrl+j] #перейти по текущей гиперссылке;
[Ctrl+m] #перейти по текущей гиперссылке;
[Enter] #перейти по текущей гиперссылке;
[Right] #перейти по текущей гиперссылке;
[6] #перейти по текущей гиперссылке;
[0] #перейти по номеру гиперссылки из списка сохраненных страниц;
[#] #переход по гиперссылкам ToolBar или Banner;
[u] #перейти на предыдущую страницу (BackSpace);
[Left] #перейти на предыдущую страницу (BackSpace);
[4] #перейти на предыдущую страницу (BackSpace);
[$] #сделать последнюю гиперссылку текущей;????
[^] #сделать последнюю гиперссылку текущей.????
[m] #перейти на главную страницу (HomePage);
[7] #перейти на главную страницу (HomePage).
HotKeys - НАСТРОЙКИ И ПЕРЕКЛЮЧАТЕЛИ:
[o] #открыть страницу настроек браузера;
[Ctrl+t] #включить одновременное пролистывание документа и ссылок;
[Ctrl+v] #переключение метода разбора документа (TagSoup|SortaSGML);
["] #переключение метода разбора двойных кавычек (вкл|выкл);
[`] #переключение метода разбора двойных кавычек (вкл|выкл);
['] #переключение метода исторического разбора комментариев (вкл|выкл);
[*] #переключение метода отображения картинок (ссылка|????);
[[] #переключение метода разбора изображений с атрибутом ALT (вкл|выкл);
[|] #переключение метода переноса строк (выбор в меню);
[@] #переключение кодировки для raw 8-bit или CJK (вкл|выкл).
HotKeys - ЗАКЛАДКИ|ИСТОРИЯ|КЭШ|COOKIE:
[a] #добавить текущую гиперссылку в закладки;
[v] #вывод списка сохраненных закладок;
[r] #удалить гиперссылку из закладок.
[Ctrl+h] #вывод списка посещенных ранее (текущая сессия) ресурсов;
[V] #вывод списка посещенных ранее (предыдущие сессии) ресурсов;
[l] #вывод списка гиперссылок для текущей страницы (имена);
[A] #вывод списка гиперссылок для текущей страницы (полные пути).
[s] #разрешить индексацию поиска;
[_] #очистить авторизационную информацию для этого сеанса;
[Ctrl+x] #проверить список кэшированных документов (страниц).
[Ctrl+k] #протестировать cookie.
HotKeys - ВО ВРЕМЯ СЕРФИНГА:
[Ctrl+l] #обновить текущую страницу документа (перерисовка);
[Ctrl+w] #обновить текущую страницу документа (перерисовка);
[Ctrl+r] #обновить текущую страницу документа (перезапрос данных);
[d] #загрузить текущую гиперссылку на ПК;
[g] #набрать адрес для перехода или открыть сохраненную ранее ссылку;
[G] #редактировать текущую гиперссылку и перейти по ней;
[C] #изменить текущую директорию;
[t] #пометить файл или директорию для дальнейших действий;
[:] #перейти в командный режим;
[z] #прервать сетевое соединение.
HotKeys - ПОИСК:
[/] #поиск по документу (странице);
[n] #перейти к следующему совпадению поиска;
[N] #перейти к предыдущему совпадению поиска.
HotKeys - ФАЙЛЫ:
[c] #создать новый файл;
[t] #выделить файл;
[e] #редактировать выделенный файл;
[f] #показать полное меню опций для текущего файла;
[m] #изменить имя или местоположение выделенного файла;
[d] #загрузить выделенный файл;
[u] #загрузить файл в текущую директорию;
[r] #удалить выделенный файл.
• HotKeys - ПОД КАПОТОМ:
[=] #вывод информации о текущем документе (странице);
[i] #вывод индекса документа (страницы);
[]] #вывод заголовка текущего документа (страницы) или гиперссылки;
[;] #вывод журнала трассировки для текущего сеанса;
[\] #просмотр исходного текста документа (страницы).
• HotKeys - РЕДАКТИРОВАНИЕ:
[e] #редактировать текущий документ (страницу) или текстовую область;
[E] #редактировать текущую гиперссылку (?и перейти по ней?).
• HotKeys - ПЕЧАТЬ:
[p] #вывод документа (страницы) на печать (сохранить в текстовый файл).
• HotKeys - ДРУГОЕ:
[,] #запустить внешнюю программу с текущей страницей;
[.] #запустить внешнюю программу с текущей гиперссылкой;
[Ctrl+u] #отмена при возврате к предыдущему документу;
[Ctrl+q] #изменить центрирование документа (страницы);
[c] #отправить комментарий автору этого документа;
[j] #выполнить операцию перехода;
[Ctrl+s] #вывод совета по ссылке.????
• HotKeys - ВЫХОД:
[q] #выход (с запросом);
[Q] #немедленный выход (без запроса);
[Ctrl+d] #немедленный выход (без запроса);
[!] #выйти из браузера в систему без закрытия браузера.
• cli - КОМАНДНАЯ СТРОКА:
[:]+[Tab*2] #выбор команд из списка.
---------------------------------------------------------------------------------# (elinks) текстовый браузер командной строки с поддержкой framebuffer:
elinks -anonymous 1 -default-keys 1 -no-home 1 #запуск браузера.
• опции программы:
--anonymous [0|1] #задействовать анонимный режим;
--config-dir dir #задать рабочую директорию;
--config-dump #вывод настроек текущего конфигурационного файла;
--config-file cfg #задать конфигурационный файл;
--config-help #вывод справки по настройкам конфигурационного файла;
--default-mime-type #использовать файл MIME заданный по умолчанию;
--default-keys [0|1] #использовать HotKeys по умолчанию;
--dump [0|1] URL #вывод отформатированной страницы в stdout;
--localhost [0|1] #работать локально;
--long-help #вывод подробной справки;
--lookup #lookup и DNS-resolve;
--no-connect [0|1] #не соединяться;
--no-home [0|1] #не использовать домашнюю директорию;
--source [0|1] URL #вывод html-кода страницы в stdout;
--verbose num #задать уровень пиздежа:
0 #вывод ошибок;
1 #вывод ошибок и предупреждений;
2 #вывод всех сообщений.
• HotKeys - МЕНЮ:
[Esc] #активировать строку меню|закрыть меню;
[Tab|rAlt+Tab|Ctrl+Tab] #следующий пункт меню;
[lAlt+Tab] #предыдущий пункт меню.
• HotKeys - НАВИГАЦИЯ:
[Ctrl+n] #листать страницу на одну строку вниз;
[Ctrl+f] #листать страницу на один экран вниз;
[Ctrl+e] #перейти к окончанию страницы;
[Ctrl+p] #листать страницу на одну строку вверх;
[Ctrl+b|b] #листать страницу на один экран вверх;
[Ctrl+a] #перейти к началу страницы.
•
•
•
•
•
•
•
•
•
•
[]|}] #скроллинг страницы вправо;
[[|{] #скроллинг страницы влево.
[H] #открыть homepage.
[>] #перейти на следующую вкладку;
[Alt+>] #переместить текущую вкладку вправо;
[<] #перейти на предыдущую вкладку;
[Alt+<] #переместить текущую вкладку влево;
[Ctrl+j] #перейти по текущей ссылке;
[x] #перейти по текущей ссылке с перезагрузкой;
[u] #вернуться к предыдущей ссылке.
HotKeys - СЕРФИНГ:
[g] #задать URL в окне перехода;
[G] #открыть последний заданный URL в окне перехода;
[E] #открыть текущую ссылку в окне перехода;
[Ctrl+l] #перерисовать страницу;
[Ctrl+r] #перезагрузить текущую страницу;
[z] #разорвать соединение;
[L] #открыть контекстное меню для текущей ссылки.
HotKeys - ВКЛАДКИ:
[t] #открыть новую вкладку (задать URL в окне перехода);
[T] #открыть текущую ссылку фоном в новой вкладке;
[c] #закрыть текущую вкладку;
[e] #открыть меню вкладки.
HotKeys - ИЗОБРАЖЕНИЯ:
[v] #показать текущее изображение;
[*] #вкл|выкл ссылки на изображения.
HotKeys - ЗАГРУЗКИ:
[d|r] #загрузить текущий URL;
[D] #открыть менеджер загрузок.
HotKeys - ЗАКЛАДКИ|КЭШ|ИСТОРИЯ|COOKIES:
[a|A] #сохранить текущую ссылку (создать закладку);
[s] #открыть менеджер закладок;
[C] #открыть кэш-менеджер;
[h] #открыть менеджер истории;
[F] #открыть из менеджера истории;
[K] #открыть cookies-менеджер;
[Ctrl+k] #перезагрузить cookies-файл.
HotKeys - ИНФОРМАЦИЯ:
[=] #вывод информации о текущей странице;
[|] #вывод информации о заголовке текущей страницы;
[\] #отобразить html-код текущей страницы.
HotKeys - ПОИСК:
[/] #активировать строку поиска;
[?] #активировать строку обратного поиска;
[n] #перейти к следующему совпадению;
[N] # перейти к предыдущему совпадению.
HotKeys - ДРУГОЕ:
[.] #вывод порядкового номера ссылок;
[,] #открыть Lua-консоль;
[:] #переход в режим командной строки;
['] #задать метку для перехода;
[m] #задать метку;
[k] #открыть HotKeys-менеджер;
[o] #открыть менеджер опций;
[l] #перейти по текущей ссылке;????
[f] #максимизировать текущий фрейм;
[W] #переключатель ширины строк (экран|в одну строку);
[%] #вкл|выкл подцветку страницы;????
HotKeys - ВЫХОД:
[q] #выход с запросом;
[Q] #выход без запроса.
некоторые настройки конфигурационного файла:
set cookies.accept_policy = num #задать уровень обработки cookies:
0 #запретить cookies;
1 #запрашивать разрешение на использование cookies;
2 #разрешить cookies.
set cookies.paranoid_security = [0|1] #задействовать пераноид-режим;
set cookies.save = [0|1] #сохранять cookies;
set cookies.resave = [0|1] #перезаписывать cookies.
set document.browse.images.display_style = num #вывод изображений:
0 #вывод изображений;
1 #вывод имен изображений;
2 #вывод alt/title атрибутов изображений, если нет, то изображение;
3 #вывод alt/title атрибутов изображений, если нет, то имя изображения.
set document.browse.images.show_as_links = [0|1] #ссылка на изображение;
set protocol.http.user_agent <str> #задать строку UserAgent'а.
• файлы и директории:
/etc/elinks.conf #основной конфигурационный файл;
~/.elinks/elinks.conf #пользовательский конфигурационный файл;
~/.elinks/cookies #файл с cookies.
---------------------------------------------------------------------------------# (newsboat|newsbeuter) чтение RSS|Atom-фидов:
• установка:
dnf -y install newsboat
dnf -y install newsbeuter
• использование:
newsboat -u /path/to/urls #запуск RSS-ленты из urls файла;
newsbeuter -r #запуск RSS-ленты.
• опции программы:
-e #экспорт файла со списком RSS-лент в стандартный вывод;
-r #обновить ленты после запуска;
-i file #импортировать file OPML;
-u file #загрузить внешний file со списком RSS-лент;
-c file #задать file кэша данных;
-C file #задать file настроек программы;
-x cmd #выполнить список команд;
-X #полная очистка кэша;
-o #работать в offline режиме;
-q #запуск в тихом режиме;
-l level #задать уровень сообщений записываемых в журнал (от 0 до 6);
-d file #задать file журнала;
-E file #экспорт прочитанных заметок в file;
-I file #импорт прочитанных заметок из file.
• HotKeys - СПРАВКА:
[?] #хелп.
• HotKeys - НАВИГАЦИЯ:
[Down] #листать ленту на одну строку вниз;
[PageDown] #листать ленту на один экран вниз;
[End] #переход к окончанию ленты;
[Up] #листать ленту на одну строку вверх;
[PageUp] #листать ленту на один экран вверх;
[Home] #переход к началу ленты.
[n] #переход к следующей непрочитанной заметке;
[J] #переход к следующей непрочитанной заметке;
[p] #переход к предыдущей непрочитанной заметке;
[K] #переход к предыдущей заметке;
[Ctrl+k] #переход к случайной непрочитанной заметке.
• HotKeys - НАСТРОЙКИ И УПРАВЛЕНИЕ:
[l] #отображение прочитанных лент (вкл|выкл).
• HotKeys - ЧТЕНИЕ ЛЕНТЫ:
[Ctrl+r] #обновить список ссылок из файла настроек;
[r] #обновить выбранную ленту;
[R] #обновить все ленты;
[Ctrl+l] #переопределить содержимое экрана (обновить экран);
[g] #отсортировать текущий список;
[G] #отсортировать список в обратном порядке;
[Enter] #открыть ленту|заметку;
[Ctrl+j] #открыть ленту|заметку;
[Ctrl+m] #открыть ленту|заметку;
[t] #выделить метку;
[Ctrl+t] #очистить текущую метку;
[A] #отметить ленту как прочитанную;
[C] #отметить все ленты как прочитанные;
[o] #открыть заметку в браузере;
[:] #переход в командную строку.
• HotKeys - ОКНА:
[v] #посмотреть список открытых окон;
[Ctrl+v] #перейти к следующему диалогу;
[Ctrl+g] #вернуться в предыдущий диалог.
• HotKeys - ПОИСК И ФИЛЬТРАЦИЯ:
[/] #поиск.
[F] #задать фильтр;
[f] #выбрать предопределенный фильтр;
[Ctrl+f] #очистить текущий фильтр.
• HotKeys - ДРУГОЕ:
[,] #вызвать макрос;
[E] #редактировать файл urls.
• HotKeys - ВЫХОД:
[q] #вернуться в предыдущий диалог|выйти;
[Q] #закрыть программу без подтверждения.
• командная строка:
:save file #сохранить текущую ленту в file;
:dumpconfig file #сохранить текущие настройки программы в file.
• файлы и директории:
~/.newsbeuter/urls #файл со списком RSS-лент.
---------------------------------------------------------------------------------# (youtube-dl) #программа для загрузки контента с медиаплатформ (YouTube|VK|..):
• установка:
dnf -y install youtube-dl
• использование:
youtube-dl -ciw -f 'best' --write-description -o 'DIR/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' URL #загрузка контента с описанием в лучшем качестве;
youtube-dl -U #обновление программы;
youtube-dl --list-extractors #вывод списка платформ, с которыми работает программа;
youtube-dl -a file -s -e -g --get-id URL > outputfile #получить названия файлов (URL, id, title) для списка URL из file в outputfile;
youtube-dl -ciw URL #загрузить контент по заданному URL;
youtube-dl -ciw -f bestvideo+bestaudio URL #загрузить контент с максимальным качеством видео и аудио;
youtube-dl -ciw --playlist-start 13 --playlist-end 31 URL #загрузить с 13 по 31 видео текущего плейлиста;
youtube-dl -ciw -o '%(autonumber)s_%(title)s.%(ext)s' --autonumber-start 2 URL #задать шаблон названия и стартовый автономер при сохранении файла;
youtube-dl -ciw --write-description URL #сохранять описание к контенту в файл .description;
youtube-dl -ciw --match-title "ФИЛЬТР" URL #сохранять весь контент с заданным ФИЛЬТРОМ;
youtube-dl -ciw --reject-title "ФИЛЬТР" URL #сохранять всё, кроме контента с заданным ФИЛЬТРОМ;
youtube-dl -F URL #вывод списка доступных файловых форматов для загрузки и их характеристик;
youtube-dl -x --audio-format mp3 --embed-thumbnail URL #загрузить аудио-дорожку в формате mp3 с обложкой;
youtube-dl -f 249 URL #загрузить контент в формате соответствующему 249 номеру;
youtube-dl -ciw -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' URL #загрузить видео в формате mp4 и аудио в формате m4a лучшего качества, или видео в формате
mp4 лучшего качества, или видео и аудио лучшего качества;
youtube-dl -ciw -f 'bestvideo[height<=480]+bestaudio/best[height<=480]' URL #загрузить видео качества не превышающего 480p и аудио лучшего качества, или видео и аудио не
превышающее 480p;
youtube-dl -ciw -f 'best[filesize<50M]' URL #загрузить контент лучшего качества не более 50M;
youtube-dl -ciw -f '(bestvideo+bestaudio/best)[protocol^=http]' URL #загрузить контент лучшего качества по протоколу http|https;
youtube-dl -ciw -f 'bestvideo,bestaudio' -o '%(title)s.f%(format_id)s.%(ext)s' URL #загрузить контент лучшего качества и сохранить по заданному шаблону;
youtube-dl -ciw --date 19700101 URL #загрузить контент только от [1 января 1970];
youtube-dl -ciw --dateafter now-6months URL #загрузить контент начиная с [текущий день + 6 месяцев];
youtube-dl -ciw --dateafter 20000101 --datebefore 20091231 URL #загрузить контент с [1 января 2000] по [31 декабря 2009].
• опции программы:
-a file #задать file содержащий список URL загрузаемого контента;
-c #продолжить загрузку с прерванного файла;
-e #режим симуляции загрузки с выводом title (заголовка);
-F #вывод списка доступных файловых форматов для загрузки и их характеристик;
-f format #задать format загружаемого контента и его характеристики:
форматы:
[3gp|aac|flv|m4a|mp3|mp4|ogg|wav|webm];
???
NUMBER из списка полученный опцией -F.
фильтры качества в охуительности:
best #наилучшее качество видео и аудио;
bestaudio #наилучшее качество аудио;
bestvideo #наилучшее качество видео;
worst #наихудшее качество видео и аудио;
worstaudio #наихудшее качество аудио;
worstvideo #наихудшее качество видео.
фильтры качества в единицах измерения:
abr #задать битрейт для аудио [KBit/s];
asr #задать частоту для аудио [Hertz];
filesize #задать размер файла [K|M];
fps #задать флопсы для видео [fps];
height #задать верхний порог качества для видео из доступных;
tbr #задать битрейт для видео и аудио [KBit/s];
vbr #задать битрейт для видео [KBit/s];
width #задать нижний порог качества для видео из доступных.
фильтры дополнительные:
acodec #задать аудиокодек;
container #задать имя контейнера формата;
ext #задать расширение;
format_id #задать id;
language #задать языковой код;
protocol #задать протокол загрузки [http|https|rtsp|rtmp|rtmpe|mms|f4m|ism|http_dash_segments|m3u8|m3u8_native];
vcodec #задать видеокодек.
используемые символы:
[<|<=|>|>=|=|!=]
-g #режим симуляции загрузки с выводом URL;
-i #игнорировать ошибки;
-o 'ИМЯ ФАЙЛА' или '%ШАБЛОН%' #задать 'ИМЯ ФАЙЛА' или '%ШАБЛОН%' имени файла(ов):
'%(title)s.%(ext)s'
'%(title)s-%(id)s.%(ext)s'
'%(autonumber)s_%(title)s.%(ext)s'
'%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s'
'%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s'
'%(playlist)s/%(chapter_number)s - %(chapter)s/%(title)s.%(ext)s'
'%(series)s/%(season_number)s - %(season)s/%(episode_number)s - %(episode)s.%(ext)s'
'~/DIR/%(playlist)s/%(chapter_number)s - %(chapter)s/%(title)s.%(ext)s'
"C:/DIR/%(series)s/%(season_number)s - %(season)s/%(episode_number)s - %(episode)s.%(ext)s"
где:
'~/DIR/..' или "C:/DIR/.." #задать имя директории для Linux или Windows;
autonumber #автонумерация файла;
chapter #название заглавия;
chapter_number #номер заглавия;
episode #название эпизода;
episode_number #номер эпизода;
ext #расширение файла;
id #id файла;
playlist #название плейлиста;
playlist_index #индекс плейлиста;
season #название сезона;
season_number #номер сезона;
series #название серии;
title #заголовок (имя файла);
uploader #имя пользователя канала.
-q #тихий режим;
-r RATE [NK|NM] #ограничить скорости загрузки;
-s #режим симуляции загрузки;
-U #обновить программу;
-w #не перезаписывать загруженные файлы;
-x #конветрировать контент в аудио-дорожку;
--abort-on-error #прервать загрузку контента в случае какой-либо ошибки;
--age-limit YEARS #скачивать контент загруженный на сервер за указанный YEARS;
--audio-format FORMAT #задать желаемый аудио-FORMAT:
[aac|flac|mp3|m4a|opus|vorbis|wav|best (по умолчанию)].
--autonumber-start Number #задать специфический Number в имени файлов с которого производить автонумерацию контента;
--buffer-size [1024-16k] #задать размер буферизируемых фрагментов (по умолчанию 1024);
--date DATE #скачивать контент загруженный на сервер в указанную DATE:
[YYYYMMDD] #задать абсолютную дату;
[now|today] #сегодня;
[+|-] #прибавить, или убавить;
[0-9] #задать количество;
[day|week|month|year] #дней, недель, месяцев, лет.
--dateafter DATE #скачивать контент загруженный на сервер после указанной DATE (включительно);
--datebefore DATE #скачивать контент загруженный на сервер до указанной DATE (включительно);
--dump-user-agent #вывод данных user-agent, отсылаемых утилитой на веб-сервер;
--extractor-descriptions #вывод списка URL с примечаниями;
--embed-thumbnail #создать обложку к аудио-файлу;
--geo-verification-proxy URL #задать прокси-сервер для фейковой геолокации (если перечень стран ограничен для просмотра);
--get-id #режим симуляции загрузки с выводом id;
--get-thumbnail #режим симуляции загрузки с выводом URL миниатюры;
--get-description #режим симуляции загрузки с выводом описания к контенту;
--get-duration #режим симуляции загрузки с выводом продолжительности файла;
--get-filename #режим симуляции загрузки с выводом имени файла;
--get-format #режим симуляции загрузки с выводом формата;
--id #использовать id в качестве названия видео;
--include-ads #скачивать видео вместе с рекламой (экспериментальная опция);
--list-extractors #вывод списка URL, с которыми работает программа;
--mark-watched #пометить видео просмотренным (только для youtube);
--match-title "ФИЛЬТР" #загрузка контента по ФИЛЬТРУ (в т.ч. regex или global);
--max-downloads NUMBER #остановить загрузку при достижении заданного NUMBER файла;
--max-filesize SIZE [Nk|Nm] #не загружать видео, если его размер > SIZE;
--min-filesize SIZE [Nk|Nm] #не загружать видео, если его размер < SIZE;
--no-check-certificate #не проверять сертификат безопасности;
--no-continue #перезаписать существующий контент;
--no-mark-watched #пометить видео не просмотренным (только для youtube);
--no-playlist #не загружать контент в плейлистах;
--no-warnings #игнорировать предупреждения;
--playlist-end NUMBER #задать NUMBER крайнего видео плейлиста;
--playlist-random #загружать содержимое плейлиста в случайном порядке;
--playlist-reverse #начать загрузку с конца плейлиста;
--playlist-start NUMBER #задать NUMBER первого видео плейлиста;
--proxy URL #задать прокси-сервер [HTTP|HTTPS|SOCKS];
--reject-title "ФИЛЬТР" #исключить загрузку контента по ФИЛЬТРУ (в т.ч. regex или global);
--user-agent UA #задать собственный user-agent;
--write-description #сохранять описание к контенту в файл .description;
--write-sub #сохранять файл с субтитрами;
--yes-playlist #загружать контент в только плейлистах.
==================================================================================
# MEDIA - AUDIO:
---------------------------------------------------------------------------------# (alsamixer) настройка звуковой карты:
cat /proc/asound/cards #просмотр списка доступных звуковых карт;
alsamixer -c 0 #настройка звука карты "0";
alsactl init 0 #активация звуковой карты "0" (если не активирована).
---------------------------------------------------------------------------------# (speak-ng|espeak-ng) говорилка на различных языках:
espeak-ng "Linux just for fun" #воспроизвести фразу;
espeak-ng -x hello #воспроизвести слово и вывести его транскрипцию;
espeak-ng -ven-us "[[h@l'oU]]" #воспроизвести транскрипцию;
espeak-ng -g10 "9 8 7 6 5 4 3 2 1 0" #воспроизвести ряд чисел с паузой в 10ms;
espeak-ng -f textfile -w audiofile #конвертировать textfile в audiofile.
• опции программы:
-f file #воспроизвести текст из file;
-gN #воспроизвести текст с паузами Nms;
-ven-us "[[h@l'oU]]" #воспроизвести транскрипцию;
-w file #записать аудиовыход в file в формате wav;
-x #воспроизвести слово и вывести его транскрипцию;
--voices #вывод всех поддерживаемых языков;
--voices=ru #вывод информации по определенному языку.
---------------------------------------------------------------------------------# (pulseaudio) звуковой сервер:
• (paplay) воспроизведение аудиофайлов:
paplay audiofile #воспроизвести audiofile;
• (parecord) запись аудиофайлов.
• (pacat)
• (parec)
• (pamon)
---------------------------------------------------------------------------------# (cmus) консольный аудио-плеер:
cmus #запуск плеера.
• HotKeys - НАВИГАЦИЯ:
[1] #библиотека (вид по умолчанию);
[2] #сортированная библиотека;
[3] #плейлист с возможностью его редактирования;
[4] #очередь воспроизведения;
[5] #файловый браузер;
[6] #фильтры, список фильтров, заданных пользователем;
[7] #настройки, горячие клавиши и команды;
[TAB] #переключение между вкладками в главной библиотеке [1];
[space] #свернуть/развернуть список альбомов в главной библиотеке [1];
[enter] #зайти в выбранную директорию в файловом браузере [5];
[backspace] #выйти из текущей директории в файловом браузере [5];
[up] #переход на трек выше;
[k] #переход на трек выше;
[down] #переход на трек ниже;
[j] #переход на трек ниже;
[g] #переместиться в начало списка;
[G] #переместиться в конец списка;
[i] #быстрый переход к проигрываемому треку.
• HotKeys - ВОСПРОИЗВЕДЕНИЕ:
[z] #предыдущий трек;
[x] #пуск;
[c] #пауза;
[v] #стоп;
[b] #следующий трек;
[left] #перемотка на 5 секунд влево;
[h] #перемотка на 5 секунд влево;
[right] #перемотка на 5 секунд вправо;
[l] #перемотка на 5 секунд вправо;
[,] #перемотка на 1 минуту влево;
[.] #перемотка на 1 минуту вправо.
• HotKeys - УПРАВЛЕНИЕ ГРОМКОСТЬЮ:
[]] #увеличение громкости +1% правого динамика;
[[] #увеличение громкости +1% левого динамика;
[}] #уменьшение громкости -1% правого динамика;
[{] #уменьшение громкости -1% левого динамика;
[-] #уменьшение громкости на 10%;
[+] #увеличение громкости на 10%;
[=] #увеличение громкости на 10%.
• HotKeys - ВЫБОР РЕЖИМОВ ВОСПРОИЗВЕДЕНИЯ:
[m] #выбор режима: {all|artist|album} все|артист|альбом;
[M] #выбор режима: {library|playlist} директория|плейлист;
[o] #выбор режима: {from|from stored};
[f] #выбор режима: {F}ollow автоперевод курсора;
[C] #выбор режима: {C}ontinue проигрывать следующий трек;
[r] #выбор режима: {R}epeat повтор;
[s] #выбор режима: {S}huffle рандом.
• HotKeys - ДРУГОЕ:
[t] #переключение времени текущего трека прошло|осталось;
[I] #вывести полный путь и название выделенного трека в cli;
[L] #задать в cli live-filter.
• HotKeys - УПРАВЛЕНИЕ ОЧЕРЕДЬЮ ВОСПРОИЗВЕДЕНИЯ:
[S] # очередь работает только при выключенном shuffle;
[1|2|3] #выбрать любое окно;
[up|down|g|G] #выбрать необходимый трек;
[e|E] #поставить трек в очередь.
[4] #перейти в окно управления очередью;
[up|down|g|G] #выбрать необходимый трек;
[p] #переместить трек вниз очереди на одну позицию;
[P] #переместить трек вверх очереди на одну позицию;
[D] # удалить трек из очереди.
• HotKeys - УПРАВЛЕНИЕ ПЛЕЙЛИСТОМ:
[M] #плейлист работает только при включенном режиме playlist;
[1|2] #выбрать любое окно;
[up|down|g|G] #выбрать необходимый трек;
[y] #добавить трек в плейлист.
[3] #перейти в окно управления плейлистом;
[up|down|g|G] #выбрать необходимый трек;
[p] #переместить трек вниз плейлиста на одну позицию;
[P] #переместить трек вверх плейлиста на одну позицию;
[D] # удалить трек из плейлиста.
• HotKeys - ПОИСК ТРЕКОВ:
[1|2] #выбрать любое окно;
/nametrack #в cli набрать название трека;
[enter] #для подтверждения;
[n] #для перехода к дальнейшим совпадениям;
[N] #для перехода к предыдущим совпадениям.
• командная строка:
:add /path/to/music/dir #добавить файлы из /path/to/music/dir в библиотеку;
:a /path/to/music/dir #эквивалент :add;
:save playlist.pls #сохранить текущий плейлист;
:save {-e|-l|-L|-p|-q} {file}
-l # {save library} сохранить библиотеку;
-L # {save filtered library} сохранить фильтрованную библиотеку;
-p # {save playlist} сохранить плейлист;
-q # {save queue} сохранить очередь.
:load playlist.pls #загрузить playlist.pls;
/nametrack #поиск трека;
//nametrack #поиск только исполнителя, альбома;
??nametrack #неопределенный поиск;
:clear #очистить плейлист;
:set status-display-program=/path/to/scrobbler #скрипт для Last.fm;
:set softvol=true #включить программное управление громкостью;
:pwd #вывести общую директорию загруженных треков;
:colorscheme #загрузить цветовую схему;
:q #выход.
==================================================================================
# MEDIA - VIDEO:
---------------------------------------------------------------------------------# (mpv) консольный медиаплеер:
mpv [options] [file|PLAYLIST.m3u|URL|-];
mpv -vo help #вывод списка доступных драйверов;
mpv -vo directfb /path/to/file.avi #начать воспроизведение file.avi.
• опции программы:
-vo help #вывод всех доступных драйверов;
-vo directfb #принудительный выбор драйвера directfb;
-vo directfb, #попробовать сначала directfb, а потом все остальные;
-vc help #вывод всех доступных кодеков;
-vfm help #вывод всех доступных аудиокодеков;
-af help #выводит полный список аудиофильтров;
-vf help #выводит полный список видеофильтров;
-fs -zoom #полноэкранное воспроизведение (не всеми дрв поддерживается);
-fsmode-dontuse <0-31> #устаревшая опция полноэкранного воспроизведения.
• HotKeys - ЗВУК:
[{//*}|{9/0}] #прибавить/убавить звук;
[m] #выключить звук;
[#] #режим циклического воспроизведения аудио.????
• HotKeys - ФАЙЛЫ:
[</>] #воспроизвести предыдущий/следующий файл плейлиста;
[Enter] #воспроизвести следующий файл плейлиста;
[PgUp] #воспроизвести предыдущий файл;???
[PgDown] #воспроизвести следующий файл;???
• HotKeys - СУБТИТРЫ:
[v] #показать/скрыть субтитры;
[V] #включить/выключить VS-фильтр субтитров;
[j|J] #включить/выключить субтитры;
[Ctrl+Left] #показать предыдущий субтитр;
[Ctrl+Right] #показать следующий субтитр;
[x/z] #увеличить/уменьшить задержку показа субтитров на 0.1 секунду;
[u] #переключение между режимами отображения субтитров;???
[r/t] #вывод субтитров выше/ниже;
• HotKeys - РАЗМЕР ОКНА ВОСПРОИЗВЕДЕНИЯ:
[f] #переход в полноэкранный режим;
[Esc] #выход из полноэкранного режима;
[T] #переход в режим поверх всех окон;
[A] #выбор соотношения сторон;
[w/e] #уменьшить/увеличить панорамирование окна воспроизведения;
[Alt+0] #уменьшить размер окна воспроизведения вдвое от оригинала;
[Alt+1] #оригинальный размер окна воспроизведения;
[Alt+2] #увеличить размер окна воспроизведения вдвое от оригинала;
[_] #убрать окно воспроизведения.????
• HotKeys - ЯРКОСТЬ/КОНТРАСТНОСТЬ:
[1/2] #изменение контрастности;
[3/4] #изменение яркости;
[5/6] #изменение цветовой гаммы;
[7/8] #изменение насыщенности.
• HotKeys - ВОСПРОИЗВЕДЕНИЕ:
[L] #включить/выключить бесконечный автоповтор всего файла/плейлиста;
[Left/Right] #прокрутка назад/вперед на 5 секунд;
[Up/Down] #прокрутка вперед/назад на 1 минуту;
[{Shift+PgUp}/{Shift+PgDown}] #прокрутка назад/вперед на 10 минут;
[./,] #покадровое воспроизведение вперед/назад (прерывание [p|space]);
[p|Space] #пауза;
[l] #установить/очистить петлевое воспроизведение;
[d] #включить/выключить деинтерлейсинг.
• HotKeys - СКОРОСТЬ ВОСПРОИЗВЕДЕНИЯ:
[Ctrl +/-] #увеличить/уменьшить задержку звука от видео на 0.1 секунду;
[[/]] #увеличить/уменьшить скорость воспроизведения на 10% от текущего;
[{/}] #увеличить/уменьшить скорость воспроизведения вдвое от текущего;
[BackSpace] #переход в нормальный режим воспроизведения.
• HotKeys - ИНФОРМАЦИЯ:
[I] #единоразово вывести имя воспроизводимого файла;
[o|P] #единоразово вывести прогресс-бар воспроизведения и скрыть;
[O] #показать/скрыть время воспроизведения и длительности.
• HotKeys - SCREENSHOT:
[s] #скриншот экрана с субтитрами;
[S] #скриншот экрана без субтитров, прогресс-бара и т.д.;
[Ctrl s] #скриншот экрана с субтитрами, прогресс-баром и т.д.
• HotKeys - ВЫХОД:
[q] #выход без сохранения истории;
[Q] #выход с сохранением истории.
==================================================================================
# MEDIA - PICTURE:
---------------------------------------------------------------------------------# (eog) просмоторщик изображений в GUI:
eog -fs /path/to/dir/*.jpg #показ полноэкранных изображений в режиме слайдшоу.
• опции программы:
-f #открыть в полноэкранном режиме;
-g #отключить галерею изображений;
-n #запустить новую копию программы вместо использования текущей;
-s #открыть в режиме слайд-шоу;
-w #открыть в отдельном окне, если открыто несколько окон и используется первое окно.
---------------------------------------------------------------------------------# (feh) просмоторщик изображений в GUI:
feh #;
• опции программы:
-? #полноэкранный режим;
-? #слайдшоу.
---------------------------------------------------------------------------------# (exive2) работа с метаданными изображений (возможно изменение):
exive2 picture.jpg #вывод метаданных файла picture.jpg.
---------------------------------------------------------------------------------# (display) работа с изображениями:
display picture.jpg #просмотр picture.jpg в GUI через ImageMagick в X.
---------------------------------------------------------------------------------# (animate) работа с изображениями:
animate picture.jpg #просмотр picture.jpg в GUI через ImageMagick в X.
==================================================================================
# MEDIA - CAD:
---------------------------------------------------------------------------------# (freecad) графическая САПР:
• файловые форматы:
- запись:
FCStd
#FreeCAD.
- чтение:
FCStd
#FreeCAD;
3ds
#3D Studio mech;
obj
#Alias mesh;
dwg
#Autodesk DWG 2D
импорт/экспорт - да;
dxf
#Autodesk DXF 2D
импорт/экспорт - да;
brep/brp
#BREP format
импорт/экспорт - да;
bms
#Binary mesh;
dae
#Collada
импорт/экспорт - да;
dat
#Common airfoil data;
svg/svgz
#Drawing;
xlsx
#Exel spreadsheet;
xml/xdmf
#FEM mesh Fenics;
mes/meshjson/yaml/json
#FEM mesh YAML/JSON;
i1
#FEM mesh Z88;
bdf/d..ed/unv/vtk/vtk/z88
#FEM mesh formats;
frd
#FEM result CalculiX;
vtk/vtu
#FEM result VTK;
o2.txt
#FEM result Z88 displacements;
FCMat
#FreeCAD Material Card;
nc/gc/ncc/ngc/cnc/tap/gcode #GCode
импорт/экспорт - да;
emn
#IDF emn file File Type;
iges/igs
#IGES format
импорт/экспорт - да;
bpm/jpg/png/xpm
#Image formats;
ifc
#Industry Foundation Classes
импорт/экспорт - да;
iv
#Inventor V2.1;
off
#Object File Format Mesh;
gcad
#Open CAD Format;
csg
#OpenSCAD CSG Format
импорт/экспорт - да;
plmxml
#PLMXML files;
asc/pcd/ply
#Point formats;
pov/inc
#Povray format;
py/FCMacro/FCScript
#Python;
step/stp
#STEP with colors
импорт/экспорт - да;
stpZ/stpz
#STEPZ Zip File Type;
stl/ast
#STL Mesh (3D-печать)
импорт/экспорт - да;
svg
#SVG as geometry
импорт/экспорт - да;
shp
#Shapefile;
smf
#Simple Model Format;
csv
#Spreadsheet formats;
ply
#Stanford Triangle Mesh
импорт/экспорт - да;
zip
#SweetHome3D XML export;
wrl/vrml/wrz/wrl.gz
#VRML V2.0
импорт/экспорт - да;
obj
#Wavefront OBJ - Arch module
импорт/экспорт - да;
html/xhtml
#Web Page.
---------------------------------------------------------------------------------• дополнительные расширения:
- библиотека верстаков #https://github.com/FreeCAD/FreeCAD-addons
- библиотека деталей #https://github.com/FreeCAD/FreeCAD-library
- библиотека макросов #https://github.com/FreeCAD/FreeCAD-macros
---------------------------------------------------------------------------------• навигация в трёхмерном пространстве:
- оси:
X #ось вправо;
Y #ось назад;
Z #ось вверх.
Z
Y
|
| /
| /
|/
• ----- X
- координаты:
2,3,1 = X2,Y3,Z1
---------------------------------------------------------------------------------• панели наиболее используемые:
- вид > панели > "Комбо панель" #основная рабочая панель;
- вид > панели > "Окно свойств" #вывод свойств выбранного объекта(ов);
- вид > панели > "Просмотр выделения" #список выбранных объектов.
---------------------------------------------------------------------------------• дерево проекта:
- возможно создавать группы и объединять объекты в группы;
- операции с объектами основные:
переименование;
изменение цвета;
скрыть/отобразить;
..
---------------------------------------------------------------------------------• верстаки:
- встроенные:
Arch #для архитектурных объектов и BIM:
содержит все инструменты Draft.
Draft #швейцарский нож;
Drawning #для работы с чертёжными листами (создание проектной документации);
FEM #для показа результата графически;
Image #;
Inspection #;
Mech Design #для работы с полигональными сетками;
OpenSCAD #;
Part #для работы с твердотельными объектами (куб, сфера, ...):
объект типа деталь.
Part Design #основной верстак для работы с трёхмерными объектами:
содержит все инструменты Sketcher.
Path #;
Points #;
Raytracing #для высококачественной отрисовки модели;
Reverse Engineering #;
Robot #;
Sketcher #для создания двумерных объектов (эскизов);
Spreadsheet #для работы с электронными таблицами.
Start #;
Surface #;
TechDraw #;
Test framework #;
Web #.
- внешние:
A2plus #работа со сборочными чертежеми;
AirPlaneDesign #авиастроение;
Arch Texture #;
Assembly 4 #;
BIM #BIM архитектура;
Curved Shapes #кривые поверхности;
Curves #;
Dodo WB #;
E.M. #;
Exploded Assembly #;
Fasteners #широкий набор готовых крепёжных элементов (входит в BIM архитектура);
Flamingo #набор инструментов (входит в BIM архитектура);
FrontISTR #;
GDML #;
Gear #;
Geomatics #;
KiCadStepUp #электроника;
Laser Cut Interlocking #;
Lattice2 #;
Maker Workbench #;
Manipulator #;
Marz Guitar Designer #гитаростроение;
Part-o-magic #набор инструментов (входит в BIM архитектура);
Printed Circuit Board #электроника;
Pyramids-and-Polyhedrons #;
POV-Ray-Rendering #;
Reinforcement #;
Render #;
Rocket #ракетостроение;
Sheet Metal #;
Ship #судостроение;
Silk #.
- ХЗЧ:
BIMBots #возможно отдельный инструмент (установлен, но не отображается);
bimtester #возможно отдельный инструмент (установлен, но не отображается);
BOLTSFC #возможно отдельный инструмент (установлен, но не отображается);
CADExchanger #ХЗЧ (установлен, но не отображается);
cadquery_module #ХЗЧ (установлен, но не отображается);
DesignSPHysics #ХЗЧ (установлен, но не отображается);
Drawing Dimensioning #для работы прямо на готовых чертёжных листах;
GDT #ХЗЧ (установлен, но не отображается);
kerkythea #ХЗЧ (установлен, но не отображается);
OpticsWorkbench #ХЗЧ (установлен, но не отображается);
OSE3dPrinter #ХЗЧ (установлен, но не отображается);
pyrate #ХЗЧ (установлен, но не отображается);
trails #ХЗЧ (установлен, но не отображается).
---------------------------------------------------------------------------------• объекты и их основные свойства (en/ru):
- Sketch #расширяемая плоскость;
- Sketch001 #двумерные формы на грани;
- Radius #радиус;
- Height #высота;
- Polygon #грань;
- Poced #вырез;
- Placement #положение X,Y,Z;
- Pad #твердотельный куб;
- ..
---------------------------------------------------------------------------------• основные правила построения моделей:
- зависимости:
зависимости объектов друг от друга выстраиваются в строгой последовательности #объект A > объект B > объект C;
петель быть не должно #объект A > объект B > объект A - не допустимо;
древовидные зависимости допускаются #объект A > объект B / объект A > объект C;
"Инструменты" > "Граф зависимостей" #выстраивает графическую диаграмму зависимостей.
- рекомпиляция:
рекомпиляция не всегда происходит автоматически (при большом количестве объектов);
не рекомпилированные объекты помечаются в дереве проекта синей иконкой;
для ручной рекомпиляции необходимо заново пересчитать модель [Ctrl]+[R].
- КБГ/CSG #Конструктивно Блочная Геометрия/Constructive Solid Geomentry:
создание сложных объектов из сплошных тел булевыми операциями (объединение, вычитание, пересечение);
гарничная геометрия поддерживается модулем OpenCasCade и станком Part;
лучше использовать Part, т.к. он является базой для других верстаков.
- BREP/полигональные сетки:
определяются математическими кривыми.
---------------------------------------------------------------------------------• HotKeysMouse - OpenInventor:
вращение
#[левая кнопка];
выбор
#[Ctrl]+[левая кнопка];
контекстное меню #[правая кнопка];
масштабирование #[колёсико (вращение)];
сдвиг
#[колёсико (нажатие)].
• HotKeysMouse - CAD (по умолчанию):
вращение
#[колёсико]+[левая/правая кнопка];
выбор
#[левая кнопка];
контекстное меню #[правая кнопка];
масштабирование #[колёсико (вращение)];
сдвиг
#[колёсико (нажатие)].
• HotKeysMouse - Revit:
вращение
#[Shift]+[колёсико (нажатие)];
выбор
#[левая кнопка];
контекстное меню #[правая кнопка];
масштабирование #[колёсико (вращение)];
сдвиг
#[колёсико (нажатие)] или [левая кнопка]+[правая кнопка].
• HotKeysMouse - Blender:
вращение
#[колёсико (нажатие)];
выбор
#[левая кнопка];
контекстное меню #[правая кнопка];
масштабирование #[колёсико (вращение)];
сдвиг
#[Shift]+[колёсико (нажатие)] или [левая кнопка]+[правая кнопка].
• HotKeysMouse - MayaGesture:
вращение
#[Alt]+[левая кнопка];
выбор
#[левая кнопка];
контекстное меню #[правая кнопка];
масштабирование #[колёсико (вращение)];
сдвиг
#[Alt]+[правая кнопка].
• HotKeysTouchPad - TouchPad:
вращение
#[Alt]+[сдвиг];
выбор
#[левая кнопка];
контекстное меню #[правая кнопка];
масштабирование #[два пальца] или [PgUp/PgDn];
сдвиг
#[Shift]+[сдвиг].
• HotKeysMouse - Gesture:
вращение 2D
#[левая кнопка]+[правая кнопка];
выбор
#[левая кнопка];
контекстное меню #[правая кнопка];
масштабирование #[колёсико (вращение)];
сдвиг
#[правая кнопка].
• HotKeysMouse - OpenCascade:
вращение
#[колёсико]+[правая кнопка];
выбор
#[левая кнопка];
контекстное меню #[правая кнопка];
масштабирование #[колёсико (вращение)];
сдвиг
#[колёсико (нажатие)].
---------------------------------------------------------------------------------• HotKeys - панель инструментов "Файл":
[Alt]+[F4] #выход;
[Ctrl]+[E] #экспортировать объект;
[Ctrl]+[I] #импортировать объект;
[Ctrl]+[N] #создать новый документ;
[Ctrl]+[O] #открыть существующий документ;
[Ctrl]+[P] #вывод на печать;
[Ctrl]+[S] #сохранить текущий документ;
[Ctrl]+[W] #закрыть текущий документ;
[Ctrl]+[Shift]+[S] #сохранить текущий документ как...
• HotKeys - панель инструментов "Правка":
[Ctrl]+[C] #копировать объект;
[Ctrl]+[R] #обновить (пересчитать объект/документ);
[Ctrl]+[V] #вставить объект;
[Ctrl]+[X] #вырезать объект;
[Ctrl]+[Z] #отмена последней операции;
[Ctrl]+[Shift]+[P] #отправить в консоль Python;
[Ctrl]+[Shift]+[Z] #повтор последней отменённой операции;
[Del] #удалить;
[Shift]+[B] #выделить область;
[Shift]+[E] #область выбора элементов.
• HotKeys - панель инструментов "Вид":
[0] #вид изометрический;
[1] #вид спереди;
[2] #вид сверху;
[3] #вид справа;
[4] #вид сзади;
[5] #вид снизу;
[6] #вид слева;
[A],[C] #показать/скрыть оси координат;
[S],[B] #вернуться к предыдущему выбору;
[S],[D] #перейти на самый глубокий связанный объект;
[S],[F] #повторить выбор заднего плана;
[S],[G] #перейти к связанному объекту;
[T],[1] #синхронизировать вид;
[T],[2] #синхронизировать выделение;
[T],[3] #синхронизировать размещение;
[T],[4] #предвыборка;
[T],[5] #записать выделение;
[T],[D] #инициировать перетаскивание;
[T],[G] #перейти к выделенному;
[V],[D] #окно документа закреплённое;
[V],[F] #уместить всё содержимое на экране;
[V],[O] #ортогональная проекция;
[V],[P] #перспективная проекция;
[V],[S] #уместить выбранные объекты на экране;
[V],[U] #окно документа откреплённое;
[V],[1] #стиль представления "Как есть";
[V],[2] #стиль представления "Точки";
[V],[3] #стиль представления "Каркас";
[V],[4] #стиль представления "Скрытые линии";
[V],[5] #стиль представления "Без затенения";
[V],[6] #стиль представления "Только грани";
[V],[7] #стиль представления "Плоские линии";
[W],[1] #верстак "Arch";
[W],[2] #верстак "Draft";
[W],[3] #верстак "Drawing";
[W],[..] #верстак "..";
[Alt]+[F11] #на весь экран;
[Ctrl]+[1] #восстановить вид (положение камеры);
[Ctrl]+[+] #масштаб увеличить;
[Ctrl]+[-] #масштаб уменьшить;
[Ctrl]+[B] #увеличить область;
•
•
•
•
•
•
•
[Ctrl]+[D] #внешний вид;
[Ctrl]+[выбор объекта] #выбор более одного объекта;
[Down] #переместить вниз;
[Esc] #навигация/редактирование;
[F11] #окно документа на весь экран;
[Left] #переместить влево;
[Right] #переместить вправо;
[Shift]+[F] #запомнить вид (положение камеры);
[Shift]+[Left] #повернуть влево на 90º;
[Shift]+[Right] #повернуть вправо на 90º;
[Space] #скрыть/показать объект;
[Up] #переместить вверх.
HotKeys - панель инструментов "Макрос":
[Ctrl]+[F6] #выполнить макрос в редакторе;
[Shift]+[F6] #остановить отладку;
[F6] #отладка макросов;
[F10] #шаг с обходом;
[F11] #шаг с заходом;
[F9] #установить/снять точку останова.
HotKeys - панель инструментов "Окна":
[Ctrl]+[Tab] #следующее окно;
[Ctrl]+[Shift]+[Tab] #предыдущее окно.
HotKeys - панель инструментов "Справка":
[F1] #вызов справки;
[Shift]+[F1] #инструмент "Что это?".
HotKeys - станок "Arch":
[B],[P] #строительная деталь;
[B],[U] #здание;
[C],[W] #куртина;
[E],[Q] #оборудование;
[E],[X] #внешняя ссылка;
[F],[R] #каркас;
[L],[V] #уровень;
[P],[F] #профиль;
[P],[O] #проект;
[R],[B] #пользовательская арматура;
[R],[F] #крыша;
[S],[E] #плоскость сечения;
[S],[I] #местность;
[S],[P] #зона;
[S],[R] #лестницы;
[S],[T] #структура;
[T],[U] #ферма;
[W],[A] #стена;
[W],[N] #окно.
HotKeys - станок "Arch", панель инструментов "Utilites":
[C],[C] #клонировать компонент;
[C],[M] #компонент;
[I],[P] #создать IFC-таблицу;
[Ctrl]+[Space] #переключить подкомпоненты.
HotKeys - станок "Draft", панель инструментов "Creation":
[B],[S] #B-сплайн;
[C],[I] #окружность;
[E],[L] #эллипс;
[F],[F] #граневяз;
[L],[I] #линия;
[P],[G] #многоугольник/полигон;
[P],[L] #линия ломаная;
[R],[E] #прямоугольник;
[S],[S] #shape from text.
HotKeys - станок "Draft", панель инструментов "Annotation":
[D],[I] #размер;
[D],[L] #метка;
[T],[E] #текст.
• HotKeys - станок "Draft", панель инструментов "Modification":
[C],[L] #клонировать;
[D],[E] #правка;
[D],[N] #downgrade;
[H],[S] #подсветка элемента;
[J],[O] #соединить;
[M],[I] #отразить;
[M],[V] #переместить;
[O],[S] #смещение;
[R],[O] #повернуть;
[S],[C] #масштаб;
[S],[H] #stretch;
[S],[P] #резделить;
[T],[R] #trimex;
[U],[P] #upgrade.
• HotKeys - станок "Draft", панель инструментов "Utilites":
[C],[M] #переключить режим конструирования;
[D],[E] #правка;
[G],[R] #переключить сетку;
[S],[S] #set style;
[W],[P] #select plane;
[Shift]+[Space] #toggle normal/wireframe display.
• HotKeys - станок "FEM", панель инструментов "Model":
[S],[A] #блок анализа.
• HotKeys - станок "FEM", панель инструментов "Solve":
[S],[C] #решатель Calculix (экспериментальный);
[S],[E] #решатель Elmer;
[S],[R] #запустить алгоритм расчёта решателя.
[S],[T] #Управление решаемыми задачами;
[S],[X] #Solver Calculix Standard;
[S],[Z] #решатель Z88.
• HotKeys - станок "FEM", панель инструментов "Results":
[R],[P] #очистить результат;
[R],[S] #показать результат.
• HotKeys - станок "Path", панель инструментов "Path":
[P],[I] #исследовать G-code;
[P],[J] #задание;
[P],[L] #закончить выбор цикла;
[P],[M] #CAM симулятор;
[P],[P] #постобработка;
[P],[T] #ToolBit Dock;
[P],[X] #вкл/выкл состояние операции.
• HotKeys - станок "Robot", панель инструментов "Robot":
[A] #вставить в траекторию;
[W] #вставить в траекторию.
• HotKeys - станок "Sketch", панель инструментов "Геометрия эскиза":
[C],[C] #копировать геометрию другого эскиза;
[C],[M] #переключить панель инструментов или выбранную геометрию в/из режим конструктора;
[F] #создать скругление;
[L] #создать линию;
[M] #смена режима для инструмента "создать полилинию на эскизе";
[R] #создать прямоугольник;
[T],[E] #продлить грань до ближайшего пересечения (расширить грань);
[T],[R] #обрезать часть линии до указанной позиции (обрезать кривую);
[X] #добавить внешнюю геометрию.
• HotKeys - станок "Sketch", панель инструментов "Ограничения эскиза":
[A] #ограничить угол;
[C] #ограничить совпадение;
[E] #ограничить равенством;
[H] #ограничить горизонтально;
[N] #ограничить перпендикулярно;
[S] #ограничить симметрией;
[T] #ограничить касательно;
[V] #ограничить вертикально;
[Ctrl]+[A] #привязать к внутренней геометрии;
[Shift]+[D] #ограничить расстояние;
[Shift]+[H] #ограничить расстояние по горизонтали;
[Shift]+[O] #зафиксировать (привязать) точку на объекте;
[Shift]+[P] #ограничить параллельно;
[Shift]+[R] #ограничить дугу/окружность;
[Shift]+[V] #ограничить расстояние по вертикали.
• HotKeys - станок "Sketch", панель инструментов "Инструменты для эскиза":
[Ctrl]+[Shift]+[S] #замкнуть фигуру;
[Ctrl]+[Shift]+[K] #соединить края;
[Ctrl]+[Shift]+[C] #выделить связанные ограничения;
[Ctrl]+[Shift]+[E] #выделить связанную геометрию;
[Ctrl]+[Shift]+[R] #выбрать избыточные ограничения;
[Ctrl]+[Shift]+[E] #выделить конфликтующие ограничения;
[Ctrl]+[Shift]+[E] #показать/скрыть внутреннюю геометрию;
[Ctrl]+[Shift]+[O] #выбрать начало координат;
[Ctrl]+[Shift]+[V] #выбрать вертикальную ось;
[Ctrl]+[Shift]+[H] #выбрать горизонтальную ось;
[Ctrl]+[M] #переместить.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - GUI ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# GUI - GNOME:
---------------------------------------------------------------------------------# HotKeys GNOME:
• HotKeys - СПРАВКА GNOME:
[Alt]+[F1] #вызов справки GNOME.
• HotKeys - ЗАПУСК ПРИЛОЖЕНИЙ:
[Alt]+[F2] #открыть лаунчер:
[prgname] #ввод имени программы для запуска.
[Super] #переключение рабочий стол|обзор:
[prgname] #ввод имени программы для запуска.
[Super]+[A] #вывод иконок приложений в меню обзор:
[prgname] #ввод имени программы для запуска.
• HotKeys - ПЕРЕКЛЮЧЕНИЕ МЕЖДУ ПРИЛОЖЕНИЯМИ:
[Alt]+[Tab] #переключиться на следующее приложение (все рабочие столы);
[Alt]+[Tab]+[Shift] #переключиться на предыдущее приложение (все рабочие столы);
[Super]+[Tab] переключиться на следующее приложение (все рабочие столы);
[Super]+[Tab]+[Shift] #переключиться на предыдущее приложение (все рабочие столы)
[Super]+[`] #переключение между несколькими экземплярами открытого приложеня;
[Alt]+[Esc] #переключение между пилдожениями текущего рабочего стола;
[Ctrl]+[Alt]+[Tab] #поместить текущее приложение первым в списке открытых приложений.
• HotKeys - ОКНА|ПРИЛОЖЕНИЯ:
[Super]+[Up] #развернуть окно во весь экран;
[Super]+[Down] #уменьшить размер окна;
[Super]+[Left] #прикрепить окно к левому краю в половинную величину;
[Super]+[Right] #прикрепить окно к правому краю в половинную величину;
[Alt]+[Space] #вызов меню текущего окна;
[Alt]+[F4] #закрыть текущее окно.
• HotKeys - РАБОЧИЕ СТОЛЫ:
[Super]+[PageUp] #открыть|переключиться на предыдущий рабочий стол;
[Super]+[PageDown] #открыть|переключиться на следующий рабочий стол;
[Super]+[Shift]+[PageUp] #перенести активное приложение на предыдущий рабочий стол;
[Super]+[Shift]+[PageDown] #перенести активное приложение на следующий рабочий стол.
• HotKeys - МОНИТОРЫ:
[Shift]+[Super]+[Left] #переместить текущее приложение|окно на левый монитор;
[Shift]+[Super]+[Right] #переместить текущее приложение|окно на правый монитор.
• HotKeys - ВЕРХНЕЕ МЕНЮ:
([Super])[Super]+[m] #вход в меню (открыть календарь);
([Super])[Super]+[v] #вход в меню (открыть календарь);
[Left]|[Right]|[Up]|[Down] #перемещение по верхнему меню;
[Space] #выполнить выбранный путкт меню.
• HotKeys - ЛОГАУТ|ВЫКЛЮЧЕНИЕ:
[Super]+[l] #блокировка экрана;
[Alt]+[Ctrl]+[Del] #вызов меню завершения работы.
• HotKeys - ОБЪЕКТЫ:
[Shift]+[Space] #открыть выделенный объект (nautilus).
• HotKeys - СНИМКИ ЭКРАНА:
[PrntScrn] #снимок экрана;
[Alt]+[PrntScrn] #снимок активного окна;
[Shift]+[PrntScrn] #снимок выделенной области экрана;
[Ctrl]+[Alt]+[Shift]+[r] #запись и остановка видео происходящего на экране.
• HotKeys - РЕДАКТИРОВАНИЕ ТЕКСТА:
[Ctrl]+[a] #выделить весь текст или все объекты в списке;
[Ctrl]+[c] #копировать выделенный текст|объекты в буфер обмена;
[Ctrl]+[v] #вставить содержимое буфера обмена;
[Ctrl]+[x] #вырезать выделенный текст|объекты в буфер обмена;
[Ctrl]+[z] #отмена действия.
---------------------------------------------------------------------------------# (gsettings) настройка GNOME:
gsettings list-schemas --print-paths #вывод доступных настроек и их путей;
gsettings list-recursively #вывод всех настроек с установленными значениями;
gsettings list-key org.gnome.software #вывод списка настроек для software;
gsettings get org.gnome.software download-updates #статус обновления ОС;
gsettings set org.gnome.software download-updates false #запретить обновление;
gsettings set org.gnome.desktop.media-handling automount false #отключение автомонтирования БУ;
gsettings set org.gnome.desktop.media-handling automount false #отключение автомонтирования БУ;
gsettings set org.gnome.desktop.media-handling automount-open false #отключение автооткрытия БУ.
• опции программы:
get SCHEMA KEY #вывод значения заданной настройки;
monitor SCHEMA [KEY] #наблюдение за состоянием значения настройки;
writable SCHEMA KEY #значение противоположное значению по умолчанию;
range SCHEMA KEY #вывод ранга настройки;
describe SCHEMA KEY #вывод описания настройки;
set SCHEMA KEY VALUE #установить значение для заданной настройки;
reset SCHEMA KEY #задать значение по умолчанию;
reset-recursively SCHEMA[:PATH] #задать рекурсивно значения по умолчанию;
list-schemas [--print-paths] #вывод списка всех доступных настроек;
list-relocatable-schemas #вывод всех доступных перемещаемых настроек;
list-keys SCHEMA[:PATH] #вывод списка настроек для заданной схемы;
list-children SCHEMA[:PATH] #вывод потомков заданной схемы;
list-recursively [SCHEMA[:PATH]] #вывод значений настроек заданной схемы.
help [cmd] #вывод справки по заданной команде.
---------------------------------------------------------------------------------# (gnome) #расширения для GNOME.
dnf -y install gnome-tweaks #установка расширенных настроек рабочего стола.
• дополнительные расширения:
gnome-shell-common
gnome-shell-extension-weather
gnome-shell-extension-caffeine
gnome-shell-extension-suspend-button
gnome-shell-extension-move-clock
gnome-shell-extension-taskbar
gnome-shell-extension-dashtodoc
gnome-shell-extension-remove-dropdown-arrows
gnome-shell-extension-hidde-activities
gnome-shell-extension-log-out-button
gnome-shell-extensions
gnome-shell-timer
gnome-shell-chrome-gnome-shell
---------------------------------------------------------------------------------# (https://extensions.gnome.org) расширения для GNOME:
extensions.gnome.org/extension/844/maximus-two #расширение рабочего пространства;
extensions.gnome.org/extension/2/move-clock #расширение рабочего пространства;
extensions.gnome.org/extension/696/skype-integration #skype в панели управления;
extensions.gnome.org/extension/192/status-icon-fixer #skype в панели управления.
---------------------------------------------------------------------------------# (nautilus) файловый менеджер GNOME:
dnf -y install nautilus #установка nautilus.
• дополнительные расширения:
nautilus-data
nautilus-hide
nautilus-scripts-manager
nautilus-actions
nautilus-emblems
nautilus-image-converter
nautilus-sendto
nautilus-admin
nautilus-filename-repairer
nautilus-image-manipulator
nautilus-share
nautilus-compare
nautilus-gtkhash
nautilus-owncloud
nautilus-wipe
---------------------------------------------------------------------------------# (themes) настройка тем для рабочего стола GNOME:
dnf -y install gnome-tweaks #обязательно для установки;
dnf -y install gnome-shell-extensions #обязательно для установки.
• ссылки:
https://gnome-look.org #ресурс с темами Gnome Shell.
• файлы и директории:
/usr/share/themes #директория для скаченных тем;
~/.gnome/share/themes/ #директория для скаченных тем.
• настройка:
Дополнительные настройки GNOME > Внешний вид > Тема Shell.
==================================================================================
# GUI - WM #Тайловые оконные менеджеры:
---------------------------------------------------------------------------------# (i3) тайловый оконный менеджер:
• установка:
dnf -y install i3 #оконный менеждер;
dnf -y install i3lock #блокировщик экрана;
dnf -y install i3-gaps #расширение для i3;
dnf -y install xautolock #бловка компьютера при бездействии и запуск i3-lock;
dnf -y install i3lock-color #улучшенная версия i3lock.
• HotKeys - КЛАВИША [MOD] #задаётся при первом запуске:
[Alt];
[Super].
• HotKeys - РАЗНОЕ:
[MOD]+[Shift]+[C] #перечитать конфигурационные файлы;
[MOD]+[d] #поиск по списку установленных программ;
[MOD]+[Enter] #запустить терминал;
[MOD]+[Shift]+[r] #обновить рабочий стол;
[MOD]+[Shift]+[e] #выход из системы.
• HotKeys - ПЕРЕКЛЮЧЕНИЕ ФОКУСИРОВКИ МЕЖДУ ОКНАМИ И РАБОЧИМИ СТОЛАМИ:
[MOD]+[j] #переместить фокусировку влево;
[MOD]+[k] #переместить фокусировку вниз;
[MOD]+[l] #переместить фокусировку вверх;
[MOD]+[;] #переместить фокусировку вправо;
[MOD]+[Left] #переместить фокусировку влево;
[MOD]+[Down] #переместить фокусировку вниз;
[MOD]+[Up] #переместить фокусировку вверх;
[MOD]+[Right] #переместить фокусировку вправо;
[MOD]+[a] #переместить фокусировку на родительское окно;
[MOD]+[Space] #переключение фокусировки между плавающим и остальными окнами;
[MOD]+[N] #переключиться на заданный (N) рабочий стол.
• HotKeys - РАЗДЕЛЕНИЕ ОКОН:
[MOD]+[h] #выставить разделитель окон горизонтально;
[MOD]+[v] #выставить разделитель окон вертикально.
• HotKeys - ОПЕРАЦИИ С ОКНАМИ:
[MOD]+[Shift]+[j] #переместить активное окно влево;
[MOD]+[Shift]+[k] #переместить активное окно винз;
[MOD]+[Shift]+[l] #переместить активное окно вверх;
[MOD]+[Shift]+[;] #переместить активное окно вправо;
[MOD]+[Shift]+[Left] #переместить активное окно влево;
[MOD]+[Shift]+[Down] #переместить активное окно винз;
[MOD]+[Shift]+[Up] #переместить активное окно вверх;
[MOD]+[Shift]+[Right] #переместить активное окно вправо;
[MOD]+[r] #изменить размер текущего окна:
[j] #увеличить размер окна влево;
[k] #увеличить размер окна винз;
[l] #увеличить размер окна вверх;
[;] #увеличить размер окна вправо;
[Left] #увеличить размер окна влево;
[Down] #увеличить размер окна винз;
[Up] #увеличить размер окна вверх;
[Right] #увеличить размер окна вправо;
[MOD]+[r] #применить изменение;
[Esc] #применить изменение;
[Enter] #применить изменение.
[MOD]+[Shift]+[Space] #сделать текущее окно плавающим (поверх массива окон)|вернуть;
[MOD]+[Shift]+[N] #переместить окно на заданный (N) рабочий стол;
[MOD]+[f] #переключить окно в полноэкранный режим;
[MOD]+[Shift]+[q] #закрыть окно.
• HotKeys - ГРУППИРОВКА ОКОН:
[MOD]+[s] #блочная группировка текущей ветви окон (стопкой);
[MOD]+[e] #закладочная группировка текущей ветви окон (браузерная);
[MOD]+[w] #максимально развернуть окно для текущей ветви и скрыть остальные.
---------------------------------------------------------------------------------# (i3lock) блокировщик экрана:
i3lock -etuni image.png --raw=1920x1080:rgb #запуск блокировщика.
• опции программы:
-b #включить бипер;
-c rrggbb #задать цвет фона (ff0000 = красный);
-e #игнорировать пустой пароль;
-f #выводить количество попыток ввода пароля;
-i image.png #задать путь к фоновому рисунку;
-n #не создавать форков после запуска;
-p [win|default] #поведение экрана заставки:
"default" #не скрывать курсор мыши;
"win" #выводить сообщения и скриншоты на экран.
-t #включить заставку на всех мониторах;
-u #не выводить индикатор нажатия клавиш;
-v #вывод версии;
--debug #режим устранения ошибок;
--raw=format #задать параметры фонового рисунка:
format: [<width>x<height>:<pixfmt>];
pixfmt: [´native'|'rgb'|'xrgb'|'rgbx'|'bgr'|'xbgr'|'bgrx'];
пример: --raw=1920x1080:rgb;
пример: convert image.jpg RGB:- | i3lock --raw 3840x2160:rgb --image /dev/stdin.
---------------------------------------------------------------------------------• файлы и директории:
~/.config/i3/config #конфигурационный файл пользователя;
~/.i3/config #конфигурационный файл пользователя;
/etc/i3/config #конфигурационный файл общий;
~/.i3status.conf #конфигурационный файл статус-бара пользователя;
~/.config/i3status/config #конфигурационный файл статус-бара пользователя;
/etc/i3status.conf #конфигурационный файл статус-бара общий.
---------------------------------------------------------------------------------• ссылки на различные проекты:
- https://fontawesome.com/v5/cheatsheet
- https://github.com/altdesktop/i3-style
- https://github.com/altdesktop/i3ipc-glib
- https://github.com/ashinkarov/i3-extras
- https://github.com/brndnmtthws/conky
- https://github.com/burik666/yagostatus
- https://github.com/enkore/i3pystatus
- https://github.com/FortAwesome/Font-Awesome/releases
- https://github.com/HarveyHunt/i3situation
- https://github.com/horst3180/arc-firefox-theme
- https://github.com/horst3180/Arc-theme
- https://github.com/okraits/j4-make-config
- https://github.com/ultrabug/py3status
- https://github.com/veelenga/i3ipc-ruby
- https://github.com/vivien/i3blocks
- https://i3lock_unixpornworthy_lock_screen
- https://reddit.com/r/unixporn/comments/3358vu
---------------------------------------------------------------------------------• аналоги и форки:
- alopex;
- awesome #функциональный, популярный;
- bspwm;
- dswm;
- dwm #минималистичный;
- echinus;
- euclid-wm;
- frankenwm;
- herbstluftwm;
- i3-gaps #форк-дополнение;
- ion3 #функциональный;
- monsterwm;
- musca;
- notion;
- openbox #один из самых популярных и поддерживаемых;
- qtile;
- ratpoison #минималистичный;
- sawfish;
- snapwm;
- spectrwm;
- stumpwm;
- subtle;
- wingo;
- wmfs;
- xmonad.
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - MAN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# MAN - КРАТКАЯ СПРАВКА ПО ПРОГРАММАМ:
---------------------------------------------------------------------------------# cmd -h|-?|--help #вывод краткой справки по заданной команде.
---------------------------------------------------------------------------------# (whatis) вывод краткой информации по интересующему запросу:
whatis progname #вывод информации по progname.
• опции программы:
-C ФАЙЛ #использовать указанный пользовательских файл настроек;
-d #показывать сообщения отладки;
-l #не обрезать вывод по ширине терминала;
-L ЛОКАЛЬ #задать локаль для этого поиска [ru_RU|en_US|..];
-m СИСТЕМА #использовать справочные страницы от других систем;
-M ПУТЬ #установить путь поиска справочных страниц в значение ПУТЬ;
-r #считать каждый ключ регулярным выражением;
-s СПИСОК #искать только в этих секциях (разделяются двоеточиями);
-v #выводить подробные предупреждающие сообщения;
-w #ключ(и) содержит групповые символы.
----------------------------------------------------------------------------------
# (command) вывод краткой информации по любой установленной программе:
command -v cmdname #вывод расположения программы cmdname.
• опции программы:
-v #вывод расположения программы;
-p #задействовать содержимое PATH.
---------------------------------------------------------------------------------# (which) вывод директории заданной программы:
which -a progname #вывод всех директорий progname.
• опции программы:
-a #вывод всех директорий программы;
-i #прочитать алиасы.
---------------------------------------------------------------------------------# (type) вывод директории заданной программы:
type progname #вывод директории progname;
type -a ls #вывод директории ls и алиаса.
---------------------------------------------------------------------------------# (whereis) вывод директории заданной программы и её документации:
whereis progname #вывод всей доступной информации по программе.
• опции программы:
-b #вывод только директории программы;
-m #вывод только директории документации программы.
---------------------------------------------------------------------------------# (help) помощь по встроенным командам интерпретатора:
help alias #вывод хелпа по команде.
• опции программы:
-d #вывод короткого описания программы;
-m #вывод man-подобной страницы по команде;
-s #вывод короткого описания синтаксиса команды.
==================================================================================
# MAN - ДОКУМЕНТАЦИЯ И МАНЫ:
---------------------------------------------------------------------------------# (mandb) индексация man станиц:
mandb -c #переиндексировать имеющиеся страницы и создать БД.
• опции программы:
-c #записать базу данных для apropos и man.
---------------------------------------------------------------------------------# (apropos) поиск по содержимому манов:
apropos string #поиск строки в заголовках и названиях документации.
• опции программы:
-a #требуется совпадение всех ключей;
-C ФАЙЛ #использовать указанный пользовательских файл настроек;
-d #показывать сообщения отладки;
-e #искать точное совпадения каждого ключа;
-L ЛОКАЛЬ #задать локаль для этого поиска;
-l #не обрезать вывод по ширине терминала;
-M ПУТЬ #установить путь поиска справочных страниц в значение ПУТЬ;
-m СИСТЕМА #использовать справочные страницы от других систем;
-r #считать каждый ключ регулярным выражением;
-s СПИСОК #искать только в этих секциях (разделяются двоеточиями);
-v #выводить подробные предупреждающие сообщения;
-w #ключ(и) содержит групповые символы.
---------------------------------------------------------------------------------# (man) просмотр документации:
man mount.8 #открытие справочной страницы mount (8);
man 8 mount #открытие справочной страницы mount (8);
man -k string #поиск строки в заголовках и названиях документации;
man -K string #поиск строки в теле документации.
• конвертирование man-страниц:
man man | col -bfx > man.txt #конвертирование man в man.txt.
• опции программы:
-C ФАЙЛ #использовать указанный пользовательских файл настроек;
-d #показывать сообщения отладки;
-D #сбросить все параметры в значения по умолчанию;
--warnings=ПРЕДУПРЕЖДЕНИЯ #включить предупреждения от groff.
• основные режимы работы:
-c #используется catman для переформатирования устаревших cat страниц;
-f #эквивалентно whatis;
-k #эквивалентно apropos;
-K #искать текст по всем справочным страницам и открывать их поочередно;
-l #воспринимать аргумент(ы) СТРАНИЦА как имя файл(ов);
-R КОДИРОВКА #вывести исходную страницу в КОДИРОВКЕ;
-w #показывать физическое расположение man страницы;
-W #показывать физическое расположение cat файла(ов).
• поиск справочных страниц:
-a #поиск всех подходящих справочных страниц;
-e РАСШИРЕНИЕ #искать только с заданным РАСШИРЕНИЕМ;
-i #не учитывать регистр при поиске (по умолчанию);
-I #учитывать регистр при поиске;
-L ЛОКАЛЬ #задать локаль для поиска;
-M ПУТЬ #установить путь поиска справочных страниц в значение ПУТЬ;
-m СИСТЕМА #использовать справочные страницы от других систем;
-S|-s СПИСОК #использовать список секций, указанных через двоеточие;
-u #выполнить проверку целостности кэша;
--names-only #искать совпадение --regex и --wildcard только в именах страниц, без описаний;
--no-subpages #не затрагивать подстраницы, например, 'man foo bar' => 'man foo-bar';
--regex #показать все страницы, удовлетворяющие регулярному выражению;
--wildcard #показать все страницы, удовлетворяющие групповым символам.
• управление форматированием вывода:
-7 #показать трансляцию ASCII определённых символов latin1;
-E КОДИРОВКА #использовать выбранную кодировку выходных данных;
-H БРАУЗЕР #использовать elinks или БРАУЗЕР для показа HTML;
-P ПЕЙДЖЕР #использовать программу ПЕЙДЖЕР для вывода на экран;
-p СТРОКА #определяет запускаемые препроцессоры:
[e - [n]eqn|p - pic|t - tbl|g - grap|r - refer|v - vgrind].
-r СТРОКА #использовать пейджер `less' с подсказкой;
-t #использовать groff для форматирования страниц;
-T УСТРОЙСТВО #использовать groff на выбранном устройстве;
-X РАЗРЕШЕНИЕ #использовать groff и показывать с помощью gxditview (X11):
[-X = -TX75|-X100 = -TX100|-X100-12 = -TX100-12].
-Z #использовать groff и заставить его генерировать ditroff;
--nh #выключить перенос слов;
--nj #выключить выравнивание.
• список справочных разделов:
1 #исполняемые программы или команды оболочки (shell);
2 #системные вызовы (функции предоставляемые ядром);
3 #библиотечные вызовы (функции программных библиотек);
4 #специальные файлы (обычно находящиеся в каталоге /dev);
5 #форматы файлов и соглашения;
6 #игры;
7 #разное (включает пакеты макросов и соглашения);
8 #команды администрирования системы (запускаемые от root);
9 #процедуры ядра (раздел нестандартный).
• структура документации:
NAME (ИМЯ) #имя и однострочное описание команды;
SYNOPSIS (ОБЗОР) #краткий обзор;
DESCRIPTION (ОПИСАНИЕ) #углублённое описание функционала команды;
EXAMPLES (ПРИМЕРЫ) #советы по использованию;
SEE ALSO (СМОТРИ ТАКЖЕ) #связаные темы (обычно также ман-страницы).
• файлы и директории:
/usr/share/man #директория с документацией по программам/командам;
/usr/share/doc #директория с документацией приложений;
/etc/man.conf #конфигурационный файл программы man.
---------------------------------------------------------------------------------# (info) просмотр инфо-страниц с поддержкой гипертекста (альтернатива man):
info progname #вывод инфо-страницы по progname.
• опции программы:
-f file #прочитать file;
-k #вывод списка инфо-страниц по требуемому запросу (apropos).
==================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
~~~ cli - ETC #Разное ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
• daemon #сокращение от Disk And Execution MONitor.
==================================================================================
---=== ПРИЛОЖЕНИЯ ===--==================================================================================
>>>>>>> ПРИЛОЖЕНИЕ I - ОСНОВНЫЕ ДИРЕКТОРИИ: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
==================================================================================
/ #корень;
/bin/ #бинарные файлы пользователя [binaries];
/boot/ #файлы загрузчика;
/dev/ #файлы устройств [devices];
/etc/ #конфигурационные файлы [etcetera];
/home/ #домашняя директория;
/lib/ #системные библиотеки [library];
/media/ #съемные носители;
/mnt/ #монтирование [mount];
/opt/ #дополнительные программы [optional applications];
/proc/ #информация о процессах [proccess];
/run/ #процессы;
/root/ #домашняя директория пользователя root;
/sbin/ #системные исполняемые файлы [system binaries];
/srv/ #сервер [server];
/sys/ #информация о системе [system];
/tmp/ #временные файлы [temp];
/usr/ #программы пользователя [user applications];
/usr/bin/ #исполняемые файлы;
/usr/lib/ #библиотеки;
/usr/local/ #файлы пользователя;
/usr/sbin/ #исполняемые файлы;
/var/ #переменные файлы [variable];
/var/lib/ #базы данных;
/var/lock/ #файлы блокировок;
/var/log/ #файлы логов;
/var/mail/ #почта;
/var/run/ #PID процессов;
/var/spool/ #принтер.
==================================================================================
==================================================================================
>>>>>>> ПРИЛОЖЕНИЕ II - ОСНОВНЫЕ СИСТЕМНЫЕ ФАЙЛЫ: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
==================================================================================
• /etc/*:
- /etc/aliases #псевдонимы имен пользователей, соответствующие никнеймам для e-mail;
- /etc/bootptab #конфигурация демона сервера BOOTP;
- /etc/crontab #список команд и времени их выполнения для запуска (назначенные задания для демона cron);
- /etc/dhcpd.conf #файл конфигурации для демона сервера DHCP;
- /etc/ethers #файл соответствия MAC-адресов IP-адресам (RARP mapping), см. man ethers(5);
- /etc/exports #файл, описывающий экспотированные файловые системы для сервисов NFS;
- /etc/fdprm #таблица параметров для floppy-диска (описывает форматы различных floppyдисков / используется setfdprm);
- /etc/filesystems #может использоваться для установки последовательности filesystem probe, когда ФС монтируются с опцией auto (параметр nodev указывается для ФС, которые не
монтируются реально-локально, такие как proc, devpts и системы nfs);
- /etc/fstab #список файловых систем, автоматически монтируемых при загрузке системы и командой mount -a;
- /etc/ftpusers #имена пользователей, которым запрещен вход в систему через ftp (обычно root, daemon, bin, uucp и news);
- /etc/group #файл, описывающий группы пользователей (по аналогии /etc/passwd);
- /etc/groups #может содержать пароли, которые позволяют пользователю присоединиться к группе;
- /etc/gshadow #используется для хранения паролей групп и информации group administrator password для теневых паролей;
- /etc/host.conf #указывает, каким образом должны разрешаться имена хостов;
- /etc/hosts #список хостов для преобразования имен в IP-адреса (список хостов ЛВС, о которых не знает система DNS);
- /etc/HOSTNAME #задает имя рабочей станции (используется для поддержки старых программ, которые сохраняют имя хоста в файле /etc/sysconfig/network);
- /etc/inittab #конфигурационный файл для процесса init, управляющий ходом уровней загрузки (указывает скрипты, которые запускаются на каждом уровне);
- /etc/inetd.conf #настраивает службы, которые обрабатываются демоном inetd;
- /etc/issue #вывод getty перед выдачей приглашения логина (login prompt);
- /etc/issue.net #вывод getty перед выдачей приглашения логина (login prompt) для сетевых логинов;
- /etc/ld.so.conf #конфигурационный файл ld.so, run time linker;
- /etc/lilo.conf #конфигурационный файл для LILO;
- /etc/limits #ограничения пользовательских ресурсов, когда установлена система shadow passwords;
- /etc/localtime #информация о временной зоне системы;
- /etc/login.defs #устанавливает пользовательские опции (user login features) на системах, где работает shadow passwords;
- /etc/logrotate.conf #настраивает ротацию логов (управление логами, их архивирование);
- /etc/mime.types #конфигурационный файл для типов файлов (содержит описания различных форматов файлов);
- /etc/motd #cообщение дня (message of the day), автоматически выводящееся при успешном логине;
- /etc/mtab #cписок смонтированных файловых систем в настоящий момент времени (настраивается скриптом загрузки и обновляется командой mount);
- /etc/named.conf #используется серверами доменных имен, DNS (named);
- /etc/networks #список имен и адресов сетей (связывает доменные имена с адресами сетей и используется командой route);
- /etc/nologin #если этот файл существует, то запрещен логин всех пользователей, кроме root (обычно создается, когда система уходит в отключение);
- /etc/nsswitch.conf #конфигурационный файл name service switch;
- /etc/passwd #база данных пользователей;
- /etc/printcap #конфигурационный файл для принтеров;
- /etc/profile #файл, выполняемый шеллом при логине пользователя или загрузке системы (позволяет настроить глобальные установки по умолчанию для каждого пользователя отдельно);
- /etc/protocols #описывает протоколы Internet DARPA;
- /etc/rc | /etc/rc.d | /etc/rc*.d #скрипты которые запускаются при загрузке системы или когда меняется уровень процесса загрузки;
- /etc/rc.d/init.d/inet #сценарий, конфигурирующий при начальной загрузке сетевой интерфейс;
- /etc/rc.d/rc0.d #содержит файлы, упраляющие уровнем загрузки 0 (run level 0);
- /etc/rc.d/rc1.d #содержит файлы, упраляющие уровнем загрузки 1 (run level 1);
- /etc/rc.d/rc.sysinit #процесс init запускает этот файл при своем старте;
- /etc/rc.d/routed, /usr/src/etc/rc.d/routed #настраивает политики динамической маршрутизации;
- /etc/resolv.conf #здесь указываются адреса DNS;
- /etc/securetty #идентифицирует защищенные терминалы (secure terminals), с которых администратору root можно войти в систему (log in);
- /etc/services #перечисляет сетевые сервисы, которые поддерживает система ASPL;
- /etc/shadow #файл с зашифрованными паролями пользователей системы;
- /etc/shadow.group #системы с установленным ПО shadow passwords могут иметь этот файл;
- /etc/shells #список доверяемых шеллов (trusted shells). Команда chsh позволяет RHL, пользователям изменить свой логин-шелл на шелл, который перечислен только в этом файле;
- /etc/skel/.profile #может использоваться администратором для установки переменной окружения редактора (editor environment variable) для того, чтобы сделать некоторые
редакторы дружественными для новых пользователей;
- /etc/sudoers #настройки sudo и список пользователей с привилегиями sudo и su;
- /etc/smb.conf или /etc/samba/smb.conf #конфиг для настроек сервисов Samba;
- /etc/sysconfig/amd #используется для конфигурирования демона автомонтирования (auto mount daemon);
- /etc/sysconfig/clock #используется для конфигурирования системных часов (system clock);
- /etc/sysconfig/i18n #управляет настройками системного шрифта;
- /etc/sysconfig/init #используется для установки некоторых характеристик терминала и переменных окружения (environment variables);
- /etc/sysconfig/keyboard #используется для конфигурирования клавиатуры;
- /etc/sysconfig/mouse #используется для конфигурирования мыши;
- /etc/sysconfig/pcmcia #используется для конфигурирования сетевых карт pcmcia;
- /etc/syslog.conf #конфигурационный файл для демона syslogd;
- /etc/systemd/logind.conf #используется для настройки режима электропитания и кнопок;
- /etc/termcap #база данных совместимости терминалов (описывает управляющие escape-последовательности, поддерживаемые различными терминалами | см. man terminfo, termcap,
curs_termcap);
- /etc/terminfo #детализирует ввод/вывод терминала (terminal I/O);
- /etc/usertty #используется для наложения специальных ограничений доступа для пользователей.
• /home/user/*:
- ~/.bash_profile #содержимое пользовательского окружения (users environment stuff) и автозапускаемые программы;
- ~/.bash_logout #пользовательские действия, которые выполняются при выходе из системы (logout);
- ~/.bashrc #алиасы пользователей, модификаторы путей, функции;
- ~/.hushlogin #когда этот файл существует в домашней папке пользователя, то запрещена проверка почты, печать времени последнего логина и "сообщения дня" в момент, когда
пользователь входит в систему;
- ~/.inputrc #содержит клавиатурные привязки (keybindings) и кое-что еще;
- ~/Xrootenv.0 #информация о сети и окружении.
• /usr/*:
- /usr/lib/zoneinfo или /usr/share/zoneinfo #файлы данных временной зоны.
• /var/*:
- /var/log/btmp #используется для сохранения информации о неудачных логинах (должен быть одинажды создан вручную);
- /var/log/lastlog #журнал входов в систему;
- /var/log/lastlog #содержит информацию о последнем времени успешного логина в систему;
- /var/log/maillog #системный файл почтового лога;
- /var/log/messages #основной файл лога системных сообщений;
- /var/log/secure #системное отслеживание входов пользователя в систему;
- /var/log/wtmp #двоичная информация о пользователях, вошедших в систему;
- /var/named/* #файлы, используемые сревером доменных имен (DNS);
- /var/named/root.hints #используется для сервера доменных имен (DNS);
- /var/run/utmp #информация о пользователях, залогиненных в системе в настоящий момент;
- /var/spool/mail #директория с почтовой корреспонденцией.
==================================================================================
==================================================================================
>>>>>>> ПРИЛОЖЕНИЕ III - ОСНОВНЫЕ СИСТЕМНЫЕ ПОЛЬЗОВАНЕЛИ И ГРУППЫ: <<<<<<<<<<<<<<<
==================================================================================
• abrt [u|g] #;
• adm [u|g] #позволяет читать логи из директории /var/log;
• apache [u|g] #запуск веб-сервера;
• audio [-|g] #управление аудиодрайвером;
• avahi [u|g] #запуск DNS(SEC)-сервера;
• bin [u|g] #;
• brlapi [-|g] #;
• cdrom [-|g] #доступ к CD-ROM;
• chrony [u|g] #;
• colord [u|g] #запуск демона подцветки CLI;
• daemon [u|g] #от имени daemon запускаютcя сервисы, которым необходима возможность записи файлов на диск;
• dbus [u|g] #;
• dialout [-|g] #полный доступ к серийному порту;
• dip [-|g] #;
• disk [-|g] #открывает доступ к жестким дискам /dev/sd* /dev/hd*, можно сказать, что это аналог рут доступа;
• dnsmasq [u|g] #запуск DNS-DHCP-сервера;
• floppy [-|g] #;
• ftp [u|g] #FTP;
• games [u|g] #разрешает играм записывать свои файлы настроек и историю в определенную папку;
• gdm [u|g] #;
• geoclure [u|g] #;
• gluster [u|g] #;
• gnome-initial-setup [u|g] #;
• halt [u|-] #остановка системы;
• input [-|g] #;
• jackuser [-|g] #;
• kmem [-|g] #;
• kvm [-|g] #виртуальная машина;
• libvirt [-|g] #;
• list [?|?] #позволяет просматривать сообщения в /var/mail;
• lock [-|g] #;
• lp [u|g] #позволяет использовать устройства параллельных портов;
• mail [u|g] #позволяет записывать данные в почтовые ящики /var/mail/;
• man [-|g] #позволяет добавлять страницы в директорию /var/cache/man;
• mem [-|g] #;
• nm-openconnect [u|g] #;
• nm-openvpn [u|g] #;
• nobody [u|g] #;
• nogroup [?|g] #запуск процессов, которые не могут писать на ЖД, а только читать (применяется вместе с nobody);
• openvpn [u|g] #запуск OpenVPN;
• operator [u|-] #;
• pipewrite [u|g] #;
• plugdev [?|?] #позволяет монтировать внешние устройства USB, CD и т.д.;
• polkitd [u|g] #;
• printadmin [-|g] #;
• proxy [?|?] #используется прокси серверами, нет доступа записи файлов на диск;
• pulse [u|g] #;
• pulse-access [-|g] #;
• pulse-rt [-|g] #;
• qemu [u|g] #запуск виртуальной машины QEMU;
• radvd [u|g] #;
• render [-|g] #;
• root [u|g] #системный пользователь;
• rpc [u|g] #;
• rpcuser [u|g] #;
• rtkit [u|g] #;
• saslauth [u|g] #;
• setroubleshoot [u|g] #запуск демона отчета об ошибках и устранения проблем с SELinux;
• shadow [?|?] #разрешает чтение файла /etc/shadow;
• shutdown [u|-] #выключение системы;
• slocate [-|g] #;
• src [?|?] #полный доступ к исходникам в каталоге /usr/src/;
• ssh_keys [-|g] #;
• sshd [u|g] #запуск SSH-сервера;
• staff [?|?] #разрешает запись в папку /usr/local;
• sync [u|-] #позволяет выполнять команду /bin/sync;
• sys [-|g] #группа открывает доступ к исходникам ядра и файлам include сохраненным в системе;
• systemd-coredump [u|g] #;
• systemd-journal [-|g] #позволяет читать системные логи;
• systemd-network [u|g] #запуск демона поддержки сети;
• systemd-resolve [u|g] #запуск резолвера доменных имен;
• systemd-timesync [u|g] #запуск демона синхронизации времени;
• tape [-|g] #;
• tcpdump [u|g] #запуск сетевого сниффера;
• tss [u|g] #;
• tty [-|g] #все устройства /dev/vca разрешают доступ на чтение и запись пользователям из этой группы;
• unbound [u|g] #;
• usbmon [-|g] #;
• usbmuxd [u|g] #;
• users [-|g] #;
• utempter [-|g] #;
• utmp [-|g] #разрешает запись в файлы /var/log/utmp /var/log/wtmp;
• vboxadd [u|-] #;
• vboxsf [-|g] #;
• video [-|g] #позволяет работать с видеодрайвером;
• wheel [-|g] #позволяет запускать утилиту sudo для повышения привилегий;
• wireshark [-|g] #запуск сетевого сниффера;
• www-data [-|g] #запуск веб-сервера (дает доступ на запись в /var/www).
==================================================================================
==================================================================================
>>>>>>> ПРИЛОЖЕНИЕ IV - СТАНДАРТНЫЕ ИМЕНА УСТРОЙСТВ /dev/*: <<<<<<<<<<<<<<<<<<<<<<
==================================================================================
• /dev/audio(n) #звуковая карта;
• /dev/autofs #;
• /dev/block/(n) #;
• /dev/bsg/(n) #;
• /dev/btrfs-control #;
• /dev/bus/(n) #;
• /dev/char/(n) #;
• /dev/console #системная консоль (т.е. физически подключенные клавиатура и монитор);
• /dev/core #;
• /dev/cpu/(n) #;
• /dev/cpu_dma_latensy #;
• /dev/cua(n) #специальное устройство для работы с модемом;
• /dev/cuse #;
• /dev/disk/(n) #;
• /dev/dm-(n) #;
• /dev/dma_heap #;
• /dev/dri/(n) #;
• /dev/drm_dp_aux0 #;
• /dev/eth(n) #сетевая плата;
• /dev/fb(n) #;
• /dev/fd(n) #дисковод гибких дисков (А: fd0, B: fd1);
• /dev/full #;
• /dev/fuse #;
• /dev/gpiochip(n) #;
• /dev/hdx(n) #жесткий диск с интерфейсом IDE;
• /dev/hpet #;
• /dev/hugepages/(n) #;
• /dev/hwrng #;
• /dev/initctl #;
• /dev/input/(n) #;
• /dev/kmsg #;
• /dev/kvm #;
• /dev/live-base #;
• /dev/log #;
• /dev/loop(n) #;
• /dev/loop-control #;
• /dev/lp(n) #параллельный порт;
• /dev/mapper/(n) #;
• /dev/mcelog #;
• /dev/mei0 #;
• /dev/mem #;
• /dev/memory_bandwidth #;
• /dev/mouse(n) #мышь;
• /dev/mqueue/(n) #;
• /dev/net/(n) #;
• /dev/network_latency #;
• /dev/network_throughput #;
• /dev/null #пустое устройство (данные, выводимые в него, исчезают);
• /dev/nvram #;
• /dev/port #;
• /dev/ppp #;
• /dev/ptmx #;
• /dev/pts/(n) #виртуальный терминал (программа графического режима, в окне которой можно работать как в консоли);
• /dev/random #;
• /dev/raw/(n) #;
• /dev/rfkill #;
• /dev/rtc(n) #;
• /dev/sdx(n) #жесткий диск с интерфейсом SCSI;
• /dev/sg(n) #;
• /dev/shm/(n) #;
• /dev/snapshot #;
• /dev/snd/(n) #;
• /dev/stderr #;
• /dev/stdin #;
• /dev/stdout #;
• /dev/tty(n) #пользовательская (виртуальная) консоль (Linux поддерживает до 63 таких консолей);
• /dev/ttyS(n) #последовательный порт (COM1: ttyS0, COM2: ttyS1);
• /dev/udmabuf #;
• /dev/uhid #;
• /dev/uinput #;
• /dev/urandom #;
• /dev/usbmon(n) #;
• /dev/vcs(n) #;
• /dev/vcsa(n) #;
• /dev/vcsu(n) #;
• /dev/vfio/(n) #;
• /dev/vga_arbiter #;
• /dev/vhci #;
• /dev/vhost-net #;
• /dev/vhost-vsock #;
• /dev/watchdog #;
• /dev/watchdog0 #;
• /dev/zero #пустое устройство (данные, выводимые в него, исчезают).
• /dev/zram0 #.
==================================================================================
==================================================================================
>>>>>>> ПРИЛОЖЕНИЕ V - ФАЙЛОВЫЕ СИСТЕМЫ: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
==================================================================================
# ФАЙЛОВЫЕ СИСТЕМЫ - ТЕОРИЯ ПО ДИСКОВЫМ И ВИРТУАЛЬНЫМ ФС:
---------------------------------------------------------------------------------• Архитектура ФС:
-------------------|
Приложения
|
-------------------|
\|/
| ---------------| |Библиотека GNU C|
| ---------------\|/
\|/
-------------------| Системные вызовы |
-------------------\|/
-------------------|
VFS
|
-------------------\|/
-------------------|
Отдельные ФС
|
-------------------\|/
-------------------| Драйверы устройств |
-------------------• Любая ФС состоит (как минимум) из двух уровней:
- уровень представления данных;
- набор системных вызовов для работы с данными.
• VFS #виртуальная ФС:
- позволяет добиться существующего на данный момент уровня абстракции;
- каждая ФС имеет свои особенности, и VFS их всех объединяет;
- делает системные вызовы независимыми от типа используемой ФС;
- действует как корневой уровень интерфейса ФС;
- следит за всеми поддерживаемыми и смонтированными на данный момент ФС.
• Логическай структура ФС ext3:
- физически жесткий диск разбит на секторы размером 512 байт;
- первый сектор дискового раздела в любой ФС считается загрузочной областью:
в первичном разделе эта область содержит загрузочную запись #GPT/MBR|GRUB;
на других разделах область не используется.
- остальные секторы объединены в логические блоки размером 1, 2 или 4 Кб:
логический блок #наименьшая адресуемая порция данных.
- данные каждого файла занимают целое число блоков;
- блоки, в свою очередь, объединяются в группы;
- группы блоков и блоки внутри группы нумеруются последовательно, начиная с «1».
----------------------------------------------------------|Загрузочный| Суперблок | Группа
|
| Группа
|
|
сектор |
| блоков
|
| блоков
|
----------------------------------------------------------|
|
--------------------------------------------------------------|
|
----------------------------------------------------------------------------|
Копия
| Описание |
Карта
|
Карта
| Таблица
|
Блоки
|
| суперблока |(дескриптор)|
блоков
|
inode
|
inode
|
данных
|
----------------------------------------------------------------------------- суперблок #служит начальной точкой ФС и хранит всю информацию о ней:
размер суперблока 1024 байта;
располагается по смещению 1024 байта от начала ФС;
в каждой группе блоков суперблок дублируется, что позволяет быстро восстановить его после сбоев;
в суперблоке определяется:
размер ФС;
максимальное число файлов в разделе;
объем свободного пространства;
информация о том, где искать незанятые участки.
при запуске ОС суперблок считывается в память;
все изменения ФС вначале находят отображение в копии суперблока:
на диск записываются только периодически (позволяет повысить производительность системы).
при останове системы суперблок обязательно должен быть записан на диск.
- описание (дескриптор) группы блоков:
позволяет найти битовые карты блоков и индексных дескрипторов, а также таблицу индексных дескрипторов.
- битовая карта блоков #block bitmap:
каждый бит структуры показывает, отведен ли такой же по счету блок какому-либо файлу;
значение «1» показывает, что блок занят;
карта служит для поиска свободных блоков в тех случаях, когда надо выделить место под файл.
- битовая карта индексных дескрипторов (inode):
выполняет аналогичную функцию по отношению к таблице индексных дескрипторов;
карта показывает, какие именно дескрипторы заняты.
- узел inode хранит в себе все метаданные для управления объектами ФС;
- файл:
каждому файлу соответствует один и только один индексный дескриптор (inode);
inode идентифицируется своим порядковым номером - индексом файла;
в индексном дескрипторе хранятся метаданные файла:
все атрибуты файла, кроме его имени, и указатель на данные файла:
для обычного файла или каталога этот указатель представляет собой массив из пятнадцати адресов блоков;
первые двенадцать адресов являются прямыми ссылками на номера блоков, в которых хранятся данные файла;
если данные не помещаются в двенадцать блоков, то включается механизм косвенной адресации;
следующий адрес в этом массиве является косвенной ссылкой, то есть адресом блока;
в адресе блока хранится список адресов следующих блоков с данными из этого файла;
адрес блока занимает 4 байта, блок имеет размеры 1, 2 или 4 Кб;
путем косвенной адресации можно разместить 256 - 1024 блока.
если файл еще длиннее:
следующий адрес в массиве-указателе указывает на блок двойной косвенной адресации (double indirect block);
блок содержит список адресов блоков, которые, в свою очередь, содержат списки адресов следующих блоков данных;
последний адрес в массиве-указателе задает адрес блока тройной косвенной адресации, то есть блока со списком адресов блоков, которые являются блоками двойной
косвенной адресации.
имя файла:
в *nix-подобных системах имя файла - атрибут не самого файла, а ФС, понимаемой как логическая структура каталогов;
имя файла хранится только в каталоге, к которому файл приписан, и больше нигде;
следствия этого любопытны:
одному индексному дескриптору может соответствовать любое количество имен, приписанных к разным каталогам, и все они являются настоящими;
количество имен (жестких ссылок) учитывается в индексном дескрипторе;
удаление файла означает простое удаление записи о нем из данных каталога и уменьшение на единицу счетчика ссылок;
сопоставить имя можно только номеру индексного дескриптора внутри одной и той же ФС;
именно поэтому нельзя создать жесткую ссылку в другую ФС (символическую - можно, у нее другой механизм хранения);
сам каталог таким же образом приписан к своему родительскому каталогу:
корневой каталог всегда записан в индексный дескриптор с номером «2»;
индексный дескриптор номер «1» отведен для списка адресов дефектных блоков;
в каждом каталоге хранится ссылка на него самого и на его родительский каталог #«.» «..»;
т.о., количество ссылок на каталог равно количеству его подкаталогов плюс два;
данные каталога представляют собой связный список с записями переменной длины:
----------------|Номер inode
|
----------------|Длина записи
|
----------------|Длина имени файла|
----------------|Имя файла
|
----------------|Номер inode
|
----------------|Длина записи
|
-----------------
|Длина имени файла|
----------------|Имя файла
|
----------------|...
|
----------------|Номер inode
|
----------------|Длина записи
|
----------------|Длина имени файла|
----------------|Имя файла
|
----------------файлы физических устройств:
они могут находиться в тех же каталогах, что и обычные файлы;
в каталоге нет никаких данных, говорящих о принадлежности имени файла на диске или устройству;
разница - на уровне индексного дескриптора;
в inode файла устройства содержится указатель на список драйверов устройств в ядре - тот элемент списка, который соответствует старшему номеру устройства.
- иные составляющие ФС ext3:
cтруктуры dentry #используются для осуществления преобразования между названиями и узлами inode, для чего существует кэш директорий, в котором хранятся последние
использованные записи, а также отношения между папками и файлами для обхода ФС;
буферный кэш #буферизирует запросы между ФС и блочными устройствами;
дубликаты суперблока #используются при восстановлении ФС после сбоев.
---------------------------------------------------------------------------------# ФАЙЛОВЫЕ СИСТЕМЫ - СПИСОК VFS:
---------------------------------------------------------------------------------• /dev #отображает файлы устройств (device nodes);
• /dev/hugepages #позволяет программам запрашивать выделение «гигантских» страниц памяти (X);
• /dev/mqueue #содержит объекты IPC-механизма mqueue (X);
• /dev/pts #обеспечивает доступ к псевдо-TTY устройствам;
• /dev/shm #содержит объекты разделяемой памяти;
• /proc #дает доступ к информации о выполняемых процессах, настройкам ядра, а также другим параметрам;
• /proc/sys/fs/binfmt_misc #используется для регистрации в ядре дополнительных бинарных форматов (X);
• /run #содержит файлы и сокеты, используемые программами;
• /sys #предоставляет доступ к драйверам и устройствам, а также некоторым другим параметрам ядра;
• /sys/firmware/efi/efivars #предоставляет доступ к переменным EFI;
• /sys/fs/cgroup (и другие файловые системы, смонтированные в подкаталогах этого каталога) #позволяют работать с иерархией контрольных групп;
• /sys/fs/fuse/connections #обеспечивает доступ к FUSE-соединениям (X);
• /sys/fs/selinux #используется для взаимодействия с SELinux;
• /sys/kernel/security, /sys/kernel/debug (X), /sys/kernel/config (X) #предоставляют доступ к специализированным механизмам ядра;
• /tmp #хранит временные и часто изменяемые объекты (X);
* отключаемые ФС в списке выше отмечены (X).
- если необходимо изменить параметры монтирования для специальных ФС, можно добавить их в /etc/fstab с указанием соответствующих опций;
- применение к специальным ФС параметров монтирования, указанных в /etc/fstab, обеспечивается службой systemd-remount-fs.service;
- при необходимости, можно полностью отключить монтирование некоторых специальных систем, для этого достаточно заблокировать (замаскировать) соответствующий юнит: systemctl
mask dev-hugepages.mount.
---------------------------------------------------------------------------------# ФАЙЛОВЫЕ СИСТЕМЫ - VFS #PROCFS:
---------------------------------------------------------------------------------• Описание procfs:
- procfs находится не на жёстком диске, а в оперативной памяти;
- создаёт свои файлы и каталоги на основании информации, полученной от ядра;
- механизм, позволяющий посылать данные ядру, модулям и процессам;
- с её помощью можно изменять параметры ядра и его модулей на ходу;
- может быть полезна для:
мониторинга производительности;
проверки системной информации;
конфигурирования системы.
---------------------------------------------------------------------------------• Структура файловой системы:
- /proc/acpi #;
- /proc/asound #;
- /proc/bootconfig #;
- /proc/buddyinfo #;
- /proc/bus #;
- /proc/cgroups #;
- /proc/cmdline #список параметров, переданных ядру;
- /proc/consoles #;
- /proc/cpuinfo #информация о типе процессора, его производителе и быстродействии;
- /proc/crypto #;
- /proc/devices #список устройств, сконфигурированных в ядре;
- /proc/diskstats #;
- /proc/dma #показывает, какие каналы DMA используются в настоящий момент;
- /proc/driver #;
- /proc/dynamic_debug #;
- /proc/execdomains #;
- /proc/fb #;
- /proc/filesystems #ФС, сконфигурированые в ядре (используется для детектирования ФС, если файл /etc/filesystems отсутствует);
- /proc/fs #;
- /proc/interrupts #показывает, какие прерывания используются и насколько часто;
- /proc/iomem #;
- /proc/ioports #показывает, какие порты ввода/вывода (I/O ports) используются в настоящий момент;
- /proc/irq #;
- /proc/kallsyms #таблица символов ядра;
- /proc/kcore #образ физической памяти системы;
- /proc/keys #;
- /proc/key-users #;
- /proc/kmsg #вывод сообщений ядра, которые перенаправляются в syslog;
- /proc/kpagecgroup #;
- /proc/kpagecount #;
- /proc/kpageflags #;
- /proc/latency_stats #;
- /proc/loadavg #статистика по средней загруженности системы;
- /proc/locks #;
- /proc/mdstat #;
- /proc/meminfo #информация по использованию памяти (физической и файла подкачки);
- /proc/misc #;
- /proc/modules #информация о модулях ядра загруженных в память;
- /proc/mounts #информация о ФС, смонтированных в настоящее время (сходна с файлом /etc/mtab);
- /proc/mtrr #;
- /proc/net #директория содержит информацию о сетевых протоколах;
- /proc/pagetypeinfo #;
- /proc/partitions #;
- /proc/pressure #;
- /proc/schedstat #;
- /proc/scsi #;
- /proc/self #симлинк на директорию процессов программ, указывающая на /proc (разные процессы получают разные ссылки);
- /proc/slabinfo #;
- /proc/softirqs #;
- /proc/stat #разнообразная статистика о системе;
- /proc/swaps #список используемых разделов и файлов подкачки;
- /proc/sys/fs/file-max #максимальное число одновременно открытых файлов (по умолчанию 4096).
- /proc/sys/fs/inode-max #максимальное число одновременно открытых инодов (по умолчанию 4096).
- /proc/sys/fs/super-max #максимальное количество заголовков суперблоков. У каждой подмонтированной ФС есть суперблок, следовательно, максимальное количество суперблоков равно
максимальному количеству одновременно смонтированных ФС (по умолчанию 256).
- /proc/sys/fs/super-nr #текущее количество суперблоков (файл используется только для чтения).
- /proc/sys/kernel #параметры ядра;
- /proc/sys/kernel/ctrl-alt-del:
0 #«мягкая перезагрузка»;
1 #«жесткая» перезагрузка (практически равнозначная нажатию Reset).
- /proc/sys/kernel/domainname #содержит сетевое доменное имя;
- /proc/sys/kernel/hostname #имя хоста;
- /proc/sys/kernel/msgmax #максимальный размер сообщения (в байтах), которое может быть передано от одного процесса к другому при межпроцессном взаимодействии (по умолчанию
8192). Если увеличить это значение, то увеличится размер ОЗУ, занимаемый ОС;
- /proc/sys/kernel/panic #время в секундах, в течение которого ядро будет ждать, прежде чем перезагрузить систему после вывода сообщения «kernel panic» (по умолчанию 0 перезагрузка не производится);
- /proc/sys/kernel/printk #определяет, куда, в зависимости от их важности, будут направлены сообщения. В файле содержатся четыре значения, например, 6 4 1 7 (по умолчанию).
Первое значение задает, сообщения с каким уровнем должны быть выведены на консоль (Console Log Level). Если уровень сообщения «6» и ниже, то это важные сообщения, и они будут
выведены на консоль (чем меньше число, тем больше приоритет). Второе значение определяет важность сообщений, для которых не указано значение приоритета, то есть задает уровень
приоритета по умолчанию. Третье значение задает номер самого высокого приоритета (это 1). Четвертое значение — это значение по умолчанию для первого. Более подробную информацию
обо всем этом можно почерпнуть в syslog(2);
- /proc/sys/kernel/shmall #максимальный размер (в байтах) разделяемой памяти (по умолчанию 2097152);
- /proc/sys/kernel/shmax #максимальный размер сегмента памяти (в байтах), допускаемый ядром (по умолчанию 33554432);
- /proc/sys/kernel/shmmni #максимальное число сегментов разделяемой памяти (по умолчанию 4096);
- /proc/sys/kernel/sysrq #активизирует SysRq (смотри дальше), если не равно 0;
- /proc/sys/kernel/threads-max #максимальное число используемых ядром потоков (по умолчанию 2048);
- /proc/sys/net/conf/*/rp_filter #отбрасывать ли пакет в том случае, если пакет приходит на один интерфейс, а ответ исходит из другого. Для PPP и VPN соединений этот параметр
лучше включить, так как они имеют свои собственные интерфейсы;
- /proc/sys/net/core/message_burst #можно использовать для предотвращения DoS-атаки, когда система заваливается сообщениями. Определяет в десятых долях секунды время, которое
необходимо для записи нового сообщения. Остальные сообщения, полученные за этот период, будут проигнорированы (по умолчанию 50 [5 секунд]);
- /proc/sys/net/core/message_cost #значимость каждого сообщения. Чем выше значение, тем больше сообщений будет проигнорировано (по умолчанию 5);
- /proc/sys/net/core/netdev_max_backlog #максимальное число пакетов в очереди на обработку. Позволяет установить максимум, если сетевой интерфейс получает пакеты быстрее, чем
ядро может их обработать (по умолчанию 300);
- /proc/sys/net/core/optmem_max #максимальный размер буфера для одного сокета (в байтах);
- /proc/sys/net/core/rmem_max #размер буфера для буфера получения информации (в байтах);
- /proc/sys/net/core/wmem_max #размер буфера для буфера отправки информации (в байтах);
- /proc/sys/net/ipv4/conf/*/accept_source_route #определяет, разрешены ли пакеты с маршрутизацией, задаваемой источником. Желательно отключить (значение 0), чтобы атакующий не
мог фальсифицировать IP-адрес источника;
- /proc/sys/net/ipv4/conf/*/accept_redirects #можно ли принимать ICMP-перенаправления. Если этот параметр включен, существует вероятность того, что злоумышленник начнет
посылать наши пакеты через машину, которую он контролирует;
- /proc/sys/net/ipv4/conf/*/log_martians #определяет, должно ли ядро посылать в syslog сообщения о пакетах, полученных от недопустимых адресов;
- /proc/sys/net/ipv4/conf/*/proxy_arp #отвечать или нет на ARP запрос, если известен путь к запрашиваемому хосту;
- /proc/sys/net/ipv4/icmp_echo_ignore_all #если «1», то игнорируются ICMP-пакеты типа ECHO REQUEST;
- /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts #если «1», то игнорируются широковещательные ping’и (хорошее решение против smurf-атак!);
- /proc/sys/net/ipv4/{icmp_ratelimit,icmp_ratemask} #ограничение частоты генерации ICMP-пакетов;
- /proc/sys/net/ipv4/neigh/*/locktime #количество времени, в течение которого существует запись при изменении ARP адреса. Увеличение этого параметра может предотвратить
засорение кэша ARP при атаке типа man-in-the-middle;
- /proc/sys/net/ipv4/tcp_syncookies #следует включить для противодействия SYN-флуду;
- /proc/sys/vm/buffermem #позволяет управлять количеством общей системной памяти, которая будет использоваться как буферная память. В файле указываются три значения (через
пробел): минимальный, средний и максимальный размер памяти (в %), которая может быть использована для буфера. По умолчанию: 2 10 60;
- /proc/sys/vm/freepages #содержит три значения, разделенные пробелами (512 768 1024 - по умолчанию). Если количество свободных страниц памяти достигнет первого значения,
доступ к любому дополнительному количеству памяти будет иметь только ядро (а не другие процессы). Если количество свободных страниц будет меньше второго значения (768), ядро будет
более активно освобождать память путем свопинга. То же самое и для третьего значения, только ядро в этом случае будет еще активнее;
- /proc/sys/vm/kswapd #управляет свопингом. Как и в предыдущем случае, в этом файле ты найдешь три значения, разделенные пробелами (512 32 8). Первое значение - это
максимальное количество страниц, которые ядро будет пытаться освободить за один раз. Второе - это минимальное количество попыток освобождения страницы во время свопинга. Третье количество страниц, которое можно записать в своп. Чем больше это значение, тем больше данных будет записано на диск и меньше времени будет потрачено на поиск на диске. Но тут
важно не перестараться, так как слишком большое значение произведет обратный эффект (ведь очередь запросов увеличится);
- /proc/sys/vm/swappiness #содержит значение коэффициента подкачки. Минимальное значение коэффициента - 0, максимальное - 100 (по умолчанию 70);
- /proc/sysrq-trigger #;
- /proc/sysvipc #;
- /proc/thread-self #;
- /proc/timer_list #;
- /proc/tty #;
- /proc/uptime #время нахождения системы в рабочем состоянии;
- /proc/version #версия ядра;
- /proc/vmallocinfo #;
- /proc/vmstat #;
- /proc/zoneinfo #.
==================================================================================
# ФАЙЛОВЫЕ СИСТЕМЫ - VFS #SYSFS:
---------------------------------------------------------------------------------• Описание sysfs:
- экспортирует информацию об установленном оборудовании;
- позволяет управлять настройкой установленного оборудования;
- может дать практический результат только в сочетании с другими системами:
udev #динамически создаёт файлы устройств в каталоге /dev;
udisks #автоматически монтирует ФС вновь подключенных накопителей;
upower #система управления питанием.
---------------------------------------------------------------------------------• Структура файловой системы sysfs:
- каталоги устройств:
/sys/block/ #блочные устройства;
/sys/bus/ #перечень шин, зарегистрированных в ядре;
/sys/class/ #группировка устройств по классам;
/sys/dev/ #;
/sys/device/ #дерево устройств так, как его видит ядро.
- каталоги для сервисных нужд:
/sys/firmware/ #закрытые файлы firmware, нужные для работы некоторых устройств;
/sys/fs/ #управление файловыми системами, основанными на FUSE (н-р ext4|ФС);
/sys/hypervisor/ #гипервизор;
/sys/kernel/ #интерфейс низкоуровневого управления ядром (профилирование, дебаг...);
/sys/module/ #все модули, загруженные ядром (подкаталог parameters, позволяет управлять опциями модуля);
/sys/power/ #контроль параметров энергопотребления.
---------------------------------------------------------------------------------echo mem > /sys/power/state #перевод системы в спящий режим.
==================================================================================
==================================================================================
>>>>>>> ПРИЛОЖЕНИЕ VI - ЗАПУСК СИСТЕМЫ: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
==================================================================================
• Нажатие кнопки питания #материнская плата подаёт сигнал БП;
• БП #подаёт напряжение на аппаратные ресурсы компьютера и возвращает материнской плате power-good сигнал, после чего та пытается запустить CPU;
• CPU #сбрасывает все текущие значения с регистров и заполняет их значениями по умолчанию, а затем обращается к памяти BIOS для получения первой инструкции для выполнения;
• BIOS #возвращает CPU указание на запуск POST, который выполняет проверку всех подключенных аппаратных средств машины, после чего начинается непосредственно процесс запуска
самой ОС;
• BIOS #для запуска ОС проверяет свои настройки в поисках списка устройств, с которых можно загрузиться и после того, как устройство для загрузки определено (из настроек, или
после нажатия F12 и указания диска вручную) BIOS пытается считать первый сектор (512 байт), т.е. непосредственно MBR или GPT;
• MBR #находится по адресу «цилиндр 0, головка 0, сектор 1», и помещает его в область памяти по физическому адресу 0x7C00, после чего BIOS проверяет последние два байта сектора,
которые должны заканчиваться на 0x55 и 0xaa, которые указывают на то, что раздел является загрузочным, и если это так - передаёт управление загрузчику (LILO, GRUB, GRUB2, ...).
Загрузчик первой стадии представляет собой машинный код в основной загрузочной записи, целью которого является поиск загрузчика второй стадии (GRUB) и загрузка его первой части в
память.
• GRUB2 #выполняет загрузку ядра (kernel) в память, которое, в свою очередь, загружает необходимые модули и подключает корневой раздел в режиме чтения:
Системы с BIOS помещают GRUB в память, а системы с UEFI напрямую осуществляют чтение из раздела EFI. Достоинствами GRUB является способность чтения ext3, ext2 и ext4 и загрузки
своего файла /boot/grub/grub.conf (BIOS) или /boot/efi/EFI/redhat/grub.conf (UEFI) в процессе загрузки системы. После успешного размещения загрузчика в памяти будет показано окно
со списком доступных операционных систем и ядер, которые выбирает пользователь. После выбора ядра загрузчик выполнит поиск его библиотеки в каталоге /boot/. Имена файлов двоичных
пакетов ядра имеют формат /boot/vmlinuz-<версия> (где <версия> — номер версии ядра, заданного в настройках загрузчика). Затем загрузчик поместит подходящие образы initramfs в
память. initramfs используется ядром для загрузки необходимых драйверов и модулей, что особенно важно для систем с дисками SCSI и файловыми системами ext3 и ext4. После этого
управление будет передано ядру. [GRUB в RHEL поддерживает только ext2, ext3, ext4. Файловые системы Btrfs, XFS, VFAT не поддерживаются. Более того, GRUB не поддерживает LVM];
• KERNEL #реализует инициализацию и конфигурацию системной памяти, настройку оборудования, включая процессоры, подсистемы ввода-вывода и устройства хранения, осуществляет поиск
образов initramfs, распаковывает их в /sysroot/ и загружает необходимые драйверы, выполняет инициализацию виртуальных устройств файловой системы, таких как LVM и программные
массивы RAID, после чего процессы initramfs завершаются, а занимаемая образом память освобождается, так же ядро создает корневое устройство, подключает его в режиме чтения и
освобождает неиспользуемую память, и именно с этого момента, ядро загружено в память и полностью функционально, а для настройки окружения пользователя ядро использует программу
/sbin/init;
• INIT #загружает все службы и утилиты пространства пользователя и монтирует заданные в /etc/fstab разделы:
Программа /sbin/init (также init) координирует оставшуюся часть процесса загрузки и выполняет настройку окружения пользователя. Процесс init становится родительским по отношению
ко всем автоматически запускаемым в системе процессам. Сначала он запустит сценарий /etc/rc.d/rc.sysinit, который задает путь окружения, инициализирует пространство подкачки,
проверяет файловые системы и выполняет все необходимые для инициализации системы шаги. К примеру, для инициализации аппаратных часов rc.sysinit считывает файл конфигурации
/etc/sysconfig/clock, а для инициализации отдельных процессов серийного порта выполняет файл /etc/rc.serial. Затем init выполняет задания в каталоге /etc/event.d, которые
определяют настройки системы на каждом уровне выполнения SysV init. Уровень выполнения — это состояние или режим, которому соответствуют службы в каталоге /etc/rc.d/rc<x>.d/ (где
<x> — номер уровня). Далее init задает библиотеку системных функций /etc/rc.d/init.d/functions, использующихся при запуске, завершении и определении номера процесса (PID)
приложений. init проверяет уровень выполнения в /etc/inittab и выполняет запуск всех фоновых процессов из соответствующего каталога rc. Каталоги rc пронумерованы соответственно
уровням. Например, /etc/rc.d/rc5.d/ соответствует уровню выполнения 5. При загрузке пятого уровня init попытается найти каталог /etc/rc.d/rc5.d/, чтобы определить процессы для
запуска и остановки. Как показано в примере, /etc/rc.d/rc5.d/ не содержит запускающих или останавливающих службы сценариев. Все файлы в /etc/rc.d/rc5.d/ представляют собой
символьные ссылки на сценарии в /etc/rc.d/init.d/. Символьные ссылки используются во всех каталогах rc. Таким образом, изменение, создание и удаление ссылок не окажет влияния на
сами сценарии. Каждая ссылка начинается либо с K, либо с S. K (kill) обозначает процессы, работа которых будет завершена на данном уровне, а S (start) обозначает запускаемые
процессы. Сначала init останавливает все обозначенные буквой K процессы путем выполнения /etc/rc.d/init.d/<процесс> stop. Затем с помощью команды /etc/rc.d/init.d/<процесс> start
запускаются ссылки S. Символьные ссылки пронумерованы по порядку их запуска и остановки. Этот порядок можно изменить путем модификации номера; чем меньше число, тем раньше будет
запущена служба. Если число совпадает, порядок служб будет определяться по алфавиту. После прохождения init через соответствующий каталог rc служба Upstart запустит процесс
/sbin/mingetty для каждой виртуальной консоли. Уровни 2-5 имеют 6 виртуальных консолей, уровень 1 (монопольный режим) — одну консоль, а уровни 0 и 6 — ни одной. /sbin/mingetty
откроет доступ к устройствам tty, настроит их режимы, откроет окно приглашения, получит введенное имя пользователя и пароль и начнет процесс авторизации. На уровне выполнения 5
Upstart выполнит сценарий /etc/X11/prefdm, который запустит менеджер дисплея X gdm, kdm или xdm в зависимости от настроек в файле /etc/sysconfig/desktop. Одним из последних
запускаемых файлов так же является /etc/rc.d/rc.local, который помогает задать индивидуальные настройки системы. Таким образом, система будет запущена на уровне 5 и появится окно
входа.
==================================================================================
==================================================================================
>>>>>>> ПРИЛОЖЕНИЕ VII - SYSTEMD [юниты]: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
==================================================================================
# SYSTEMD [юниты] - ФАЙЛ ЮНИТА:
---------------------------------------------------------------------------------• Возможности, реализуемые с помощью юнитов:
- активация на основе сокетов #сокеты, связанные с сервисом, лучше всего вырываются из самого демона, чтобы обрабатываться отдельно (это дает ряд преимуществ, например,
задержка запуска службы до тех пор, пока соответствующий сокет не будет доступен, что также позволяет системе создавать все сокеты до начала запуска процесса, что позволяет
параллельно загружать связанные службы);
- активация на основе шины #юниты также могут быть активированы на интерфейсе шины, предоставляемом D-Bus-ом (устройство может быть запущено когда соответствующая шина
доступна);
- активация на основе пути #юнит может быть запущен на основе активности или наличия определенных путей к файловой системе (это использует inotify);
- активация на основе устройства #юниты могут быть запущены при первой доступности (подключении) связанного оборудования за счет использования событий udev;
- неявное сопоставление зависимостей #большая часть структуры зависимостей для юнитов может быть построена самой системой (можно добавить информацию о зависимостях, но большая
часть тяжелой работы будет решена systemd);
- экземпляры и шаблоны #файлы блока шаблонов могут использоваться для создания нескольких экземпляров одного и того же общего устройства (это позволяет создавать небольшие
вариации или единичные unit-ы, которые обеспечивают одну и ту же общую функцию);
- простое упрощение безопасности #юниты могут реализовать некоторые довольно хорошие функции безопасности, добавив простые директивы (н-р можно указать какой доступ
использовать (чтение, запись) при работе с файловой системой, ограничить возможности ядра, установить приватный /tmp фолдер и сетевой доступ);
- Drop-ins и snippets #юниты можно легко расширить, предоставив фрагменты, которые будут отменять части файла системы (это позволяет легко переключаться между vanilla и
индивидуальными реализациями).
---------------------------------------------------------------------------------# SYSTEMD [юниты] - ОСНОВНЫЕ СЕКЦИИ И ПАРАМЕТРЫ ЮНИТОВ:
---------------------------------------------------------------------------------• [Unit] #секция определяющая обработку зависимостей:
- Description= #краткое описание юнита;
- Documentation= #список ссылок на документацию;
- Before= #юниты, перечисленные в этой директиве, не будут запущены до тех пор, пока текущий блок не будет отмечен как запущенный, если они будут активированы одновременно;
- After= #юниты, перечисленные в этой директиве, будут запущены до запуска текущего устройства (юнита);
- Requires= #если этот сервис активируется, перечисленные здесь юниты тоже будут активированы, если один из перечисленных юнитов останавливается или падает, этот сервис тоже
будет остановлен (если юнит указан в Requires, но его нет в After, то текущий сервис будет запущен параллельно с заданным, а не после успешной загрузки первого);
- BindsTo= #аналогична Requires = и приводит к остановке текущего устройства, когда соответствующий узел завершается;
- Wants= #если один из перечисленных юнитов не может успешно запуститься (подразумевает параллельную активацию), это не повлияет на запуск данного сервиса (задает более слабые
зависимости, чем Requires, и это рекомендуемый способ установления зависимостей);
- Conflicts= #если установлено что данный сервис конфликтует с другим юнитом, то запуск последнего остановит этот сервис и наоборот;
- Condition…= #ряд директив, которые позволяют протестировать определенные условия до запуска устройства (если условие не выполнено, юнит пропускается);
- Assert…= #подобно директиве Condition…, но установленные директивы проверяют различные аспекты рабочей среды, чтобы решить, следует ли активировать устройство (отрицательный
результат вызывает сбой).
---------------------------------------------------------------------------------• [Service] #секция определяет параметры сервиса:
- Type= #настраивает тип запуска процесса (один из):
simple (по умолчанию) #запускает сервис мгновенно (предполагается, что основной процесс сервиса задан в ExecStart) Процесс при этом не должен разветвляться. Не используйте
этот тип, если другие службы зависят от очередности при запуске данной службы. Исключение - активация сокета;
forking #systemd предполагает, что служба запускается однократно и процесс разветвляется с завершением родительского процесса. Используйте данный тип для запуска
классических демонов за исключением тех случаев, когда, как вам известно, в таком поведении процесса нет необходимости. Вам следует также определить PIDFile= , чтобы systemd могла
отслеживать основной процесс;
oneshot #аналогичен simple, но предполагается, что процесс должен завершиться до того, как systemd начнет отслеживать состояния юнитов (полезен для скриптов, которые
выполняют одно задание и завершаются, может понадобиться также установить параметр RemainAfterExit=yes , чтобы systemd по-прежнему считал процесс активным, даже после его
завершения);
dbus #аналогичен simple, но считает сервис запущенным после того, как основной процесс получает имя на шине D-Bus;
notify #аналогичен simple, но считает сервис запущенным после того, как он отправляет systemd специальный сигнал;
idle #аналогичен simple, но запуск исполняемого файла сервиса откладывается, пока не будут выполнены все задачи.
- ExecStart= #команды вместе с аргументами, которые будут выполнены при старте сервиса (опция Type=oneshot позволяет указывать несколько команд, которые будут выполняться
последовательно);
- ExecStartPre= #задает дополнительные команды, которые будут выполнены до ExecStart;
- ExecStartPost= #задает дополнительные команды, которые будут выполнены после ExecStart;
- ExecStop= #команды, которые будут выполнены для остановки сервиса запущенного с помощью ExecStart;
- ExecStopPost= #задает дополнительные команды, которые будут выполнены после остановки сервиса;
- ExecReload= #команды, которые будут выполнены чтобы сообщить сервису о необходимости перечитать конфигурационные файлы;
- Restart= #при активации данной опции, сервис будет перезапущен, если процесс прекращен или достигнут timeout (за исключением случая нормальной остановки сервиса с помощью
команды systemctl stop):
always #перезапускать демон независимо от того почему он завершился;
on-success;
on-failure #перезапускать если демон вышел с ненулевым кодом возврата или был завершен по сигналу (kill DAEMONPID);
on-abnormal;
on-abort;
on-watchdog.
- RestartSec= #задает время ожидания перед попыткой перезапуска службы (если включен автоматический перезапуск службы);
- RemainAfterExit= #если установлена в значение True, сервис следует считать активным даже после выхода из процесса (полезен с Type=oneshot, значение по умолчанию False);
- PIDFile= #задает путь файла, содержащего PID основного контролируемого потомка (используется с Type=forking);
- BusName= #задает имя шины D-Bus (используется с Type=dbus);
- NotifyAccess= #задает уровень прослушивания уведомлений (используется с Type=notify):
none #игнорировать все сообщения о состоянии;
main #прослушивать сообщения из основного процесса;
all #обрабатывать все сообщения контрольной группы службы.
- TimeoutSec= #задает время, в течение которого система будет ждать остановки службы, прежде чем пометить ее как неудачную или убитую принудительно;
- TimeoutStartSec= #дополнительные таймауты;
- TimeoutStopSec= #дополнительные таймауты;
- UMask= #077 #задает Umask для процесса и его потомков.
---------------------------------------------------------------------------------• [Install] #секция задает уровень выполнения сервиса:
- Alias= #дополнительные имена сервиса разделенные пробелами (большинство команд в systemctl за исключением systemctl enable, могут использовать альтернативные имена сервисов);
- RequiredBy= #данный сервис будет запущен при запуске перечисленных уровней сервисов (строгое соответствие);
- WantedBy= #данный сервис будет запущен при запуске перечисленных уровней сервисов (если WantedBy=multi-user.target, то будет создана символическая ссылка в
/etc/systemd/system/multi-user.target.wants/);
- Also= #определяет список юнитов, которые также будут активированы или дезактивированы вместе с данным сервисом при выполнении команд systemctl enable или systemctl disable;
- DefaultInstance= #для template units (более поздних), которые могут создавать экземпляры блоков с непредсказуемыми именами, это может использоваться как резервное значение
для имени, если соответствующее имя не предоставляется.
---------------------------------------------------------------------------------• [Soket] #секция определяет параметры сокета:
- ListenStream= #задает TCP-сокеты;
- ListenDatagram= #задает UDP-сокеты;
- ListenSequentialPacket= #задает Unix-сокеты;
- ListenFIFO= #задает пайпы (буферы FIFO);
- Accept= #будет ли запущен дополнительный экземпляр службы для каждого соединения (если установлено значение false (по умолчанию), то один экземпляр будет обрабатывать все
соединения);
- SocketUser= #задает владельца Unix-сокета (по умолчанию root);
- SocketGroup= #задает владельца группы Unix-сокета (если установлен только SocketUser, systemd попытается найти подходящую группу, а по умолчанию root);
- SocketMode= #устанавливает разрешения для созданного объекта (для Unix-сокетов или буферов FIFO);
- Service= #задать имя службы, если оно не совпадает с именем *.socket.
---------------------------------------------------------------------------------• [Mount] #секция определяет параметры монтируемых устройств:
- What= #абсолютный путь к монтируемому устройству;
- Where= #абсолютный путь к точке монтирования;
- Type= #тип ФС для монтирования;
- Options= #параметры монтирования (список разделенный запятыми);
- SloppyOptions= #логическое значение (0 или 1), которое определяет произойдет ли отказ в монтировании, если это непризнанное монтирование;
- DirectoryMode= #задает разрешения для директорий (если необходимо создать родительские каталоги для точки монтирования);
- TimeoutSec= #задает время ожидания монтирования, по истечении которого, операция будет отмечена как сбой.
---------------------------------------------------------------------------------• [Automount] #секция определяет параметры автомонтируемых устройств:
- Where= #абсолютный путь к точке монтирования, включающее монтируемый объект;
- DirectoryMode= #задает разрешения для директорий (если необходимо создать родительские каталоги для точки монтирования).
• пример применения:
- юнит *.automount запускает юнит *.mount для монтирования сетевого каталога через VPN:
/etc/systemd/system/media-nfs.mount:
[Unit]
Description=NFS share
[Mount]
What=server.url.example.com:/srv/nfs_share
Where=/media/nfs
Type=nfs4
Options=rw
DirectoryMode=0755
/etc/systemd/system/media-nfs.automount:
[Unit]
Description=NFS share
Requires=openvpn@vpn.service
Requires=network-online.target
[Automount]
Where=/media/nfs
TimeoutIdleSec=301
[Install]
WantedBy=graphical.target
- нормальное состояние для mount-юнита это: active (mounted);
- нормальное состояние для automount-юнита (до подключения) это: active (waiting);
- нормальное состояние для automount-юнита (после подключения) это: active (running) (как для сервиса);
- для автомонтрования сетевого ресурса необходимо сделать ls /media/nfs.
---------------------------------------------------------------------------------• [Swap] #секция определяет параметры раздела подкачки:
- What= #абсолютный путь к разделу подкачки (файл или устройство);
- Priority= #целое число, которое задает приоритет подкачки;
- Options= #параметры подключения раздела подкачки (как в fstab - список, разделенный запятыми);
- TimeoutSec= #время ожидания подключения раздела подкачки, по истечении которого, операция будет отмечена как сбой.
---------------------------------------------------------------------------------• [Path] #секция определяет параметры отслеживания файлов и директорий:
- PathExists= #директива проверки пути (если путь существует, активируется соответствующий блок);
- PathExistsGlob= #директива проверки пути с поддержкой глобальных выражений (если путь существует, активируется соответствующий блок);
- PathChanged= #директива изменения пути (связанный блок активируется, если обнаружено изменение, когда файл открыт);
- PathModified= #директива изменения пути (связанный блок активируется при записи файлов и когда файл закрыт);
- DirectoryNotEmpty= #директива заполнения каталога (активировать связанный блок, когда каталог больше не пустой);
- Unit= #запускаемый сервис при срабатывании условий выше (если ни чего не указано, systemd будет искать файл *.service, с тем же именем, что и этот блок);
- MakeDirectory= #директива определяет, будет ли systemd создавать структуру каталогов перед просмотром;
- DirectoryMode= #если вышеуказанная директива включена, то данная опция установит режим разрешения любых компонентов пути, которые должны быть созданы.
---------------------------------------------------------------------------------• [Timer] #секция определяет параметры заданий:
- OnActiveSec= #директива позволяет активировать соответствующий блок относительно активации модуля *.timer;
- OnBootSec= #директива задает время, когда будет активироваться соответствующее устройство после загрузки системы;
- OnStartupSec= #директива аналогична указанному выше таймеру, но задает когда будет активироваться systemd процесс после загрузки системы;
- OnUnitActiveSec= #устанавливает таймер в зависимости от того, когда последний активировался;
- OnUnitInactiveSec= #устанавливает таймер в зависимости от того, когда последний был неактивен;
- OnCalendar= #активирует соответствующий блок путем определения абсолютного времени и даты;
- AccuracySec= #задает уровень точности активации (по умолчанию одна минута);
- Unit= #запускаемый сервис при срабатывании таймера (если ни чего не указано, systemd будет искать файл *.service, с тем же именем, что и этот блок);
- Persistent= #директива определяет запуск триггер соответствующего блока;
- WakeSystem= #директива выводит систему из режима ожидания при срабатывании таймера.
---------------------------------------------------------------------------------?• [Slice] #секция определяет параметры ???:
- может содержать директивы из секций описанных выше.
---------------------------------------------------------------------------------# SYSTEMD [юниты] - ОСНОВНЫЕ СЕКЦИИ И ПАРАМЕТРЫ ЮНИТОВ #Примеры:
---------------------------------------------------------------------------------• [Service]:
- PIDFile=/path/to/service.pid #файл с PID;
- WorkingDirectory=/path/to/current #рабочая директория;
- User=myunit #от какого пользователя стартует процесс;
- Group=myunit #от какой группы стартует процесс;
- Environment=RACK_ENV=production #переменные окружения;
- OOMScoreAdjust=-100 #запрет на убийство сервиса вследствие нехватки памяти и срабатывания механизма OOM (-1000 полный запрет);
- команды запуска, остановки и перезагрузки сервиса:
ExecStart=/usr/local/bin/bundle exec service -C /path/to/service.rb --daemon
ExecStop=/usr/local/bin/bundle exec service -S /path/to/service.state stop
ExecReload=/usr/local/bin/bundle exec service -S /path/to/service.state restart
TimeoutSec=300 #таймаут на отработку старт-стоп-ребут-команд;
Restart=always #авторестарт при падении (контроль ведется по наличию процесса из PID файла).
---------------------------------------------------------------------------------# SYSTEMD [юниты] - ПАРАМЕТРЫ БЕЗОПАСНОСТИ ЮНИТОВ:
---------------------------------------------------------------------------------• Создание изолированного tmp:
- PrivateTmp=yes #даже если юнит не пишет в /tmp, лучше включить эту опцию.
---------------------------------------------------------------------------------• Изолирование юнитов от сети:
- PrivateNetwork=yes #реализует полную изоляцию от сети всех процессов юнита (процессы будут видеть лишь интерфейс обратной петли [lo], причем полностью изолированный от
loopback основной системы.
---------------------------------------------------------------------------------• Ограничение доступа служб к отдельным каталогам:
- ReadOnlyDirectories= #ограничить доступ юнита к указанным каталогам только чтением;
- InaccessibleDirectories= #запретить доступ вообще.
---------------------------------------------------------------------------------• Принудительное отключение полномочий (capabilities):
- CapabilityBoundingSet=CAP_CHOWN CAP_KILL #контролирует список полномочий, которые смогут получить процессы юнита (все кроме chown и kill запрещено);
- CapabilityBoundingSet=~CAP_SYS_PTRACE .. #символ ~ инвертирует работу опции, т.е. перечень привилегий рассматривается не как белый, а как черный список;
* capabilities(7) #ман.
---------------------------------------------------------------------------------• Запрет форка и ограничение на создание файлов:
- LimitNPROC=1 #запретить юниту форкаться (запускать доп. процессы);
- LimitFSIZE=1 #блокировать запись в файлы ненулевого размера;
* ПРЕДУПРЕЖДЕНИЯ:
ограничения действуют только для простого пользователя (не root) и без привилегии CAP_SYS_RESOURCE;
RLIMIT_FSIZE действует жестко, т.е. если процесс пытается записать файл ненулевого размера, он получает сигнал SIGXFSZ, который прекращает работу процесса, если не назначен
обработчик сигнала, кроме того, эта опция не запрещает создание файлов нулевого размера.
---------------------------------------------------------------------------------• Контроль доступа к файлам устройств:
- DeviceAllow=/dev/null rw #разрешает rw доступ только к /dev/null.
---------------------------------------------------------------------------------• Запуск юнита от имени определенного пользователя и группы:
- User= #задает пользователя;
- Group= #задает группу.
---------------------------------------------------------------------------------• Динамические пользователи:
- [Service]:
DynamicUser=yes #активация системы динамических пользователей (при каждом запуске юнита будет создаваться системный пользователь, а при остановке автоматически удаляться
[UID выбирается из диапазона 61184–65519]):
DynamicUser=yes также применяет директивы ProtectSystem=strict и ProtectHome=read-only (юнит теряет возможность что-либо писать практически во все каталоги системы, за
исключением специальных ФС /dev, /proc и /sys и временных каталогов /tmp и /var/tmp;
DynamicUser=yes автоматически применяет директиву PrivateTmp=yes (для юнита создаются собственные, изолированные от других служб экземпляры каталогов /tmp и /var/tmp,
жизненный цикл которых привязан к жизненному циклу юнита, т.е. при остановке службы удаляется не только ее пользователь, но и ее временные каталоги);
установка DynamicUser=yes автоматически применяет директиву RemoveIPC=yes (обеспечивает автоматическое удаление объектов межпроцессного взаимодействия IPC: SysV и POSIX,
это общая память, очереди сообщений, семафоры, принадлежащих службе, при ее остановке);
процесс выделения и удаления динамических пользователей никак не затрагивает /etc/passwd (добавление пользователя в базу данных оусществляется при помощи NSS-модуля glibc
nss-systemd, и эта информация никогда не попадает на диск);
systemd всегда выделяет вместе с пользователем еще и группу, с тем же самым значением идентификатора (UID = GID).
---------------------------------------------------------------------------------• Дополнительные возможности:
- если необходимо взаимодействие юнита с другими программами, то можно использовать параметр RuntimeDirectory= (подкаталог с указанным в этом параметре именем создается в
каталоге /run при запуске службы, принадлежит ее пользователю, и автоматически удаляется при ее остановке, при этом он открыт для доступа других программ, так что служба может
размещать в нем различные интерфейсные объекты (например, UNIX-сокеты), жизненный цикл которых также будет привязан к жизненному циклу службы);
- если необходимо обеспечить долговременное хранение данных для юнита, то можно использовать опции: StateDirectory=, LogsDirectory= и CacheDirectory= (они создают подкаталоги в
/var/lib, /var/log и /var/cache соответственно, и эти подкаталоги не удаляются при остановке службы);
- если в сочетании с DynamicUser=on используется параметр User=, но пользователь с указанным именем уже существует, то для службы будет использован именно он, а механизм
динамического выделения пользователя для этой службы автоматически отключится, т.о. пока этот пользователь существует в системной базе, система будет использовать его, и лишь при
отутствии такого пользователя он будет создаваться в динамическом режиме.
---------------------------------------------------------------------------------# SYSTEMD [юниты] - СОКЕТЫ:
---------------------------------------------------------------------------------• Защита от уязвимостей AF_PACKET:
- [Service]:
RestrictAddressFamilies=~AF_PACKET #разрешены все семейства кроме AF_PACKET;
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX #разрешены заданные семейства (IPv4, IPv6, UNIX).
---------------------------------------------------------------------------------• Пространства имен:
- RestrictNamespaces=yes #полностью отключает доступ к пространствам имен;
- RestrictNamespaces=net ipc #список разрешенных пространств имен для сети и IPC;
* механизм пространства имен пользователей (user namespace) является источником опасных уязвимостей, по этому будет правильным заблокировать использование пространств имен для
тех служб, которым они не требуются (а таких служб большинство).
----------------------------------------------------------------------------------
• Пример использования:
- каждое входящее соединение обслуживается экземпляром процесса, работающим в песочнице динамически выделенного UID:
пример конфигурации сокета waldo.socket:
[Socket]
ListenStream=2048
Accept=yes
пример конфигурации соответствующего ему шаблона службы waldo@.service:
[Service]
ExecStart=-/usr/bin/myservicebinary
DynamicUser=yes
systemd будет слушать tcp:2048, и на каждое входящее соединение создавать новый экземпляр waldo@.service, каждый раз с новым идентификатором пользователя, обеспечивающим
его изоляцию от остальных экземпляров.
---------------------------------------------------------------------------------# SYSTEMD [юниты] - БЕЗОПАСНОСТЬ [подборка правил для различных юнитов]:
---------------------------------------------------------------------------------• Настройки для групп юнитов:
systemctl set-property system.slice IPAddressDeny=any IPAddressAllow=localhost IPAccounting=true
systemctl set-property user.slice IPAddressDeny=any IPAddressAllow=localhost IPAccounting=true
systemctl set-property user-1000.slice IPAddressDeny=any IPAddressAllow=localhost IPAccounting=true
• Обыкновенные юниты:
PrivateTmp=yes
IPAddressDeny=any
InaccessibleDirectories=/home
• Сетевые юниты:
PrivateTmp=yes
InaccessibleDirectories=/home
IPAddressAllow=any
• Sockets:
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
---------------------------------------------------------------------------------# SYSTEMD [юниты] - ТАЙМЕРЫ [юниты для запуска заданий по расписанию]:
---------------------------------------------------------------------------------• Общая информация:
- /usr/lib/systemd/system/ #директория где расположены юниты;
- /var/lib/systemd/timers или ~/.local/share/systemd/ #директории с файлами stamp-* для корректировки работы таймеров;
- *.timer #название юнитов;
- [Timer] #секция определяет, как и когда таймер запускается.
---------------------------------------------------------------------------------• Типы таймеров:
- таймеры реального времени (также известные как настенные часы) #запускаются в зависимости от событий календаря (как cronjobs), для определения таких таймеров используется
опция:
OnCalendar=
- монотонные таймеры #активируются после определенного промежутка времени по отношению к той или иной отправной точке (они не сработают, если компьютер находится в режиме
ожидания или выключен), для определения таких таймеров используютс опции:
OnTypeSec=
OnBootSec=
OnActiveSec=
---------------------------------------------------------------------------------• Особенности:
- для каждого файла *.timer должен быть соответствующий файл *.service (*.timer запускается и контролирует .service);
- файл *.service не требует раздела [Install] так как он присутствует в юните timer, который уже включен;
- при необходимости можно контролировать юниты с разными именами используя опцию Unit= секции [Timer] файла *.timer;
- если таймер рассинхронизировался, то необходимо удалить файлы stamp-* в /var/lib/systemd/timers или ~/.local/share/systemd/;
- если для нескольких таймеров заданы одинаковые параметры запуска, типа: daily и weekly, то, во избежание одновременного запуска всех служб и подвисания ОС, стоит использовать
параметр RandomizedDelaySec в разделе [Timer].
---------------------------------------------------------------------------------• Команды просмотра информации о таймерах:
systemctl list-timers #вывод запущенных таймеров;
systemctl list-timers --all #вывод всех существующих таймеров;
---------------------------------------------------------------------------------• Тестирование задаваемых дат и времени:
systemd-analyze calendar weekly #пример тестирования времени задания;
systemd-analyze calendar "Mon,Tue *-*-01..04 12:00:00" #пример тестирования времени задания.
----------------------------------------------------------------------------------
• Создание временных заданий:
systemd-run --on-active=30 /bin/touch /tmp/test #создать файл test через 30 секунд;
systemd-run --on-active="12h 30m" --unit test.service #запустить юнит test.service через 12 часо 30 минут.
---------------------------------------------------------------------------------• Пример использования таймеров реального времени:
- /etc/systemd/system/test.timer:
[Unit]
Description=Run test weekly
[Timer]
OnCalendar=weekly
Persistent=true #если отсутствует последнее время запуска, то служба будет запущена немедленно;
[Install]
WantedBy=timers.target
* таймер будет запускаться один раз в неделю (в 12:00 в понедельник).
---------------------------------------------------------------------------------• Пример использования монотонных таймеров:
- /etc/systemd/system/test.timer
[Unit]
Description=Run test weekly and on boot
[Timer]
OnBootSec=15min
OnUnitActiveSec=1w
[Install]
WantedBy=timers.target
* таймер запустится через 15 минут после загрузки, затем снова будет запускаться каждую неделю во время работы системы.
---------------------------------------------------------------------------------• Примеры задания дат:
OnCalendar=Mon,Tue *-*-01..04 12:00:00 #служба запускается в первые четыре дня каждого месяца в полдень, но только если день является понедельником или вторником;
OnCalendar=Sat *-*-1..7 18:00:00 #служба запускается в первую субботу каждого месяца;
OnCalendar=*-*-* 4:00:00 #служба запускаться каждый день в 4 утра;
* DayOfWeek YYYY-MM-DD HH:MM:SS #формат задания точной даты и времени;
* звездочка может быть использована для указания всех значений;
* запятые могут быть использованы для перечисления возможных значений;
* две точки могут быть использованы для выделения конкретного промежутка.
---------------------------------------------------------------------------------# SYSTEMD [юниты] - ОБРАБОТКА ЗАВИСИМОСТЕЙ ЮНИТОВ:
---------------------------------------------------------------------------------• Н-р: юнитA требует, чтобы юнитB был запущен строго перед ним самим:
Requires=юнитB #прописывается в секцию unit файла юнитA;
After=юнитB #прописывается в секцию unit файла юнитA.
• Н-р: юнитA требует, чтобы юнитB был запущен перед ним или одновременно:
Wants=юнитB #прописывается в секцию unit файла юнитA;
After=юнитB #прописывается в секцию unit файла юнитA.
• Если After= не определено, два юнита будут запущены параллельно друг другу.
---------------------------------------------------------------------------------# SYSTEMD [юниты] - ПЕРЕОПРЕДЕЛЕНИЕ ЮНИТОВ:
---------------------------------------------------------------------------------• В случае переопределения файла, директивы могут быть сброшены путем назначения пустой строкой после знака равенства.
• Добавить дополнительную зависимость к юниту:
vi /etc/systemd/system/unit.d/customdependency.conf #создать файл:
[Unit]
Requires=new dependency
After=new dependency
• Заменить направление для юнита:
vi /etc/systemd/system/unit.d/customexec.conf #создать файл:
[Service]
ExecStart= #ExecStart должна быть очищена, перед новым назначением;
ExecStart=новая комманда
• Автоматически перезапустить службу:
vi /etc/systemd/system/unit.d/restart.conf #создать файл:
[Service]
Restart=always
RestartSec=30
----------------------------------------------------------------------------------
# SYSTEMD [юниты] - РАЗЛИЧНАЯ ИНФОРМАЦИЯ ПО СОЗДАВАЕМЫМ ЮНИТАМ:
---------------------------------------------------------------------------------• /etc/systemd/system/ #директория для создания новых служб;
• 664 root:root #задаваемые права для юнитов.
---------------------------------------------------------------------------------# SYSTEMD [юниты] - СПРАВОЧНАЯ ИНФОРМАЦИЯ:
---------------------------------------------------------------------------------• man systemd.unit #RTFM по секции Unit;
• man systemd.service #RTFM по секции Service;
• man systemd.unit #RTFM по секции Install;
• man systemd.socket #RTFM по секции Socket;
• man systemd.mount #RTFM по секции Mount;
• man systemd.automount #RTFM по секции Automount;
• man systemd.path #RTFM по секции Path;
• man systemd.swap #RTFM по секции Swap;
• man systemd.slice #RTFM по секции Slice;
• man systemd.timer #RTFM по секции Timer.
==================================================================================
==================================================================================
>>>>>>> ПРИЛОЖЕНИЕ VIII - BASH: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
==================================================================================
# BASH - АНАЛОГИ КОМАНДНОГО ИНТЕРПРЕТАТОРА СТРОКИ BASH:
---------------------------------------------------------------------------------• sh #Bourne shell - оболочка Борна (стандарт для многих UNIX-подобных систем);
• bash #Bourne Again shell - рожденная вновь оболочка Борна;
• csh #С shell - синтаксис ее командного языка похож на синтаксис языка С;
• tcsh #tiny С shell - минимальная оболочка Си;
• pdksh #public domain Korn shell - общедоступная оболочка Корна;
• sash #stand-alone shell - автономная оболочка (может быть использована, когда программные библиотеки недоступны).
==================================================================================
# BASH - ШЕБАНГ:
---------------------------------------------------------------------------------• #! = шебанг;
• #!/bin/bash = #!/программа/обработчик #начало любого скрипта (для sh не обязательно);
• #!/usr/bin/env bash = #!/переменные/среды/пользователя программа_обработчик #начало любого скрипта (для sh не обязательно).
==================================================================================
# BASH - ПЕРЕМЕННЫЕ:
---------------------------------------------------------------------------------• Переменные оболочки #команды set или env;
• Позиционные параметры #их имена представляют собой натуральное число, а значениями служат аргументы с соответствующими номерами, начиная с 1, переданные сценарию или самой
оболочке при их запуске;
• Специальные параметры #их именами служат перечисленные специальные символы, подстановку которых производит оболочка (все спецсимволы необходимо экранировать: \$0 = $0, '$0' =
$0, "$0" = -bash):
- $0 #имя выполняемого сценария (или, в интерактивном режиме, — самой оболочки);
- $# #количество позиционных параметров, переданных сценарию;
- $_ #последний аргумент предыдущей из выполнявшихся команд;
- $? #код завершения последней выполненной команды (значение 0 говорит об успешном завершении, другое — об ошибочном);
- $$ #номер текущего процесса (PID);
- $! #номер (PID) последнего асинхронного процесса (команды, выполненной в фоновом режиме);
- $* #все позиционные параметры, слитые в одну строку: «$*» эквивалентно «$1х$2х...$n», где х — первый символ значения переменной IFS (internal field separator), по умолчанию —
пробел;
- $@ #все позиционные параметры, подлежащие дальнейшему разбору: «$@» эквивалентно «$1» «$2» ...»$n».
---------------------------------------------------------------------------------• Создание и удаление переменных в bash:
test=123 #задание переменной test;
echo $test #вывод переменной test;
export test=123 #экспорт переменной в среду командного интерпретатора;
unset test #удаление переменной из среды командной оболочки.
• {} #используются для создания функций:
function myfun {
> echo -n "Согласиться? (y/n): " #ключ -n не переводит строку;
> read yesno
> echo $yesno
> }
myfun #запуск функции;
unset myfun #удаление функции из среды командного интерпретатора.
==================================================================================
# BASH - ПОДСТАНОВКИ:
---------------------------------------------------------------------------------• ~ подстановка тильды:
~ #заменяется на имя домашнего каталога пользователя, запустившего сценарий;
~+ #заменяется на путь к текущему каталогу;
~- #заменяется на путь к предыдущему каталогу.
---------------------------------------------------------------------------------• {} раскрытие скобок:
строка1{строка2,строка 3}строкаN заменяется на:
строка1строка2строкаN строка1строкаЗстрокаN
cat /home/x/book/{intro,glava6,epilog} > newbook #объединение нескольких файлов в один.
---------------------------------------------------------------------------------• Подстановка арифметических выражений:
$( (выражение) ) или $ [выражение] #эквивалентные формы записи, подстановки параметров выполняются внутри выражения:
echo $[4/2] #выводит результат "2", округляя до целых;
echo $(( $SECONDS/3600 )) #выводит результат "время с момента запуска терминала/3600", округляя до целых.
==================================================================================
# BASH - МАССИВЫ:
---------------------------------------------------------------------------------• bash поддерживает одномерные массивы с неограниченным числом элементов;
• Нумерация элементов начинается с нуля;
• Тип элементов массива, как и тип параметров, строковый;
• Присвоить значение элементу массива можно с помощью такой конструкции:
имя_массива[индекс]=значение
weekday[0]=Вс #задание первого значения массива;
weekday[1]=Пн #задание второго значения массива;
...
weekday[6]=Сб #задание последнего значения массива;
weekday=(Вс Пн Вт Ср Чт Пт Сб) #задание сразу всех элементов массива;
echo ${weekday[4]} #выводит значение "Чт";
echo ${weekday[*]} #вывод сразу всех элементов массива (Вс Пн Вт Ср Чт Пт Сб);
holidays=([0]=Вс [6]=Сб) #еще одна форма задания массива.
==================================================================================
# BASH - УСЛОВНЫЕ ОПЕРАТОРЫ:
---------------------------------------------------------------------------------• Оператор case:
- ищется шаблон[1,2,3], совпадающий со значением, и, если он найден, то выполняется соответствующий ему список[1,2] команд, завершенный символами «;;»;
- шаблон и список разделяются символом «)»;
- одному списку команд может соответствовать несколько шаблонов, тогда они разделяются символом «|»;
- в шаблонах могут использоваться метасимволы *, ? и [ ];
- порядок сравнения шаблонов со значением не определен, первое совпадение прекращает дальнейшее сравнение и приводит к выполнению соответствующего списка команд и выходу из
структуры case.
- синтаксис:
case
[шаблон1) список1;;
шаблон2|шаблон3) список2;;]
esac
- пример использования:
echo "Ошибка. Кому переслать протокол?"
echo "Начальнику: Ь"
echo "Коллегам: с"
echo "Сам разберусь: any key"
read answer
case $answer in
b|B) mail -s "error log" boss < error.log;;
с I С) mail -s 'Help!!! error log' -c ivan den < error.log;;
*) echo "OK. Exiting"; exit;;
esac
---------------------------------------------------------------------------------• Оператор if:
- сначала выполняются команды из списка1, и, если этот список выполнен успешно (с кодом завершения 0), то выполняется список2, если нет - выполняется список, стоящий после
очередного elif;
- при невозможности выполнить список команд, стоящий после очередного then, выполняется список, стоящий после else;
- синтаксис:
if список1 then #если код завершения 0, то выполнить "список2";
список2
elif списокЗ then #выполнить, если код завершения "список1" не 0;
список4 #выполнить, если код завершения "список3" 0.
elif список5 then #выполнить, если код завершения "список1" и "список3" не 0;
список6 #выполнить, если код завершения "список5" 0.
else список7 #выполнить, если код завершения "список1", "список3" и "список5" не 0;
fi
- пример использования:
if [ $? -ne 0 ] then
echo "Ошибка. Смотри протокол"
fi
---------------------------------------------------------------------------------• Оператор test:
- синтаксис:
test -e <файл> #проверяет наличие файла;
[ -e <файл> ] #проверяет наличие файла (в данном случае "[" это команда test, а "]" ее завершение, и отделяющие оператора пробелы обязательны).
- пример использования:
test $USER; echo $? #проверяет есть-ли какое-либо значение в переменной USER и выводит истинность или ложность проверки;
[ $USER ] ; echo $? #проверяет есть-ли какое-либо значение в переменной USER и выводит истинность или ложность проверки;
[ "$USER" = "string" ] ; echo $? #переменные лучше заключать в кавычки, на случай, если присутствуют пробелы.
---------------------------------------------------------------------------------• Условные выражения для файлов:
файл1 -nt файл2 #время модификации файла1 позже (newer than), чем файла2;
файл1 -ot файл2 #время модификации файла1 раньше (older than), чем файла2;
файл1 -ef файл2 #файл1 — это жесткая ссылка на файл2.
-d файл #файл существует и является каталогом;
-е файл #файл существует;
-f файл #файл существует и является обычным файлом;
-L файл #файл существует и является символической ссылкой;
-г файл #файл существует и доступен для чтения;
-w файл #файл существует и доступен для записи;
-х файл #файл существует и является исполняемым;
-s файл #файл существует и его размер больше 0;
-N файл #файл существует и изменился со времени последнего чтения.
---------------------------------------------------------------------------------• Условные выражения для сравнения строк:
z строка #длина строки равна 0;
n строка #длина строки не равна 0;
стр1 == стр2 #строки совпадают;
стр1 !== стр2 #строки не совпадают;
стр1 < стр2 #строка1 предшествует строке2 в лексикографическом порядке (алфавит соответствует текущей локали);
стр1 > стр2 #строка1 следует за строкой2 в лексикографическом порядке (алфавит соответствует текущей локали).
---------------------------------------------------------------------------------• Комбинирование условных выражений с помощью логических операций:
! (выражение) #отрицание;
выражение1 -а выражение2 #логическое И (and);
выражение1 -о выражение2 #логическое ИЛИ (or).
---------------------------------------------------------------------------------• Арифметические условные выражения:
- синтаксис:
arg1 OP arg2 #где arg1 и arg2 - челые числа, а OP - одна из операций:
-eq #равно;
-nе #не равно;
-lt #меньше;
-lе #меньше или равно;
-gt #больше;
-ge #больше или равно.
---------------------------------------------------------------------------------• Пример использования оператора test и условных выражений:
echo
echo
echo
echo
read
"Ошибка. Кому переслать протокол?"
"Начальнику: Ь"
"Коллегам: с"
"Сам разберусь: any key"
answer
if [ "$answer" == "b" -o "$answer" == "B" ];
then mail -s "error log" boss < error.log;
elif [ "$answer" == "c" -o "$answer" == " C" ];
then mail -s 'Help!!! error log' -c ivan den < error.log;
else echo "OK. Exiting"; exit;
fi
==================================================================================
# BASH - ОПЕРАТОРЫ ЦИКЛА:
---------------------------------------------------------------------------------• Оператор цикла for:
for переменная [in шаблон]
do список
done
- пример использования оператора for:
for day in Mon Tue Wed Thu Fri;
do echo "План работы на $day:" ;
cat $day.plan;
done
- пример второй использования оператора for:
for i in `seq 10 -1 0`
do
echo $i done
---------------------------------------------------------------------------------• Оператор цикла while:
while список1
do список2
done
- пример использования оператора while:
i=10
while [ $i -gt 0 ]
do echo $i
i=$(($i-1))
done
---------------------------------------------------------------------------------• Оператор цикла until:
until список1
do список2
done
- пример использования цикла until:
i=10
until [ $i -eq 0 ]
do echo $i
i =$(($i-1))
done
---------------------------------------------------------------------------------• Оператор цикла select:
select переменная [in шаблон]
do список
done
- пример использования переменной цикла select:
echo "Выберите файл для просмотра:"
select file in ~/* Quit;
do if [ -f $file ]; then cat $file;
else break;
fi
done
==================================================================================
# BASH - УСЛОВНАЯ ПОДСТАНОВКА ПАРАМЕТРОВ:
----------------------------------------------------------------------------------
• ${параметр:-строка} #значение по умолчанию (если параметр имеет непустое значение, то подставляется оно, иначе - указанная строка);
• ${параметр:=строка} #присваивание значения по умолчанию (если параметр не имеет непустого значения, то ему присваивается «строка», после чего значение подставляется,
конструкция допустима только для переменных оболочки);
• ${параметр:?сообщение} #ошибка, если пусто (если параметр не имеет непустого значения, то выводится указанное сообщение, сообщение можно опустить, тогда будет выведено
стандартное сообщение);
• ${параметр:+строка} #дополнительное значение (если параметр имеет непустое значение, подставляется «строка», иначе - пустая строка);
• ${параметр#шаблон} #подставляется значение параметра, в котором из головной части удален наименьший фрагмент, удовлетворяющий шаблону;
• ${параметр##шаблон) #подставляется значение параметра, в котором из головной части удален наибольший фрагмент, удовлетворяющий шаблону;
• ${параметр%шаблон} #подставляется значение параметра, в котором из хвостовой части удален наименьший фрагмент, удовлетворяющий шаблону;
• ${параметр%%шаблон} #подставляется значение параметра, в котором из хвостовой части удален наибольший фрагмент, удовлетворяющий шаблону;
• ${#параметр} #если параметр есть * или @, подставляется количество позиционных параметров, иначе - длина значения параметра в байтах.
==================================================================================
# BASH - ФУНКЦИИ:
---------------------------------------------------------------------------------• Синтаксис:
[function] имя()
{
список
}
• Определять функцию можно в любом месте сценария, но вызов ее должен осуществляться строго после описания;
• Вызывается функция подобно любой команде - по имени;
• Переданные аргументы в теле функции рассматриваются как позиционные параметры, причем в вызывающем сценарии значения позиционных параметров не меняются, значение позиционного
параметра 0 - это имя функции;
• Вызов функции не порождает нового процесса, поэтому ей видны локальные переменные, установленные вызывающим сценарием или оболочкой до ее вызова; • ошибка при выполнении
функции приводит к немедленному ее завершению с ненулевым кодом возврата:
- если вы хотите передать в коде возврата собственное значение, пользуйтесь оператором return <число>;
- отсутствие числа или всего оператора return означает возврат нулевого значения;
- код возврата функции помещается в переменную $? и доступен до выполнения следующей команды.
• Если вы задумали функцию как «библиотечную» (вызываемую из разных сценариев и в связи с этим определенную в отдельном файле), то для того, чтобы определить ее в текущем
процессе, нужно не запускать ее файл на выполнение, а прочитать его встроенной командой source.
==================================================================================
# BASH - ОБРАБОТКА СИГНАЛОВ И ПРОТОКОЛИРОВАНИЕ:
---------------------------------------------------------------------------------• синтаксис:
trap [-lp] [команда сигнал сигнал...] #перехватывает сигнал.
• опиции:
-l #выводит список имен и номеров сигналов, известных в Linux;
-p #выводит список команд, связанных с каждым сигналом (сигналы указываются по номерам или именам, приставку SIG можно опускать);
[команда] #команда, которая будет выполнена оболочкой при получении сигнала (ваш собственный обработчик):
- если вместо команды указать пустую строку, то перечисленные сигналы будут проигнорированы;
- если вместо сигналов указать EXIT или 0 (фиктивный номер), то команда будет выполнена при завершении сеанса работы с оболочкой.
---------------------------------------------------------------------------------• Наиболее всего перехватываемые сигналы:
- 01 SIGHUP #hangup, освобождение линии связи;
- 02 SIGINT #interrupt, прерывание;
- 03 SIGQUIT #quit, выход;
- 15 SIGTERM #terminate, программный сигнал завершения.
- для игнорирования этих сигналов, необходимо ввести команду:
trap " " 1 2 3 15
---------------------------------------------------------------------------------• Протоколирование работы сценария:
- способ первый - использование фильтр-команды tee:
LOGFILE=my_log
if [ "$LOGGING" = = "true" ];
then my_script | tee $LOGFILE;
else my_script;
fi
если не вводить эти команды из командной строки, а включить их в сценарий my_script, то вызов сценария изнутри него самого должен выглядеть так:
exec $0
встроенная команда exec заменяет текущий процесс (то есть ту дочернюю оболочку, в которой запущен сценарий) на выполняемую команду, и сценарий, завершившись, возвращает
управление прямо родительской оболочке;
интерактивную оболочку (ту, с которой вы начинаете сессию) подменить таким образом нельзя;
если команде exec не указан аргумент, но указано перенаправление вводавывода, то exec совершает это перенаправление, продолжая выполнение текущего сценария, таким способом
можно получить динамическое перенаправление:
tty /dev/pts/2
echo "Вывожу строку на терминал"
Вывожу строку на терминал
exec > log
echo "Вывожу строку в файл"
echo "И эту в файл"
exec > /dev/pts/2
echo "А эту снова на терминал "
А эту снова на терминал
- способ второй - использование команды script:
LOGFILE=my_log
if [ "$LOGGING" == " true" ];
then script my_script $LOGFILE;
else my_script;
fi
script, это команда, которая копирует в файл весь сеанс работы в текстовой консоли: и ввод пользователя и вывод команд (включая полноэкранные команды, такие, как vi и man,
оставляют в файле протокола мусор);
если команда script запускается вручную, то остановить протоколирование можно командой exit;
вызов сценария изнутри него самого:
exec script $0 $LOGFILE
==================================================================================
# BASH - КОМПИЛЯТОР GCC:
---------------------------------------------------------------------------------• Установка:
gcc #сам компилятор gcc;
gcc-c+H #поддержка C++;
gcc-doc #документация по gcc;
compat-gcc #пакет, содержащий средства gcc для обратной совместимости (пакет нужен, если писать программы для более старых систем, чем текущая);
compat-gcc-c++ #то же, что и compat-gcc, только с поддержкой C++;
compat-cpp #препроцессор срр для обратной совместимости;
binutils #набор вспомогательных утилит, о которых мы поговорим в последнем пункте этой главы;
glibc-devel #содержит библиотеки для разработки С-программ;
libbfd #библиотека дескриптора двоичного файла (Binary File Descriptor library);
libstdc++-devel #заголовочные файлы и библиотеки для программирования на C++;
make #утилита, упрощающая процесс сборки больших проектов.
• опции программы make:
-С каталог #перейти в указанный каталог перед началом работы;
-d #вывод отладочной информации;
-е #приоритет переменным окружения (если установлена переменная окружения СС и в Makefile есть переменная с таким же именем, то будет использована переменная окружения);
-f файл #использовать указанный файл вместо Makefile;
-i #игнорировать ошибки компилятора;
-I каталог #в указанном каталоге будет производиться поиск файлов, включаемых в Makefile;
-j n #запускать не более n команд одновременно;
-к #продолжить работу после ошибки, если это возможно;
-n #вывести команды, которые должны были выполниться, но не выполнять их;
-о файл #пропустить данный файл, даже если в Makefile указано, что он должен быть создан заново;
-г #не использовать встроенные правила;
-S #не выводить команды перед их выполнением;
-W #ывод текущего каталога до и после выполнения команды.
• Утилиты для работы с бинарными файлами пакета binutils:
Id #компоновщик: программа, связывающая объектные файлы и библиотеки в исполняемый файл;
аг #работа с архивами (создания, модификация и извлечение);
nm #вывод названий идентификаторов из двоичных файлов;
objcopy #копирование и трансляция двоичных файлов;
objdump #вывод информации из двоичных файлов;
ranlib #генерирование индекса оглавления архива;
size #вывод размеров секций архива или двоичного файла;
strings #вывод строк, которые возможно прочитать, из двоичных файлов;
addr21ine #конвертирование адресов в памяти в строку в файле;
nlmconv #конвертирует объектный код в NLM.
• Трассировка системных вызовов (strace):
-с #подсчитывать время, затраченное на каждый вызов и обработку ошибок (в конце трассировки будет представлен подробный отчет);
-d #выводить отладочные сообщения самой программы strace на стандартный вывод ошибки;
-f #трассировать дочерние процессы, созданные уже трассируемыми процессами;
-ff #данная опция применятся только вместе с опцией -о имя_файла (каждый трассируемый процесс будет записан в файл имя_файла.p1Ь);
-F #следовать вызовам vfork() (данную опцию нельзя использовать вместе с опцией -f;
-i #выводить указатель инструкции во время системного вызова;
-q #«Тихий режим» (подавляет вывод некоторых сообщений);
-r #выводить относительную метку времени для каждого вызова;
-t #перед каждой строкой выводить текущее время;
-tt #то же, что и -t, но будут выводиться также микросекунды;
-T #показывать время, потраченное на системный вызов, то есть разницу между временем запуска и временем завершения вызова (для каждого вызова);
-V #получение дополнительной информации;
-V #вывести номер версии strace;
-X #выводить не-ASCII строки в шестнадцатеричном формате;
-XX #выводить все строки в шестнадцатеричном формате;
-а столбец #выровнять возвращаемые вызовами значения в указанном столбце (по умолчанию 40);
-e выражение #позволяет задать отслеживаемые события;
-e trace=нaбор #определить набор отслеживаемых вызовов (например, trace=open,close,read.write);
-е trace=file #будут отслеживаться только вызовы для работы с файлами (open,stat.chmod,unlink и т.д.);
-е trace=process #отслеживаются вызовы для работы с процессами (fork, exec, wait и др.);
-е trace=network #отслеживаются сетевые вызовы;
-е trace=signal #отслеживаются вызовы для работы с сигналами;
-е trace=ipc #отслеживаются 1РС-вызовы;
-е abbrev=набop #сокращает вывод каждого члена структуры (например, abbrev=all или abbrev=none;
-е verbose=набop #различать структуры различных системных вызовов (по умолчанию verbose=all);
-е raw=set #выводит не декодированные значения аргументов системных вызовов (данный аргумент полезен, если вы не доверяете декодированию или хотите знать точное числовое
представление аргумента);
-е signal=набop #определяет набор трассируемых сигналов (по умолчанию signal=all, вы можете использовать восклицательный знак для отрицания, например, signal=!SIGIO
означает, что сигнал SIGIO не будет трассирован);
-е геас1=набор #выполнять полный шестнадцатеричный и ASCII-дамп всех прочитанных вызовом read() данных (например, чтобы видеть все данные, поступающие через дескрипторы 2
и 7, введите read=2,7);
-е write=нaбop #то же, что и -е read, но только для записи;
-о имя_файла #перенаправить вывод программы в указанный файл (данный файл будет полезен для дальнейшего анализа трассировки);
-р pid #присоединиться к процессу с PID=pid и начать трассировку;
-s размер #установить максимальный размер строки (по умолчанию 32), имена файлов не рассматриваются как строки, поэтому всегда будут напечатаны полностью;
-S критерий #сортирует вывод гистограммы, которая выводится опцией -с, по заданному критерию: time (время), calls (вызовы), name (имя) и nothing (без сортировки);
-u имя_пользователя #запустить программу от имени указанного пользователя (эта опция будет полезной, если вы, зарегистрировавшись как root, будете проверять корректность
работы программы, если бы она была запущена под другим пользователем).
==================================================================================
# BASH - РАЗЛИЧНЫЕ ПРИЕМЫ ОБРАБОТКИ ИНФОРМАЦИИ:
---------------------------------------------------------------------------------• Пауза:
read -p "Press any key to continue " -n 1 #задержка до нажатия любой клавиши;
read -p "Press any key to continue (timeout 60 seconds)" -t 60 n 1 #задержка 60 секунд или меньше, при условии нажатия любой клавиши.
==================================================================================
==================================================================================
>>>>>>> ПРИЛОЖЕНИЕ IX - ЛВС: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
==================================================================================
# ЛВС - ОБЩИЕ ПОНЯТИЯ:
---------------------------------------------------------------------------------# Организации курирующие работу ЛВС:
• IEEE (Institute of Electrical and Electronics Engineers) #организация по разработке стандартов в сферах радиоэлектроники и электротехники;
• IANA (Internet Assigned Numbers Authority) #администрация адресного пространства Internet, которая занимается раздачей сетевых адресов IPv4/IPv6 и доменных имен (DNS);
• ISO #международная организация по стандартизации (эталонная модель взаимодействия открытых систем);
• IAB #совет по архитектуре Интернета (протоколы Internet);
• W3C (World Wide Web Consortium) #стандарты web:
- https://w3.org/standarts #документация.
• IRTF (Internet Research Task Force) #группа исследований Internet;
• IETF (Internet Engineering Task Force) #группа проектирования Internet (выпуск RFC).
---------------------------------------------------------------------------------# RFC - Request for Comments #документы, в которых описывается устройство сети Интернет (ЛВС).
• Виды документов RFC:
- Required (требуется) #данный стандарт должен быть реализован на всех основных узлах TCP/IP;
- Recommended (рекомендуется) #обычно такие спецификации RFC также реализуются;
- Elective (выборочно) #реализация не обязательна;
- Limited use (ограниченное использование) #не рекомендуется для всеобщего применения;
- Not recommended (не рекомендуется) #не рекомендуются.
• Примеры документов RFC:
- RFC 793 #протокол TCP;
- RFC 791 #протокол IP;
- RFC 826 #протокол ARP;
- RFC 792 #протокол ICMP;
- RFC 2131 #протокол DHCP.
• Документы RFC:
- https://tools.ietf.org/rfc/index
---------------------------------------------------------------------------------# Терминология:
• Internet (с большой буквы) #глобальная (всемирная) сеть;
• internet (с маленькой буквы) #нескольких подключённых друг к другу сетей.
---------------------------------------------------------------------------------# Ранжирование ЛВС:
• Персональная сеть [1 м] #на одном квадратном метре;
• Локальная сеть [10 м] #комната;
• Локальная сеть [100 м] #здание;
• Локальная сеть [1 км] #кампус;
• Муниципальная сеть [10 км] #город;
• Глобальная сеть [100 км] #страна;
• Глобальная сеть [1000 км] #континент;
• Интернет [10000 км] #планета.
---------------------------------------------------------------------------------# Эталонная модель OSI|TCP/IP:
-----------------------------------------------------------------------------------------------------------------------------------| LEVEL |
ISO OSI
|
ISO OSI
|
|
TCP/IP
| ПРОТОКОЛ |
ОПИСАНИЕ
|
|
|
(ru)
|
(en)
|
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------| L7
| Прикладной уровень
| Application | APDU | Уровень приложения
| HTTP
| Пользовательские протоколы
|
| L6
| Уровень представления
| Presentatoin | PPDU |
| HTTPS
| Синтаксис и семантика
|
| L5
| Сеансовый уровень
| Session
| SPDU |
| MSMTP
| Сеансы связи|диалоги|синхронизация
|
-----------------------------------------------------------------------------------------------------------------------------------| L4
| Транспортынй уровень
| Transport
| TPDU | Транспортынй уровень |TCP|UDP|GRE| Контроль целостности данных
|
-----------------------------------------------------------------------------------------------------------------------------------| L3
| Сетевой уровень
| Network
| Пакет | Сетевой уровень
| IP
| Управление маршрутами
|
-----------------------------------------------------------------------------------------------------------------------------------| L2
| Уровень передачи данных | Data Link
| Кадр | Уровень канала
| ARP
| Формирование и обработка кадров данных |
| L1
| Физический уровень
| Physical
| Бит
|
| Ethernet | Передача (свет|радио|эл-во) информации |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------# Модель протоколов стека TCP/IP:
• Уровень приложений (Application Layer) #обработка данных по различным протоколам:
- протоколы: HTTP, HTTPS, FTP, SFTP, POP, POP3, SMTP, IMAP, ...
• Транспортный уровень (Transport Layer) #обработка сегментов и дейтаграмм информации:
- дейтаграмма (datagram) #протокол UDP;
- сегмент (segment) #протокол TCP.
• Уровень Интернет (Internet Layer) #обработка пакетов информации:
- пакет (packet) #протокол IP;
- протоколы: ARP, ICMP, IGMP, RIP, OSPF, ...
• Уровень сетевых интерфейсов (Network Interface Layer) #приемопередача кадров информации:
- кадр (frame) #единица данных которой оперируют сетевые интерфейсы;
- среда передачи данных #оптоволокно, витая пара, радиоэфир;
- протоколы: Ethernet, PPP, SLIP, 802.1*, ...
---------------------------------------------------------------------------------# Уровень сетевых интерфейсов (последовательность обработки кадров):
• Широковещательная рассылка ARP-пакетов с запросом MAC-адресов;
• Периодическое обновление таблицы MAC-адресов;
• Передача пакетов в соответствии с таблицами MAC-адресов.
---------------------------------------------------------------------------------# Уровень Интернет:
• MAC-адрес #адрес сетевого устройства (48 бит):
- 24 бит #уникальный идентификатор OUI (для каждого производителя свой);
- 24 бит #идентификатор, присвоенный производителем.
- формы записи:
00-50-56-C0-00-08;
00:50:56:C0:00:08;
0050.56С0.0008.
• IPv4 #32-битные адреса, записываемые в формате четырёх октетов (десятичные числа от 0 до 255), разделённых точками;
• IPv6 #128-битные адреса, записываемые в формате восьми хекстетов (четырехзначные шестнадцатеричные числа от 0 до F), разделенных двоеточием;
• Виды маршрутов:
- дейтаграммный маршрут #маршрут прокладывается заново для каждого нового пакета;
- виртуальный маршрут #маршрут прокладывается один раз для каждого нового соединения.
• Терминология:
- сеансовая маршрутизация, session routing #прокладка виртуального маршрута (н-р: VPN);
- статическая маршрутизация, static routing #строго фиксированные маршруты;
- динамическая маршрутизация, dynamic routing #маршруты изменяются в зависимости от топологии и загруженности каналов;
- пересылка, forwarding #пересылка пакетов с входящей линии на исходящую;
- входное дерево, sink tree #одна или несколько наиболее оптимальных карт маршрутов сети для конкретного маршрутизатора;
- кратчайший путь, shorted path #наиболее оптимальный маршрут по количеству узлов, расстоянию и загруженности каналов;
- одноадресная рассылка, unicast #рассылка пакетов на определенный адрес;
- групповая рассылка, multicast #рассылка пакетов на группу адресов;
- широковещательная рассылка, broadcast #рассылка пакетов на все адреса сети;
- произвольная рассылка, anycast #рассылка пакетов ближайшему хосту;
- оверлейная сеть, overlay #сеть-посредник, туннель (н-р: VPN, или участок сети осуществляющий транзит IPv6 через IPv4, т.е. инкапсулирующий IPv6 в IPv4, создавая тем самым
туннель);
- фрагментация пакетов #механизм разбивки больших пакетов на части:
прозрачная #каждый узел дробит и собирает пакеты;
непрозрачная #разбитый пакет передается узлами по частям;
максимальный размер пакета MTU (Maximum Transmission Unit) #задает максимальный размер пакета для выбранного маршрута (за фрагментацию пакетов отвечает отправитель);
- OSPF #открытый протокол прокладки маршрутов;
- IS-IS #протокол прокладки маршрутов;
- BGP #протокол прокладки маршрутов с настройкой политик;
- PIM #протокольно независимая мультиадресная рассылка для построения связующего дерева в маршрутизации.
---------------------------------------------------------------------------------# Классы IP-адресов:
• A #0000|0.0.0.0-127.255.255.255/255.0.0.0;
• B #1000|128.255.255.255-191.255.255.255/255.255.0.0;
• C #1100|192.255.255.255-223.255.255.255/255.255.255.0;
• D #1110|224.255.255.255-239.255.255.255/224.0.0.0.0|для многоадресной рассылки;
• E #1111|240.255.255.255-255.255.255.255|зарезервировано.
-------------------------------------------------------------------------------# IP-адреса и маски:
• Специфичные IP-адреса:
- 127.0.0.0 #интерфейс обратной петли (loopback) для тестирования и работы сети и некоторых приложений. Это пул IP-адресов, используемых компьютером, чтобы обратиться к самому
себе. Независимо от наличия соединения с Интернетом или локальной сетью, адреса из этого пула всегда пингуются.
- 0.0.0.0/8 #диапазон адресов, используемый хостами для самоидентификации. Обычно это можно увидеть, когда хост пытается получить IP-адрес от DHCP сервера. Так как изначально у
него нету IP-адреса, то в поле источника он вставляет адрес из данного диапазона.
- 1.1.1.1 #ограниченное широковещательное сообщение (limited broadcast) пакет с таким адресом назначения должен рассылаться всем узлам, находящимся в той же сети, что и
источник этого пакета;
- 169.254.0.0/16 #локальные адреса (link-local address). Автоматически используются хостами при отсутствии DHCP-сервера или его недоступности, что позволяет быстро организовать
локальную сеть и проверить работу узлов. Однако данный пул адресов не маршрутизируется, следовательно, выйти в Интернет с них не получится.
- 255.255.255.255/32 #широковещательный (broadcast) адрес для всех хостов в данной ЛВС (пакеты не передаются маршрутизатором в другую сеть);
- 172.16.5.255/24 #широковещательный (broadcast) адрес для всех хостов в заданной ЛВС (пакеты могут передаваться маршрутизатором в заданную сеть).
Например, в сети 192.168.5.0 с маской 255.255.255.0 пакет с адресом 192.168.5.255 доставляется всем узлам этой сети. Такая рассылка называется широковещательным сообщением (direct
broadcast).
• Адреса абстрактной сети:
- 192.168.1.0 #адрес сети;
- 192.168.1.255 #широковещательный адрес сети;
- 256 #общее количество адресов сети;
- 254 #общее количество свободных адресов для хостов.
• Адреса широковещательной рассылки:
- 224.0.0.1 #адрес multicast для всех хостов ЛВС (IGMP);
- 224.0.0.2 #адрес multicast рассылки для маршрутизаторов ЛВС (IGMP);
- 224.0.0.5 #адрес multicast рассылки для OSPF-маршрутизаторов ЛВС (IGMP);
- 224.0.0.251 #адрес multicast рассылки для DNS-серверов ЛВС (IGMP);
• Диапазоны адресов для частного использования:
- 10.0.0.0-10.255.255.255/8 (16777216);
- 172.16.0.0-172.31.255.255/12 (1048576);
- 192.168.0.0-192.168.255.255/16 (65536).
• Основные маски:
- 11111111.00000000.00000000.00000000=255.0.0.0=8;
- 11111111.11111111.00000000.00000000=255.255.0.0=16;
- 11111111.11111111.11111111.00000000=255.255.255.0=24;
- 11111111.11111111.11111111.11111111=255.255.255.255=32.
• Список всех возможных масок:
- 00|0.0.0.0;
- 01|128.0.0.0;
- 02|192.0.0.0;
- 03|224.0.0.0;
- 04|240.0.0.0;
- 05|248.0.0.0;
- 06|252.0.0.0;
- 07|254.0.0.0;
- 08|255.0.0.0;
- 09|255.128.0.0;
- 10|255.192.0.0;
- 11|255.224.0.0;
- 12|255.240.0.0;
- 13|255.248.0.0;
- 14|255.252.0.0;
- 15|255.254.0.0;
- 16|255.255.0.0;
- 17|255.255.128.0;
- 18|255.255.192.0;
- 19|255.255.224.0;
- 20|255.255.240.0;
- 21|255.255.248.0;
- 22|255.255.252.0;
- 23|255.255.254.0;
- 24|255.255.255.0;
- 25|255.255.255.128;
- 26|255.255.255.192;
- 27|255.255.255.224;
- 28|255.255.255.240;
- 29|255.255.255.248;
- 30|255.255.255.252;
- 31|255.255.255.254;
- 32|255.255.255.255.
---------------------------------------------------------------------------------# Расчет адресов IPv4:
• Расчет сетей с маской переменной длины (VLSM):
* VLSM (Variable Length Subnet Mask) #маска подсети переменной длины;
• Перевод из десятичной системы счисления в двоичную:
- необходима таблица степеней двойки:
2^7=128|2^6=64|2^5=32|2^4=16|2^3=8|2^2=4|2^1=2|2^0=1.
- что перевести: 193.233.44.12:
193=128+64+1=11000001;
233=128+64+32+8+1=11101001;
44=32+8+4=00101100;
12=8+4=00001100.
- результат: 193.233.44.12=11000001.11101001.00101100.00001100.
• Перевод из двоичной системы счисления в двоичную:
- необходима таблица степеней двойки:
2^7=128|2^6=64|2^5=32|2^4=16|2^3=8|2^2=4|2^1=2|2^0=1.
- что перевести: 01101100.00001101.11100101.11001000
01101100=64+32+8+4=108;
00001101=8+4+1=13;
11100101=128+64+32+4+1=229;
11001000=128+64+8=200;
- результат: 01101100.00001101.11100101.11001000=108.13.229.200.
----------------------------------------------------------------------------------
# Расчет сетей:
• Теория:
- таблица степеней двойки:
00|2^00|1;
01|2^01|2;
02|2^02|4;
03|2^03|8;
04|2^04|16;
05|2^05|32;
06|2^06|64;
07|2^07|128;
08|2^08|256;
09|2^09|512;
10|2^10|1024;
11|2^11|2048;
12|2^12|4096;
13|2^13|8192;
14|2^14|16384;
15|2^15|32768;
16|2^16|65536;
17|2^17|131072;
18|2^18|262144;
19|2^19|524288;
20|2^20|1048576;
21|2^21|2097152;
22|2^22|4194304;
23|2^23|8388608;
24|2^24|16777216;
25|2^25|33554432;
26|2^26|67108864;
27|2^27|134217728;
28|2^28|268435456;
29|2^29|536870912;
30|2^30|1073741824;
31|2^31|2147483648;
32|2^32|4294967296.
- N + S + H = 32 #формула для вычисления количества бит под хосты:
N #кол-во битов сети (класс A-8 бит, B-16 бит, C-24 бита);
S #кол-во заимствованных битов на подсеть;
H #кол-во бит отводимых хостам [H = 32 - (N + S)].
- 2^H - 2 = #формула для вычисления количества хостов сети;
- 256 - H = #формула для вычисления маски сети.
• Пример:
- создать сети на 24|3|2543|66 хостов:
2543, 66, 24, 3 #последовательность создания сетей;
2543 + 66 + 24 + 3 = 2636 #общее количество хостов;
2636 < 65536 => 192.168/16 #выбор серого диапазона адресов (N = 16);
2543 = 254 * 10 + 3 + 2 #10 подсетей по 254 хоста + 3 хоста + 2 адреса сети;
5 < 8 => 256 * 10 + 8 = 2568 #количество хостов на первую подсеть;
66 + 2 < 128 => 128 #количество хостов на вторую подсеть;
24 + 2 < 32 => 32 #количество хостов на третью подсеть;
3 + 2 < 8 => 8 #количество хостов на четвертую подсеть;
* т.к. сети расположены последовательно => 256 * 10 + 128 = 2688 #количество хостов для первой сети;
2688 + 128 + 32 + 8 + 216 = 3072 #общее количество хостов + адреса сети + 216 резервных хостов;
65536 - 3072 = 62464 / 256 = 244 #начальный адрес первой сети 192.168.244.0;
или
256 - 12 = 244 #начальный адрес первой сети 192.168.244.0;
список всех начальных и конечных адресов первой подсети:
192.168.244.0 #1/11 первой подсети (адрес сети);
192.168.244.255 #1/11 первой подсети (широковещательный адрес);
255.255.240.0 #маска 1/11 первой подсети;
192.168.245.0 #2/11 первой подсети (адрес сети);
192.168.245.255 #2/11 первой подсети (широковещательный адрес);
255.255.240.0 #маска 2/11 первой подсети;
192.168.246.0 #3/11 первой подсети (адрес сети);
192.168.246.255 #3/11 первой подсети (широковещательный адрес);
255.255.240.0 #маска 3/11 первой подсети;
192.168.247.0 #4/11 первой подсети (адрес сети);
192.168.247.255 #4/11 первой подсети (широковещательный адрес);
255.255.240.0 #маска 4/11 первой подсети;
192.168.248.0 #5/11 первой подсети (адрес сети);
192.168.248.255 #5/11 первой подсети (широковещательный адрес);
255.255.248.0 #маска 5/11 первой подсети;
192.168.249.0 #6/11 первой подсети (адрес сети);
192.168.249.255 #6/11 первой подсети (широковещательный адрес);
255.255.248.0 #маска 6/11 первой подсети;
192.168.250.0 #7/11 первой подсети (адрес сети);
192.168.250.255 #7/11 первой подсети (широковещательный адрес);
255.255.248.0 #маска 7/11 первой подсети;
192.168.251.0 #8/11 первой подсети (адрес сети);
192.168.251.255 #8/11 первой подсети (широковещательный адрес);
255.255.248.0 #маска 8/11 первой подсети;
192.168.252.0 #9/11 первой подсети (адрес сети);
192.168.252.255 #9/11 первой подсети (широковещательный адрес);
255.255.252.0 #маска 9/11 первой подсети;
192.168.253.0 #10/11 первой подсети (адрес сети);
192.168.253.255 #10/11 первой подсети (широковещательный адрес);
255.255.252.0 #маска 10/11 первой подсети;
192.168.254.0 #11/11 первой подсети (адрес сети);
192.168.254.127 #11/11 первой подсети (широковещательный адрес);
255.255.254.0 #маска 11/11 первой подсети;
192.168.254.128 #вторая подсеть (адрес сети);
192.168.254.255 #вторая подсеть (широковещательный адрес);
255.255.254.0 #маска второй подсети;
192.168.255.192 #третья подсеть (адрес сети);
192.168.255.223 #третья подсеть (широковещательный адрес);
255.255.255.192 #маска третьей подсети;
192.168.255.240 #четвертая подсеть (адрес сети);
192.168.255.247 #четвертая подсеть (широковещательный адрес);
255.255.255.240 #маска четвертой подсети.
---------------------------------------------------------------------------------# Список некоторых доменов верхнего уровня:
• com #коммерческие цели;
• edu #образовательные учреждения;
• gov #правительство;
• int #международные организации;
• mil #военные;
• net #сетевые провайдеры;
• org #некоммерческие организации;
• aero #авиатранспорт;
• biz #бизнес;
• coop #кооперативы;
• info #информация;
• museum #музеи;
• name #люди;
• pro #профессионалы;
• cat #Каталония;
• jobs #занятость;
• mobil #мобильные устройства;
• tel #контактная информация;
• travel #индустрия путешествий;
• xxx #порево.
---------------------------------------------------------------------------------# Некоторые стандартные схемы URL:
• http:// #запрос http-страницы;
• https:// #запрос https-страницы;
• ftp:// #запрос FTP-сервера;
• file:/// #открытие локально сохраненной HTML-страницы;
• mailto:name@mail.com #отправка почты;
• rtsp:// #потоковая передача мультимедиа;
• sip:name@mail.com #мультимедийный звонок;
• about:plugins #информация браузера.
---------------------------------------------------------------------------------# Коды ответов WEB-серверов:
• 1NN #информация;
• 100 #сервер согласен обрабатывать запросы клиента;
• 2NN #успех;
• 200 #запрос успешно обработан;
• 204 #содержимое отсутствует;
• 3NN #перенаправление;
• 301 #страница перемещена;
• 304 #кэшированная страница все еще доступна;
• 4NN #ошибка клиента;
• 403 #ошибка доступа;
• 404 #страница не найдена;
• 5NN #ошибка сервера;
• 500 #внутренняя ошибка сервера;
• 503 #попробуйте еще раз позднее.
---------------------------------------------------------------------------------# ЛВС - ПРОВОДНИКИ СЕТЕВОЙ ИНФОРМАЦИИ:
---------------------------------------------------------------------------------# Медные провода - на дальние расстояния:
• Повторители #каждые 5 км.
---------------------------------------------------------------------------------# Оптоволокно, optic fiber cable - на дальние расстояния:
• Составные части:
- одножильный:
кожух (пластик);
оболочка [демпфер] (стекло);
сердечник (стекло).
- трехжильный:
футляр;
кожух (пластик);
оболочка [демпфер] (стекло);
сердечник (стекло).
• Источники света:
- светоизлучающие диоды;
- полупроводниковые лазеры.
• Основные типы (классификация по длинам световых волн):
- 0.85 мкм #на короткие расстояния (арсенид галлия);
[ППЧ: 25000-30000 ГГц].
- 1.30 мкм #на дальние расстояния;
[ППЧ: 25000-30000 ГГц].
- 1.55 мкм #на дальние расстояния (с добавкой эрбия);
[ППЧ: 25000-30000 ГГц].
• Основные типы (классификация по количеству световых потоков):
- многомодовые кабели #несколько потоков;
- одномодовые кабели #один поток.
• Повторители #каждые 50 км;
- многомодовые кабели #500 м (источник света: светодиод);
- одномодовые кабели #около 10 км (источник света: лазер);
• Скоростные характеристики:
- 100 Гбит/с #упирается в оборудование по обработке сигнала;
- 50 Тбит/с #теоретически возможная скорость.
---------------------------------------------------------------------------------# Радио [за пределами ионосферы] #спутниковая связь:
• L #:
- нисходящие сигналы #1.5 ГГц;
- восходящие сигналы #1.6 ГГц;
- ППЧ #15 МГц;
- проблемы #узкая ППЧ, переполнен.
• S #:
- нисходящие сигналы #1.9 ГГц;
- восходящие сигналы #2.2 ГГц;
- ППЧ #70 МГц;
- проблемы #узкая ППЧ, переполнен.
• C #:
- нисходящие сигналы #4.0 ГГц;
- восходящие сигналы #6.0 ГГц;
- ППЧ #500 МГц;
- проблемы #наземная интерференция.
• Ku #:
- нисходящие сигналы #11 ГГц;
- восходящие сигналы #14 ГГц;
- ППЧ #500 МГц;
- проблемы #дождь.
• Ka #:
- нисходящие сигналы #20 ГГц;
- восходящие сигналы #30 ГГц;
- ППЧ #3500 МГц;
- проблемы #дождь, стоимость.
• скоростные характеристики:
- 1 Мбит/с #средняя скорость передачи спутник - Земля;
- несколько Мбит/с #средняя скорость передачи Земля - спутник.
---------------------------------------------------------------------------------# Радио [в пределах ионосферы] #bluetooth,wifi,wiMAX,CDMA,GSM,1-5G:
• 1G #аналоговая связь;
• 2G #цифровая голосовая связь;
• 3G #цифровая голосовая связь и данные (Internet);
• 4G #;
• 5G #.
---------------------------------------------------------------------------------# ЛВС - Телефонные провода #Dialup (56k)|DSL;
---------------------------------------------------------------------------------# Коаксиальный кабель #HFC:
• Составные части:
- защитное пластиковое покрытие;
- внешняя проводящая оплетка;
- изолятор;
- медный сердечник.
• Основные разновидности:
- 50 Ом #для передачи цифровых данных;
- 75 Ом #для передачи аналоговых данных.
• Скоростные характеристики:
- до 39 Мбит/с.
---------------------------------------------------------------------------------# Витая пара, twisted pair #на короткие и средние расстояния:
• Составные части:
- пластиковая оболочка;
- экран #в ряде категорий;
- витая пара x 4 #количество в зависимости от категории (обычно 4).
• Виды передачи данных:
- дуплекс #одновременная передача данных в обоих направлениях;
- полудуплекс #поочередная передача данных в прямом и обратном направлениях.
• Скоростные характеристики:
- 100 Гбит/с #передача по 2-м парам;
- 1 Гбит/с #передача по 4-м парам.
• Повторители #каждые 500 м (100 м????);
• Категории:
- cat 1 (ППЧ: 100 Гц):
до 56 Кбит/с;
- cat 2 (ППЧ: 1 МГц):
до 4 Мбит/с;
- cat 3 (ППЧ: 16 МГц):
до 10 Мбит/с;
- cat 4 (ППЧ: 20 МГц):
до 16 Мбит/с;
- cat 5 (ППЧ: 100 МГц):
до 100 Мбит/с;
- cat 5e (ППЧ: 125 МГц):
до 100 Мбит/с при использовании 2 пар;
до 1 Гбит/с при использовании 4 пар;
- cat 6 (ППЧ: 250 МГц):
до 1 Гбит/с при использовании 4 пар;
до 10 Гбит/с при длине кабеля не более 55 м;
- cat 6e (ППЧ: 500 МГц):
до 1 Гбит/с при использовании 4 пар;
до 10 Гбит/с при длине кабеля не более 100 м;
- cat 7 (ППЧ: 600 МГц):
до 10 Гбит/с при использовании 4 пар;
- cat 7a (ППЧ: 700-1200 Мгц):
до 10 Гбит/с при использовании 4 пар;
до 40 Гбит/с при длине кабеля не более 50м;
до 100 Гбит/с при длине кабеля не более 15м.
• Экранирование:
- UTP #не экранированная витая пара (cat 1-6);????
- STP #экранированная витая пара (cat 7)???? [проволочная оплетка];
- FTP #экранированная витая пара [фольга].
---------------------------------------------------------------------------------# Обжим коннекторов витой пары 8P8C стандарта RJ-45:
• Прямой #PC-hub|switch|router:
- оранжевый (полосатый) — оранжевый (полосатый);
- оранжевый (сплошной) — оранжевый (сплошной);
- зеленый (полосатый) — зеленый (полосатый);
- синий (сплошной) — синий (сплошной);
- синий (полосатый) — синий (полосатый);
- зеленый (сплошной) — зеленый (сплошной);
- коричневый (полосатый) — коричневый (полосатый);
- коричневый (сплошной) — коричневый (сплошной).
• Обратный (кроссовый) #PC-PC:
- оранжевый (полосатый) — зеленый (полосатый);
- оранжевый (сплошной) — зеленый (сплошной);
- зеленый (полосатый) — оранжевый (полосатый);
- синий (сплошной) — синий (сплошной);
- синий (полосатый) — синий (полосатый);
- зеленый (сплошной) — оранжевый (сплошной);
- коричневый (полосатый) — коричневый (полосатый);
- коричневый (сплошной) — коричневый (сплошной).
• Другое:
- кримпер #обжимщик.
---------------------------------------------------------------------------------# ЛВС - СЕТЕВЫЕ СТАНДАРТЫ:
---------------------------------------------------------------------------------# Базовые сетевые стандарты:
• IEEE 802.1 #общее представление и архитектура ЛВС;
• IEEE 802.2 #управление логическим каналом (бездействует);
• IEEE 802.3 #Ethernet:
- Fast Ethernet #до 100 Мбит/с:
100Base-T4 #витая пара (сегмент: 100 м|cat3);
100Base-TX #витая пара (сегмент: 100 м|cat5|дуплекс при 100 Мбит/с);
100Base-FX #оптоволокно (сегмент: 2000 м|дуплекс при 100 Мбит/с).
- IEEE 802.3z #GigabitEthernet до 1 Гбит/с:
1000Base-SX #оптоволокно (сегмент: 550 м|многомодовое 50, 62.5 мкм);
1000Base-LX #оптоволокно (сегмент: 5000 м|многомодовое 50, 62.5 мкм, или одномодовое 10 мкм);
1000Base-CX #2 экранированные витые пары (сегмент: 25 м);
1000Base-T #4 неэкранированные витые пары (сегмент: 100 м|cat5).
- 10-Gigabit Ethernet #до 10 Гбит/с:
10GBase-SR #оптоволокно (сегмент: до 300 м|многомодовое 0.85 мкм);
10GBase-LR #оптоволокно (сегмент: 10 км|одномодовое 1.3 мкм);
10GBase-ER #оптоволокно (сегмент: 40 км|одномодовое 1.5 мкм);
10GBase-CX4 #4 пары биаксиального кабеля (сегмент: 15 км);
10GBase-T #4 пары неэкранированной витой пары (сегмент: 100 м|cat6a).
- IEEE 802.3af #электропитание через Ethernet (PoE - Power over Ethernet).
• IEEE 802.4 #маркерная шина (бездействует);
• IEEE 802.5 #маркерное кольцо;
• IEEE 802.6 #двойная двунаправленная шина (бездействует);
• IEEE 802.7 #техническая консультативная группа по широкополосным технологиям (бездействует);
• IEEE 802.8 #техническая консультативная группа по оптоволоконным технологиям (самоликвидировалась);
• IEEE 802.9 #изохронные ЛВС (бездействует);
• IEEE 802.10 #виртуальные ЛВС и защита информации (бездействует);
• IEEE 802.11 #беспроводные ЛВС (wifi):
- диапазоны частот #2.4-2.4835 ГГц|5.725-5.825 ГГц:
a #до 54 Мбит/с|5 ГГц;
b #до 11 Мбит/с|2.4 ГГц;
g #до 54 Мбит/с|2.4 ГГц;
n #более 100 Мбит/с|2.4 ГГц (в 4 антенны до 600 Мбит/с).
• IEEE 802.12 #приоритеты запросов (бездействует);
• IEEE 802.13 #счастливый номер;
• IEEE 802.14 #кабельные модемы (бездействует);
• IEEE 802.15 #персональные сети (bluetooth):
- диапазон частот #2.4 ГГц;
- ППЧ #79 каналов по 1 МГц;
- дальность #10 м;
- скорость #.
• IEEE 802.16 #широкополосные беспроводные ЛВС (WiMAX):
- IEEE 802.16a [OFDM] #неподвижный wiMAX;
- IEEE 802.16e [OFDMA] #подвижный wiMAX;
- диапазон частот #2-11 ГГц;
- дальность #;
- скорость #.
• IEEE 802.17 #гибкая технология пакетного кольца;
• IEEE 802.18 #радиорегулирование;
• IEEE 802.19 #сосуществование сетей;
• IEEE 802.20 #мобильный широковещательный беспроводной доступ (аналог 802.16e);
• IEEE 802.21 #переключение, не зависимо от среды передачи данных (для переключения между технологиями);
• IEEE 802.22 #местные беспроводные сети;
• IEEE 802.1Q #Ethernet-кадр для VLAN (ВЛВС);
• IEEE 802.1D #.
---------------------------------------------------------------------------------# ЛВС - ЕДИНИЦЫ СЕТЕВОЙ ИНФОРМАЦИИ - ОБЩАЯ ИНФОРМАЦИЯ:
---------------------------------------------------------------------------------# Память (ОЗУ|ПЗУ):
• 1 КБ = 2^10 = 1024 байт;
• 1 МБ = 2^20 = 1048576 байт;
• 1 ГБ = 2^30 = 1073741824 байт.
---------------------------------------------------------------------------------# Сеть (скорость передачи информации):
• 1 Кбит/с = 1000 бит/с;
• 1 Мбит/с = 1000000 бит/с;
• 1 Гбит/с = 1000000000 бит/с.
---------------------------------------------------------------------------------# Размеры кадров и пакетов:
• IP #65535 байт;
---------------------------------------------------------------------------------# Размеры поля полезной нагрузки кадров и пакетов:
• IEEE 802.3 #1500 байт;
• IEEE 802.11 #2272 байта;
• IP #65515 байт.
---------------------------------------------------------------------------------# ЛВС - ЕДИНИЦЫ СЕТЕВОЙ ИНФОРМАЦИИ - КАДРЫ:
---------------------------------------------------------------------------------# Структура кадра IEEE 802.3:
• Преамбула #поле, используемое для указания начала кадра;
• Разграничитель начала кадра;
•
•
•
•
Адрес назначения #MAC-адрес получателя (широковещательный адрес FF-FF-FF-FF-FF-FF);
Адрес отправителя #MAC-адрес отправителя;
Длина #указывает длину поля данных (~ 46-1500 байт);
TYPE/SNAP/LLC #тип протокола (какому вышестоящему протоколу передать кадр):
- ARP #код 0x806.
• Данные #данные, полученные с высших уровней.
• Наполнитель (для кадров с размером менее 46 байт);
• FCS (Frame Check Sequence) #контрольная сумма.
---------------------------------------------------------------------------------# Структура кадра IEEE 802.1Q:
• Преамбула;
• Разграничитель начала кадра;
• Адрес назначения;
• Адрес отправителя;
• Идентификатор протокола VLAN (0x8100);
• Приоритет;
• CFI;
• Длина;
• Данные;
• Наполнитель (для кадров с размером менее 46 байт);
• Контрольная сумма.
---------------------------------------------------------------------------------# Структура кадра IEEE 802.11:
• Управление кадром:
- версия протокола = 00;
- тип = 10;
- подтип = 0000;
- к DS;
- от DS;
- дополнительные фрагменты;
- повтор;
- управление питанием;
- продолжение;
- шифрование;
- порядок.
• Длительность;
• Адрес 1 (получатель);
• Адрес 2 (передатчик);
• Адрес 3;
• Последовательность;
• Данные;
• Контрольная последовательность кадра.
---------------------------------------------------------------------------------# ЛВС - ЕДИНИЦЫ СЕТЕВОЙ ИНФОРМАЦИИ - ПАКЕТЫ:
---------------------------------------------------------------------------------# Структура пакета ARP:
• Hardware type #тип протокола канального уровня (для Ethernet [0x0001]);
• Protocol type #тип протокола сетевого уровня (для IPv4 [0x0800]);
• HLEN (Hardware length) #длина физического адреса в байтах (для MAC-адреса размер будет 6 байт [48 бит]);
• PLEN (Protocol length) #длина логического адреса в байтах (для IPv4-адреса размер будет 4 байта [32 бита]);
• OPCODE (Operation) #код операции отправителя (для запроса код 0x1|для ответа код 0x2);
• Sender hardware address #физический адрес отправителя (MAC-адрес);
• Sender protocol address #логический адрес отправителя (IP-адрес);
• Target hardware address #физический адрес получателя (MAC-адрес при запросе, как правило, неизвестен);
• Target protocol address #логический адрес получателя (IP-адрес).
---------------------------------------------------------------------------------# Структура заголовка пакета IP:
• Source IP-address #IP-адрес отправителя пакета;
• Destination IP-address #IP-адрес получателя пакета;
• Protocol #вышестоящий протокол (н-р: TCP, UDP);
• Checksum #контрольная сумма для проверки целостности пакета;
?• Контрольная сумма заголовка #не данных (данные проверяются соответствующим полем на канальном уровне);
?• Смещение #указывает, какому месту принадлежит фрагмент в оригинальном IP (значение всегда кратно восьми байтам);
• TTL (Time To Live) #ремя жизни пакета:
- при прохождении через маршрутизатор, значение уменьшается на единицу;
- при достижении нуля, пакет отбрасывается.
• Version #версия протокола IPv4/IPv6 (4 бита);
• IHL (Internet Header Length) #длина заголовка пакета (4 бита) (минимальный размер заголовка - 20 байт);
• Type of Service () #тип обслуживания: обозначение требуемого для этого пакета качества обслуживания QoS (Quality of Service) при доставке через маршрутизаторы IP-сети (здесь
определяются приоритет, задержки, пропускная способность [8 бит]);
• Total Length #длина дейтаграммы IP-протокола (размер пакета, включая пользовательские данные [16 бит]);
• Данные #данные, полученные с вышестоящих уровней:
- максимальный размер Ethernet-кадра равен 1500 байт;
- размер IP пакета может быть 20 Кбайт;
- IP пакет делится и отправляется по частям;
- для этого используются 3 поля ниже.
• Identification #идентификатор пакета (при фрагментации пакета, все фрагменты имеют одинаковый идентификатор (16 бит{или 32 бита????)];
• Fragmentation Flags #3 бита для флагов фрагментации (задают фрагментированный пакет) и 2 бита для текущего использования;
• Fragmentation Offset #смещение фрагмента: указывает на положение фрагментов относительно начала поля данных IP-пакета, если фрагментации нет, смещение равно 0x0 (13 бит) [сдвиг
относительно первого фрагмента (нумерация фрагментов)];
• Options and Padding #поле используется для расширения стандартного заголовка IP (запись данных спец. оборудования [умный дом]).
---------------------------------------------------------------------------------# Структура заголовка пакета UDP:
• Source port #порт отправителя;
• Destination Port #порт получателя;
• Data Length #длина UDP-пакета (заголовка???? от 8 до 65535 байт);
• Checksum #контрольная сумма.
• Данные #данные с верхнего уровня.
---------------------------------------------------------------------------------# Структура заголовка пакета TCP:
• Source port #порт TCP узла-отправителя;
• Destination Port #порт TCP узла-получателя;
• Sequence Number #номер последовательности пакетов;
• Acknowledgement Number #номер подтверждения: порядковый номер байта, который локальный узел рассчитывает получить следующим (используется когда ожидается или подтверждается
доставка [параметр ACK]);
• Data Length #длина заголовка ТСР-пакета (все поля, кроме поля данных);
• Reserved #зарезервировано для будущего использования (н-р, чтобы сообщить о перегрузках в сети);
• Flags #флаги (спец. биты для установления или разрыва сессии):
- URG #указатель на срочные данные;
- ACK #номер подтверждения;
- PSH #доставить данные приложению сразу в обход буфера;
- RST #сброс состояния соединения;
- SYN #установка соединения;
- FIN #разрыв соединения.
• Window #размер окна - указывает, на сколько сегментов требовать подтверждения (размер окна устанавливается таким образом, чтобы получать больше подтверждений о каждом
отправленном сегменте|далее, если все идет хорошо и сеть не сбоит, размер окна меняется и передается больше сегментов и, соответственно, требуя меньше отчетов о доставке [передача
информации выполняется быстрее]|как только сеть даст краткий сбой, и какой то сегмент придет побитым, то размер опять изменится и потребуется больше отчетов о доставке);
• Checksum #контрольная сумма для проверки целостности пакета;
• Urgent Pointer () #указатель важности (используется при отправке срочных данных [флаг URG в поле Flags] в этом поле задается граница области срочных данных) [это смещение
последнего октета важных данных относительно SEQ для пакетов с установленным флагом URG. В жизни применяется, когда необходимо осуществить контроль потока или состояния протокола
верхнего уровня со стороны передающего агента (например, если принимающий агент может косвенно сигнализировать передающему, что не справляется с потоком данных)];
• Options #опции (используется для расширенных или дополнительных параметров, н-р для timestamp);
• Данные #данные с вышестоящего уровня.
---------------------------------------------------------------------------------# Установка и завершение TCP-соединения клиент-сервер:
• Handshake:
- SYN #запрос на соединение от клиента к серверу;
- SYN ACK #положительный ответ сервера клиенту на запрос соединения;
- ACK #подтверждение от клиента к серверу.
• Досвидос:
- FIN ACK #клиент завершил передачу данных;
- [ACK #подтверждение завершения соединения от клиента серверу (если ACK не был передан с FIN);]
- FIN ACK #сервер завершил передачу данных;
- [ACK #подтверждение завершения соединения от сервера клиенту (если ACK не был передан с FIN);]
- ACK #клиент серверу.
* если в ответ на запрос о завершении соединения не приходит подтверждения, то, по истечении двух интервалов жизни пакета, соединение разрывается автоматически.
---------------------------------------------------------------------------------# Некоторые типы ICMP сообщений:
• 0 #Echo Reply Message - эхо-ответ;
• 3 #Destination Unreachable Message - адресат недоступен;
• 8 #Echo Message - эхо-запрос;
• 11 #Time Exceeded Message - превышен лимит времени.
---------------------------------------------------------------------------------# ЛВС - СЕТЕВОЕ ОБОРУДОВАНИЕ:
---------------------------------------------------------------------------------# Базовые типы сетевого оборудования:
• Повторитель, repeater [физический уровень] #работа с сигналами (фронты и срезы импульсов):
- очистка принятого сигнала, его усиление и дальнейшая передача;
- для витой пары (5 кат.) допустимо 4 повторителя (500*4+500=2500 м).
• Концентратор, hab [физический уровень] #оперирование кадрами:
- кадр отправляется всем, кроме отправителя;
- строго фиксированные скорости ППД.
• Мост, bridge [канальный уровень] #оперирование кадрами:
- кадр отправляется получателю (MAC-адресация);
- скорости ППД могут быть различными.
• Коммутатор, switch [канальный уровень] #оперирование кадрами:
- кадр отправляется получателю (MAC-адресация);
- скорости ППД могут быть различными.
• Маршрутизатор, router [сетевой уровень] #оперирование кадрами:
- кадр отправляется получателю (MAC|IP-адресация);
- скорости ППД могут быть различными.
• Транспортный шлюз [транспортный уровень] #конвертирование протоколов:
- (н-р) конвертация TCP в SCTP.
• Шлюз приложения [прикладной уровень] #преобразование данных:
- (н-р) e-mail шлюз: преобразует письмо в SMS-сообщение.
---------------------------------------------------------------------------------# Специальные кабели (для сетевого оборудования):
• Последовательный кабель, serial #предназначен для соединения 2-х сетевых устройств. Сама технология двухточечного соединения очень древняя, но тем не менее до сих пор
встречается и многие устройства работают с ней. Главное требование к устройству, это поддержка канального уровня (то есть 2 уровень по модели OSI), так как устройства должны
решить, кто из них главный. Главное устройство нужно для того, чтобы оно продиктовало скорость канала. Для этого ввели 2 понятия DCE (Data Communication Equipment) и DTE(Data
Terminal Equipment). Обычно DCE устройством является провайдер, а DTE маршрутизатор в локальной сети. Коннекторов к этому виду кабеля огромное количество. Используется в
оборудовании Cisco.
• Консольный кабель, rollover #используется для настройки сетевых устройств (коммутаторы, маршрутизаторы, ..) с консольным интерфейсом.
---------------------------------------------------------------------------------# Базовые команды для настройки сетевого оборудования (Cisco):
• Настройка сетевых интерфейсов маршрутизатора:
enable #переход в привилегированный режим;
configure terminal #переход в режим глобальной конфигурации;
interface fastEthernet 0/0 #переход к настройке порта 0/0;
ip address 192.168.1.254 255.255.255.0 #задать IP-адрес;
no shutdown #включить интерфейс (по умолчанию все порты выключены);
exit #выход из режима настройки (здесь fastEthernet 0/0);
interface fastEthernet 0/1 #переход к настройке порта 0/1;
ip address 192.168.2.254 255.255.255.0 #задать IP-адрес;
no shutdown #включить интерфейс;
end #выход в привилегированный режим
copy running-config startup-config #сохранение изменений в памяти маршрутизатора (НИИБИЧЕСКИ ОБЯЗАТЕЛЬНАЯ КОМАНДА БЛЕАДЬ!!!!).
• Настройка сетевых интерфейсов L3-коммутатора:
enable #переход в привилегированный режим;
configure terminal #переход в режим глобальной конфигурации;
interface fastEthernet 0/1 #переход к настройке интерфейса fa0/1;
no switchport #перевод порта в «роутерный» режим (иначе на него невозможно повесить IP-адрес);
ip address 192.168.1.1 255.255.255.0 #задать IP-адрес;
interface fastEthernet 0/2 #переход к настройке интерфейса fa0/2;
no switchport #перевод порта в «роутерный» режим;
ip address 192.168.2.1 255.255.255.0 #задать IP-адрес;
ip routing #включить маршрутизацию.
• Настройка VLAN:
enable #переход в привилегированный режим;
configure terminal #переход в режим глобальной конфигурации (конфигурирование общих характеристик системы [из режима глобальной конфигурации можно перейти во множество
режимов конфигурации, специфических для конкретного протокола или функции]);
interface vlan 1 #выбор виртуального интерфейса интерфейса (для коммутаторов 2 уровня назначить IP-адрес на порт нельзя, но его можно назначить на виртуальный интерфейс);
ip address 192.168.1.5 255.255.255.0 #задать IP-адрес;
no shutdown #включить интерфейс.
• Настройка DHCP-пулла:
configure terminal #переход в режим глобальной конфигурации;
ip dhcp excluded-address 192.168.1.1 #исключить из выдачи адрес;
ip dhcp excluded-address 192.168.2.1 #исключаем из выдачи адрес;
ip dhcp pool FOR-PC1 #создать пул для PC1;
network 192.168.1.0 255.255.255.0 #анонсировать сеть;
default-router 192.168.1.1 #задать основной шлюз;
ip dhcp pool FOR-PC2 #создать пул для PC2;
network 192.168.2.0 255.255.255.0 #анонсировать сеть;
default-router 192.168.2.1 #задать основной шлюз.
• Копирование данных с Cisco на TFTP-сервер:
enable #переход в привилегированный режим;
copy startup-config tftp: #copy - скопировать|startup-config - что скопировать|tftp: - куда скопировать:
Address or name of remote host []? #сообщение с запросом адреса или имени сервера:
192.168.0.4 + Enter.
Destination filename [Router-confg]? #под каким именем сохранить документ на сервере (предлагает стандартное имя);
Enter.
==================================================================================
==================================================================================
>>>>>>> ПРИЛОЖЕНИЕ X - ЛИТЕРАТУРА: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
==================================================================================
• "Just for fun. Рассказ нечаянного революционера" [2002] #Линус Торвальдс, Дэвид Даймонд;
• "Основы Linux от основателя Gentoo" #Daniel Robbins, Chris Houser, Aron Griffis;
• "Systemd для администраторов" [2017] #Lennart Poettering (автор) Сергей Пташник (русский перевод);
• "Просто о Vim" [v0.51 для Vim версии 7] #http://swaroopch.com/notes/Vim;
• "TrueCrypt. Руководство пользователя" [2012];
• "][akep" #Журнал;
• "Linux Полное руководство" [2006] #Колисниченко Д.Н., Питер В. Аллен;
• "Компьютерные сети" (5-е издание) [2018] #Таненбаум Э. Уэзеролл Д.;
• "Аудит безопасности информационных систем" [2018] #Никита Скабцов;
• "Iptables Tutorial" [2003] #Oskar Andreasson;
• Internet:
- подготовка к экзамену RHCSA:
https://youtube.com/playlist?list=PLisqB92_b4TlQH3jVGf6lrFMVqalCTjAQ
https://basis.gnulinux.pro #текстовой вариант;
https://t.me/gnuslashlinux #телеграм.
- ..
==================================================================================
Download