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

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

Регистрация в перечне РКН https://clck.ru/3EpL9L
Download Telegram
GNU Coreutils

GNU Coreutils - это пакет утилит командной строки, который входит в состав операционной системы GNU, а также многих дистрибутивов Linux и других UNIX-подобных операционных систем.

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

- ls: список файлов и каталогов в текущей директории
- cp: копирует файлы из одного места в другое
- mv: перемещает файлы из одного места в другое
- rm: удаляет файлы и каталоги
- chmod: изменяет права доступа к файлам
- chown: изменяет владельца файла

GNU Coreutils является открытым ПО и может быть изменен и распространен на условиях лицензии GNU General Public License.
Эти утилиты достаточно мощные и позволяют легко выполнять большой объем разнообразных задач в командной строке.
Некоторые из общепринятых практик программирования для bash скриптов:

Использование флага set -u
. Этот флаг гарантирует, что переменные будут определены до использования, что снижает риски ошибок.

Использование директивы -x при отладке. Эта директива выводит на экран каждую команду, которую выполняет скрипт.

Использование функций. Функции облегчают чтение и понимание кода, и позволяют повторно использовать блоки кода.

Обработка ошибок и исключений. Например, обработка нулевого возвращаемого значения, проверка наличия файлов перед их открытием, и так далее.

