GNU/Linux | Notes – Telegram
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://news.1rj.ru/str/krxnotes/246
GitHub: https://github.com/krekhovx
Download Telegram
Debian и Ubuntu, в чем разница?

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

1. Происхождение и разработка:
- Debian: Это проект, ориентированный на сообщество, который существует с 1993 года. Debian известен своей стабильностью и строгим циклом выпуска обновлений, что делает его подходящим для серверов и критически важных систем.
- Ubuntu: Это дистрибутив, основанный на Debian, созданный компанией Canonical в 2004 году. Ubuntu имеет более частые выпуски и ориентирован на удобство использования как для настольных компьютеров, так и для серверов. Ubuntu является проектом с открытым исходным кодом.

2. Цикл выпуска:
- Debian: Имеет три основных ветки: стабильная (stable), тестируемая (testing), и нестабильная (unstable). Стабильная версия обновляется реже, но считается более надежной.
- Ubuntu: Выпускает новые версии каждые шесть месяцев. Также есть версии с долгосрочной поддержкой (LTS), которые обновляются каждые два года и поддерживаются в течение пяти лет.

3. Поддержка и сообщество:
- Debian: Полностью управляется сообществом, с акцентом на свободу и открытость кода.
- Ubuntu: Поддерживается Canonical, которая предлагает профессиональную поддержку и услуги. Сообщество Ubuntu также активно и предоставляет много ресурсов для пользователей.

4. Пакетный менеджмент:
- Оба дистрибутива используют пакетный менеджер APT и формат пакетов .deb, но в Ubuntu могут быть включены более новые версии программ из-за более быстрого цикла разработки.

5. Целевые пользователи:
- Debian: Часто выбирается пользователями и администраторами, которые ценят стабильность и безопасность.
- Ubuntu: Популярен среди новичков и тех, кто ищет более удобный и дружественный интерфейс с активной поддержкой и документацией.

Хотя Canonical, компания, стоящая за Ubuntu, предоставляет коммерческую поддержку и предлагает некоторые платные сервисы, сама операционная система остается свободной и открытой. Что за сервисы?

1. Ubuntu Advantage: Подписка на корпоративную поддержку, которая включает техническую поддержку, управление патчами и обновлениями, а также доступ к инструментам для управления инфраструктурой.

2. Landscape: Инструмент для управления и мониторинга большого количества серверов и рабочих станций на базе Ubuntu, доступный как часть Ubuntu Advantage.

3. Livepatch Service: Сервис, позволяющий применять критические обновления ядра Linux без перезагрузки системы, что важно для серверов и критически важных систем.

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

#debian
👍11🔥62👎1
😁22🔥5
Что такое Secure Boot?

Технология Secure Boot нацелена на предотвращение исполнения недоверенного кода при загрузке операционной системы. Устройства с Secure Boot содержат в энергонезависимой памяти базу данных открытых ключей, которыми проверяются подписи загружаемых UEFI-приложений вроде загрузчиков ОС и драйверов. Приложения, подписанные доверенным ключом и с правильной контрольной суммой, допускаются к загрузке, остальные блокируются. Если подписанное приложение предоставляет возможность недобросовестного использования напрямую или путём загрузки других приложений, оно становится угрозой безопасности всех пользователей, доверяющих этому приложению.

Убедитесь, что ваша система поддерживает Secure Boot. Это можно сделать в настройках UEFI/BIOS.

Пакеты, которые обеспечивают поддержку Secure Boot в Debian: shim-signed, grub-efi-amd64-signed, и mokutil.

Более подробно: https://habr.com/ru/articles/308032/

#security #theory
👍7❤‍🔥3
Что такое GRUB?

GRUB (GRand Unified Bootloader)
в основном предназначен для загрузки операционной системы. Он управляет процессом загрузки, позволяя пользователю выбрать операционную систему или ядро, которое он хочет загрузить, и затем передает управление этому выбранному ядру.

Основная функция загрузчика Linux включает в себя возможность выполнять следующие задачи:
* выбирать одно из нескольких ядер;
* переключаться между наборами параметров ядра;
* разрешить пользователю вручную переопределять и редактировать имена и параметры образов ядра;
* обеспечить поддержку загрузки других операционных систем;

