GNU/Linux | Notes
2.39K subscribers
111 photos
8 files
75 links
Open Source, Dotfiles, Debian/Ubuntu, Software, Linux, Scripts, Notes, Terminal, Shell, Gnu, Tools, Games, Fun, Free Software Movement.

Автор: Кирилл Рехов
Почта: krekhov.dev@gmail.com
Кто я: https://xn--r1a.website/krxnotes/246
GitHub: https://github.com/krekhovx
Download Telegram
Когда пользователь удаляет файл в Linux, сам файл не удаляется полностью. Вместо этого лишь удаляется его запись в индексе файловой системы, и пространство, которое он занимал, помечается как доступное для записи. Фактическое содержимое файла остается на месте и может быть легко восстановлено, пока на это место не будет записана новая информация. Чтобы этого избежать можно перезаписать область памяти нулями или случайными числами.

Можно использовать shred для HDD дисков (для SSD это не актуально), он перезапишет содержимое файла случайными числами перед удалением. И если восстановить файл, то его невозможно будет прочитать. Важно заметить, что перезапись файлов удлиняет интервал удаления файла, делает этот процесс более медленным.

Добавить нули перед удалением файла, перезаписать 4 раза:
$ shred -uzn 4 file-with-secrets.txt


Можно посмотреть как это работает:
$ echo "hello world" > my-new-file.txt
$ shred -n 4 my-new-file.txt
$ cat my-new-file.txt

В выводе будет абракадабра (это получит хакер, который восстановит секретный файл с диска).

Можно еще добавить alias для этого:
alias rmf='shred -uzn 4'


Уничтожить весь диск:
$ shred /dev/<device>


shred не работает с каталогами, для них можно использовать wipe:
$ wipe -rf <dir>


shred не эффективен для файловых систем AIX, JFS, XFS, Ext3 и NFS из-за определенных особенностей и способа их работы.

#utils #security
👍1871🔥1
Что такое ГОСТ?

Это государственный стандарт. Криптографические алгоритмы, разработанные в СССР и используемые для защиты информации. Они включают в себя алгоритмы шифрования, хеширования, электронной подписи и другие методы защиты данных. ГОСТ алгоритмы были широко использованы в России и других странах бывшего Советского Союза, и многие из них все еще остаются популярными в сфере информационной безопасности.

Если касаться криптографии, то военные не любят пользоваться импортными методиками, для них лучше ГОСТ шифрование, сертифицированное (криптопро и подобное).

Некоторые из наиболее известных ГОСТ алгоритмов, которые могут быть использованы с помощью OpenSSL, включают в себя:
* ГОСТ 28147-89 (Magma)
* ГОСТ Р 34.10-2012 (GOST R 34.10-2012)
* ГОСТ Р 34.11-2012 (GOST R 34.11-2012)


$ openssl ciphers -v | grep GOST

Если нет ГОСТ шифров, необходимо собрать openssl с поддержкой данных шифров.

#utils #security
👍123🔥3👎1😁1
Немного про man, как осуществлять поиск по ключевым словам, как пользоваться

1. Главные пользовательские команды
2. Системные вызовы
3. Библиотека функции С
4. Устройства и сетевые интерфейсы
5. Формат файла
6. Игры
7. Смешанные файлы
8. Стандартные операции ядра Linux

