May 24

Гайд на Linux или как не бояться пингвина

Привет, дорогой читатель!
В этой статье я тебя познакомлю с Linux

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

Подписка на мой канал "Бульдозер у клавиатуры" - лучшая мотивация

План:

  1. Вступление
  2. Почему Linux?
  3. Установка Linux
  4. Работа с Linux
  5. Пользователи и Суперпользователь
  6. Файловая система в Linux
  7. Работа с файлами
  8. Репозитории и пакетный менеджер
  9. Итоги
  10. Donate/Links

Вступление

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

Хочу подметить, что Linux - отличная ОС и для домашнего ПК, я сижу исключительно только на нем, отказавшись от Windows

Главная проблема

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

Я настолько часто вижу ошибки в софтах, которые запускаются на Windows, вечно придумываются костыли для их фикса.
А кто-то вообще ставит себе на сервер данную ОС.
Я понимаю, что Linux может тебя пугать, я понимаю, что консоль и отсутствие привычного окружения это стресс и темнота.
Но как хорошо, что ты находишься здесь

Почему Linux?


Почему я не могу поставить привычный мне Windows и работать с ним?

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

А вот на Linux все будет работать отлично, сюда же можно отнести и MacOS
Все ноды, 90+% серверов, большинство гаджетов, а самое главное софты работают на Linux
Спускаться в дебри и рассказывать почему Windows плох, а Linux с MacOS нет, я не буду, можешь поспрашивать у AI или посмотреть множество видосов на ютубе, ну или поверить мне на слово.

P.S. Для гиков: в этом гайде я буду использовать "Linux" и "Ubuntu" как синонимы для простоты, хотя, конечно, Linux — это ядро, а Ubuntu — дистрибутив на базе GNU/Linux. Для новичков это неважно, так что не будем душнить!

Ставим Linux

Сразу в бой, по ходу гайда буду знакомить тебя с терминами и рассказывать на понятном языке, что за что отвечает

Есть 3 пути поставить Linux и работать с ним:

  • Арендовать сервер
  • Поставить VM(виртуальную машину) в самом Windows и иметь, так скажем, Linux внутри Windows
  • Поставить себе Linux основной/дополнительной системой

Далее мы будем рассматривать покупку сервера, так как остальные пункты требуют доп. гайда.


Если хочешь поставить VM, вот видос еще есть WSL, но с ним не разбирался

Если захочешь поставить Linux второй или основной системой, то ресерчи сам, так как этот процесс требует глубокого погружения и освоения. Ориентиры такие: Дистрибутив - Linux Mint для новичков, я юзаю CachyOS, лучше взять отдельный SSD под систему

Покупка сервера

1) Заходим на любой хостинг, я использую и рекомендую Aeza

2) Регаемся и выбираем сервер. Чем ближе к вашей локации - тем лучше, если нужно запускать простой Python скрипт к примеру, то самый дешевый вариант нам подходит

3) Выбираем ОС. Тут как бы все варианты Linux, просто разные дистрибутивы. Воспринимай их как разные OC, но мысленно можешь поставить =.
Вот представь ванильный Minecraft он как бы Linux(Ядро)
Но если поставить разные сборки с модами, то получится Дистрибутив.
Одна сборка может быть удобна для красивого строительства, другая нацелена на выживание.
Вот тут +- такая логика.
Ну, а мы пикаем Ubuntu. Самая частая, удобная и для наших целей - идеальная

4) Заходим на страницу сервера и видим нужные нам данные: Имя пользователя, пароль, IP-Адрес и нашу систему

Подключение к серверу

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

1) Заходим на сайт, регистрируемся
2) Качаем приложение, заходим в свой аккаунт

3) Мы изначально попадаем во вкладку Hosts, здесь ты сможешь видеть все свои подключения и подключаться к своим серверам. Жмем New Host и вводим данные от нашего сервера:
IP-Адрес,
в General любое название своего подключения,
в Credentials login и password.

4) Жмем Connect и подключаемся.
В правом баре можете выбрать тему и шрифты, которые вам нравится

Работа с Linux

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

Очень важное отступление.
Ты должен осознать как работают команды.
Мы говорим компьютеру, что делать и он выполняет действие.
К примеру вместо клика правой кнопкой мыши и выбора пункта 'создать папку' мы указываем команду, чтобы ее создать.
А так же работая с приложениями мы сначала указываем приложение и потом команду которое оно должно выполнить.
Простой пример: python main.py, говорим python, что нужно запустить main.py