Файл конфигурации GRUB, который отображается при нажатии кнопки e в меню GRUB, можно прочитать в файле /boot/grub/grub.cfg на диске. Однако, не рекомендуется редактировать этот файл напрямую, так как он обычно генерируется автоматически с помощью команды update-grub, которая использует шаблоны и настройки из /etc/default/grub и скриптов в /etc/grub.d/

1. GRUB не участвует в процессе выключения. Его роль ограничивается начальной фазой загрузки системы.
2. Процесс выключения (или перезагрузки) управляется самим операционным ядром (kernel) и операционной системой, которые выполняют последовательность действий для корректного завершения всех процессов, демонтирования файловых систем и отключения питания.

Таким образом, когда вы выключаете систему, GRUB не играет никакой роли. Его задача завершается после того, как операционная система была успешно загружена.

#kernel #theory
11❤‍🔥3👍2
Debian Gnu/Linux installer menu (BIOS mode) - это меню, которое появляется при запуске установочного образа Debian на компьютере с BIOS (или в режиме совместимости с BIOS, если используется UEFI). Это меню позволяет пользователю выбрать различные опции установки и запуска.

Установщик находится на самом установочном ISO-образе Debian. Когда вы создаете загрузочный носитель (например, USB накопитель или DVD) с этим образом, установщик становится доступным для запуска на компьютере. Установщик включает в себя все необходимые компоненты и программы для выполнения установки операционной системы на ваш диск.

Установщик включается в установочный ISO-образ разработчиками и поддерживающими проект сообществом Debian.

Установщик обеспечивает распаковку и установку пакетов, настройку системы, создание учетных записей, настройку загрузчика (включая GRUB), разметку диска, настройку сети и другие критически важные шаги для успешной установки операционной системы.

#debian
82
😁251
UEFI vs Legacy BIOS (режимы загрузки)

UEFI
новый BIOS, а Legacy старый (синий экран).

UEFI:
* быстрее загружается
* есть функция безопасности Secure Boot
* драйвера грузятся в UEFI и передаются затем ОС
* имеет современный GUI
* формат загрузки дисков GPT

Legacy BIOS
:
* драйвера загружаются во время запуска ОС, после загрузки BIOS
* синий привычный экран, старый интерфейс
* формат загрузки дисков MBR

#theory
11👍31
Что такое Аудит и для чего он нужен?

Нужен для отслеживания критичных с точки зрения безопасности системных событий:
* запуск и завершение работы системы;
* чтение, запись и изменение прав доступа к файлам;
* инициация сетевых соединений;
* попытки неудачной авторизации в системе;
* изменение сетевых настроек;
* изменение информации о пользователях и группах;
* запуск и остановка приложений;
* выполнение системных вызовов;

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

$ apt-get install -y auditd
$ systemctl status auditd


Конфигурация: /etc/audit/auditd.conf

Выполнить программу и отследить ее события (работает наподобие strace):
$ autrace <path-to-program>

После autrace:
$ ausearch -i -p <pid>


События 1000 пользователя:
$ ausearch -ui 1000


Поиск событий по коду выхода:
$ ausearch -i -e -13


Искать события open:
$ ausearch -ui 1000 -sc open


Номера всех системных вызовов:
$ ausyscall --dump


#kernel #security #utils
7👍1
Внутреннее устройство Linux.pdf
7.8 MB
Отличная книга, которая описывает базу внутреннего устройства Linux.

#books
👍14❤‍🔥1
😁31🗿21
ВКС

В последнее время видеоконференции (ВКС) стали довольно популярными в IT-компаниях. Так называемая обязательная болтовня ни о чём. В адекватных отделах подобная болтовня проходит раз в неделю. В неадекватных - чуть ли не каждый день: они болтают и болтают вместо того, чтобы поработать =) Я сделал вывод: чем больше в отделе ВКС, тем менее он продуктивен, потому что лить воду можно бесконечно, а работать - меньше. Сейчас всё более популярной становится Agile-методика разработки программного обеспечения.

