Linux для чайника
19.6K subscribers
86 photos
4 files
79 links
Linux
- Разбор утилит / инструментов
- Новости / факты
- Опросы для проверки знаний, навыков
и многое другое.

Только по вопросам сотрудничества: @altmainf

Регистрация в перечне РКН https://clck.ru/3EpL9L
Download Telegram
Док-панель SimDock

Simdock — это док-панель с эффектом масштабирования (как в док-станции OS X) и настраиваемыми панелями запуска. Он хорошо интегрируется с GNOME, но работает в большинстве сред рабочего стола. Не потребляет системных ресурсов, благодаря отсутствию 3D элементов. Однако, есть минус: после внесения изменений потребуется перезагрузка, чтобы Эти изменения вступили в силу. Написан на С++.

Установка происходит из исходников.
Док-панель Crystal Dock

Crystal Dock — это крутая док-станция (кто мы такие, чтобы спорить с документацией) для рабочего стола Linux, в которой основное внимание уделяется привлекательному пользовательскому интерфейсу, простоте и удобству использования, а также поддержке нескольких рабочих столов. В настоящее время Crystal Dock поддерживает только X11, но со временем он будет поддерживать Wayland. Интеграция с различными средами рабочего стола (KDE Plasma, GNOME, MATE, Cinnamon, LXQt).

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

Предупреждение: не следует слепо следовать настройкам. В результате можно испортить систему. По большей части просто читайте и наслаждайтесь, или же не забудьте про резервную копию :)

Итак, команда sudo настраивается через файл /etc/sudoers.

Хоть вы можете редактировать этот файл с помощью вашего любимого текстового редактора, ОЧЕНЬ рекоммендуется этого НЕ делать. Почему? Потому что любой неверный синтаксис в этом файле может испортить систему, в которой sudo не будет работать.

Лучше сделайта так:
sudo visudo

Команда visudo традиционно открывает файл /etc/sudoers в редакторе Vi. Ubuntu откроет его в Nano. Преимущество здесь в том, что visudo выполняет проверку синтаксиса, когда вы пытаетесь сохранить изменения. Это гарантирует, что вы не испортите конфигурацию sudo из-за неправильного синтаксиса.
Включить звездочки при вводе пароля с помощью sudo

Предупреждение: не следует слепо следовать настройкам. В результате можно испортить систему. По большей части просто читайте и наслаждайтесь, или же не забудьте про резервную копию :)

Когда вы вводите свой пароль для sudo в терминале, он ничего не отображает. Старейшины говорят, что это функция безопасности. Возможно, так было и в прошлом столетии, но мы не думаем, что нам следует продолжать в том же духе (только наше мнение).

Чтобы отобразить звездочки с помощью sudo, запустите:
sudo visudo

Найдите строку:
Defaults env_reset

Измените ее на:
Defaults env_reset,pwfeedback

Теперь, если вы попытаетесь использовать sudo и он запросит пароль, вы должны увидеть звездочки при вводе пароля.
Увеличить время ожидания пароля sudo

Предупреждение: не следует слепо следовать настройкам. В результате можно испортить систему. По большей части просто читайте и наслаждайтесь, или же не забудьте про резервную копию :)


Итак, вы используете sudo впервые, и он запрашивает пароль. А вот для последующих команд с sudo определенное время пароль вводить не обязательно. Назовем это тайм-аутом пароля sudo.

В разных дистрибутивах таймаут разный. Это может быть 5 минут или 15 минут. Вы можете изменить поведение и установить тайм-аут пароля sudo по вашему выбору.

Для начала:
sudo visudo

Найдите строку:
Defaults env_reset

Добавьте в нее timestamp_timeout=XX, чтобы она стала такой:
Defaults env_reset, timestamp_timeout=XX
Где XX — тайм-аут в минутах.
Использование sudo без пароля

Предупреждение: не следует слепо следовать настройкам. В результате можно испортить систему. По большей части просто читайте и наслаждайтесь, или же не забудьте про резервную копию :)


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

Чтобы это сделать, откройте файл /etc/sudoer для редактирования с помощью:
sudo visudo

А затем добавьте такую строку:
user_name ALL=(ALL) NOPASSWD:ALL
Не забудте заменить user_name фактическим именем пользователя.
Создайть отдельный log файл sudo

