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

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

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

В каталоге /home/ хранятся домашние каталоги каждого пользователя ОС Linux. 

Если в вашей ОС заведена только одна учетная запись, то в этом каталоге будут как минимум: lost+found (подробнее про него тут) и каталог с именем вашей учетной записи.

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

Каждый пользователь имеет право записи только в свой каталог. Право изменять и читать каталоги других учетных записей имеется только у пользователя root.
Cacaview

Очень простой просмотрщик изображений рисунков с помощью символов ASCII.

Открывает большинство форматов, таких как JPEG, PNG, GIF и т.д. и выводит их в терминал.
Можно изменять масштаб, перемещаться по изображению, установить метод передачи полутонов или включить сглаживание.

Установить:
sudo apt install caca-utils

Запустить, передав изображение:
cacaview some_photo.jpg


(Настолько адекватное изображение получить самостоятельно мне не удалось, пришлось брать готовую картинку в интернетах )
Alacritty

Самый быстрый эмулятор терминала (так сказал его разработчик, правда).

Использует OpenGL для оптимизации вычислений на вашем GPU. Функция, которую имеют очень немногие эмуляторы терминала.

Alacritty - с открытым исходным кодом посмотреть который можно на GitHub.

Установка. Добавляем репозиторий:
sudo add-apt-repository ppa:mmstick76/alacritty
Далее
sudo apt install alacritty

(я видел его со стороны, но не под высокими нагрузками. Даже после ручной регулировки. интерфейс - так себе .. )
Какова задача символов || в сценарии Linux:
Anonymous Quiz
28%
добавление
18%
выбор
49%
условие
6%
комментарий
This media is not supported in your browser
VIEW IN TELEGRAM
Одна из самых удобных функций, имеющихся в bash — автодополнение команд по клавише <Tab>. К этому быстро привыкаешь, помогает во многих моментах.

Для VSCode есть возможность дополнять аргументы для команд, реализуется это при помощи расширения Shell Completion.
Признаки того, когда лучше отказаться от скриптов:

Список может быть бесконечным и очевидным, но мало ли ..

- Важна скорость/производительность.

- Скрипт содержит более нескольких сотен строк.

- Нужны структуры данных сложнее обычных массивов.

- Задолбало заниматься непотребствами с кавычками и экранированием.

- Необходимо обрабатывать/изменять много строковых переменных.

- Нет необходимости вызывать сторонние программы и нет необходимости в пайпах.
GRUB - программа управления процессом загрузки.

Для большинства дистрибутивов Linux - является загрузчиком по умолчанию. (Самостоятельный FreeBSD тебе сейчас машет ручкой..).

Есть две основные версии: GRUB Legacy, который давно уже не развивается (но какое-то время все же получал обновления в виде патчей безопасности) и GRUB 2, который является текущим стандартом.

Обе версии GRUB работают схожим образом ведь основная задача любого из GRUB — загрузить ядро Linux в память и запустить его.

К тому же, GRUB 2 имеет тот же загрузочный функционал, что и GRUB Legacy, но обладает значительной гибкостью на предзагрузочном этапе и нововведениями: от переносимости на разные архитектуры до поддержки скриптов.
Как узнать, является ли порт хорошо известным? Начать стоит с просмотра файла services.

cat /etc/services | less

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

ssh 22/tcp # SSH Remote Login Protocol
smtp 25/tcp
domain 53/udp

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

