Оглавление

Linux — начинающим. Первое знакомство

    Linux-beginners-1-000.jpg
    Как показывает читательский отклик, интерес к решениям на базе Linux весьма и весьма велик, в тоже время уровень подготовки администраторов в этой области оставляет желать лучшего. Свидетельство тому, бесконечно повторяющиеся простейшие вопросы в комментариях. Во многом, это следствие того, что наши инструкции можно выполнить «дословно» и получить работающий, результат. Но есть и обратная сторона медали, такой подход не предусматривает появлению системных знаний, оставляя знание предмета на фрагментарном уровне.

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

А как быть с теми, кто только делает свои первые шаги? К сожалению, в IT-сообществе существует некоторый снобизм, мол, чего об этом говорить, это и так все знают, или «гугл в помощь», забывая, что каждый из нас когда-то был новичком и с мистическим ужасом смотрел в черный экран Linux-консоли, абсолютно не понимая, куда он попал и что ему делать.

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

Итак, вы решили стать Linux администратором…

Немного перефразируем Маяковского «я б в Linux-админы пошел, пусть меня научат», именно так дело в большинстве случаев и обстоит. Есть необходимость, есть желание, есть базовый набор знаний по работе с Windows системами — все это пригодится при работе с Linux системами. Гораздо хуже если какая-либо составляющая отсутствует, тогда, наверное, стоит задуматься о неправильном выборе профессии.

Сразу о том, что нужно раз и навсегда забыть. Это «религиозные войны» и «религиозный фанатизм». Одинаково плохо отрицать возможности Linuх-систем, как и превозносить их, стремясь перевести на Linux все что нужно и не нужно. Запомните — операционная система — это инструмент, хороший специалист берет для каждой задачи наиболее подходящий, фанатик будет забивать гвозди микроскопом, потому что взять в руки молоток ему «религия не позволяет».

Даже больше, сама по себе операционная система не имеет никакой ценности, это всего лищь среда для запуска и выполнения некоторых служб и сервисов. Без софта система мертва. Возьмем для примера клон BeOS — Haiku, ну поставили, ну посмотрели — прикольно… А дальше что?

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

Linux-beginners-1-001.jpg
Для привыкшего к графическим инструментам Windows-администратора это может показаться сложным. Но следует твердо усвоить одну истину — консоль является единственным полноценным инструментом администрирования Linux и совсем не означает ограниченность в возможностях или неполноценность системы. Даже наоборот, командная строка позволяет выполнить многие задачи намного быстрее и проще, чем графические инструменты администрирования.

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

Linux-beginners-1-002.jpg
Linux, создававшийся по образу и подобию UNIX-систем, является полноценной системой и без графической оболочки, более того мы можем запустить, закрыть или вообще сменить графическую оболочку без какого-либо влияния на работоспособность системы и даже без ее перезагрузки. Завершили сеанс Gnome, запустили KDE, а потом и вовсе вышли в консоль. Поэтому все инструменты управления системой разработаны для использования в режиме командной строки. А все панели и графические инструменты являются всего лишь надстройкой над ними.

Windows долгое время разрабатывался по принципиально иной технологии, графическая оболочка была поставлена в основу системы и долгое время даже выполнялась на уровне ядра (семейство Win 9x). Поэтому все инструменты администрирования были изначально графическими, а инструменты командной строки скорее их дополняли, чем заменяли. Любой, кто занимался восстановлением Windows, знает, что возможности инструментов командной строки там существенно ограничены и предназначены в первую очередь для восстановления системы, а не для ее администрирования.

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

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

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

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

Если вы еще не передумали становиться Linux-администратором, то поедем дальше и рассмотрим отличия в архитектуре системы.

Ядро и драйвера

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

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

В микроядерной и гибридной архитектурах, драйвера, хоть могут и работать на уровне ядра, его частью не являются и от версии ядра не зависят. Поэтому мы можем без проблем обновлять ядро или использовать один и тот-же драйвер для всех версий систем с общей структурой ядра. Например, в Windows для всего семейства современных ОС, от Windows Vista до Windows 8.1, часто используется один и тот-же драйвер.

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

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

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

Мы не будем касаться конкретных файловых систем, тут проблем возникнуть не должно, если администратор работал с Windows системами, то что такое файловая система и чем FAT отличается от NTFS он знает, поэтому разобраться в разнице между ext3, ext4 и, скажем, ReiserFS для него особого труда не составит. А поговорим о фундаментальных отличиях. В отличие от Windows, файловая система Linuх иерархична. Она начинается от корня, который обозначается знаком / (слеш), и имеет древовидную структуру. При этом абсолютно не имеет значения, что отдельные части файловой системы могут находиться на других разделах или вообще физических дисках.

Рассмотрим еще одну схему.

