Как стать автором
Обновить

Что такое Linux? Статья-шпаргалка для новичков

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 67K
Всего голосов 46: ↑39 и ↓7 +32
Комментарии 42

Комментарии 42

Вы путаете в статье пакетный менеджер и систему управления пакетами. Packet manager это как раз таки dpkg и rpm, а не apt и yum.
Примеры в статье верные, а описание скомкано - рассказываете про apt и yum.
Каша по этому вопросу.
Как нибудь поточнее сформулируйте пожалуйста.

И путаете определения:

Давайте я расскажу вам чуть больше о GNU\Linux ядре.

Операционноая система GNU и ядро под названием Linux — отдельные проекты программ, которые дополняют друг друга. Как правило, они упаковываются в дистрибутив GNU/Linux и применяются совместно (изучить вопрос).

исправьте пожалуйста тогда и другое:
opensuse/suse это конечно rpm based дистры, но вот dnf там опционален, а родной пакетный менеджер это zypper (который немного круче dnf потому что умеет в вендоринг (через приоритеты))

А как же YAST? Он тоже умеет в пакеты.

Yast sw_single пинает тот же zypper

Всё-таки GNU это пакет системных программ, а не ОС. Операционной системой как раз является GNU/Linux.

далее создать файл vi authorized_keys. Важный момент — чтобы выйти из текстового редактора vi, нажмите esc, потом впечатайте :wq (выйти с записью).

Замечательный совет новичкам — чтобы выйти из текстового редактора надо 5 кнопок нажать в определённой последовательности) Новичкам интуитивнее будет nano. Правда про него тоже нужно кое что знать.

Про него нужно знать, что оно не установлено (как правило).

Поэтому:

sudo apt install nano

или

sudo yum install nano

(если у вас есть права на sudo, дьявольский смех)

(если у вас есть права на sudo, дьявольский смех)

А если при установке Linux не была выбрана графическая оболочка, то sudo может быть и не установлен!

Да, такое тоже случается.

Тогда команды такие же, только без sudo

(Если делается от рута или другого привилегированного пользователя)

Не знаю, что там в Ubuntu (не приживается она у меня, прямо мистика какая-то), но в инсталяторе Fedora достаточно указать во время создания пользователя, что этот пользователь — администратор.

например в каком дистрибутиве?

Если мне не изменяет память, то я экспериментровал с Debian 10 (или 10.8 или 10.12).
Дистрибутив (в формате *.iso) скачал с офиц.сайта и ставил на Oracle Virtual Box.
И вот был неприятно удивлён, когда sudo не работала. Пришлось покопаться в гугле: вначале делать su, а потом делать apt install sudo.

давненько я не ставил Debian с iso. могу предположить что такая ситуация произоти могла по двум причинам:

  1. была опция "сделать пользователя админом", но галочка не была поставлена

  2. был задан пароль root при установке и, возможно, в результате этого пользователю не предоставили прав sudo (и не поставили сам пакет потому что инсталлер посчитал что он не нужен).

не помню как это делалось в инталлере, увы

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

nano идте из коробки и в убунту, и в федоре как минимум, и вроде много где еще.

Спасибо, сохранил статью)

Добавьте инфу по отечественным линуксОС, в тот же раздел про управление пакетами.

Это сейчас очень актуально.

С ними пока не работал и даже не изучал вопрос. Возможно, что дополню этим позднее.

Мне знакомые и коллеги еще накидали, чего здесь не хватает.

А там также либо apt, либо yum

в альте конечно apt-get, вот только это alt-rpm (тяжёлое наследие от которого они не хотят отказываться) что создаёт некоторое кол-во нюансов

С ними всё просто: берёте дистрибутив Ubuntu на грани окончания поддержки выдерживаете несколько лет и начинаете пользоваться безнадёжно устаревшей ОС, половина программ которой уже не может адекватно работать в окружающей действительности.

Альтернатива: качаете инсталятор актуальной версии Ubuntu, Fedora, Arch etc, устанавливаете, пользуетесь без каких либо проблем, вызванных устареванием системы и криворукостью импортозаместителей. В этимх дистрибутивах точно такое же количество российского кода, как и в «российских» дистрибутивах, если учитывать только полезный для пользователя код.

Всё остальное уже описано в статье, потому что… Смотрите в начало комментария, где описан рецепт приготовления «отечественного» дистрибутива.

особенно под ваше описание подходит ALT...

dpkg -i filename.deb

мне кажется лучше привести строку для локальной установки через apt, по той причине, что даже при установке из файла локально apt проверяет конфликт зависимостей.
apt install ./filename.deb

тоже самое в rpm-based дистрах. не стоит вызывать rpm напрямую, следуюет пользоваться dnf install <paclage URI> либо zypper install <package URI>