В дополнение к файлу /etc/services существует онлайн-реестр портов, который регулируется документом RFC6335 о сетевых стандартах.
[ http://www.iana.org/ ]
Много лет назад на одном популярном англоязычном форуме, ныне покойном, предложили гениально простой способ нагреть проц и посчитать его скорость в попугаях.

time echo "scale=5000; 4*a(1)" | bc -l

bc - Си-подобный интерактивный интерпретатор.
Подгружаем в bc математическую библиотеку опцией -l и просим выдать число π с точностью 5000 знаков после запятой.

Мой результат вычисления на  AMD EPYC 7B12 2.3GHz
выдал:

real 0m0.002s
user 0m0.001s
sys 0m0.001s
Смотрим три средних значения загрузки в дополнение к тому, как долго работает ядро, запустив:

uptime

Получаем что-то вроде:
22:30:28 up 4 days, 13:07, 1 user, load average: 0,07, 0,02, 0,00

Три числа, выделенных жирным шрифтом, являются средними значениями загрузки за последние 1, 5 и 15 минут соответственно.
1 user - количество залогиненных пользователей.

По отдельности выводим время запуска системы:
uptime -s

Либо только время работы системы
uptime -p
Для быстрого копирования файлов с вашего компьютера на другой в вашей сети - существует удобный способ с помощью модуля Python.

Просто перейдите в каталог с необходимыми файлами и запустите команду:
python -m SimpleHTTPServer

Запускается базовый веб-сервер, который делает данный каталог доступным для любого браузера в сети. Обычно он работает с портом 8000 поэтому, если адрес компьютера, на котором вы запустили эту команду, равен 10.1.2.4, наберите адрес http://10.1.2.4:8000 на компьютере назначения, и у вас появится возможность забрать необходимые файлы.

Если используете Python 3, то получите сообщение об ошибке: Нет модуля с именем SimpleHTTPServer.
В таком случае нужно использовать:
python3 -m http.server 9000
Как запускается GRUB?

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

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

Если установлена только одна ОС, то дистрибутив Linux будет скрывает это меню. Чтобы оно все равно появлялось перед загрузкой (Зачем? Просто имей ввиду), то можно сделать следующее:

Отредактировать файл /etc/default/grub таким образом:
GRUB_TIMEOUT="10"
GRUB_TIMEOUT_STYLE=menu

(Если присутствуют строки:
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_ TIMEOUT_QUIET=true, то их нужно закомментировать)

далее:
sudo update-grub
В Linux ядро обычно размещается в каталогах /vmlinuz или /boot/vmlinuz.

Загрузчик системы отправляет этот файл в память и приводит его в действие при запуске системы.

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

Тем не менее, можно обнаружить множество модулей, которые ядро может по запросу загружать и выгружать во время нормального функционирования системы. Такие загружаемые модули ядра расположены в каталоге /lib/modules.
Показатели нагрузки, отображаемые uptime, представляют собой средние значения за:
Anonymous Quiz
15%
1, 10 и 25 минут;
34%
10, 60 и 300 секунд.
10%
1, 5 и 24 часа;
40%
1, 5 и 15 минут;
Всем известно, что при удалении файлов, содержащих конфиденциальные данные (любые данные), с устройств хранения они фактически не удаляются.

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

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

Следующая команда потратит некоторое время на запись миллионов и миллионов нулей в каждый закоулок раздела /dev/sda1:

dd if=/dev/zero of=/dev/sda1

Но можно поступить еще лучше. Используя файл /dev/urandom в качестве источника, наполнив диск случайными символами:

dd if=/dev/urandom of=/dev/sda1
Уникальность файловой системы Linux в том, что для каждого устройства в Linux создается собственный файл в каталоге /dev. Загляните в каталог /dev - в нем вы найдете множество файлов для всех устройств вашей системы.

Вот примеры некоторых файлов устройств:

/dev/sda - первый жесткий диск, как правило, подключенный к первому SAТА-контроллеру.

/dev/sda1 - первый раздел на первом жестком диске. Нумерация разделов жестких дисков в Linux начинается с 1.

/dev/mouse - файл устройства мыши.

/dev/cpu - файл устройства процессора;

/dev/cdrom - ваш СD/DVD-привод;  

/dev/random - файл устройства-генератора случайных чисел;

/dev/tty1 - первая консоль (терминал). 

Файлы устройств бывают двух типов: символьные, обмен информацией с которыми осуществляется посимвольно, и блочные, обмен информацией с которыми осуществляется блоками данных. Пример символьного устройства - /dev/ttySO- последовательный (СОМ) порт, пример блочного устройства - /dev/sda1 - раздел жесткого диска.
В Linux есть специальные права доступа SUID (Set User ID root) и SGID (Set Group ID root), позволяющие обычным пользователям запускать программы, которые требуют для своей работы прав root.

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

Например, если программу /usr/sbin/program хотите разрешить запускать с правами root обычным пользователям, установите права доступа так:
chmod u+s /usr/sbin/program

Использование SUID - плохое решение с точки зрения безопасности. Правильнее использовать команду sudo, если какому-то пользователю будут нужны права root.
Для сценариев, требующих полномочий root, сначала нужно проверить, какой пользователь запустил сценарий.

UID пользователя root всегда равен 0. Проверка, является ли пользователь, запустивший сценарий, пользователем root, может выглядеть так:

ROOT_UID=0 

if [ "$UID" -eq "$ROOT_UID" ]
then 
echo "Root" 
else 
echo "Обычный пользователь"
fi 
exit 0
В Linux кроме прав доступа есть еще и атрибуты файла, подобно атрибутам файла в других ОС.

Просмотреть установленные атрибуты можно командой: chattr some_file

Основные полезные атрибуты:
i Запрет на изменений, переименование и удаление файла. Обычно ставится для критических конфиг. файлов. Установить и сбросить может только root (либо процесс с CAP_LINUX_IMMUTABLE)

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

c Файл будет сжиматься. Рекомендуется для больших несжатых данных, но крайне не желателен для файлов БД т.к. доступ будет медленнее.

S Данные, записываемые в файл, сразу будут сброшены на диск. Аналогично выполнению команды sync сразу после каждой операции записи в файл.

s Прямо противоположен атрибуту u. После удаления файла, принадлежащие ему блоки будут обнулены и восстановить их уже не получится.

Пример установки атрибута: chattr +i config_file
Пример сброса атрибута: chattr -i config_file
Разбить файл на части можно используя команду split

Для примера создадим файл с цифрами от 1 до 1000 в столбик командой:
echo {1..1000} | tr ' ' '\n' > some_file

Разделим этот файл по 200 строк в каждом, командой:
split -200 some_file

Цифру можно задать свою. Исходный some_file останется, рядом создадутся 5 (потому что на 200 делили) файлов. Подумай, какие названия им даст ОС?

Команду можно также использовать для разделения файлов на части по размеру информации, например:
split -b100b some_file2
split -b100k some_file2
split -b100m some_file2

Первая команда разделит файл на части по 100 байтов каждая, вторая - на части по 100 Кбайт каждая, третья - по 100 Мбайт каждая.