После захода на сервер мы видим командую строку, в начале пишется пользователь, после @ название устройства, после : путь в котором находимся

Здесь мы под пользователям root с названием машины hiplet-31984 и в папке ~

Пользователи и Суперпользователь

Мы являемся root, это как бы суперпользователь системы.
Представляйте root как некого бога, которому все доступно.
Вы можете удалить абсолютно любой файл, любую программу, даже систему.
Вы можете делать всё, что угодно!

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

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

Хорошим подходом считается:
Использовать суперпользователя(root) только для первичной настройки, а после уже использовать обычного пользователя с правами, как у root.
И чтобы воспользоваться этими правами, придется вводить в начало команды "sudo", что будет говорить системе: "Это действие мы делаем, как суперпользователь", после система запросит наш пароль.
Это мера защиты дает нам подумать, прежде чем вводить команду и внести какие-то изменения.

Создание пользователя

Окей, давайте создадим такого пользователя

1) sudo adduser newuser
С помощью данной команды мы создаем пользователя "newuser".

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

"adduser" очевидно добавляет нового пользователя.
"newuser" имя пользователя

Окей, вводим команду adduser buldozer

2) Здесь нас просят ввести пароль, который мы будем использовать как раз для ввода команд как суперпользователь и для авторизации при входе в систему

P.S Ввод пароля в Linux не обозначается *, как все привыкли, сделано для безопасности

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

4) Теперь нам надо добавить этого пользователя в группу суперпользователя
sudo usermod -aG sudo newuser

Дальше, что означает sudo я не буду пояснять. Надеюсь уже понятно, что команда вводится с правами суперпользователя.

"usermod" - обозначаем, что будем менять группу пользователя
"-aG" - флаг означающий, что мы будем добавлять пользователя в группу, не удаляя его из других групп
"sudo" - объявляем группу суперпользователя

Исходя из этих данных, можно понять, что можно создавать группы с отдельными правами и доступом. И назначать пользователей в эти группы
Окей, я ввожу команду usermod -aG sudo buldozer

На скрине мы видим, что изначально buldozer входит в группу buldozer, после добавления пользователя в sudo мы видим, что пользователь входит в группу buldozer и sudo

5) Переключаемся на нашего пользователя
su - newuser

"su" позволяет менять пользователей

Тут я сменил пользователя на buldozer, не вводя пароль, так как был root, а root может делать всё, что угодно в системе
После я ввел просто "su" для смены обратно на root, что запросило пароль от сервера, ведь он и является паролем от root.
Но в будущем, вводя команды через sudo, нужно будет вводить пароль, который ставили для пользователя.

Логика в том, что мы в группе суперпользователя и можем вводить команды от него с помощью sudo и своего пароля
Но для смены на root мы должны ввести его пароль

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

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

Файловая система в Linux


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

Домашний каталог ~:
Когда вы открываете терминал, вы обычно находитесь в своей домашней директории, обозначаемой как ~. Например, /home/username — это ваша личная папка, где username — ваше имя пользователя.

Если вы перейдёте в / с помощью команды cd /вы окажетесь в корневом каталоге — точке, откуда начинается вся файловая система. Здесь находятся все основные директории, которые мы рассмотрим ниже.
В Linux вся файловая система организована в виде единого дерева, начинающегося с корневой директории /:

/tmp
Временные файлы, которые создаются программами или пользователем. Эти файлы обычно удаляются при перезагрузке системы. Похоже на папку Temp в Windows.

/sbin и /usr/sbin
Содержат системные утилиты, которые обычно используют администраторы (например, systemctl для управления сервисами). Это инструменты для настройки и управления системой.

/root
Домашняя директория суперпользователя (root). Обычные пользователи туда не заходят, это как папка администратора системы.

/proc
Виртуальная файловая система с информацией о процессах и системе. Например, /proc/cpuinfo показывает данные о процессоре. Это как "Диспетчер задач" в Windows, но в виде файлов.

/mnt и /media
Здесь подключаются внешние устройства, такие как USB-флешки или сетевые диски. /media часто используется для автоматического монтирования флешек. Похоже на "диск E" в Windows, когда вы вставляете флешку.

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

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

