Контрольные суммы
Команда md5sum
Опции:
Вычислить контрольную сумму файла:
Проверить контрольную сумму с помощью файла:
Проверить контрольную сумму с заданным значением:
Команда sha1sum
Вычислить контрольную сумму файла:
Проверить контрольную сумму с помощью файла:
Проверить контрольную сумму с заданным значением:
Команда sha256sum
Вычислить контрольную сумму файла:
Проверить контрольную сумму с помощью файла:
Проверить контрольную сумму с заданным значением:
Команда md5sum
md5sum [опции] [файл]Опции:
-c: Проверить контрольную сумму из файла-b: Вывести контрольную сумму в двоичном формате-t: Проверить контрольную сумму с помощью заданного значенияВычислить контрольную сумму файла:
md5sum файлПроверить контрольную сумму с помощью файла:
md5sum -c контрольная_сумма.txtПроверить контрольную сумму с заданным значением:
md5sum -t контрольная_сумма файлКоманда sha1sum
Команда sha1sum аналогична md5sum, но использует алгоритм хэширования SHA-1.
Вычислить контрольную сумму файла:
sha1sum файлПроверить контрольную сумму с помощью файла:
sha1sum -c контрольная_сумма.txtПроверить контрольную сумму с заданным значением:
sha1sum -t контрольная_сумма файлКоманда sha256sum
Команда sha256sum аналогична md5sum, но использует алгоритм хэширования SHA-256.
Вычислить контрольную сумму файла:
sha256sum файлПроверить контрольную сумму с помощью файла:
sha256sum -c контрольная_сумма.txtПроверить контрольную сумму с заданным значением:
sha256sum -t контрольная_сумма файлУвидеть полный список инструментов криптографии, установленных в вашем дистрибутиве Linux, можно с помощью команды:
Некоторые из инструментов:
Duplicity
Шифрует резервные копии. Чтобы установить инструмент в дистрибутиве Fedora, введите команду
gpg-zip
Использует программу GNU Privacy Guard для шифрования или подписи файлов в архиве. Устанавливается по умолчанию
Openssl
Инструмент, реализующий протоколы Secure Sockets Layer (SSL) и Transport Layer Security (TLS). Эти протоколы требуют шифрования. Устанавливается по умолчанию
Seahorse
Программа шифрования ключей GNU Privacy Guard. Установлена по умолчанию в дистрибутиве Ubuntu. Чтобы установить в дистрибутивах Fedora и RHEL, введите команду
ssh
Шифрует удаленный доступ по сети. Устанавливается по умолчанию
Zipcloak
Шифрует записи в ZIP-файле. Устанавливается по умолчанию
man -k cryptНекоторые из инструментов:
Duplicity
Шифрует резервные копии. Чтобы установить инструмент в дистрибутиве Fedora, введите команду
yum install duplicity. Чтобы установить в Ubuntu, введите команду sudo apt-get install duplicity gpg-zip
Использует программу GNU Privacy Guard для шифрования или подписи файлов в архиве. Устанавливается по умолчанию
Openssl
Инструмент, реализующий протоколы Secure Sockets Layer (SSL) и Transport Layer Security (TLS). Эти протоколы требуют шифрования. Устанавливается по умолчанию
Seahorse
Программа шифрования ключей GNU Privacy Guard. Установлена по умолчанию в дистрибутиве Ubuntu. Чтобы установить в дистрибутивах Fedora и RHEL, введите команду
yum install seahorse ssh
Шифрует удаленный доступ по сети. Устанавливается по умолчанию
Zipcloak
Шифрует записи в ZIP-файле. Устанавливается по умолчанию
К посту о [ поиске 5 самых больших файлов в системе ] можно добавить утилиту
После установки:
Запустив командой
Программа с псведографическим интерфейсом позволит перемещаться по каталогам отмечая файлы, которые занимают больше всего пространства в той или иной директории.
ncduПосле установки:
sudo apt install ncduЗапустив командой
ncdu /Программа с псведографическим интерфейсом позволит перемещаться по каталогам отмечая файлы, которые занимают больше всего пространства в той или иной директории.
Инфраструктура для сборки модулей ядра Linux
Первично установленная по умолчанию система Linux непригодна для сборки модулей ядра . В ней отсутствуют некоторые специфические компоненты, такие как хэдеры ядра и другое.
Но с самого начала надо проверить наличие компилятора GCC и утилиты make. Если они отсутствуют, установить их.
Далее в Fedora, CentOS, RedHat, ... нам необходимы дополнительные пакеты
Пакет kernel-devel.* предоставляется в репозитариях только для последнего обновляемого ядра, поэтому логично начать с обновления ядра:
В дистрибутивах Debian/Ubuntu почти то же самое, картина, только здесь вам необходима установка только одного пакета (linux-headers-* - выбранного для вашей архитектуры ядра)
Первично установленная по умолчанию система Linux непригодна для сборки модулей ядра . В ней отсутствуют некоторые специфические компоненты, такие как хэдеры ядра и другое.
Но с самого начала надо проверить наличие компилятора GCC и утилиты make. Если они отсутствуют, установить их.
Далее в Fedora, CentOS, RedHat, ... нам необходимы дополнительные пакеты
kernel-headers.* (обычно устанавливается вместе с ядром) и kernel-devel.* : yum list all kernel*Пакет kernel-devel.* предоставляется в репозитариях только для последнего обновляемого ядра, поэтому логично начать с обновления ядра:
sudo yum update kernel*sudo yum install kernel-devel.i686В дистрибутивах Debian/Ubuntu почти то же самое, картина, только здесь вам необходима установка только одного пакета (linux-headers-* - выбранного для вашей архитектуры ядра)
Удаление файлов, которое старше N дней
Существует специальная команда
Запустив эту команду:
В результате вы увидите полный список файлов в выбранном каталоге, которые соответствуют заданному критерию.
Чтобы очистить, введите команду:
Теперь в папке у вас остались только те файлы, которые хранятся меньше 30 дней
Существует специальная команда
find, которая отвечает за поиск файлов на компьютере. А с помощью опции -mtime получится найти только те файлы, дата изменения которых старше заданного временного промежутка. В качестве примера возьмем каталог Downloads и срок в 30 дней.Запустив эту команду:
find ~/Downloads -type f -mtime +30В результате вы увидите полный список файлов в выбранном каталоге, которые соответствуют заданному критерию.
Чтобы очистить, введите команду:
find ~/Downloads -type f -mtime +35 -deleteТеперь в папке у вас остались только те файлы, которые хранятся меньше 30 дней
Pluggable Authentication Modules (PAM)
Набор библиотек, который позволяет системному администратору Linux настраивать методы аутентификации пользователей.
Он обеспечивает гибкий и централизованный способ переключения методов аутентификации для защищенных приложений с помощью файлов конфигурации.
Существуют библиотеки Linux PAM, позволяющие выполнять аутентификацию с использованием таких методов, как локальные пароли, LDAP или считыватели отпечатков пальцев.
Linux PAM является развитием архитектуры Unix Pluggable Authentication Modules.
Набор библиотек, который позволяет системному администратору Linux настраивать методы аутентификации пользователей.
Он обеспечивает гибкий и централизованный способ переключения методов аутентификации для защищенных приложений с помощью файлов конфигурации.
Существуют библиотеки Linux PAM, позволяющие выполнять аутентификацию с использованием таких методов, как локальные пароли, LDAP или считыватели отпечатков пальцев.
Linux PAM является развитием архитектуры Unix Pluggable Authentication Modules.
Команды системной информации
arch отобразить архитектуру компьютераuname -muname -r отобразить используемую версию ядраdmidecode -q показать аппаратные системные компоненты — (SMBIOS / DMI)hdparm -i /dev/hda вывести характеристики жесткого дискаhdparm -tT /dev/sda протестировать производительность чтения данных с жесткого дискаcat /proc/cpuinfo отобразить информацию о процессореcat /proc/interrupts показать прерыванияcat /proc/meminfo проверить использование памятиcat /proc/swaps показать файл(ы) подкачкиcat /proc/version вывести версию ядраcat /proc/net/dev показать сетевые интерфейсы и статистику по нимcat /proc/mounts отобразить смонтированные файловые системыlspci -tv показать в виде дерева PCI устройстваlsusb -tv показать в виде дерева USB устройстваdate вывести системную датуcal 2024 вывести таблицу-календарь 2024-го годаdate 052012002024.00 установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)clock -w сохранить системное время в BIOSТри способа создания ссылок на файлы.
□ Абсолютные ссылки.
Создаются относительно корневого (
□ Ссылки домашнего каталога.
Тильда (
□ Относительные ссылки.
Создаются относительно текущего (рабочего) каталога. Если пользователь
□ Абсолютные ссылки.
Создаются относительно корневого (
/) каталога, например /home/vasya/файл.txt для ссылки на файл файл.txt в домашнем каталоге пользователя vasya. Такие ссылки начинаются со слеша (/).□ Ссылки домашнего каталога.
Тильда (
~) ссылается на домашний каталог пользователя. Если имя файла начинается с этого символа, значит, им был замещен путь до домашнего каталога пользователя. Таким образом, ~/файл.txt эквивалентно /home/vasya/файл.txt□ Относительные ссылки.
Создаются относительно текущего (рабочего) каталога. Если пользователь
vasya работает в своем домашнем каталоге, ссылка файл.txt указывает на файл /home/vasya/файл.txt. Относительные ссылки также могут включать в себя подкаталоги, например подкаталог/другой_файл.txtКоманды, отображающие информацию о запущенных процессах, получают бóльшую часть этой информации
в виде необработанных данных, хранящихся в файловой системе
Каждый процесс хранит свою информацию в подкаталоге
Часть необработанных данных можно просмотреть, отобразив содержимое файлов в одном из этих каталогов (используя команды
в виде необработанных данных, хранящихся в файловой системе
/proc. Каждый процесс хранит свою информацию в подкаталоге
/proc с именем идентификатора этого процесса. Часть необработанных данных можно просмотреть, отобразив содержимое файлов в одном из этих каталогов (используя команды
cat или less).Bash — довольно развитый командный интерпретатор, поддерживающий кучу разных настроек. Причем из этих настроек можно получить гораздо больше профита, чем из настроек поведения терминала.
Список всех возможных опций можно посмотреть командой:
Cамые интересные из них:
autocd — если эта опция включена, то можно просто написать путь к каталогу (опустив команду cd), чтобы в него переместиться;
cdspell — bash будет пытаться исправлять простые опечатки (например, /ect/init.d вместо /etc/init.d) в аргументах команды cd;
checkjobs — не дает выйти из консоли, пока в ней есть выполняющиеся задания;
cmdhist — объединение многострочных команд в одну строку так, чтобы тебе было проще искать их в истории;
dirspell — исправление небольших ошибок в написании имени директории при автодополнении;
globstar — позволит использовать конструкцию вида
Очень удобный новый wildchar — например, данная конструкция отобразит все mp3 в текущем и вложенных каталогах:
Гораздо удобнее, чем:
Устанавливаются опции следующим образом:
Список всех возможных опций можно посмотреть командой:
shopt -p Cамые интересные из них:
autocd — если эта опция включена, то можно просто написать путь к каталогу (опустив команду cd), чтобы в него переместиться;
cdspell — bash будет пытаться исправлять простые опечатки (например, /ect/init.d вместо /etc/init.d) в аргументах команды cd;
checkjobs — не дает выйти из консоли, пока в ней есть выполняющиеся задания;
cmdhist — объединение многострочных команд в одну строку так, чтобы тебе было проще искать их в истории;
dirspell — исправление небольших ошибок в написании имени директории при автодополнении;
globstar — позволит использовать конструкцию вида
**, обозначающую «все файлы, начиная с текущего каталога, рекурсивно»;Очень удобный новый wildchar — например, данная конструкция отобразит все mp3 в текущем и вложенных каталогах:
ls **/*.mp3Гораздо удобнее, чем:
find ./ -name "*.mp3" -type f -printУстанавливаются опции следующим образом:
shopt -s autocd cdspell checkjobs cmdhist dirspell globstarЯдро Linux и дистрибутивы, основанные на нем, разрабатываются отдельно от другого, поэтому у ядра есть своя схема управления версиями. Некоторые выпуски ядра достигают известной популярности, поэтому нет ничего необычного в том, что несколько независимых дистрибутивов используют одно и то же ядро.
Чтобы узнать, в каком ядре работает данная система, выполните команду:
Остальные ключи:
Чтобы узнать, в каком ядре работает данная система, выполните команду:
uname -r Остальные ключи:
-s Имя ядра-n Имя узла системы (имя хоста). Это имя, которое система использует при общении по сети. Выдает тот же вывод, что и команда hostname-v Версия ядра-m Аппаратное имя-p Архитектура процессора-i Аппаратная платформа-o Распечатать название операционной системы. В системах Linux это «GNU / Linux»-a Ведет себя так же, как если бы были заданы: -snrvmoМодификаторы прав доступа
Как у любого правила, в жёсткой системе прав доступа существуют свои исключения. Это так называемые дополнительные атрибуты файла:
⁃ Sticky bit (Save Text Attribute) — "липкий" бит;
⁃ SUID (Set User ID) — установка идентификатора пользователя;
⁃ SGID — установка идентификатора группы.
Sticky bit для файлов в современных операционных системах потерял свое значение, но если sticky bit установлен для каталога, то пользователь, несмотря на то, что ему разрешена запись в этот каталог, может удалять только те файлы, владельцем которых он является.
Если установлены права доступа SUID для исполнительных файлов, то при запуске на выполнение получает не права пользователя, за- пустившего его, а права владельца файла.
SGID для файлов — аналогично установке бита SUID, только вместо владельца файла используется группа владельца, для каталогов — файлы, создающиеся в этом каталоге, будут иметь установки группы такие же, как у каталога.
Как у любого правила, в жёсткой системе прав доступа существуют свои исключения. Это так называемые дополнительные атрибуты файла:
⁃ Sticky bit (Save Text Attribute) — "липкий" бит;
⁃ SUID (Set User ID) — установка идентификатора пользователя;
⁃ SGID — установка идентификатора группы.
Sticky bit для файлов в современных операционных системах потерял свое значение, но если sticky bit установлен для каталога, то пользователь, несмотря на то, что ему разрешена запись в этот каталог, может удалять только те файлы, владельцем которых он является.
Если установлены права доступа SUID для исполнительных файлов, то при запуске на выполнение получает не права пользователя, за- пустившего его, а права владельца файла.
SGID для файлов — аналогично установке бита SUID, только вместо владельца файла используется группа владельца, для каталогов — файлы, создающиеся в этом каталоге, будут иметь установки группы такие же, как у каталога.
Время действия введенного пароля
Введенный пароль в терминале действует в течение какого-то времени, а затем его приходится вводить вновь.
По умолчанию время действия sudo-сeссии равняется 15 минутам.Таким образом, по истечении этого времени вам придется заново вводить пароль при использовании команд, требующих повышенных привилегий.
Изменить это значение довольно легко. Открывай для редактирования файл
В нашем случае число 42 означает время действия sudo-ceccии, которое равно 42 минутам. Если вы хотите задать другой промежуток времени действия - пожалуйста, в минутах.
Если установить параметр равным
Введенный пароль в терминале действует в течение какого-то времени, а затем его приходится вводить вновь.
По умолчанию время действия sudo-сeссии равняется 15 минутам.Таким образом, по истечении этого времени вам придется заново вводить пароль при использовании команд, требующих повышенных привилегий.
Изменить это значение довольно легко. Открывай для редактирования файл
/etc/sudoers и найди в нем строку Defaults env_reset. Поставь после нее запятую и добавь следующий параметр: timestamp_timeout=42 В нашем случае число 42 означает время действия sudo-ceccии, которое равно 42 минутам. Если вы хотите задать другой промежуток времени действия - пожалуйста, в минутах.
Если установить параметр равным
нулю, то придется каждый раз вводить пароль, когда выполняются команды с sudo. Если же установите значение -1, то пароль будет запрошен только один раз, пока не закроется окно терминала.Слушаем радио через терминал
При отсутствии, к примеру, графической оболочки возможно прослушивать интернет-радиостанций в терминальном режиме.
Pyradio – это бесплатный инструмент командной строки с открытым исходным кодом, который позволяет это сделать.
чтобы установить Pyradio на вашу Ubuntu:
Запускаем воспроизведение случайной станции из списка:
(кнопками-стрелками выбираем станцию и тыкаем enter)
При отсутствии, к примеру, графической оболочки возможно прослушивать интернет-радиостанций в терминальном режиме.
Pyradio – это бесплатный инструмент командной строки с открытым исходным кодом, который позволяет это сделать.
чтобы установить Pyradio на вашу Ubuntu:
sudo snap install pyradioЗапускаем воспроизведение случайной станции из списка:
pyradio --play(кнопками-стрелками выбираем станцию и тыкаем enter)
Иерархия процессов
Внутри системы вместе с каждым процессом сохраняется PID-номер его родительского процесса. Эта информация позволяет построить дерево процессов, на вершине которого всегда располагается процесс init. - первая программа, запускаемая сразу же после загрузки ядра.
Нагляднее всего увидеть иерархию процессов с помощью:
Сразу видно какой процесс является родителем какого. Когда нужно будет убить целый ряд процессов, в случае когда интересующие вас процессы являются дочерними для одного родительского, то можно просто убить родителя.
Передав PID в качестве аргумента
Внутри системы вместе с каждым процессом сохраняется PID-номер его родительского процесса. Эта информация позволяет построить дерево процессов, на вершине которого всегда располагается процесс init. - первая программа, запускаемая сразу же после загрузки ядра.
Нагляднее всего увидеть иерархию процессов с помощью:
pstree -up | lessСразу видно какой процесс является родителем какого. Когда нужно будет убить целый ряд процессов, в случае когда интересующие вас процессы являются дочерними для одного родительского, то можно просто убить родителя.
Передав PID в качестве аргумента
pstree - отображается дерево с данным процессом в качестве корня.Пакеты программного обеспечения - одно из самых слабых мест для засорения системы. Если вы устанавливали много приложений, скорее всего, они потянули за собой большое количество зависимостей, которые после удаления этих приложений не представляют никакой пользы. Поэтому очистка Ubuntu обязательно должна включать удаление ненужных пакетов.
Вот несколько команд выполняющих очистку системы:
Удалить неиспользуемые пакеты из кэша
Очистка кэша в Ubuntu, утилиты apt:
Удаление ненужных зависимостей:
Вообще хорошей практикой будет удалять зависимости сразу при удалении приложения:
Вот несколько команд выполняющих очистку системы:
Удалить неиспользуемые пакеты из кэша
sudo apt autocleanОчистка кэша в Ubuntu, утилиты apt:
sudo apt cleanУдаление ненужных зависимостей:
sudo apt autoremoveВообще хорошей практикой будет удалять зависимости сразу при удалении приложения:
sudo apt autoremove приложениеРабота с командой readelf и файлами ELF
Чтобы отобразить справку по команде readelf:
Проверить, является ли файл файлом ELF.
Сгенерировать elf файл с помощью компилятора gcc.
Примечание: имя файла — filename.c, а имя файла ELF — elf_file.
Отобразить заголовки ELF файла
Отображать информацию о разных участках адресного пространства процесса.
Отобразить таблицу символов.
Чтобы отобразить справку по команде readelf:
readelfПроверить, является ли файл файлом ELF.
file name_elf_fileСгенерировать elf файл с помощью компилятора gcc.
gcc filename.c -o elf_fileПримечание: имя файла — filename.c, а имя файла ELF — elf_file.
Отобразить заголовки ELF файла
readelf -h name_elf_fileОтображать информацию о разных участках адресного пространства процесса.
readelf -S name_elf_fileОтобразить таблицу символов.
readelf -s name_elf_fileВведенные ранее команды в терминале сохраняются в файле .bash_history (расположен в домашнем каталоге пользовательской учетной записи)
Чтобы посмотреть весь список, введите:
Вывод можно сократить, оставив определенные, к примеру:
Список в файле пронумерован, поэтому выполнить повторно отработанную команду, к примеру № 13, можно введя:
По умолчанию этот файл хранит до 1000 введенных ранее команд (по факту, обычно больше).
Чтобы посмотреть весь список, введите:
historyВывод можно сократить, оставив определенные, к примеру:
history | grep cdСписок в файле пронумерован, поэтому выполнить повторно отработанную команду, к примеру № 13, можно введя:
!13По умолчанию этот файл хранит до 1000 введенных ранее команд (по факту, обычно больше).
Команда id
Предназначена для вызова одноименной утилиты, осуществляющей вывод информации об учетной записи пользователя.
Базовый синтаксис:
Для вывода информации об учетной записи текущего пользователя следует использовать команду
Для вывода информации об учетной записи пользователя с с заданным именем нужно использовать команду id и передать ей имя интересующего вас пользователя:
Для вывода идентификаторов и учетной записи и групп пользователя следует использовать параметры
Предназначена для вызова одноименной утилиты, осуществляющей вывод информации об учетной записи пользователя.
Базовый синтаксис:
id [параметры] [имя_пользователя]Для вывода информации об учетной записи текущего пользователя следует использовать команду
id без каких-либо параметров.Для вывода информации об учетной записи пользователя с с заданным именем нужно использовать команду id и передать ей имя интересующего вас пользователя:
id usernameДля вывода идентификаторов и учетной записи и групп пользователя следует использовать параметры
-u, -g и -G. При необходимости вывода имен вместо идентификаторов следует добавить параметр -n.Выход из редактора vi
Чтобы завершить работу, используйте следующие команды для сохранения или выхода из файла:
Если вы удалили файл по ошибке, команда
Чтобы завершить работу, используйте следующие команды для сохранения или выхода из файла:
ZZ — сохраняет текущие изменения в файле и выходит из vi; :w — сохраняет текущий файл, можно продолжать редактирование; :wq — делает то же самое, что и ZZ; :q — выходит из текущего файла. Работает только в случае, если все изменения сохранены; :q! — завершает работу с текущим файлом, не сохраняя только что внесенные в него изменения. Если вы удалили файл по ошибке, команда
:q! — лучший способ выйти из редактора и отменить все изменения. Файл вернется к последней измененной версии. Поэтому, если вы просто сохранили его с помощью :w, все сделанные до этого момента изменения сохранились. Но, несмотря на то что файл сохранен, можно ввести u и отказаться от изменений (вплоть до начала всего редактирования), а затем сохранить снова.Как происходит завершение процесса в Linux
Управление всеми процессами в ОС происходит с помощью сигналов. Обычно сигналы передает система, но пользователь также может их передавать с помощью специальных команд.
Завершение процесса также происходит с помощью сигналов. Когда процессу приходит сигнал о необходимости завершиться, он должен выполнить некоторые подготовительные действия: завершить дочерние процессы, удалить временные файлы, сокеты и тд.
Основные сигналы:
• SIGINT - самый безобидный сигнал завершения, означает Interrupt (Ctrl+C).
• SIGQUIT - сигнал, сообщающей программе, что ей нужно завершиться и она может выполнить корректное завершение или проигнорировать сигнал (Ctrl+/).
• SIGHUP - сообщает процессу, что соединение с управляющим терминалом разорвано, отправляется, в основном, системой при разрыве соединения с интернетом;
• SIGTERM - немедленно завершает процесс, но обрабатывается программой, поэтому позволяет ей завершить дочерние процессы и освободить все ресурсы;
• SIGKILL - немедленно завершает процесс и обрабатывается ядром. Поэтому ресурсы и дочерние процессы остаются запущенными.
Управление всеми процессами в ОС происходит с помощью сигналов. Обычно сигналы передает система, но пользователь также может их передавать с помощью специальных команд.
Завершение процесса также происходит с помощью сигналов. Когда процессу приходит сигнал о необходимости завершиться, он должен выполнить некоторые подготовительные действия: завершить дочерние процессы, удалить временные файлы, сокеты и тд.
Основные сигналы:
• SIGINT - самый безобидный сигнал завершения, означает Interrupt (Ctrl+C).
• SIGQUIT - сигнал, сообщающей программе, что ей нужно завершиться и она может выполнить корректное завершение или проигнорировать сигнал (Ctrl+/).
• SIGHUP - сообщает процессу, что соединение с управляющим терминалом разорвано, отправляется, в основном, системой при разрыве соединения с интернетом;
• SIGTERM - немедленно завершает процесс, но обрабатывается программой, поэтому позволяет ей завершить дочерние процессы и освободить все ресурсы;
• SIGKILL - немедленно завершает процесс и обрабатывается ядром. Поэтому ресурсы и дочерние процессы остаются запущенными.