где package URI это путь к инсталлируемому файлу. например:

dnf install https://mirror.yandex.ru/epel/9/Everything/x86_64/Packages/e/epel-release-9-3.el9.noarch.rpm
dnf install ./skype.rpm
rpm тоже проверяет зависимости. Другое дело, что он их не разрешает, но проверять — проверяет.
  • basename — удаляет путь до файла и его расширение;

мне кажется удаляет - это неверное толкование , в хелпе команда описывается так:

Выводит ИМЯ без предшествующих названий каталогов.
Если указано, удаляет также завершающий СУФФИКС.

Для Windows есть клиент Putty

В Windows начиная с 1809 версии десятки есть и свой встроенный ssh-клиент.

Правда не совсем свой, что даже к лучшему, это порт openssh, и даже сервер есть.

В Линуксе, все процессы имеют номер (Process ID, PID). Ядро использует
процесс 0, любая система инициализации — PID 1, и она же является
родителем для любых пользовательских процессов

Ядро не использует процесс 0. Процесса 0 не существует. Часть кода ядра работает в потоках ядра (kernel threads) и они отображаются вместе с другими процессами и обладают всеми атрибутами обычных процессов, в том числе и PID. Имена процессов ядра отображаются в квадратных скобках. Другая часть кода ядра — это обработчики прерываний и они работают в контексте прерываний и не относятся к каким-либо процессам.

Такие подробности, пожалуй, не очень нужны для вводной статьи. Я бы сформулировал так:

При загрузке ядро инициализирует все внутренние структуры и запускает первый пользовательский (user space) процесс init с PID 1. init порождает все последующие пользовательские процессы

Так случается, что в процессе завершения процессов, иногда остаются
процессы, у которых не осталось родителя — такие процессы называются
осиротевшими (orphaned processes) и указывают на наличие проблем на
данной системе

Во-первых, "в процессе завершения процессов"? Во-вторых, ни на какие проблемы осиротевшие процессы не указывают. Их усыновляет (удочеряет) init, вот и всё. Например, все демоны — сироты.

Если вы хотите настроить вход по ключу,

...

пользователям (0) не разрешено ничего с этим файлом

Уже более 20-и лет вместе с openssh поставляются утилиты ssh-keygen и ssh-copy-id. Они куда как удобнее описанных мануальных упражнений.

Сети

Сейчас большинство систем, по-моему, используют NetworkManager. Странно, что вы про него не упомянули. Так же, если пишите про systemd странно не вспомнить про systemd-networkd

Также стоит отметить про встроенный «файерволл» — в старых системах
использовался iptables, который задавал правила для компонента ядра
Netfilter; сейчас рекомендуется использовать ufw, как обладающий более
человекопонятным интерфейсом.

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

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

Уже более 20-и лет вместе с openssh поставляются утилиты ssh-keygen и ssh-copy-id. Они куда как удобнее описанных мануальных упражнений.

Согласен. Привычка :)

Сейчас большинство систем, по-моему, используют NetworkManager. Странно,
что вы про него не упомянули. Так же, если пишите про systemd странно
не вспомнить про systemd-networkd

Да, пожалуй вы правы, добавлю.

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

Да, ваша формулировка лучше.

Про ядро - это холиварная тема

В смысле кто-то утверждает что ядро работает в процессе с PID 0? А у вас нет ссылки на такое под рукой случаем? За довольно много лет работы с ядром не встречал такого тезиса.

Можно посмотреть PID родителя init системы или там kthtread - он равен 0

Это всего лишь означает, что 0 означает отсутствие родителя.

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

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

Например, все демоны — сироты.
А я-то понять не мог, почему демоны такие злые :).

что такое линукс, что такое линукс, чтооо так любит детвора

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

Интересное совпадение, только вчера сел писать статейку по линуксу (как если бы ее искал я) потому что именно сейчас (уже месяц как) переехал с винды на линукс (полноценно). Ранее, конечно, тыкал всякие центосы, дебианы, убунты на серверах, но как десктоп не рассматривал.
А тут такая удачная статейка, поделюсь на Вас ссылочкой в блоге :) Полезное. И да, поддержу вопрос из комментариев, если найдется время, интересно будет поглядеть подобную вводную про сетевой стек в лине. А то пока в раздумьях, с какой стороны к нему подступиться. С systemd-network пока начал.

GNU/Linux а не GNU\Linux. "\" используется только для экранирования и в путях таких ОС как CP/M, DOS, Windows. Ещё в OS/2. ВСЁ!

Важно отметить что информация о GNU coreutils (и других утилитах проекта GNU) содержится, по-большей части, в формате Info (man 1 info), а в man'ах приводится лишь краткое содержимое необходимое для быстрого старта.

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

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