mkdir - Make Directory, создает директорию(папку) с названием

ls - list выведет список файлов, которые находятся по вашему пути

pwd - Print Working Directory выведет директорию в которой вы сейчас находитесь

cd - Change Directory сменит директорию

P.S для всех команд мы можем вводить прямой путь. Допустим находясь в /home/buldozer/Soft я могу прописать ls / и мне выведет список файлов в корневом каталоге, а не по пути где я нахожусь.
Если вы этот путь не указываете, то он подставляется автоматически.
Для того, чтобы подняться на одну директорию выше, введите cd ..

Вот и с файловой системой разобрались, всё же не так сложно?

Работа с файлами

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

Давай разберемся подробнее с созданием, удалением, копированием, перемещением и редактированием файлов:

Создание файлов

touch название_файла

Позволяет создавать сколько угодно файлов

Как можно заметить, я вел команду touch test.txt и создался файл test.txt, после я ввел команду touch и перечислил несколько файлов, которые тоже успешно создались

Удаление файлов

rm название файла - remove позволяет удалять файлы по их названию

Она становится чуть сложнее, так как иногда придется использовать флаги

Здесь, как можно заметить, я удалил сначала файл просто test.txt, после удалил 2 файла одной командой и оставил только main.py. Вернувшись на директорию назад, я удалил всю папку использую флаг -r

-r в примере и является флагом. Он означает рекурсивность и позволяет удалять все содержимое в директории. Без этого флага нам бы выдало ошибку

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

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

Во втором примере я использовал два флага -r для удаления всего в папке и i для подтверждения.
После вылез вопрос, хочу ли я зайти в удаление файлов в папке. Нажав y я согласился.
После нас спросят про каждый файл в папке, хотим ли мы его удалить
В конечном итоге, спросят хотим ли мы удалить всю директорию. Нажав n мы удалили только файл test2, который был в папке, но оставили директорию

P.S y - Yes или да n - No или нет

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

Копирование и перемещение файлов

cp путь_к_файлу путь_назначения - Copy позволяет копировать файлы или директории

И так, в этом примере у меня был файл test. Я ввожу команду cp указываю название файла.
Вспоминаем пункт про файловую систему и вписав test из-за того, что мы находимся в этой директории автоматически, подставляется путь до файла. Полная команда выглядела бы так
cp /home/buldozer/test /home/buldozer/test_copy

Для копирования директории используется флаг -r

В примере я указал прямой путь до директории Soft и путь копирования. Как видите, в обоих примерах я в конце указал название test_copy и Soft_copy, но это делать необязательно. Если укажете только путь, без названия в конце, файл или директория будет с таким же названием

mv путь_к_файлу путь_назначения - Move позволяет перемещать файлы. Логика работы точно такая же, как и при копировании, только теперь перемещает

Я нахожусь в директории Soft и с помощью команды mv я указываю путь до файла /home/buldozer/Soft/test и путь куда перемещаем /home/buldozer/
Для примера я не менял название файла, хотя вы можете это сделать
После показал, что файла в папке Soft больше нет, вернулся в /home/buldozer и показываю, что файл успешно перемещен

Для работы с перемещением директорий не надо использовать флаги

Редактирование файлов

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

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

  • Vim/Nvim
  • Nano

Мы будем использовать Nano, так как он в разы френдли юзер, чем Vim. Но если вы разработчик, крайне рекомендую обратить внимание на vim и nvim. Я пишу код, редактирую файлы исключительно через них, на любом устройстве

Для того, чтобы начать редактировать файл вводим такую команду:

nano название_файла

После попадаем в страшный консольный редактор nano

На самом деле тут все просто. Внизу вы можете увидеть шорткаты.
^ означает CTRL на клавиатуре, ну а дальше нажимаем нужную нам клавишу

Добавляем текст и жмем Exit (^X)

Далее внимание на низ панели. Нас спрашивают хотим ли мы сохранить изменения, жмем Y

После спросят с каким названием хотим записать файл, жмем Enter и готово

P.S для вставки текста из буфера обмена используйте CTRL+SHIFT+V, так же и для копирования

Отлично, все работает!

Просмотр файлов

Я понимаю, что для просмотра файлов вы привыкли использовать блокнот или что-то еще. Но чтобы нам не заходить постоянно в nano, есть классная команда:

cat название_файла - Команда выведет содержимое файла прям в консоль


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

Репозитории и Пакетный менеджер

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

Вот представляем, что мы сейчас на Windows. Чтобы установить нужную программу, нам надо:

  1. Зайти в браузер
  2. Вбить в поиск название программы
  3. Найти официальный сайт программы
  4. Скачать установщик
  5. Запустить установщик
  6. Выбрать путь установки

Итого: 6 действий. Для установки следующих программ и приложений повторяем круг

Для установки программ на Linux:

  1. Написать команду

Итого: 1 действие. Для установки нескольких программ, можно писать их в одну и ту же строку. То есть, ты можешь одной командой установить хоть 1, хоть 100 нужных тебе приложений или программ

Как это работает?
Есть так называемые репозитории. Их можно представлять, как App Store/Google Play, куда программисты заливают свои приложения, а оттуда мы так легко можем их установить

В Linux коммьюнити программы или приложения называются просто пакетами.
Для установки этих пакетов используются пакетные менеджеры. Есть как официальные от твоего дистрибутива, есть от коммьюнити, куда каждый желающий может залить свой пакет

Работа с пакетным менеджером

Далее мы будем вводить sudo apt и название команды

"sudo" понятно, что значит
"apt" и есть пакетный менеджер, обращаемся к нему

Обновления пакетов:

sudo apt update - Эта команда загружает актуальную информацию о доступных пакетах из репозиториев.
Эту команду нужно ввести один раз, после вводить ее только, если хотите установить пакеты, которых до этого не было. Можно раз в недельку ее для профилактики вводить

sudo apt upgrade - Обновляет все пакеты в системе. То есть вы одной командой обновляетесь до последних версий
P.S после upgrade можно вводить название интересующего вас пакета/ов и обновлять только их

sudo apt full-upgrade - Обновит полностью систему, пакеты и зависимости. Стоит ввести один раз после установки Linux

Установка пакетов:

sudo apt install название/я_пакетов

"sudo" понятно, что значит
"apt" и есть пакетный менеджер, обращаемся к нему
"install" говорит пакетному менеджеру, что будем устанавливать пакеты

далее перечисляем их

После, нас просят ввести пароль, так как мы вводим sudo и используем суперпользователя

Соглашаемся с установкой и ждем ее конца

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

P.S так же можно указывать определенную версию, если знаете ее, через =. К примеру telegram-desktop=1.0.1

Удаление пакетов:

sudo apt remove название/я_пакетов

remove удаляет пакеты, тут все просто

Достаточно ввести имя пакетов и подтвердить

sudo apt purge название/я_пакетов

purge удаляет пакет и его конфигурационные файлы. Можно установить пакет, в приложении сделать какие-то настройки, они как раз и сохраняются в конфигурационные файлы. purge - как тотальное удаление пакета

sudo apt autoremove

autoremove удаляет неиспользуемые зависимости. По сути чуть очистит ваш диск от бесполезных зависимостей

Поиск пакетов

При установке telegram я указал telegram-desktop, что нативно непонятно от слова совсем. А если бы я просто указал telegram, то выдало бы ошибку, так как такого пакета нет
Для этого мы как раз можем искать нужные нам пакеты

apt search ключевое_слово

Данная команда выведет список всех найденных по ключевому слову пакетов с их описанием. Если не получается установить по нативному имени, можно узнать более точное название пакетов

Я ввел apt search telegram и мне выдало большой список пакетов. Здесь легко можно найти нужный нам, ведь есть описание у каждого пакета

Вот и вся работа с пакетным менеджером!

Итоги

Вот мы и познакомились с Linux!
На самом деле Linux в разы проще Windows. Просто с первым у тебя нет опыта, поэтому кажется сложным и страшным

Надеюсь, что теперь меньше пугает консоль и сама система стала понятнее

Повторюсь, что подписка на канал - лучшая мотивация!

Donate EVM:
0x7AE96311BEd9Fc1a32Eb99f1d62E9C2aA088bb38

Donate TRX:
TD6JnRN94C4sm313t7xDS9JKQkCypLhcJo

Donate SOL:
HgoYUmW6T6JFPCJjUvA21F5UmJ64dmWozVvcYGaxhENu

My links:

Github

TG Channel