Предупреждение: не следует слепо следовать настройкам. В результате можно испортить систему. По большей части просто читайте и наслаждайтесь, или же не забудьте про резервную копию :)

Вы всегда можете прочитать системный log, связанный с sudo. Однако если вам нужнен отдельный log файл для sudo, вы можете его создать!

Допустим, вы хотите использовать для этой цели файл /var/sudo.log (вам не нужно заранее его создавать, он будет создан завас, если его не существует).

Отредактируйте файл /etc/sudoers с помощью:
sudo visudo

Добавьте в него следующую строку:
Defaults logfile="/var/log/sudo.log"
Выводить ободряющие или не очень сообщения при неправильных попытки ввода пароля sudo

Предупреждение: не следует слепо следовать настройкам. В результате можно испортить систему. По большей части просто читайте и наслаждайтесь, или же не забудьте про резервную копию :)

Это «бесполезная» настройка может быть забавной.

Представим, что пользователь при вводе пароля в sudo ошибся. Следующая небольшая настройка позволяет sudo случайно оскорбить (или ободрить) вас за ввод неправильных паролей.

Используйте sudo visudo, чтобы отредактировать файл конфигурации sudo и добавить в него следующую строку:
Defaults *лучше подбодрите себя тут*

Далее можно протестировать изменения, введя неправильные пароли.
Отношение к Android

Ядро операционной системы Android подобно, но не идентично, ядру стандартного дистрибутива Linux.

Следует отметить одно важное изменение - в ядре Android отсутствуют драйверы, не требующиеся в мобильных средах, что делает ядро меньшим no размеру. Кроме того, Android расширяет ядро Linux функциями, которые предназначены для работы в мобильной среде и в общем случае бесполезны на настольном компьютере или ноутбуке.

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

Ядро также действует в качестве уровня абстракции между оборудованием и остальной частью стека программ и позволяет Android использовать широкий спектр драйверов, которые поддерживает Linux.
Для более простого управления пользователями их можно объединять в группы. Например, можно задать ограничения ресурсов для группы пользователей. Тогда они будут распространяться на всех пользователей, входящих в группу и вам не придется их устанавливать для каждого пользователя отдельно.

Но, прежде чем устанавливать права для группы, нужно эту группу создать. Добавить группу можно командой groupadd, либо отредактировать файл /etc/group (не groups, а именно group!) и добавить группу вручную. При добавлении группы следите, чтобы ID группы был уникальным.

Если же редактировать и следить лень, тогда просто воспользуйтесь:
groupadd [параметры] имя_группы
Утилиты-развлекаловки:

cmatrix - утилита, которая создает эффект матрицы, чтобы воссоздать иллюзию кода, падающего по экрану, как в фильме "Матрица".

fortune - предоставляет случайные цитаты и афоризмы.

cowsay - выводит текст в форме рисованной коровы.

lolcat - раскрашивает вывод текста в радужные цвета.

figlet - создает текстовое искусство из обычного текста.

sl - запускает анимацию поезда, который проезжает по экрану терминала.

pacman4console - игра "Pac-Man" для консоли.

nyancat - выводит мультяшного кота.

asciiquarium - оживляет ваш терминал с помощью анимации морского аквариума.

xeyes - выводит пару глаз, следящих за указателем мыши.

nethack - классическая ASCII-ролевая игра.

mplayer или vlc - мультимедийные проигрыватели, позволяющие воспроизводить музыку и видео прямо из терминала.
В Linux предусмотрено несколько вариантов разбиения дисков, которые только запутывают пользователя, учитывая то, что некоторые из них не поддерживают GРТ.

По умолчанию используется команда parted - утилита командной строки, понимающая разные форматы меток.

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

В системе с графическим интерфейсом пользователя GNOME существует ее специальная версия, называемая gparted.

Рекомендую использовать утилиту gparted, а не parted. Обе утилиты просты, но gparted позволяет задавать размеры разделов, а не начало и конец диапазона блоков. Для разбиения загрузочного диска лучше всего использовать графические инсталляторы из дистрибутивных пакетов, так как они обычно предлагают разбиение, которое является оптимальным для данного дистрибутива.
Различия между ldd и lddtree