Agile - это методика разработки программного обеспечения, акцентирующая внимание на гибкости и адаптивности к изменениям. В IT-компаниях она предполагает разбитие проекта на короткие циклы (итерации или спринты), что позволяет регулярно получать обратную связь, быстро вносить изменения и улучшения, а также тесно сотрудничать с клиентами и внутри команды. Основные принципы Agile включают инкрементальную разработку, постоянное взаимодействие и адаптацию к изменениям.

Хочу заметить, что в некоторых компаниях есть так называемый "фанатичный/тревожный Agile", когда взаимодействие внутри компании переходит личные границы, и вам могут названивать/написывать не в рабочее время. Ведь внутри отдела уже просто-напросто привыкли переписываться, всё контролировать и что-то обсуждать (из таких компаний стоит бежать). Да и вообще, чрезмерное ежедневное общение даже в рабочее время лично для меня не очень понятно. Ведь есть Jira, в которой можно оставить комментарий к задаче, обновить её статус, прикрепить лог, скриншот, номер коммита и так далее. Зачем дублировать этот комментарий голосом? Мне это непонятно. Чрезмерное общение заменяет разработку, и ты уже не разработчик, а черт пойми кто. Это частая проблема: вместо того чтобы создавать продукт и выполнять свои задачи, инженеры просто болтают.

Я пользовался различными сервисами для ВКС - все они плюс-минус отвратительны, плохо работают и только нервируют. Ещё не стоит забывать, что такая связь работает по протоколу UDP, что говорит о том, что голос и звук могут пропадать. Вообще, всё это довольно забавно: у кого-то собака гавкает дома, у кого-то ребёнок кричит, кто-то картавит, а кто-то просто несвязно говорит, и никто не понимает, что он хочет сказать, плюс какие-то внешние шумы - в общем, цирк =) И вот эта часовая болтовня ни к чему в итоге не приводит. Просто сбор сотрудников для галочки. Ненавижу.

#thoughts
👍20👎2
Вы только посмотрите! Финская проститутка проявляет характер. Детский сад. Они видимо забыли какой характер у русских людей ... так мы можем напомнить =) И это будет посильнее этих ребячеств. Вообще, обидно, что в мире Open Source тоже проскальзывает политика, это напрягает. Это не место для политики. Open Source должен объединять людей, сплачивать их, а не наоборот. А Линус просто закапывает себя и ведет себя как мальчишка. В твое вонючее ядро сделали вклад, ты должен уважать этих людей, а не удалять их из списка ... Низость.

#people
👍59🤡28👎1011🔥1😁1😢1💯1
Перевод: Как страстный любитель истории, вы, кажется, забыли, что Финляндия воевала на стороне нацистов. Так что да, мы прекрасно знаем, что вы не любите русских, если только они не в концлагерях. Что вы сейчас и делаете: сегрегируете по национальному признаку. Лишаете кредитов и имен. Нацист - всегда нацист. Так что идите вы на хуй.

#people
💯49🤡18👍14👎62👏1😢1🫡1
Kernel panic - это критическая ошибка в операционной системе, когда система не может продолжать работу из-за серьезных проблем. Часто это связано с аппаратными сбоями, такими как неисправность оперативной памяти, процессора. Также это может быть вызвано невозможностью найти и смонтировать корневую файловую систему, запуском некорректных драйверов или ошибок в процессе инициализации (initramfs). Система может пытаться использовать несуществующие ресурсы, что приводит к этому состоянию.

#kernel #theory
👀65🔥2🤡1
trap

С помощью trap можно перехватывать/обрабатывать сигналы. Например:
func()
{
echo "This is SIGINT"
}

trap func SIGINT


Команда trap используется в оболочке для перехвата сигналов и выполнения функции или команды в ответ на эти сигналы. В данном случае функция func будет вызвана при получении сигнала SIGINT.

#shell
14👍5
Как создать чистую переменную PATH?

Переменная окружения PATH определяет в каких каталогах система будет искать исполняемые файлы команд. Чтобы создать чистую переменную PATH, можно использовать команду (так же можно прописать это в ~/.bashrc):
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin


Эта команда задает новый порядок поиска команд, начиная с каталогов, содержащих программное обеспечение, установленное пользователем или системным администратором, и заканчивая стандартными системными каталогами. Такой подход позволяет лучше контролировать версии исполняемых файлов и уменьшает риск запуска нежелательных или вредоносных программ, которые могли бы находиться в неавторизованных каталогах. Установка чистого PATH может быть полезна при написании скриптов или настройке серверов, где важна безопасность и предсказуемость исполняемых команд.

#shell
10👍1🤯1
diff и patch

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

Patch File генерируется с помощью утилиты diff, а с помощью утилиты patch изменения можно применить.

Показать различия:
$ diff a b


Создать файл-патч с изменениями:
$ diff a b > main.patch


Показать различия с номерами строк:
$ diff -c a b


Рекурсивно сравнить содержимое каталогов и их подкаталогов:
$ diff -r a/ b/ > r.patch


Популярный метод сравнения:
$ diff -ruN a/ b/ > project.patch


Флаг -u выводит различия в унифицированном формате, который более компактен и удобочитаем.

Флаг -N сравнивает файлы, которых нет в одном из каталогов, как пустые, что позволяет включать новые и удаленные файлы в патч.

Игнорировать .git директорию при сравнении:
$ diff -ruN --exclude='.git' a/ b/


Показать разницу построчно:
$ sdiff a b | less


Поднять Orig файл до состояния patch:
$ patch Orig < patch


Отменить изменения patch в Orig файле (откат):
$ patch -R Orig < patch


Пропустить первый уровень каталогов в путях файлов внутри патча:
$ patch -p1 < ../patch


При возникновении ошибок, начнут появляться файлы *.rej

*.rej файлы описывают куски, которые не получается применить.

*.orig файлы создаются для того, чтобы сохранить оригинальный вид, потому что текущий исходник (например main.c) изменился, а main.c.orig остался прежним.

#utils
🔥11👍4


Друзья! Нас уже более 1000 человек. Большое спасибо, что читаете, ставите реакции, делитесь. Чтобы о моем канале узнало больше людей, я покупал рекламу, так как без нее довольно трудно продвигать канал. Траты на рекламу составили 65,750 рублей. Хорошего дня!

#info
22😨14👍3🙊2
——— НАВИГАЦИЯ ———

GIT: #git
Жвачка: #fun
Ядро: #kernel
Разное: #misc
ПО: #software
Игры: #games
Книги: #books
Люди: #people
Сборка: #build
Утилиты: #utils
Теория: #theory
Debian: #debian
Оболочка: #shell
СПО: #opensource
Память: #memory
Терминал: #terminal
Мои мысли: #thoughts
Безопасность: #security
Информация канала: #info
Конфигурационные файлы: #dotfiles

Кто я: https://news.1rj.ru/str/krxnotes/246
Откуда берется информация: https://news.1rj.ru/str/krxnotes/500

Поддержать канал:
2202 2036 6907 4603

Спасибо, что читаете!
👍212
Блокировка/автовыход из терминала/консоли

Автовыход из терминала (bash):
Переменная окружения TMOUT задает таймаут в секундах для автоматического выхода из сессии bash. Сессия завершится через 60 секунд неактивности:
export TMOUT=60


Автоблокировка: Для автоблокировки можно использовать утилиту vlock. Это утилита, которая блокирует текущую виртуальную консоль, требуя ввода пароля для разблокировки. Это удобно для временной блокировки доступа к терминалу, когда вам необходимо отойти, не выходя из сессии.
$ apt-get install -y vlock

Заблокировать текущую консоль:
$ vlock

Заблокировать все консоли:
$ vlock -a


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

#shell #utils #security
👍171
Оболочки (Shells)

Shell - это общее название для командных интерпретаторов, которые позволяют взаимодействовать с операционной системой через командную строку. Bash (Bourne Again SHell) - это один из видов Shell, который является стандартным и наиболее распространенным в Linux-системах. Таким образом, Bash - это конкретный тип shell, но не единственный.

Покажет все доступные оболочки:
$ cat /etc/shells


#shell
🔥8👍31