Контроль активности пользователя
Чтобы мониторить действий пользователей в системе, можно использовать два приложения —
Они предоставляют отличный способ отслеживать, что делают пользователи, какие команды они запускают, сколько ресурсов они потребляют, как долго пользователи активны в системе. Еще одна замечательная особенность в том, что она дает общие ресурсы, потребляемые такими службами, как
Команды для мониторинга действий процесса:
⁃
⁃
⁃
⁃
⁃
Пакет
Чтобы мониторить действий пользователей в системе, можно использовать два приложения —
psacct или acct.Они предоставляют отличный способ отслеживать, что делают пользователи, какие команды они запускают, сколько ресурсов они потребляют, как долго пользователи активны в системе. Еще одна замечательная особенность в том, что она дает общие ресурсы, потребляемые такими службами, как
Apache, MySQL, FTP, SSH и т.д.Команды для мониторинга действий процесса:
⁃
ac — выводит статистику пользовательских входов/выходов (время подключения) в часах.⁃
lastcomm — печатает информацию о ранее выполненных командах пользователя.⁃
accton — используются для включения/выключения процесса учета.⁃
sa — суммирует информацию о ранее выполненных командах.⁃
last и lastb — показывают список последних зарегистрированных пользователей.Пакет
psacct доступен только для дистрибутивов на основе rpm (RHEL, CentOS и Fedora), а acct — для Ubuntu, Debian и Linux Mint.Получить всю информацию о компонентах компьютера можно с помощью команды
Если запустить команду без параметров, то на выходе получим огромный список в несколько сотен строк, включающий версию прошивки, установленные драйверы, поддерживаемые возможности, серийные номера, номера версий и информацию о шине.
Поэтому следует немного отфильтровать поток, запустив:
Пример вывода информации с конкретными классами:
Вывод можно преобразовать в форматы HTML, XML или JSON, к примеру:
Чтобы убрать из вывода информацию, такую как IP адреса и серийные номера, можно добавить параметр
lshwЕсли запустить команду без параметров, то на выходе получим огромный список в несколько сотен строк, включающий версию прошивки, установленные драйверы, поддерживаемые возможности, серийные номера, номера версий и информацию о шине.
Поэтому следует немного отфильтровать поток, запустив:
sudo lshw -short или sudo lshw -businfo, чтобы увидеть список классов устройств, которые дальше можно передать утилите.Пример вывода информации с конкретными классами:
sudo lshw -short -class bus -class cpu Вывод можно преобразовать в форматы HTML, XML или JSON, к примеру:
sudo lshw -html -class storage > log.html Чтобы убрать из вывода информацию, такую как IP адреса и серийные номера, можно добавить параметр
-sanitizeИзменения владельца файла или директории
В Linux каждый пользователь имеет свои собственные файлы, причем он может регламентировать возможность доступа других пользователей к ним.
С этим может помочь команда
Чтобы предоставить пользователю с именем name возможность распоряжаться файлом
Помимо изменения владельца файла, может изменяться группа его владельцев или его владелец и группа его владельцев одновременно.
В результате команды:
владельцем
В Linux каждый пользователь имеет свои собственные файлы, причем он может регламентировать возможность доступа других пользователей к ним.
С этим может помочь команда
chown.Чтобы предоставить пользователю с именем name возможность распоряжаться файлом
file.txt:chown name file.txtПомимо изменения владельца файла, может изменяться группа его владельцев или его владелец и группа его владельцев одновременно.
В результате команды:
chown name:group file.txtвладельцем
file.txt станет пользователь с именем name, а группой его владельцев — group.Создаем файл устройства
В качестве примера рассмотрим процесс создания дополнительного файла loop-устройства.
Для начала следует получить список доступных в системе файлов loop-устройств:
Далее представим, что команда ls вывела 15 файлов loop-устройств (от
где
идентификатор
вспомогательный идентификатор
В качестве примера рассмотрим процесс создания дополнительного файла loop-устройства.
Для начала следует получить список доступных в системе файлов loop-устройств:
ls -al /dev | grep loopДалее представим, что команда ls вывела 15 файлов loop-устройств (от
loop0 до loop14). Исходя из этого, следует создать файл с именем loop15:mknod -m 0777 /dev/loop15 b 7 17где
-m - флаг, задающий права доступа0777 - права доступа/dev/loop15 - название /dev файлаb - обозначение блочного устройстваидентификатор
7 - фиксирован для всех файлов loop-устройств вспомогательный идентификатор
15 - указывает на номер файла loop-устройства.Вывести размер папки
Рассмотрим, как вывести размер всей папки и размер без учета вложенных папок.
Допустим, у вас есть какая-то папка folder. Тогда команда для вывода ее размера выглядит следующим образом:
Также вы можете посмотреть общий размер только самих файлов в папке, без учета содержимого подпапок. Для этого используется опция
Рассмотрим, как вывести размер всей папки и размер без учета вложенных папок.
Допустим, у вас есть какая-то папка folder. Тогда команда для вывода ее размера выглядит следующим образом:
sudo du -sh /home/dir/to/some/folder-s – выводить только размер самой папки, без вложенных подпапок.-h – выводить информацию в привычном виде. Речь о единицах измерения (K – килобайт, M – мегабайт и т. д.).Также вы можете посмотреть общий размер только самих файлов в папке, без учета содержимого подпапок. Для этого используется опция
-S:sudo du -sSh /home/dir/to/some/folderЕсли открыть окно терминала и ввести несколько команд, а после открыть второе окно, то история команд bash во втором окне не будет содержать команд из первого. К тому же, если закрыть первый терминал, а затем второй, то история команд из первого терминала будет перезаписана вторым.
Так происходит из-за того, что история команд записывается только при закрытии терминала, а не после каждой команды. Это можно исправить.
Отредактируем файл
добавив в него строки:
Так история команд будет добавляться к старой, а не перезаписывать ее, и запись будет происходить каждый раз в момент отображения подсказки bash.
Так происходит из-за того, что история команд записывается только при закрытии терминала, а не после каждой команды. Это можно исправить.
Отредактируем файл
.bashrc добавив в него строки:
shopt -s histappendPROMPT_COMMAND='history -a'Так история команд будет добавляться к старой, а не перезаписывать ее, и запись будет происходить каждый раз в момент отображения подсказки bash.
Команда curl
Запрос страницы
Команда напечатает исходный код
Скачивание файла
Получение заголовка
Если вы хотите посмотреть, какие заголовки отдает сервер, то можно использовать опцию
Измерение продолжительности соединения
Можно использовать опцию
curl утилита командной строки для передачи данных с или на сервер. С помощью curl вы можете загружать или выгружать данные, используя один из поддерживаемых протоколов, включая HTTP, HTTPS, SCP, SFTP и FTP Запрос страницы
curl google.comКоманда напечатает исходный код
google.com в окне вашего терминала.Скачивание файла
curl -O https://domain.com/testzip.tar.gzПолучение заголовка
HTTPЕсли вы хотите посмотреть, какие заголовки отдает сервер, то можно использовать опцию
-I. Она позволяют получить заголовок без тела документа.curl -I https://www.google.comИзмерение продолжительности соединения
Можно использовать опцию
-w для отображения информации в stdout после завершения передачи. Узнаем общее время, которое потребовалось для успешного выполнения запроса:curl -w "%{time_total}\n" -o /dev/null -s www.test.comКоманда pstree показывает дерево процессов — то есть какие процессы запустили другие процессы.
Удобнее, чем обычный
Базовое использование:
Пример вывода:
Что это значит:
•
• он запустил:
-
-
-
•
• из
То есть видно кто чей родитель.
Полезные опции:
• Показать PID процессов:
• Показать пользователей:
• Показать аргументы процессов:
• Дерево конкретного процесса:
• Подсветка текущего процесса:
Удобнее, чем обычный
ps, потому что видно иерархию.Базовое использование:
pstreeПример вывода:
systemd─┬─NetworkManager
├─sshd─┬─sshd───bash───pstree
│ └─sshd───bash
└─cronЧто это значит:
•
systemd — главный процесс системы (PID 1)• он запустил:
-
NetworkManager-
sshd-
cron•
sshd запустил bash• из
bash запустили pstreeТо есть видно кто чей родитель.
Полезные опции:
• Показать PID процессов:
pstree -p• Показать пользователей:
pstree -u• Показать аргументы процессов:
pstree -a• Дерево конкретного процесса:
pstree <PID>• Подсветка текущего процесса:
pstree -hКоманда patchelf
Предупреждение: с помощью команды легко внести изменения, которые могут привести к нестабильной работе программ, поэтому ее следует использовать осторожно!
Основные возможности patchelf:
1. Изменение RPATH: RPATH и RUNPATH — это поля в ELF-файлах, указывающие динамическому загрузчику, где искать динамические библиотеки.
2. Установка интерпретатора: Интерпретатор — это программа, которая исполняется для запуска ELF-файлов.
3. Изменение имени сонама: Сонам (soname) — это имя, которым динамическая библиотека идентифицируется при динамическом связывании.
Предупреждение: с помощью команды легко внести изменения, которые могут привести к нестабильной работе программ, поэтому ее следует использовать осторожно!
patchelf — утилита для изменения динамических свойств исполняемых файлов и динамических библиотек в формате ELF.Основные возможности patchelf:
1. Изменение RPATH: RPATH и RUNPATH — это поля в ELF-файлах, указывающие динамическому загрузчику, где искать динамические библиотеки.
patchelf --set-rpath /new/path/to/library myprogram2. Установка интерпретатора: Интерпретатор — это программа, которая исполняется для запуска ELF-файлов.
patchelf --set-interpreter /new/path/to/interpreter myprogram3. Изменение имени сонама: Сонам (soname) — это имя, которым динамическая библиотека идентифицируется при динамическом связывании.
patchelf --set-soname newsoname.so mylibrary.soКоманда shred в Linux используется для безопасного удаления файлов, многократно перезаписывая их случайными данными, чтобы усложнить восстановление. Она входит в пакет GNU Core Utilities.
Базовый синтаксис:
Основной пример:
Файл
По умолчанию:
• выполняется 3 прохода перезаписи
• файл не удаляется, только портится содержимое.
Полезные опции:
1. Удалить файл после перезаписи
•
2. Задать количество проходов
•
3. Последний проход нулями
•
4. Показать процесс
•
____________________
shred не всегда гарантирует уничтожение данных, если используется:
• журналируемая файловая система (например ext4, Btrfs)
• SSD-диски
• snapshot-системы
Это связано с тем, что данные могут храниться в других физических блоках.
Базовый синтаксис:
shred [опции] файлОсновной пример:
shred secret.txtФайл
secret.txt будет несколько раз перезаписан случайными данными.По умолчанию:
• выполняется 3 прохода перезаписи
• файл не удаляется, только портится содержимое.
Полезные опции:
1. Удалить файл после перезаписи
shred -u secret.txt•
-u (--remove) — удалить файл после завершения.2. Задать количество проходов
shred -n 10 secret.txt•
-n — число перезаписей (например 10).3. Последний проход нулями
shred -z secret.txt•
-z — записывает нули на последнем проходе, чтобы файл выглядел как обычный очищенный.4. Показать процесс
shred -v secret.txt•
-v — verbose, показывает прогресс.____________________
shred не всегда гарантирует уничтожение данных, если используется:
• журналируемая файловая система (например ext4, Btrfs)
• SSD-диски
• snapshot-системы
Это связано с тем, что данные могут храниться в других физических блоках.
Команда entr
Мониторит файлы на изменения и запускает заданную команду, когда файл изменился.
Название расшифровывается как Event Notify Test Runner. Часто используют с
Основной синтаксис:
•
• <
Примеры использования:
1. Перезапуск Python-скрипта при изменении файла
Каждый раз, когда любой
2. Автоматическая сборка C-программы
Компилирует и запускает программу при изменении исходников.
3. Очистка экрана перед выполнением команды
Полезные флаги:
•
•
•
Мониторит файлы на изменения и запускает заданную команду, когда файл изменился.
Название расшифровывается как Event Notify Test Runner. Часто используют с
.py, .js, .c и другими файлами для автоматического запуска скриптов или сборки проектов.Основной синтаксис:
ls <файлы> | entr <команда>•
ls <файлы> — список файлов, за которыми следим.• <
команда> — команда, которая выполняется при изменении любого из файлов.Примеры использования:
1. Перезапуск Python-скрипта при изменении файла
ls *.py | entr python3 script.pyКаждый раз, когда любой
.py файл изменяется, script.py автоматически запускается.2. Автоматическая сборка C-программы
ls *.c | entr gcc -o program *.c && ./programКомпилирует и запускает программу при изменении исходников.
3. Очистка экрана перед выполнением команды
ls *.log | entr -c tail -n 10 logfile.logПолезные флаги:
•
-c — очистка экрана перед выполнением команды;•
-p — перезапуск команды при изменении файла (по умолчанию);•
-r — перезапуск оболочки.Создание MBR-разделов с помощью fdisk
Важно перед началом
• Все операции могут удалить данные на диске.
• Убедись, что выбран правильный диск (
1. Посмотреть список дисков:
2. Запустить fdisk для нужного диска:
(замени
3. Создать новую MBR таблицу:
Внутри fdisk нажми:
4. Создать раздел:
Нажми:
Далее:
• Выбери тип:
•
•
• Укажи номер раздела (обычно
• Укажи первый сектор (
• Укажи размер (например
5. Изменить тип раздела (если нужно)
Нажми:
И выбери код:
•
•
•
Список всех типов:
6. Проверить результат:
7. Сохранить изменения:
Отмена (если передумал):
8. Обновить таблицу разделов:
Иногда нужно:
___________________
Быстрый пример:
Важно перед началом
• Все операции могут удалить данные на диске.
• Убедись, что выбран правильный диск (
/dev/sda, /dev/sdb и т.д.).1. Посмотреть список дисков:
lsblk или sudo fdisk -l2. Запустить fdisk для нужного диска:
sudo fdisk /dev/sdX(замени
sdX на нужный диск, например /dev/sdb)3. Создать новую MBR таблицу:
Внутри fdisk нажми:
o4. Создать раздел:
Нажми:
nДалее:
• Выбери тип:
•
p — primary (основной)•
e — extended (расширенный, если нужно больше 4 разделов)• Укажи номер раздела (обычно
1)• Укажи первый сектор (
Enter — по умолчанию)• Укажи размер (например
+10G)5. Изменить тип раздела (если нужно)
Нажми:
tИ выбери код:
•
83 — Linux•
82 — swap•
07 — NTFSСписок всех типов:
L6. Проверить результат:
p7. Сохранить изменения:
wОтмена (если передумал):
q8. Обновить таблицу разделов:
Иногда нужно:
sudo partprobe___________________
Быстрый пример:
sudo fdisk /dev/sdb
o
n
p
1
<Enter>
+5G
wdiff и cmp — сравнение файлов
Команда diff служит для сравнения двух файлов. Формат вызова команды:
В выводе команды отличающиеся строки помечаются символами:
□ строка из первого файла помечается символом
□ строка из второго файла — символом
полезные параметры команды diff:
Команда cmp также служит для сравнения двух файлов: если файлы идентичны, то ничего не выводит, а вот если файлы отличаются, то
Команда
Формат вызова команды сmp следующий:
полезные параметры команды cmp:
0 — файлы одинаковые;
1 — файлы отличаются;
2 — ошибка при открытии одного из файлов
Команда diff служит для сравнения двух файлов. Формат вызова команды:
diff параметры файл1 файл2В выводе команды отличающиеся строки помечаются символами:
□ строка из первого файла помечается символом
<;□ строка из второго файла — символом
>.полезные параметры команды diff:
-b Игнорируются пробельные символы в конце строки-В Игнорируются пустые строки-е Используется при создании сценария для редактора ed. Этот сценарий пре вращает первый файл во второй-w Игнорируются пробельные символы-у Вывод в два столбца-r Используется для сравнения файлов в подкаталогах. Вместо первого файла указывается первый каталог, вместо второго файла — соответственно, второй каталог.Команда cmp также служит для сравнения двух файлов: если файлы идентичны, то ничего не выводит, а вот если файлы отличаются, то
cmp выводит номер строки и номер символа в строке, откуда начинается различие.Команда
cmp более универсальна, поскольку она может использоваться для сравнения как текстовых, так и двоичных файлов. В отличие от нее, команда diff и ее аналоги умеют сравнивать только текстовые файлы.Формат вызова команды сmp следующий:
cmp [параметры] файл1 файл2полезные параметры команды cmp:
-с Вывод отличающихся символов-i n Игнорировать первые n символов-l Вывод позиций всех отличий, а не только первого-s Не выводить информацию на экран, при этом код возврата будет следующим:0 — файлы одинаковые;
1 — файлы отличаются;
2 — ошибка при открытии одного из файлов
nftables
Утилита командной строки для управления брандмауэром в Linux, которая заменяет устаревшую команду
Примеры использования:
1. Создание таблицы и цепочки:
Создать таблицу:
Создать цепочку в таблице:
2. Добавление правил:
Добавить правило для разрешения доступа из конкретного IP-адреса:
Добавить правило для перенаправления порта:
3. Удаление правил:
Удалить правило:
Удалить все правила из цепочки:
4. Сохранение и загрузка правил:
Сохранить правила в файл:
Загрузить правила из файла:
Утилита командной строки для управления брандмауэром в Linux, которая заменяет устаревшую команду
iptables. Примеры использования:
1. Создание таблицы и цепочки:
Создать таблицу:
nft add table inet mytableСоздать цепочку в таблице:
nft add chain inet mytable mychain2. Добавление правил:
Добавить правило для разрешения доступа из конкретного IP-адреса:
nft add rule inet mytable mychain ip saddr 192.168.1.100 accept
Добавить правило для блокировки порта: nft add rule inet mytable mychain tcp dport 22 dropДобавить правило для перенаправления порта:
nft add rule inet mytable mychain tcp dport 80 redirect to :8080
3. Удаление правил:
Удалить правило:
nft delete rule inet mytable mychain handle 5Удалить все правила из цепочки:
nft flush chain inet mytable mychain4. Сохранение и загрузка правил:
Сохранить правила в файл:
nft list ruleset > myfile.nftЗагрузить правила из файла:
nft -f myfile.nftКоманда stat
Используется для отображения подробной информации о файле или файловой системе.
Некоторые пользователи считают команду
Если вы хотите увидеть подробную информацию о файле, расположенном в текущем каталоге:
Чтобы проверить статус файловую систему где находится файл:
Параметр
Чтобы получить информацию о файле, на который указывают ссылки, нам нужно будет использовать параметр
Используется для отображения подробной информации о файле или файловой системе.
Некоторые пользователи считают команду
stat улучшенной версией команды ls -l. В то время как флаг -l предоставляет более подробную информацию о файлах. Но команда stat копает глубже и предоставляет дополнительную информацию.Если вы хотите увидеть подробную информацию о файле, расположенном в текущем каталоге:
stat file.txtЧтобы проверить статус файловую систему где находится файл:
stat -f /homeПараметр
-t используется для отображения информации в базовом формате:stat -t file.txtЧтобы получить информацию о файле, на который указывают ссылки, нам нужно будет использовать параметр
-L:stat -L file.txtУзнаем количество строк в файле.
Команда
Рассмотрим еще три способа, как посчитать количество строк в файле с помощью команд:
1. GREP
2. SED
3. AWK
Команда
wc, которая считает количество переходов на новую строку, ранее упоминалась. Рассмотрим еще три способа, как посчитать количество строк в файле с помощью команд:
1. GREP
grep -c $ file_name2. SED
sed -n \$= file_name3. AWK
awk 'END{ print NR }' file_nameКак редактировать файл конфигурации Linux
Все, что нужно для редактирования конфигурационного файла Linux, — это найти его и открыть в текстовом редакторе.
Подавляющее большинство конфигов хранят свои данные в виде обычного текста, и изменение их содержимого и сохранение файла — это все, что требуется администратору для обновления настроек.
Для этой работы подойдет множество различных текстовых редакторов, и обычно все зависит от личных предпочтений.
Обычно файлы конфигурации защищены от обычных учетных записей пользователей, поэтому не забудьте повысить свои привилегии, прежде чем пытаться их редактировать (команда
Предупреждение: изменение конфигурационных файлов, может привести к поломке всей программы.
Все, что нужно для редактирования конфигурационного файла Linux, — это найти его и открыть в текстовом редакторе.
Подавляющее большинство конфигов хранят свои данные в виде обычного текста, и изменение их содержимого и сохранение файла — это все, что требуется администратору для обновления настроек.
Для этой работы подойдет множество различных текстовых редакторов, и обычно все зависит от личных предпочтений.
Обычно файлы конфигурации защищены от обычных учетных записей пользователей, поэтому не забудьте повысить свои привилегии, прежде чем пытаться их редактировать (команда
sudo или su).Предупреждение: изменение конфигурационных файлов, может привести к поломке всей программы.
Инженеры перебрали... Linux-кейсов 🤩
23 апреля K2 Cloud и K2Тех проведут онлайн - митап — pебята будут разбирать реальные инженерные кейсы из практики про поломанный SSH, обновление ядер, поломку сети в ВМ и балансировщики с одинаковыми конфигами, но разными результатами.
А ещё можно принести свой кейс на разбор и получить приз.
Подробности и регистрация по ссылке.
23 апреля K2 Cloud и K2Тех проведут онлайн - митап — pебята будут разбирать реальные инженерные кейсы из практики про поломанный SSH, обновление ядер, поломку сети в ВМ и балансировщики с одинаковыми конфигами, но разными результатами.
А ещё можно принести свой кейс на разбор и получить приз.
Подробности и регистрация по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
Спец. атрибуты файлов
•
•
•
•
•
•
•
•
•
chattr +a some_file позволить открывать файл на запись только в режиме добавления•
chattr +c some_file позволяет ядру автоматически сжимать/разжимать содержимое файла.•
chattr +d some_file указывает утилите dump игнорировать данный файл во время выполнения backup’а•
chattr +i some_file делает файл недоступным для любых изменений: редактирование, удаление, перемещение, создание линков на него.•
chattr +s some_file позволяет сделать удаление файла безопасным, т.е. выставленный атрибут s говорит о том, что при удалении файла, место, занимаемое файлом на диске заполняется нулями, что предотвращает возможность восстановления данных.•
chattr +S some_file указывает, что, при сохранении изменений, будет произведена синхронизация, как при выполнении команды sync•
chattr +u some_file данный атрибут указывает, что при удалении файла содержимое его будет сохранено и при необходимости пользователь сможет его восстановить•
lsattr показать атрибуты файлов