Команды ldd и lddtree обе используются для анализа зависимостей динамических библиотек в Linux, но между ними есть ряд ключевых отличий:

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

2. Использование: ldd легко использовать, так как она является стандартным инструментом в большинстве дистрибутивов. А lddtree является частью пакета pax-utils и может потребовать отдельной установки.

3. Обработка переменных окружения: Оба инструмента учитывают переменные окружения, влияющие на разрешение библиотек, но lddtree может предоставить более детальную информацию о том, как эти переменные влияют на процесс разрешения зависимостей.
Команды похожие на LDD

1. objdump: Этот инструмент может быть использован для отображения информации о бинарных файлах, включая их зависимости.
objdump -p /path/to/binary | grep NEEDED - покажет список необходимых динамических библиотек, аналогичный тому, что предоставляет ldd.

2. readelf: Инструмент readelf специализируется на анализе файлов в формате ELF.
readelf -d /path/to/binary - выведет информацию о динамических зависимостях, подобную ldd.

3. ld.so или ld-linux.so: динамический загрузчик Linux, который непосредственно отвечает за разрешение и загрузку динамических библиотек при запуске программы. Можно использовать его для отладки процесса загрузки библиотек, запуская программу напрямую через загрузчик с опцией --list:
/lib/ld-linux.so.2 --list /path/to/binary
Пакет утилит pax-utils

pax-utils - набор различных утилит, предназначенных для работы с пакетами в Gentoo Linux и анализа файлов в формате ELF. Однако, они могут быть полезны не только в Gentoo, но и в других дистрибутивах. Вот некоторые из ключевых утилит:
1. lddtree - отображает дерево зависимостей динамических библиотек для заданного исполняемого файла или библиотеки.
2. scanelf - сканирует и анализирует ELF-файлы в указанных директориях.
3. elfgrep - позволяет выполнять поиск по символам в ELF-файлах, подобно команде grep, но специализированно для содержимого ELF.
4. paxtest - инструмент для тестирования системы на наличие различных уязвимостей, связанных с механизмами защиты памяти, таких как ASLR и NX.
5. pspax - выводит список процессов с информацией о том, какие PaX-флаги установлены для каждого из них (специфично для систем, использующих патчи PaX/Grsecurity).
Gentoo Linux

Gentoo Linux — это дистрибутив Linux. Отличается от большинства других дистрибутивов тем, что предлагает мета-дистрибутивную философию, сосредоточенную на исходном коде. В Gentoo пакеты собираются из исходного кода прямо на вашем компьютере, что позволяет оптимизировать их под конкретное аппаратное обеспечение и пользовательские предпочтения, используя специальные опции компилятора и настройки USE-флагов.

Основные особенности Gentoo:
1. Portage: Система управления пакетами Portage — сердце Gentoo. Она использует скрипты, называемые ebuilds, для автоматизации процесса сборки программ из исходного кода. Portage позволяет пользователям подробно настраивать, какие функции программного обеспечения будут включены или исключены, с помощью USE-флагов.

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

3. Гибкость и контроль: Gentoo предоставляет практически безграничные возможности для настройки. Пользователи могут контролировать все аспекты системы, от ядра до рабочего стола, и от выбора серверных программ до настроек безопасности.
Тестирование различных аспектов безопасности ОС

paxtest - инструмент для тестирования системы на наличие различных уязвимостей. Он был разработан для оценки эффективности механизмов защиты, таких как PaX.

PaX — это патч для ядра Linux, который включает в себя ряд механизмов защиты, направленных на усиление безопасности за счёт предотвращения выполнения кода в определённых областях памяти (например, предотвращение выполнения кода из стека) и рандомизации расположения областей памяти процессов.

Основные тесты, проводимые paxtest:
1. Randomization Test: Тесты на эффективность рандомизации адресного пространства (ASLR), которая затрудняет предсказание адресов специфических областей памяти, где может быть размещён вредоносный код.
2. Executable Stack Test: Проверка на возможность выполнения кода, размещённого в стеке. В безопасных системах выполнение кода из стека должно быть заблокировано.
3. Writable Text Segments Test: Проверка на возможность записи в сегменты памяти, содержащие исполняемый код. Это помогает предотвратить атаки типа "write-then-execute".
4. Return-to-Function Test: Тесты, направленные на выявление уязвимостей, связанных с переходом к выполнению кода из предсказуемых или контролируемых адресов функций.
Патчи для ядра Linux

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