Linux-beginners-1-003.jpg
В Windows каждый раздел имеет собственную файловую систему и обозначающую его букву. Все пути к файлам и папкам начинаются с буквы, т.е. от корня раздела. Так если у нас на первом физическом диске, на втором логическом разделе была папка DATA, то путь к ней соответственно будет как D:DATA, если мы захотим перенести ее на второй жесткий диск, то ее пусть изменится на E:DATA. В ряде случаев это жутко неудобно, так как путь надо изменить во всех местах ее использования и даже существуют соответствующие утилиты.

В Linux подход кардинально иной. Самое время познакомиться с термином точка монтирования, который означает место файловой системы, куда подключается устройство хранения данных. Например, мы хотим вынести домашние каталоги пользователей на отдельный раздел, как на схеме выше, для этого нам нужно смонтировать второй логический раздел первого физического диска sda2 в /home. После чего перенести туда все пользовательские данные. Для системы и программ это произойдет абсолютно прозрачно, они как использовали абсолютный путь, скажем /home/andrey/data, так и будут его использовать. Добавили еще один диск и хотим вынести туда директорию /var? Нет проблем, останавливаем использующие каталог службы, монтируем sdb1 в /var и переносим данные, запускаем службы.

Всё есть файл

Еще один основополагающий принцип, который унаследован от UNIX-систем. В Linux всё есть файл: устройства, диски, сокеты и т.д., например, открыв /var/run мы увидим pid-файлы, соответствующие каждой запущенной службе в системе, а в /dev файлы каждого подключенного к системе устройства:

Linux-beginners-1-004.jpg
Что это дает? Не будем вдаваться в подробности, а разберем несколько простых примеров. Скажем, нужно создать образ оптического диска. В Windows нам понадобится для этого специализированное ПО, в Linuх все проще, CD-ROM — это блочное устройство, но в тоже время — это файл, файл блочного устройства. Берем соответствующий инструмент и копируем содержимое файла устройства в файл ISO образа:

dd if=/dev/cdrom of=/home/andrey/image.iso

Хотим заменить жесткий диск? Нет ничего проще, копируем содержимое одного файла блочного устройства в файл другого блочного устройства:

dd if=/dev/sda of=/dev/sdb

И не нужно никаких Partition Magic.

Другая ситуация, какое-либо ПО настоятельно ищет библиотеку lib-2-0-1.so, а у нас есть совместимая с ней, но более новая, lib-2-1-5.so, как быть? Создаем символическую ссылку на lib-2-1-5.so с именем lib-2-0-1.so и все будет работать. Потому что все есть файл и символическая ссылка тоже тип файла. А теперь попробуйте подсунуть Windows приложению lib-2-0-1.lnk вместо lib-2-1-5.dll…

Или нам нужно сохранить вывод какой-либо команды. Например, команда

ifconfig

выведет на экран сведения о сетевых адаптерах системы:

Linux-beginners-1-005.jpg
А теперь вспоминаем, что все есть файл, в том числе и устройство отображения (экран), поэтому просто перенаправим стандартный поток вывода вместо экрана в нужный нам файл:

ifconfig > ~/123.txt

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

Linux-beginners-1-006.jpg

Потоки и конвейер

В прошлом примере мы затронули стандартный поток вывода. В Linux существуют стандартные для всех процессов потоки ввода-вывода данных stdin, stdout и поток вывода ошибок stderr. Что это значит? Как минимум то, что процесс обмена данными между различными процессами стандартизован. Это позволяет создавать конвейеры, когда стандартный поток вывода одной команды передается стандартному потоку ввода другой. Например, мы хотим посмотреть список установленных пакетов в системе, в частности пакеты squid. Для этой цели есть команда:

dpkg -l

Ээээ… Это что такое и как тут что-то понять? На экране быстро промелькнули сведения о всех установленных в системе пакетах и все что мы можем видеть, это «хвост» этого вывода:

Linux-beginners-1-007.jpg
Но ведь нам и не нужен весь вывод этой команды, нас интересуют исключительно пакеты squid. Поэтому направим вывод этой команды на ввод другой, которая уже отберет и покажет то, что нам нужно:

dpkg -l | grep squid

Linux-beginners-1-008.jpg
Вот это совсем другое дело!

Причем конвейер может быть сколь угодно длинным, результат работы одной команды можно передавать второй, от второй к третьей и т.д. Еще один пример из жизни. Вам надо получить все строки вашего конфигурационного файла squid, но без комментариев и пустых строк, чтобы, например, выложить на форуме или отправить другу. Можно конечно скопировать все, но вряд-ли кто-то захочет вам помогать, прокручивая полотно стандартного файла squid.conf, большая часть которого комментарии и примеры. Делаем проще:

cat /etc/squid3/squid.conf | grep -v ‘^#’ | sed ‘/^$/d’ > ~/mysquid.conf

И вот что у нас получилось:

Linux-beginners-1-009.jpg
Просто и понятно, все опции как на ладони. Это стало возможным в результате использования конвейера трех команд, первая вывела в поток содержимое файла, вторая отобрала все строки кроме комментариев, а третья удалила пустые, результат мы направили в файл.

Буквы большие, буквы маленькие

Linux, как и UNIX, является регистрозависимой системой. И это надо помнить! Потому что, в отличие от Windows, myfile.txt, Myfile.txt и myfile.TXT — это три разных файла. В целях совместимости с другими системами не стоит этим злоупотреблять и хранить файлы, имя которых отличается только регистром, а хорошим тоном считается использование в именах только строчных букв.

Расширения и типы файлов

В Windows системах тип файла определяется его расширением, если мы переименуем exe-файл в jpg, то он не запустится, и система будет пытаться обработать его как картинку. В Linux тип файла определяется по его содержимому и расширение используется исключительно для совместимости с другими системами или для удобства пользователя. Возможность исполнения файла обеспечивается установкой соответствующего атрибута. Так в Windows чтобы сделать скрипт исполняемым, надо было изменить расширение с txt на bat, в Linux для этого нужно сделать файл исполняемым. Непонимание этого момента приводит к ситуациям, когда начинающий администратор не понимает, почему его скрипт myscript.sh не выполняется. На самом деле расширение .sh нужно только для удобства, чтобы сразу было ясно, это скрипт Bash Shell, а чтобы он работал, ему надо поставить атрибут исполняемого, а называться он может как угодно, хоть myscript.pupkin-vasya.

Требования

  • сервер с Ubuntu 16.04 (см. руководство Vscale: создаём первый сервер).

Для разных операционных систем командную строку можно открывать с помощью приложений:

  • Mac OS X: Terminal (default), iTerm 2;
  • Windows: PuTTY;
  • Linux: Terminal, KDE Konsole, XTerm.

С подробным описанием команд для Ubuntu можно ознакомиться в официальной документации Командная строка Ubuntu.

Вход на сервер через терминал

В операционной системе Ubuntu 16.04 открыть командную строку можно двумя способами: через консоль и через графический терминал.

Для работы через консоль следует нажать сочетание клавиш Ctrl+Alt+F1, для возврата в графический интерфейс — сочетание клавиш Ctrl+Alt+F7.

Для запуска терминала нажмите сочетание клавиш Ctrl+Alt+T.

Внизу экрана располагается приглашение командной строки — последовательность символов, извещающая о готовности к обработке команд:

kamilla@kamilla-Aspire-V3-371:~$