Для создания man используется определенный синтаксис, язык. Маны хранятся обычно в сжатом виде .gz по пути /usr/share/man/*

Для того чтобы узнать какой man предоставляет утилита:
$ whatis stdout


Поиск по ключевому слову, примеры:
$ man -k unistd
$ man -K PRIx32
$ man -wK PRIx32
$ man -k '[a-z]' | grep '(3)'
$ man -f open
$ man 0 stdio.h
$ man 3 stdio


Поиск. Искать во всех man, которые касаются системных вызовах по ключевому слову change.
$ man -k [a-z] | grep '(2)' | grep 'change'


Если мануалов мало, можно осуществить обновление базы данных, подтянуть новое:
$ mandb


#utils
10👍4👌1
Поскольку Debian не тратит деньги на маркетинговые и рекламные компании, пользователи дистрибутива играют главную роль в его продвижении, распространяя славу о нём из уст в уста.

Выдержка из книги Настольная книга администратора Debian. Книга будет полезна системным администраторам Debian и сопровождающим deb пакетов.

#debian #books
11👍6🆒3🔥1
CD vs DVD

Скачивая свежий образ Debian я часто вижу CD/DVD термины, в чем разница и какой выбрать? Разница между ними заключается в количестве программного обеспечения, которое включено в них.

CD (Net) образ содержит минимальное количество пакетов и программного обеспечения, необходимых для установки базовой системы Debian. Этот образ обычно используется для установки базовой системы и последующего скачивания дополнительных пакетов из Интернета во время установки.

DVD образ, напротив, содержит гораздо больше пакетов и программного обеспечения, включая множество дополнительных утилит, программ и драйверов. Этот образ обычно используется для установки полной версии Debian сразу с большим количеством программного обеспечения.

#debian
👍19🤔2
Репозитории и зеркала. Что это и в чем разница

Репозиторий - это сервер или хранилище, где хранятся пакеты программного обеспечения для операционной системы.

Зеркало (mirror) - это копия репозитория, распределенная по различным серверам или местоположениям для обеспечения быстрого доступа и загрузки пакетов пользователями. Зеркала позволяют распределять нагрузку, обеспечивать отказоустойчивость и улучшить скорость загрузки пакетов.

Другими словами. Репозитории - это оригинальные хранилища кода, где хранится и отслеживается разработка проекта. Зеркала - это копии репозиториев, которые могут использоваться для ускорения скачивания или для обеспечения надежности доступа к коду.

#misc
👍16💯6
Существует масса пакетов, которые тянут за собой зависимости, они называются Recommends. Например, в пакете neofetch есть рекомендации без которых пакет и так отлично работает. Не хотелось бы засорять систему. Как сделать так, чтобы не ставились рекомендованные пакеты?

$ apt-get install neofetch --no-install-recommends


#debian #utils
👍117🔥3
eatmydata

В мейнтейнерской среде часто используется инструмент eatmydata для ускорения установки пакетов и выполнения операций. Этот инструмент позволяет временно отключить синхронизацию данных на диске, что может значительно ускорить выполнение операций ввода-вывода. eatmydata обходит использование системных вызовов, связанных с синхронизацией данных на диске, таких как fsync(), fdatasync() и msync(). Он также может обходить вызовы, связанные с блокировками файлов, такие как flock().

Однако, следует помнить, что использование eatmydata может повлечь за собой потерю данных в случае аварийного отключения компьютера или других проблем. Поэтому его использование следует рассматривать с осторожностью и только в тех случаях, когда ускорение работы действительно необходимо.

$ apt-get install eatmydata
$ eatmydata apt-get install <a lot of packages>


#debian #utils
4👍2
Foo и Bar — смысл, традиция, история

Это часто используемые метасинтаксические переменные в программировании и компьютерной литературе. Они служат для обозначения абстрактных переменных, функций, или других объектов, когда конкретные имена не важны или не известны. Использование этих терминов помогает разработчикам сосредоточиться на структуре и логике кода, а не на именах переменных.

Вот несколько причин, почему foo и bar так часто используются:

1. Традиция: Эти термины существуют с самого начала эры программирования и используются в учебниках, документации и примерах кода. Эта традиция продолжается и по сей день, потому что многие разработчики уже знакомы с этими терминами.

2. Универсальность: foo и bar не несут в себе никакого конкретного значения, что делает их идеальными для использования в качестве временных имен. Они могут обозначать что угодно — от переменных и функций до классов и объектов.

3. Легкость в запоминании: Эти короткие и простые слова легко запомнить и набрать, что делает их удобными для использования в примерах и тестовом коде.

4. Избежание конфликтов: Поскольку foo и bar не используются в реальных проектах, они минимизируют вероятность конфликтов с именами переменных, которые уже могут быть в коде.

История этих метасинтаксических переменных восходит к ранним дням компьютерной науки и хакерской культуры. Они, вероятно, происходят от военных терминов "FUBAR" (fouled up beyond all recognition -> испорченный до неузнаваемости), используемых во время Второй мировой войны, которые потом были адаптированы в область компьютерных наук.

Вместе с "foo" и "bar" иногда используются и другие похожие термины, такие как "baz", "qux", "quux" и так далее, особенно когда требуется несколько абстрактных имен.

#misc #theory
👾86👍43
Free Software Movement и Open Source — это схожие, но разные концепции

Free Software Movement (движение за свободное программное обеспечение) фокусируется на свободах пользователей: запускать, изучать, изменять и распространять программы. Его основоположник - Ричард Столлман. Free Software Movement использует термин "свободное программное обеспечение" (free software), где "free" означает свободу, а не отсутствие стоимости.

Open Source (открытое ПО) подчеркивает практические преимущества открытого кода: улучшенная безопасность, гибкость и сотрудничество. Оно менее акцентируется на этических вопросах по сравнению с Free Software Movement.

#software #opensource
7👍3🆒2
Что такое Debian Desktop и какие пакеты относятся к Desktop окружению?

Debian Desktop - это рабочее окружение, предназначенное для использования на настольных компьютерах. Оно включает в себя различное программное обеспечение, такое как графические оболочки (например, GNOME, KDE, Xfce), офисные приложения, веб браузеры, мультимедийные приложения и другие инструменты, необходимые для повседневной работы на ПК.

Некоторые пакеты, которые обычно относятся к Debian Desktop, включают в себя:

1. GNOME или KDE (графические оболочки)
2. LibreOffice (офисный пакет)
3. Firefox или Chromium (веб-браузеры)
4. VLC (мультимедийный проигрыватель)
5. GIMP (графический редактор)
6. Thunderbird (почтовый клиент)
7. Любые другие приложения, необходимые для работы и развлечений на рабочем столе

Эти пакеты обычно включены в образы установочных дисков Debian Desktop или доступны для установки из официальных репозиториев Debian.

В первую очередь Debian является серверной операционной системой, которая широко используется для управления серверами и сетями. Debian предлагает стабильность, безопасность и широкий выбор программного обеспечения, что делает его популярным выбором для развертывания серверов.

#debian
🐳43👍2
Кодовые имена дистрибутива Debian

Дистрибутивы Debian традиционно называются в честь персонажей из анимационного фильма "История игрушек" (Toy Story) студии Pixar. Вот несколько примеров:
...
Debian 5.0 - Lenny (в честь бинокля Лени)
Debian 6.0 - Squeeze (в честь инопланетных игрушек)
Debian 7.0 - Wheezy (в честь пингвина Визи)
Debian 8.0 - Jessie (в честь Джесси, ковбойки)
Debian 9.0 - Stretch (в честь осьминога Стретча)
Debian 10.0 - Buster (в честь собаки Бастера)
Debian 11.0 - Bullseye (в честь быка по имени Булзай)
Debian 12.0 - Bookworm (в честь книжного червя Букворм)
Debian 13.0 - Trixie (в честь динозавра Трикси)
... и т.д.

а первая версия Debian 1.1 называлась в честь главного героя Базза Лайтера - (Buzz). Забавно не правда ли =) Этот принцип сохранения имен в честь персонажей из "Истории игрушек" является традицией и помогает легко идентифицировать различные версии дистрибутива.

#debian
🥰17👍84❤‍🔥2👎1
Компоненты ядра операционной системы Linux

1. Process Scheduler (SCHED)
Планировщик процессов, отвечает за контроль над доступом процессов к CPU. Обеспечивает такое поведение ядра, при котором все процессы имеют справедливый доступ к центральному процессору.

2. Memory Manager (MM)
Менеджер памяти, обеспечивает различным процессам безопасный доступ к основной памяти системы. Кроме того, MM обеспечивает работу виртуальной памяти, которая позволяет процессам использовать больше памяти, чем реально доступно в системе. Выделенная, но неиспользуемая память вытесняется на файловую систему, и при необходимости - возвращается из неё обратно в память (swapping).

3. Virtual File System (VFS)
Уровень абстракции поверх конкретной реализации файловой системы. Целью VFS является обеспечение единообразного доступа клиентских приложений к различным типам файловых систем.

4. Network Interface (NET)
Сетевые интерфейсы, обеспечивает работу с различными сетевыми стандартами и сетевым оборудованием.

5. Inter-Process Communication (IPC)
Межпроцессное взаимодействие, обмен данными между потоками одного или разных процессов, реализуется посредством механизмов, предоставляемых ядром OC или процессом.

#kernel #theory
94👍3
exec и tee

С помощью exec можно делать замену дескрипторов/процессов.

tee читает из своего stdin и пишет в stdout например, сценарий script.sh:
#!/bin/bash
exec 2> >(tee file.log)
sleep .1
>&1 echo "hello 1"
>&2 echo "hello 2"


Затем выполнить:
$ ./script.sh

Разбор. Здесь два процесса, первый наш исполняемый script.sh, а второй это tee. У первого процесса stderr (2 файловый дескриптор) смотрит в pipe, у второго процесса stdin (1 файловый дескриптор) смотрит тоже в этот pipe, то есть весь stderr сценария будет перенаправляться в tee, который будет записывать это в файл file.log.

Часто с tee командами возникает (freeze shell) tee останавливает появления приглашения PS1, который ожидает EOF в своем stdin, в качестве обходного пути можно сделать sleep .1 как в примере выше.

Перенаправить stdout и stderr в file.txt:
exec &> >(tee file.txt)


Перенаправить stdout в file.txt:
exec 1> >(tee file.txt)


Перенаправить stderr в file.txt:
exec 2> >(tee file.txt)


Для заметки:

&> и >& одинаковы


2>&1 перенаправляет stderr в stdout


>/dev/null перенаправляет только stdout


Другой пример, сценарий main.sh:
#!/bin/bash
>&1 echo "hello 1"
>&2 echo "hello 2"


Трюки без exec, а с tee:
$ ./main.sh 2>&1 | tee logs/file.log
$ ./main.sh 2> >(tee logs/stderr.log)


#shell #utils
53👍2❤‍🔥1
Как перевести скрипт в бинарный формат (ELF)?

Создадим сценарий:
$ echo -e '#!/bin/sh\necho hello\nexit 0' > hello.sh


Установка:
$ apt-get install -y shc


Перевести скрипт в ELF файл:
$ shc -f hello.sh
$ ./hello.sh.x

hello

Удостовериться, что наш сценарий-программа действительно ELF:
$ file hello.sh.x

hello.sh.x: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=0d5954d51e07ffc91fce25485256ef210af3dbcc, for GNU/Linux 3.2.0, stripped

hello.sh.x аналогичен a.out файлу, получился ELF. shc отличный инструмент, чтобы скрыть скрипт в бинарном файле.

#utils #security
9🔥81
Бинарные модули и процессы

Бинарные модули
- это программы, которые уже скомпилированы и хранятся в готовом к выполнению формате для конкретной операционной системы и аппаратной архитектуры. Они ожидают своего запуска, находясь в состоянии пассивного ожидания (на диске).

Процессы - это абстракции ОС, представляющие собой данные бинарные модули в действии, загруженный двоичный код, виртуальная память, ресурсы ядра, такие как открытые файлы, связанный пользователь и т.д. Иными словами, процессы - это выполняющиеся бинарные модули (в памяти компьютера).

Основное отличие заключается в том, что бинарный модуль — это просто файл на диске, который может быть запущен, тогда как процесс — это активное выполнение этого файла в памяти с выделенными ресурсами и контекстом выполнения.

#theory
6👍4
Какие процессы бывают?

* Пользовательские процессы
(запускаются в режиме пользователя, ограниченные ресурсы).

* Процессы ядра (запускаются в режиме ядра, привилегированные процессы).

* Демоны (работают в фоне).

#theory
12👍3🔥1
Что такое поддержка?

В контексте операционных систем "поддержка" обычно означает, что разработчики продолжают предоставлять обновления безопасности, исправления ошибок и иногда новые функции для определенной версии операционной системы.

Когда говорят, что поддержка для определенной версии операционной системы закончилась, это означает, что производитель перестал предоставлять обновления для этой версии. Это означает, что безопасность и стабильность операционной системы могут стать уязвимыми, так как обновления безопасности не будут выпускаться.

Например, если в CentOS 8 закончилась поддержка, это означает, что не будут выпускаться обновления безопасности и исправления ошибок для этой версии. В то время как поддержка для CentOS 7, возможно, продолжается, и обновления будут выпускаться.

Например, Debian Bullseye имеет стабильный выпуск и имеет поддержку. Обычно стабильные версии дистрибутивов длятся около 5 лет. Однако это может измениться в зависимости от решения проекта.

#misc #theory
👍432
Как установить скаченный шрифт?

Например, появилось необходимость установить новый шрифт в терминале. Скачиваем шрифт из интернета (обычно с форматом .ttf), затем кладем его в ~/.fonts директорию.

Обновить кэш:
$ fc-cache -fv


Проверить доступность:
$ fc-list | grep "my new font"


Затем в настройках терминала выбрать новый шрифт.

#utils #terminal
13👍6🔥1
Что такое FAQ?

FAQ - это аббревиатура от английского выражения "Frequently Asked Questions", что в переводе на русский язык означает "Часто задаваемые вопросы". FAQ представляет собой список самых часто задаваемых вопросов и ответов на них, который обычно размещается на веб-сайте или в документации к продукту или услуге. Это помогает пользователям быстро найти ответы на свои вопросы без необходимости обращаться к службе поддержки или другим источникам информации.

#misc #theory
🗿106👍5