Виды:
1. Исправления ошибок: Исправление обнаруженных проблем и уязвимостей в ядре для повышения его стабильности и безопасности.
2.Улучшения функциональности: Добавление новых возможностей или улучшение существующих функций ядра.
3. Поддержка нового аппаратного обеспечения: Добавление драйверов или модификация существующих для обеспечения совместимости с новыми устройствами или компонентами.
4. Оптимизация производительности: Изменения, направленные на повышение эффективности и производительности системы.
5. Экспериментальные функции: Внедрение нововведений, которые ещё находятся на стадии тестирования и оценки.
Основные сетевые команды Linux:

• ping: Проверяет подключение к удаленному хосту, отправляя пакеты ICMP.
• traceroute: Определяет путь, по которому пакеты проходят от вашего компьютера к удаленному хосту.
• netstat: Отображает информацию о сетевых подключениях, маршрутах и статистике.
• ifconfig: Отображает и настраивает сетевые интерфейсы.
• route: Управляет таблицей маршрутизации.
• nslookup: Выполняет поиск в системе доменных имен (DNS).
• dig: Более продвинутый инструмент поиска DNS, предоставляющий подробную информацию.
• arp: Отображает и управляет таблицей сопоставления IP-адресов и MAC-адресов.
• tcpdump: Захватывает и анализирует сетевой трафик.
• wireshark: Графический инструмент для захвата и анализа сетевого трафика.

Управление сетевыми интерфейсами:

• ifup: Включает сетевой интерфейс.
• ifdown: Выключает сетевой интерфейс.
• dhclient: Получает IP-адрес и другую информацию о конфигурации от сервера DHCP.
• ip: Управляет сетевыми интерфейсами и адресами с помощью командной строки.

Настройка сети:

• hostname: Устанавливает или отображает имя хоста компьютера.
• resolv.conf: Настраивает параметры DNS-сервера.
• /etc/network/interfaces: Основной файл конфигурации сети в большинстве дистрибутивов Linux.

Мониторинг сети:

• vnstat: Мониторинг использования полосы пропускания в режиме реального времени.
• iptraf: Графический инструмент для мониторинга сетевого трафика.
• nethogs: Отображает процессы, использующие сетевое соединение.
Факторы, влияющие на производительность Bash-скриптов

• Оптимизация кода:
- Избегайте ненужных вызовов команд.
- Используйте конвейеры для объединения команд.
- Кэшируйте результаты команд, когда это возможно.

• Использование встроенных команд:

- Встроенные команды выполняются быстрее, чем внешние команды.

• Параллелизм:

- Используйте параллельные конструкции, такие как xargs -P и GNU Parallel, для одновременного выполнения задач.

• Оптимизация ввода-вывода:

- Используйте буферизацию ввода-вывода для уменьшения количества операций ввода-вывода.
- Сжимайте данные при передаче по сети.

• Оптимизация памяти:

- Используйте массивы вместо списков.
- Освобождайте память после ее использования.

Инструменты для профилирования Bash-скриптов:
time: измеряет время выполнения команд.
perf: предоставляет подробную информацию о производительности, включая использование ЦП, памяти и ввода-вывода.
strace: отслеживает системные вызовы, выполняемые скриптом.
ltrace: отслеживает вызовы библиотеки, выполняемые скриптом.

Примеры оптимизации:
Использование конвейеров:
find . -name "*.txt" | xargs grep "pattern"

Кэширование результатов:
RESULT=$(find . -name "*.txt")
grep "pattern" $RESULT

Использование встроенных команд:
echo "Hello world" # встроенная команда
printf "Hello world\n" # внешняя команда

Параллелизм:
find . -name "*.txt" | xargs -P 4 grep "pattern"


Дополнительные советы:
- set -e для выхода из скрипта при возникновении ошибки.
- set -u для вывода ошибки, если переменная не определена.
- set -x для печати выполняемых команд.
- Тестируйте и профилируйте свои скрипты на разных наборах данных и системах.