, где:

  • kamilla — имя текущего пользователя (суперпользователь/администратор);
  • kamilla-Aspire-V3-37 — имя хоста (сервер);
  • : — разделитель;
  • ~ — текущая директория (в какой папке выполняется команда) пользователя (по умолчанию /home/
  • $ — символ приглашения ввода для пользователей с обычными правами;
  • # — символ приглашения ввода для суперпользователя/администратора root (например, root@cs49647:~#).

Базовые команды, используемые при настройке сервера

После создания нового сервера необходимо предпринять несколько шагов по его базовой настройке (см. руководство Начальная настройка сервера под управлением ОС Ubuntu).

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

ssh -p №port demo@adress

, где:

  • №port — номер заданного порта при начальной настройке сервера;
  • demo — имя пользователя;
  • adress — ip-адрес сервера.

Для входа на сервер под учетной записью root используйте команду, заменив SERVER_IP_ADDRESS на публичный IP-адрес Вашего сервера:

ssh root@SERVER_IP_ADDRESS

Для создания новой учетной записи пользователя введите команду, заменив имя DEMO на любое другое необходимое имя:

adduser DEMO

Для открытия конфигурационного файла в текстовом редакторе под пользователем root введите команду:

nano /etc/ssh/sshd_config

Для замены строчки в открывшемся конфигурационном файле найдите, например, строчку Port 22 и замените число 22 на любое другое число (от 1025 и до 65536).

После внесения изменений сохраните и закройте файл, нажав сочетание клавиш CTRL-X, затем клавишу Y, затем клавишу ENTER.

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

service ssh restart

Для выполнения команды с привилегиями root-пользователя, перед ней следует поставить слово sudo:

sudo command_to_run
Для завершения сессии выполните команду:

exit

Обзорное описание команд, аргументов и опций для них

Для запуска команды следует ввести команду и нажать клавишу Enter.

Команды выполняются последовательно, для выполнения следующей появится приглашение командной строки (если не использовать специальные скрипты).

Для того чтобы открыть страницу с подробным описанием команды Linux, например ip address, введите команду man с именем команды:

man ip address

Запуск без аргументов и опций

При запуске команд без аргументов:

  • cd — возврат в домашнюю директорию текущего пользователя;
  • ls — вывод списка файлов и директорий в текущем каталоге.

 Пример:

Выполнив команду ls без параметров, получаем список файлов в каталоге:

testk@cs49647:~$ ls
linux.jpg  template  ubuntu.jpg

Запуск с аргументами (параметрами)

Большинство команд рассчитано на запуск с передачей аргументов (параметров).

Наиболее распространенное использование команды cd — это вызов с аргументом, который является путем к директории, в которую следует перейти:

cd /usr/bin

Запуск с опциями

Многие команды также поддерживают опции (флаги, ключи) запуска, позволяющие изменять результат выполнения команды. Опции представляют собой одиночный символ после символа «-», либо в расширенном написании после «—».

 Пример:

Выполнив команду ls с опциями -A, -S, -1, получаем список всех файлов, включая «скрытые», расположенных по одному на каждой строке и отсортированных по размеру:

testk@cs49647:~$ ls -AS1
.gtkrc-2.0
linux.jpg
ubuntu.jpg
template
.filter

Запуск с аргументами и опциями (одновременно)

Структура записи команды с опциями и аргументами: 

команда -опции аргументы

 Пример:

Команда ls -la /home выведет подробный (-l) листинг директории /home, включая скрытые файлы (-a):

testk@cs49647:~$ ls -la /home
total 12
drwxr-xr-x  3 root  root  4096 Oct 14 16:13 .
drwxr-xr-x 22 root  root  4096 Oct 20 10:25 ..
drwxr-xr-x  4 testk testk 4096 Oct 19 10:52 testk

Переменные окружения

Окружение/среда (environment) — это набор пар ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ, которые могут использоваться запускаемыми процессами.

Просмотр переменных окружения

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

env

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

env | more

Просмотр значения переменной

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

Чтобы вывести на экран значение какой-нибудь переменной окружения, достаточно набрать echo $ИМЯ_ПЕРЕМЕННОЙ, например, просмотр домашней директории пользователя, хранящийся в переменной окружения $HOME:

echo $HOME

Для перехода в домашнюю директорию следует использовать команду:

cd $HOME

Установка переменных окружения

Для установки значений переменной окружения введите команду:

VAR=value

, где

VAR — название переменной;

value — значение переменной.

Пример:

Выполнив команду var=value, после вывода на просмотр получаем результат value:

testk@cs49647:~$ var=value
testk@cs49647:~$ echo $var
value

Использование встроенной консоли VScale

Для работы с командной строкой также можно использовать встроенную консоль VScale, нажав в меню справа кнопку “Открыть консоль”.


Откроется консоль следующего вида.

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

Шпаргалка по работе в командной строке Linux

Включение/выключение

Перезагрузить компьютер:rebootили shutdown -r nowВыключить компьютер:shutdown -h nowВыключить компьютер через заданное время:shutdown -h hh:mmили shutdown -h +mОкончание сеанса работы в терминале:exit

Управление пользователями

Включить корневую учетную запись:sudo passwd rootЗаблокировать корневую учетную запись:sudo passwd -l rootДобавить пользователя:adduser имя_пользователяУдалить пользователя:deluser имя_пользователяУдалить пользователя вместе с домашним каталогом:deluser имя_пользователя -remove-homeИзменить имя пользователя и название его домашнего каталога:usermod -l новое_имя_пользователя -d /home/новое_имя_пользователя -m старое_имя_пользователяИзменить пароль пользователя:passwd имя_пользователяВосстановить пароль к учетной записи в режиме восстановления системы (нажать Esc в процессе загрузки GRUB):passwd имя_записи

Управление каталогами

Показать информацию о файловых системах:sudo mountПоказать список разделов:dfПоказать содержание текущего каталога:du -hПоказать объем указанного каталога:du -S имя_каталогаОтобразить путь к текущему каталогу:pwdСоздать каталог:mkdir имя_каталогаСкопировать каталог:cp каталог_1 каталог_2Переместить каталог_1 в каталог_2:mv каталог_1 каталог_2Войти в каталог:cd /имя_каталогаПоказать содержание каталога:ls /имя_каталогаПоказать содержание каталога, включая скрытые файлы и каталоги:ls -a /имя_каталогаПоказать полную информацию о содержании каталога:ls -l /имя_каталогаУдалить пустой каталог:rmdir имя_каталогаУдалить каталог с содержанием:rm -r имя_каталога

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

Создать файл в текущем каталоге:touch имя_файла.txtНайти файл:locate имя_файлаОбновить базу поиска файлов:updatedbПросмотреть текстовый файл:cat /путь/имя_файлаПросмотреть текстовый файл в обратном порядке — от последней строки к первой:tac /путь/имя_файлаСкопировать файл_1 в файл_2:cp файл_1 файл_2Переместить файл_1 в файл_2:mv файл_1 файл_2Переместить файл с сохранением оригинала (в конец имени файла дописывается символ ~):mv -b файл целевой_каталогУдалить файл:rm имя_файлаЗаписать информацию в файл, перезаписав его:echo текст > имя_файла.txtДобавить информацию в файл без его перезаписи:echo текст >> имя_файла.txtСлить несколько текстовых файлов в один:cat файл_1 файл_2 > итоговый_файл

Работа с архивами

Создать архив из содержимого каталога:tar -cvf имя_архива.tar имя_каталога/Сжать файлы:bzip2 имя_файлаgzip имя_файлаzip имя_файлаРаспаковать архив:gunzip имя_архива.tar.gzbunzip имя_архива.tar.bzbunzip2 имя_архива. ar.bz2tar xvf имя_архива.tartar xzf имя_архива.tgz

Управление правами доступа

Пример:-r—r——dr—r——Дефис вначале означает обычный файл, d — каталог (директорию). Дальше три группы по три символа означают права доступа для владельца, членов группы, в которую входит владелец, и для всех остальных пользователей соответственно.дефис означает отсутствие прав,
r — означает право на чтение,
w — право на запись,
x — право на выполнение.Просмотреть права доступа:ls -l имя_файла_или_каталогаЗадать права доступа:chmod *** имя_файла_или_каталога где *** — права доступа, указанные абсолютным способом, или:
chmod группа=/+/-тип доступа имя_файла_или_каталога где группа: u (user, владелец), g (group, группа), o (other, другие), a (all, все), например: chmod a+rw имя_файлаИзменить владельца:chown имя_пользователя имя_файлаРаспространенные права доступа:644 = rw-r—r—
666 = rw-rw-rw-
777 = rwxrwxrwx

Порядок цифр соответствует порядку пользователей (ugo), цифра в каждой позиции складывается из значений 4, 2 и 1 для прав r, w и x, соответственно. Так право полного доступа для владельца и отсуствие каких-либо прав для группы и прочих пользователей будет 700 (4+2+1.0.0).

Управление программами

Обновить список программного обеспечения:apt-get updateОбновить систему:apt-get upgradeНайти программу в репозитарии по ключевому слову:apt-cache search ключевое_словоПоказать информацию о пакете:apt-cache show название_пакетаУстановить программу из репозитария:apt-get install имя_пакетаУдалить установленную программу:apt-get remove имя_пакетаУдалить программу вместе с файлами настройки:apt-get remove purge имя_пакетаУстановить программу из скомпилированного пакета:dpkg -i имя_пакета.debУдалить программу:dpkg -r имя_пакета.debОчистить локальное хранилище полученных файлов пакетов:apt-get cleanПросмотреть список установленных пакетов:dpkg -lДобавить частный источник программного обеспечения PPA (Personal Package Archive):add-apt-repository ppa:user/ppa-nameУстановить программу из бинарного файла (предварительно необходимо перейти в каталог с файлом программы):./имя_файла.binРазрешить исполнение файла (если необходимо):chmod a+x имя_файла.bin /> Установить программу из исходных файлов (предварительно необходимо перейти в каталог с файлом программы):./configure
make
make installУдалить программу, установленную из исходных файлов:make uninstallЗапустить графическую программу с правами root:gksudo имя_программы

Управление системой

Отобразить список зарегистрированных в системе пользователей:whoПоказать информацию об использовании оперативной памяти:freeПоказать список запущенных процессов:psЗавершить процесс:killall имя_процессаПоказать список процессов в реальном времени:topВнести изменения в файл конфигурацииgedit /путь/к_файлуСнизить скорость чтения диска в приводе:hdparm -E 4 /dev/dvdrom

Диагностика системы

Проверить жесткий диск на «битые» секторы:badblocksПоказать состояние сетевых интерфейсов:ifconfigПоказать состояние беспроводных сетевых устройств:iwconfigПроверить таблицу маршрутизации:routeПроверить доступность компьютера в сети:ping имя_сайта_или_ip_адрес Остановить процесс: Ctrl+CПроверить маршрут следования пакета:traceroute имя_сайта_или_ip_адресПоказать информацию о подключенных USB-устройствах:lsusbОтобразить список PCI-шин и подключенных к ним устройств:lspciОтобразить список оборудования системы:lshw

Получение помощи

Показать Введение в пользовательские команды:man introОтобразить краткое описание команды:whatis имя_командыВывести информацию о команде:man имя_командыinfo имя_командыимя_команды —helpНайти информацию по ключевым словам:man -k ключевое_словоПоиск по странице:/ключевое_словоПродолжить поиск:NВывести историю команд:historyВыполнить команду из списка истории команд:!номер_команды!первые_буквы_командыОчистить экран консоли:clear

Объединение команд

Последовательное выполнение команд:команда1 ; команда2Последовательное выполнение команд при условии успешного выполнения предыдущей команды:команда1 && команда2Последовательное выполнение команд при условии неудачного выполнения предыдущей команды:команда1 || команда2Последовательное выполнение команд с передачей результатов выполнения предыдущей команды последующей:команда1 | команда2Запуск команды в фоновом режиме:команда &

Символы подстановки

  • Текущий каталог: .
  • Родительский каталог: ..
  • Домашний каталог пользователя: ~
  • Один произвольный символ: ?
  • Любое количество произвольных символов: *
  • Символ из указанного диапазона: [a,b,x-z], например, [a,b].rar
  • Любые символы, кроме указанных: [!ab], например, [!ab].rar
  • Подстановка с помощью фигурных скобок: например, {a,b}{1,2} создаст строку a1 a2 b1 b2
  • Указание специального символа: или апостроф, например, ’имя файла’, или имя файла

Основные команды Linux

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

ls — вывод имен файлов

Утилита ls предназначена, для вывода списка файлов и каталогов в текущем каталоге. Рассмотрим некоторые полезные свойства команды ls.

-A — включить в список «скрытые» файлы («скрытые» файлы в Linux имеют в своем названии точку в начале имени файла, например, .gtkrc-2.0). -S — отсортировать файлы по размеру. -t — отсортировать по дате изменения. -1 — выводить имена в столбик, по одному на каждой строке. -l — вывести подробную информацию о каждом файле, размер файла, владелец файла, права доступа, дата изменения.

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

admin@pingvinus:~/information$ ls fonts.tar.gz linux.jpg report.odt template ubuntu.jpg

Теперь выполним команду с опциями -A, -S, -1. В результате получим список всех файлов, включая «скрытые», расположенных по одному на каждой строке и отсортированных по размеру.

admin@pingvinus:~/information$ ls -AS1 fonts.tar.gz .gtkrc-2.0 linux.jpg report.odt ubuntu.jpg template .filter

Выполним команду ls с опцией -l. Получим подробную информацию о каждом файле.

admin@pingvinus:~/information$ ls -l -rw-r—r— 1 admin admin 217589 2009-02-12 13:35 fonts.tar.gz -rw-r—r— 1 admin admin 162348 2009-02-03 20:50 linux.jpg -rw-r—r— 1 admin admin 155847 2009-02-15 12:54 report.odt -rw-r—r— 1 root root 120736 2009-02-12 12:55 template -rw-r—r— 1 admin admin 134404 2009-02-12 12:24 ubuntu.jpg

mkdir — создание каталога

Команда mkdir предназначена для создания новой директории. Чтобы создать новую директорию, выполните mkdir <имя директории=»»>. Для того, чтобы создать сразу несколько директорий, укажите их имена через пробел, например:mkdir mydir1 mydir2 mydir3

cp — копирование файла

Утилита cp используется для создания копии файла. Для обычного копирования используется следующий синтаксис cp <имя файла=»» источника=»»> <имя файла=»» назначения=»»>.

При использовании cp есть один нюанс, который нужно обязательно помнить. Если файл назначения уже существует, то cp перезапишет его. Поэтому, чтобы избежать случайного уничтожения существующего файла, нужно использовать команду cp с опцией -i. Перед перезаписью файла будет выдан запрос на ваше согласие. Например, если мы копируем файл linux.jpg в файл windows.jpg и windows.jpg уже существует, то будет выдан запрос на перезапись файла:

admin@pingvinus:~/information$ cp -i linux.jpg windows.jpg cp: переписать `windows.jpg’? y

Опция -r (или -R) используется для копирования одной директории в другую.

mv — перемещение, переименование файла

Утилита mv предназначена для перемещения, переименования файла. Для переименования файла используется синтаксис mv <имя файла=»»> <новое имя=»» файла=»»>. Для перемещения файла в другую директорию используется синтаксис mv <имя файла=»»> <директория>. С mv можно также использовать опцию -i, чтобы случайно не перезаписать существующий файл.

rm — удаление файла

Команда rm предназначена для удаления файлов. Основные опции команды:

-i — выводить запрос перед удалением каждого файла. -r (или -R) — удалить директории и их содержимое.

cd — смена текущего каталога

Команда cd предназначена для смены каталога, в котором вы сейчас находитесь. Например, вы сейчас находитесь в своем домашнем каталоге ~ и хотите перейти в каталог ~/information, тогда нужно просто выполнить команду cd information.

admin@pingvinus:~$ cd information/ admin@pingvinus:~/information$

Если выполнить команду cd без параметров, то вы перейдете в свой домашний каталог ~.

admin@pingvinus:~/information$ cd admin@pingvinus:~$

Чтобы перейти в каталог на уровень выше (в родительский каталог) можно использовать синоним «две точки» — .., которые в Linux служат синонимом пути родительского каталога. Например, находясь в каталоге ~/information мы можем перейти в каталог ~ следующим образом:

admin@pingvinus:~/information$ cd .. admin@pingvinus:~$

cat — вывод содержимого файла

Утилита cat выводит содержимое текстового файла. Простейший синтаксис команды cat <имя файла=»»>. Утилита cat может использоваться для соединения конкатенации двух текстовых файлов, собственно от этого и происходит название утилиты (catenation, concatenation). Например, у нас есть два файла download и ubuntu и в каждом по две строки. Сначала мы выведем содержимое файлов по отдельности, а затем сделаем конкатенацию двух файлов.admin@pingvinus:~/information$ cat download first line of file download second line of file download admin@pingvinus:~/information$ cat ubuntu first line of file ubuntu second line of file ubuntu admin@pingvinus:~/information$ cat download ubuntu first line of file download second line of file download first line of file ubuntu second line of file ubuntu

pwd — вывод полного пути текущего каталога

Команда pwd используется, чтобы вывести полный путь текущего каталога.

admin@pingvinus:~/information$ pwd /home/admin/information

man — получение руководства

Системная утилита man выводит страницы системной документации. С ее помощью можно получить информацию по любым командам Linux. Для этого используется синтаксис man <имя утилиты=»»>. Например, чтобы вывести руководство по утилите ls, используйте команду man ls. Войдите, чтобы ставить лайкимне нравитсяЛайков: +1 войдите, чтобы ставить лайки

Промежуточные команды

1. echo — команда «echo» помогает нам перемещать некоторые данные, обычно текст, в файл. Например, если вы хотите создать новый текстовый файл или добавить в уже созданный текстовый файл, вам просто нужно ввести «echo hello, меня зовут hich >> new.txt». Вам не нужно разделять пробелы с помощью обратной косой черты здесь, потому что мы заключаем в две треугольные скобки, когда мы заканчиваем то, что нам нужно написать.


результат команды echo в linux

2. cat — Используйте команду cat для отображения содержимого файла. Обычно используется для удобного просмотра программ.


результат команды echo в linux

3. nano, vi, jed — nano и vi уже установлены текстовые редакторы в командной строке Linux. Команда nano — хороший текстовый редактор, который помечает ключевые слова цветом и может распознавать большинство языков. И vi проще, чем nano. Вы можете создать новый файл или изменить файл с помощью этого редактора. Например, если вам нужно создать новый файл с именем «check.txt», вы можете создать его с помощью команды «nano check.txt». Вы можете сохранить ваши файлы после редактирования, используя последовательность Ctrl + X, затем Y (или N для no). По моему опыту, использование nano для редактирования HTML выглядит не очень хорошо из-за его цвета, поэтому я рекомендую jed текстовый редактор. Мы скоро приступим к установке пакетов.

4. sudo — широко используемая команда в командной строке Linux, sudo означает «SuperUser Do». Поэтому, если вы хотите, чтобы любая команда выполнялась с правами администратора или root, вы можете использовать команду sudo. Например, если вы хотите отредактировать файл, такой как viz. alsa-base.conf, для которого требуются права root, вы можете использовать команду — sudo nano alsa-base.conf. Вы можете ввести корневую командную строку с помощью команды «sudo bash», а затем ввести свой пароль пользователя. Вы также можете использовать команду «su», но перед этим вам нужно установить пароль root. Для этого вы можете использовать команду «sudo passwd» (не с орфографической ошибкой, это passwd). Затем введите новый пароль root.

5. df — используйте команду df, чтобы увидеть доступное дисковое пространство в каждом из разделов вашей системы. Вы можете просто ввести df в командной строке и увидеть каждый смонтированный раздел и его использованное / доступное пространство в % и в килобайтах. Если вы хотите, чтобы оно отображалось в мегабайтах, вы можете использовать команду «df -m».


результат команды df -m в linux

6. du — Используйте du, чтобы узнать, как файл используется в вашей системе. Если вы хотите узнать размер занимаемого места на диске для конкретной папки или файла в Linux, вы можете ввести команду df и имя папки или файла. Например, если вы хотите узнать размер дискового пространства, используемое папкой документов в Linux, вы можете использовать команду «du Documents». Вы также можете использовать команду «ls -lah», чтобы просмотреть размеры всех файлов в папке.

7. tar — Используйте tar для работы с tarballs (или файлами, сжатыми в архиве tarball) в командной строке Linux. У него длинный список применений. Он может использоваться для сжатия и распаковки различных типов архивов tar, таких как .tar, .tar.gz, .tar.bz2 и т. д. Это работает на основе аргументов, данных ему. К примеру, «tar -cvf» для создания .tar архива, —xvf для распаковки .tar архива, —tvf для просмотра содержимого архива и т.д.

8. zip, unzip — используйте zip для сжатия файлов в zip-архив и unzip для извлечения файлов из zip-архива.

9. uname — используйте uname, чтобы показать информацию о системе, в которой работает ваш дистрибутив Linux. Использование команды «uname -a» выводит большую часть информации о системе: дату выпуска ядра, версию, тип процессора и т. д.


результат команды uname -a в linux

10. apt-get — используйте apt для работы с пакетами в командной строке Linux. Используйте apt-get для установки пакетов. Это команда требует прав суперпользователя, поэтому используйте команду sudo с ним. Например, если вы хотите установить текстовый редактор jed (как я упоминал ранее), мы можем ввести команду «sudo apt-get install jed». Точно так же любые пакеты могут быть установлены следующим образом. Рекомендуется обновлять ваш репозиторий каждый раз, когда вы пытаетесь установить новый пакет. Вы можете сделать это, набрав «sudo apt-get update». Вы можете обновить систему, набрав «sudo apt-get upgrade». Мы также можем обновить дистрибутив, набрав «sudo apt-get dist-upgrade». Команда «apt-cache search» используется для поиска пакета. Если вы хотите найти его, вы можете ввести «apt-cache search jed» (для этого не требуется root).

11. chmod — используйте chmod, чтобы сделать файл исполняемым и изменить разрешения, предоставленные ему в Linux. Представьте, что на вашем компьютере есть код Python с именем numbers.py. Вам нужно будет запускать «python numbers.py» каждый раз, когда вам нужно его запустить. Вместо этого, когда вы делаете его исполняемым, вам просто нужно запустить «numbers.py» в терминале, чтобы запустить файл. Чтобы сделать файл исполняемым, вы можете использовать команду «chmod + x numbers.py» в этом случае. Вы можете использовать «chmod 755 numbers.py», чтобы дать ему права root, или «sudo chmod + x numbers.py» для исполняемого файла root. Вот еще немного информации о команде chmod.

12. hostname — Используйте команду hostname, чтобы узнать ваше имя в вашем хосте или сети. По сути, он отображает ваше имя хоста и IP-адрес. Просто набрав «hostname», вы получите имя хоста. Набрав «hostname -I», вы получите свой IP-адрес в сети.

13. ping — используйте ping для проверки вашего соединения с сервером. Википедия говорит: «Ping — это утилита для администрирования компьютерной сети, используемая для проверки доступности хоста в сети Интернет-протокола (IP)». Например, когда вы набираете, , «ping google.com», он проверяет, может ли он подключиться к серверу и вернуться обратно. Он измеряет это время в оба конца и дает вам подробную информацию о нем. Использовать эту команду можно и для проверки интернет-соединения. Если он пингует сервер Google (в данном случае) — интернет-соединение активно!


результат команды ping в linux

Советы и рекомендации по использованию командной строки Linux

  • Вы можете использовать команду clear, чтобы очистить терминал, если он там скопилось слишком много команд.
  • TAB можно использовать для заполнения в терминале. Например, вам просто нужно набрать «cd Doc», а затем TAB, и терминал заполняет все остальное и делает его «cd Documents».
  • Ctrl + C может использоваться для безопасной остановки любой команды в терминале. Если Crtl+C не сработал, то можно использовать Ctrl + Z чтобы остановить процесс, запущенный в терминале.
  • Вы можете выйти из терминала, используя команду exit.
    Выключить или перезагрузить компьютер можно с помощью команд sudo halt и sudo reboot.

<хедер class=»read-next-card-хедер»>

5 инструментов, чтобы запомнить команды Linux навсегда

  • Semen Lobachevskiy

Semen Lobachevskiy 7 янв. 2019• 3 мин. чтенияchmod в Linux

Команда chmod используется для изменения прав доступа к файлам или каталогам.

<хедер class=»post-card-хедер»> Инструкции
[spoiler title=»Источники»]

  • https://interface31.ru/tech_it/2014/09/linux-nachinayuschim-chast-1-pervoe-znakomstvo.html
  • https://community.vscale.io/hc/ru/community/posts/209004205-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%B0%D1%8F-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0-Linux-%D0%BA%D1%80%D0%B0%D1%82%D0%BA%D0%B8%D0%B9-%D0%BA%D1%83%D1%80%D1%81-%D0%B4%D0%BB%D1%8F-%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85
  • https://vasilevsky.net/linux-commands
  • https://pingvinus.ru/note/command-line-fundamentals
  • https://omgubuntu.ru/basic-linux-commands-for-beginners/
[/spoiler]