Не использование устаревших методов. Например, использование кавычек вместо директивы $() при вызове подпроцессов, использование [[ ]] вместо [, использование команд find и awk для поиска файлов и обработки текста вместо циклов и массивов, и т. д.

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

Использование директивы -h или --help для вывода справки при вызове скрипта, что делает его использование более простым и дружественным для пользователя.

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

Использование комментариев по всему коду для удобства чтения и понимания кода другими разработчиками.

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

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

dump и restore - утилиты резервного копирования, которые используются редко из-за наличия более современных инструментов, таких как tar и rsync.

at и batch - утилиты планирования задач, которые используются крайне редко из-за наличия более мощных и гибких инструментов, таких как cron и systemd.

setkeycodes и dumpkeys - утилиты, используемые для настройки клавиатуры в Linux, которые большинством пользователей не требуются.

xinetd - демон, используется редко в настоящее время, заменен более современными демонами systemd и inetd.

sendmail и qmail - утилиты для отправки и получения электронной почты, которые используются редко из-за наличия более современных и надежных инструментов, таких как postfix и exim.

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

GNU Binutils - это пакет утилит, используемых для разработки и сборки программ на различных архитектурах процессоров. Он включает в себя несколько утилит, таких как as, ld, ar, objcopy и другие.

Некоторые из наиболее распространенных утилит, входящих в пакет GNU Binutils, включают:

- as: ассемблер, который преобразует исходный код на языке ассемблера в объектный файл.
- ld: линкер, который объединяет несколько объектных файлов в один исполняемый файл.
- ar: утилита для создания, изменения и извлечения объектных файлов из архивных файлов.
- objcopy: утилита для копирования и преобразования объектных файлов. Она может использоваться для создания копий исполняемых файлов с другим названием или форматом.
Безопасность в Linux устроена на основе нескольких ключевых функций, таких как контроль доступа, межпроцессорное взаимодействие, ограничения привилегий и т.д. Вот несколько основных механизмов безопасности в Linux:

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

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

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

SELinux: политика безопасности SELinux (Security-Enhanced Linux) предоставляет дополнительные уровни защиты. SELinux реализует контроль доступа на основе обязательности и является частью ядра Linux.

Межпроцессовый контроль: Linux использует механизм IPC (Inter-Process Communication) для общения между процессами. Linux определяет множество основных IPC-механизмов, таких как Pipes, Message Queues, Shared Memory, Semaphores и т.д., которые обеспечивают защиту от несанкционированного доступа.

Файрволы: файрволы позволяют ограничивать доступ к сетевым сервисам и могут быть настроены для установления правил блокирования или разрешения доступа к определенным сетевым ресурсам. Linux поддерживает различные программные пакеты файрволов, такие как iptables, ufw, firewalld и т.д.

Обновления безопасности: для устранения потенциальных уязвимостей Linux-системы регулярно обновляются и патчируются. Программы также должны быть обновлены для обеспечения безопасности системы.
GNU Debugger

GNU Debugger (GDB) - это отладчик, который позволяет отслеживать работу программы, определять причины возникновения ошибок и исследовать память. Этот отладчик помогает разработчикам понимать, как работает программа на низком уровне, и находить ошибки в исходном коде.

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

GDB работает на различных операционных системах, включая GNU/Linux, macOS и Windows. Это свободно распространяемый программный продукт с открытым исходным кодом, который можно скачать и использовать бесплатно.
SELinux (Security-Enhanced Linux) набор механизмов безопасности на уровне ядра, используемых в Linux.

Использование SELinux позволяет:

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

Защита от атак
Может защитить приложения и пользователей от хакерских атак и других угроз безопасности.
Может контролировать доступ к файлам, каталогам, портам и сетевым ресурсам, снижая уязвимость системы к атакам.

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

Настройка политик безопасности
Использует политики безопасности для определения прав доступа к ресурсам и объектам в системе. Эти политики можно настраивать для определения того, какие приложения и пользователи имеют доступ к каким ресурсам, а также какие действия эти приложения и пользователи могут выполнять.
___________
Существуют известные сложности с SELinux, связанные с тем, что механизмы безопасности SELinux регулируются достаточно строгими политиками, что может стать причиной проблем с некоторыми приложениями либо трудными настройками. Однако, если правильно настроить систему, использование SELinux может существенно улучшить безопасность Linux-системы и уменьшить возможную уязвимость к атакам.
Примеры использования команды wget

Скачивание одного файла:
wget https://www.example.com/file.zip

Скачивание файла с указанием имени:
wget https://www.example.com/file.zip -O newname.zip

Скачивание нескольких файлов из списка:
wget -i filelist.txt
где filelist.txt содержит список URL-адресов файлов, каждый адрес на новой строке.

Скачивание файла из защищенного соединения:
wget --user=user --password=password https://www.example.com/file.zip

Скачивание файла с использованием прокси-сервера:
wget --proxy=on --proxy-user=user --proxy-passwd=password https://www.example.com/file.zip

Ограничение скорости загрузки:
wget --limit-rate=100k https://www.example.com/file.zip

Продолжение загрузки файла после обрыва связи:
wget -c https://www.example.com/file.zip

Загрузка файла только в случае, если он изменен:
wget --timestamping https://www.example.com/file.zip

Извлечение только определенных типов файлов:
wget -r -A.png,.jpg https://www.example.com/images/

Загрузка файла с использованием определенного User-Agent:
wget --user-agent="Mozilla/5.0" https://www.example.com/file.zip
GNU Aspell

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

Для установки GNU Aspell в Linux, вам необходимо выполнить команду в терминале для установки пакета:

sudo apt-get install aspell

После установки вы можете использовать Aspell для проверки правописания в терминале. Например, чтобы проверить правописание слова "hello" на английском языке, выполните следующую команду:

echo hello | aspell -a

Вы получите сообщение обратно с подсвеченными ошибками орфографии и предложениями исправлений.
GNU Assembler

GNU Assembler является ассемблером, который входит в состав GNU Compiler Collection и предназначен для компиляции программы на языке ассемблера для линукс систем.

Для установки GNU Assembler в Linux, вам нужно выполнить следующую команду в терминале:
sudo apt-get install build-essential

Например, у вас есть файл «hello.asm», чтобы скомпилировать программу в нем, выполнив следующую команду в терминале:
as -o hello.o hello.asm
ld -o hello hello.o

Затем вы можете запустить программу, выполнив следующую команду:
./hello
GNU Bison

GNU Bison (или просто Bison) является генератором синтаксических анализаторов, который используется для создания синтаксических анализаторов (парсеров) для языков программирования и других формальных языков.

В Linux Bison часто используется для создания парсеров для языков программирования, таких как C и C++, а также для создания парсеров для различных форматов данных, таких как форматы конфигурационных файлов.

Для установки GNU Bison в системе Linux выполните следующую команду в терминале:

sudo apt-get install bison

После установки вы можете создавать файлы Bison, в которых описывается синтаксис языка или формата данных, для которых вы хотите создать парсер
GNU Classpath

GNU Classpath - это проект, который направлен на создание свободной реализации библиотеки классов Java Standard Edition (Java SE). Этот проект дает возможность разработчикам создавать и запускать приложения на языке Java в среде Linux.

Для установки GNU Classpath в системе Linux выполните следующие команды в терминале:

sudo apt-get update
sudo apt-get install default-jre
sudo apt-get install libgnujaxp-java libgnuinet-java libgnujafp-java libgnu-regexp-java


Эти команды установят JDK (Java Development Kit) и необходимые библиотеки, которые требуются для работы с GNU Classpath.

Если у вас уже установлен JDK  и вам нужны только библиотеки GNU Classpath, выполните:
sudo apt-get update
sudo apt-get install libclasspath-java
GNU Findutils

GNU Findutils - это набор утилит для поиска файлов в файловой системе в операционных системах Linux и других UNIX-подобных системах. Он включает в себя несколько утилит, например find, locate, updatedb, xargs и другие.

Чтобы установить GNU Findutils на Ubuntu:
sudo apt-get update
sudo apt-get install findutils


После того, как установка будет завершена, вы можете начать использовать утилиты GNU Findutils.

Например, утилита find позволяет искать файлы в файловой системе по различным критериям. Чтобы найти все файлы с расширением .txt в папке Documents, выполните следующую команду:
find ~/Documents -name "*.txt"
Команда updatedb

Она используется для обновления индекса файловой системы, который используется утилитой locate для быстрого поиска файлов.

Когда вы запускаете updatedb, он сканирует файловую систему и создает или обновляет файл индекса /var/lib/mlocate/mlocate.db, который содержит информацию о каждом файле в системе. Это облегчает поиск файлов по всей системе, не просматривая каждый каталог отдельно.

Для того чтобы запустить updatedb, нужно открыть терминал и ввести следующую команду:
sudo updatedb

После обновления индекса, вы можете использовать locate для быстрого поиска файлов по всей файловой системе, например, так:
locate myfile.txt

Эта команда найдет все файлы в системе с именем myfile.txt.
GNU Global

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

Чтобы установить GNU Global, необходимо выполнить следующие команды в терминале:
sudo apt-get update
sudo apt-get install global


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

Эта команда создаст файл "GTAGS", который содержит информацию об исходных кодах проекта. После этого можно использовать утилиту "global" для поиска идентификаторов в исходном коде:
global <идентификатор>
Возможности утилиты global

В самом начале нужно создать индекс исходного кода:
gtags

Далее с помощью global можно осуществить:

Поиск определения функции "main":
global -ax main

Поиск всех мест, где используется символ "foo":
global -ax foo

Поиск всех символов, начинающихся с префикса "bar":
global -ax bar*

Поиск всех файлов, используемых в зависимости от функции "baz":
global -ax -f baz
GNU parallel

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

Примеры:
Запуск команды "command" на всех файлах .txt в текущей директории, используя 4 потока.
parallel -j4 'command {}' ::: *.txt

Выполнение команды "command" на каждом файле .txt в текущей директории и группировка выполнение команд по файлам с одинаковым именем.
parallel --group 'command {}' ::: *.txt

Выполнение команды  "command" на всех файлах .txt из текущей директории на серверах server1, server2 и server3.
parallel -S server1,server2,server3 'command {}' ::: *.txt
Преимущества использования GNU parallel

1. Параллельное выполнение команд: GNU parallel позволяет выполнить несколько команд параллельно, что сокращает время исполнения.

2. Управление потоками: Вы можете задать количество потоков, которые могут выполняться параллельно, чтобы избежать перегрузки системы.

3. Группировка команд: GNU parallel может группировать команды в зависимости от аргументов, что облегчает управление процессами.

4. Распределенное выполнение: Вы можете использовать GNU parallel для выполнения команд на нескольких компьютерах.

5. Поддержка шаблонов: GNU parallel поддерживает шаблоны, которые помогают автоматизировать выполнение повторяющихся задач.
GNU Radio

GNU Radio - это программное обеспечение с открытым исходным кодом для обработки цифровых сигналов, которое позволяет пользователям проектировать и создавать радиосистемы на компьютере.

Установка:
1. Установите зависимости: выполните следующую команду в терминале, чтобы установить необходимые зависимости:
sudo apt-get install gnuradio

2. Обновление и установка пакетов:
sudo apt-get update && sudo apt-get upgrade

3. Установите дополнительные пакеты:
sudo apt-get install gnuradio-dev

4. Установите GNU Radio Companion:
sudo apt-get install gnuradio-companion

5. Запустите GNU Radio Companion:
gnuradio-companion
Для чего можно использовать GNU Radio

1. Декодирование сигналов DVB-T: Этот пример демонстрирует, как использовать GNU Radio для декодирования сигналов цифрового вещания DVB-T. Вы можете использовать этот пример для понимания, как работать с различными блоками GNU Radio для декодирования цифровых сигналов.

2. Обнаружение сигналов радара: Этот пример демонстрирует, как использовать GNU Radio для обнаружения сигналов радара. Вы можете использовать этот пример для изучения, как использовать блоки GNU Radio для обработки радиочастотных сигналов.

3. Восстановление сигналов GPS: Этот пример демонстрирует, как использовать GNU Radio для восстановления сигналов GPS. Вы можете использовать этот пример для понимания, как работать с блоками GNU Radio для обработки GPS-сигналов.

4. Реализация беспроводных систем связи: GNU Radio может использоваться для создания беспроводных систем связи разного уровня сложности, от простых радиосвязи до сложных систем с многомодуляционными схемами и автоматической регулировкой уровня сигнала.

5. Анализ и запись радиочастотных сигналов: GNU Radio может использоваться для анализа и записи радиочастотных сигналов из различных источников, включая радиосвязь, телевизионные передачи, спутниковую навигацию и т.д.
GNU social

GNU social (ранее StatusNet и Laconica) — это серверное свободное программное обеспечение для развёртывания социальных сетей, написанное на PHP, которое использует стандарт OStatus для взаимодействия с другими серверами.

Предлагая функциональность, аналогичную Twitter, GNU Social обеспечивает открытую коммуникацию между пользователями распределённой социальной сети.

Есть несколько способов установить GNU social на Linux.
1. Используйте инструкции по установке из официального репозитория GNU social.
2. Используйте пакетный менеджер для установки. Например, для Ubuntu воспользуйтесь "sudo apt-get install gnusocial".
3. Скачайте и установите GNU social с официального сайта.