Windows vs Linux
Операционные системы Windows и Linux очень похожи, так как решают одни и те же задачи, работают в общей компьютерной сети и на одном и том же «железе», но вместе с тем они имеют ряд отличий, знание которых поможет вам сделать быстрый старт. В данном разделе мы постарались кратко отразить наиболее важные из них.
Подход к работе с дисками
В системе Windows есть понятие дисков или логических томов, которые обозначаются буквами латинского алфавита (например, A:\, B:\, C:\ и т.д.), а полный путь к файлу указывается, начиная с имени диска (например, C:\Windows\System32\drivers\etc\hosts
). В Windows есть возможность монтировать диск в пустую папку NTFS, однако эта операция не используется широко.
В системе Linux используется единая иерархия каталогов и файловых систем, а полный путь к файлу указывается от корня файловой системы, который обозначается наклонной чертой «/» (например, /etc/hosts
). Корень файловой системы физически расположен на системном диске компьютера, а дополнительные диски можно смонтировать в любую точку, что позволяет, например, перенести папку /home
с рабочими каталогами пользователей на отдельный физический диск.
Подход к хранению файлов программ
В системе Windows служебные файлы операционной системы находятся в каталоге C:\Windows
, а файлы приложений в каталоге C:\Program Files
, причем для каждого приложения создается отдельная папка, в которой хранятся все его файлы, организованные любым способом на усмотрение разработчиков приложения. Для хранения настроек приложений обычно используются файлы *.ini
, и только приложения продвинутых вендоров используют специальную базу данных, которая называется реестром Windows.
В Linux для организации файлов придерживаются так называемого стандарта иерархии файловых систем (Filesystem Hierarchy Standard, FHS), который унифицирует размещение файлов по их назначению. Например, все исполняемые файлы должны находиться в каталогах /bin
и /sbin
(от англ. binary, бинарные файлы), конфигурационные файлы всех установленных приложений находятся в папке /etc
(от et cetera, прочие), а изменяемые файлы, такие как журналы, всегда можно найти в каталоге /var
(от англ. variable, изменчивый).
Концепция «все есть файл» vs «все есть объект»
В системе Windows файлы – это просто файлы, а для реализации межпроцессного взаимодействия используются такие технологии, как API, COM, RPC, Pipes и др.
В Linux есть аналоги этих технологий, например, шина D-Bus, но для того, чтобы без разработки специальных интерфейсов предоставить простой унифицированный доступ ко всем возможностям операционной системы, Linux заимствовал у Unix концепцию «все есть файл». Поэтому в иерархии файлов Linux некоторые каталоги являются точками монтирования псевдо-систем или так называемых виртуальных файловых систем.
Например, с помощью команды cat /proc/meminfo
можно увидеть параметры использования памяти, так как каталог /proc
является не обычным каталогом, а виртуальной файловой системой, которая предоставляет информацию о системе и процессах.
Еще необычнее для Windows-администраторов могут показаться возможности взаимодействия между приложениями через так называемые сокеты домена Unix или IPC-сокеты (от inter-process communication). Эти сокеты представляют собой специальные файлы на диске, через которые приложения могут устанавливать быстрые соединения, исключающие накладные расходы, связанные с TCP/IP стеком. Например, если в Windows для отправки задания на печать приложения обращаются напрямую к API операционной системы, то в Linux они обращаются к общей службе печати CUPS (Common Unix Printing System) по сокету /var/run/cups/cups.sock
.
Регистрозависимость в именах файлов
В Windows имена файлов могут содержать как прописные, так и строчные символы, но два файла с именами readme.txt
и README.txt
не могут находиться в одном каталоге, т.к. не пройдут проверку на уникальность.
В Linux оба файла вполне могут находиться в одной директории, поэтому довольно сложно заметить проблему, когда мы указываем полный путь к файлу. С этой проблемой очень часто сталкиваются начинающие веб-дизайнеры, которые создают html-страницы на Windows-компьютере и потом долго не могут понять, почему их сайт не работает на Linux-хостинге, как задумано.
localadmin@astra:~$ touch readme.txt
localadmin@astra:~$ touch README.txt
localadmin@astra:~$ ls
Desktop readme.txt Видео Загрузки Музыка
Desktops README.txt Документы Изображения Общедоступные
Подход к использованию ссылок
Несмотря на то, что команда mklink
для создания ссылок появилась в системе Windows еще со времен NT, большинство пользователей Windows ограничиваются использованием ярлыков, которые представляют собой обычные файлы с расширением *.lnk
, содержащие настройки для быстрого доступа к файлам и папкам. Аналогом lnk-файлов в Linux являются файлы *.desktop
.
В системе Linux жесткие (hard link) и мягкие ссылки (symbolic link) получили широкое распространение, поэтому изменения в одном файле могут отражаться сразу в нескольких местах, что сначала может сбивать с толку.
Например, с помощью команд stat /run/cups/cups.sock
и stat /var/run/cups/cups.sock
вы можете убедиться, что эти файлы указывают на inode с одним и тем же номером, а все потому, что папка /var/run является мягкой ссылкой на папку /run
, что было сделано для обратной совместимости. Проверьте это командой ls -l /var/run
.
Еще интереснее, когда на один и тот же файл указывают сразу несколько жестких ссылок. Например, с помощью команд stat /usr/bin/gunzip
и stat /usr/bin/uncompress
вы можете легко убедиться, что это действительно две разные жесткие ссылки, которые указывают на один и тот же inode, поэтому до тех пор, пока мы не удалим обе ссылки, этот файл будет физически оставаться на диске.
Подход к распространению программного обеспечения
Для установки Windows-приложений администраторам обычно достаточно одного файла *.exe
или *.msi
, и мы очень редко сталкивается с зависимостями, когда перед установкой приложения нужно поставить что-то еще, например, .NET Framework, Java, DirectX, медиа-кодеки. Хорошим тоном считается, когда Windows-разработчики добавляют в свой установочный пакет все необходимые библиотеки, и администратор устанавливает несколько приложений подряд, просто кликая «далее > далее > далее».
В Linux концепция повторного использования программного кода доведена до абсолюта, поэтому одни и те же компоненты могут использоваться повторно во множестве разных приложений. Это позволяет сократить время разработки и улучшить качество программного обеспечения, но значительно усложняет процесс установки и обновления приложений.
По указанной причине Linux-приложения распространяются в виде пакетов, которые размещаются в специальных репозиториях. В настройках пакетов указываются ссылки на другие пакеты, которые также необходимы для корректной работы приложения, а для установки приложений используются специальные пакетные менеджеры, которые умеют обрабатывать эти зависимости.
В разных дистрибутивах Linux используются разные пакетные менеджеры. Например, Astra Linux основана на Debian, поэтому для установки приложений используются менеджеры dpkg (от англ. Debian Package) и apt (от англ. Advanced Packaging Tool).
Официальные репозитории операционной системы доступны по адресу https://download.astralinux.ru, но так как индексация каталогов внутри репозитория запрещена, то просматривать вручную эти каталоги не получится, и с ними нужно работать через менеджер пакетов apt, см. Модуль 15. Управление ПО в Astra Linux.
Подход к назначению прав доступа на файлы и папки
В системе Windows с незапамятных времен используется файловая система NTFS, которая позволяет назначать права доступа с помощью так называемых списков контроля доступа (Access Control Lists, ACL), поэтому мы без проблем можем назначить права доступа любому количеству пользователей и групп. Данная модель является очень гибкой и позволяет решить любые задачи бизнеса в части распределения прав доступа.
В системе Linux изначально была реализована упрощенная модель «владелец-группа-остальные» (User-Group-Others, UGO), которая обеспечивала простой и безопасный способ управления правами, но не обладала гибкостью ACL. В дальнейшем эта модель была расширена возможностями POSIX ACL, и современные Linux дистрибутивы поставляются уже с предустановленными пакетами, реализующими эти функции. Однако, концепция UGO осталась, по сути, прежней, поэтому любому уважающему себя администратору нужно хорошо ориентироваться в том, что означают числа 755, 644 и почему за 777 может потребоваться писать объяснительную. Этой теме обязательно будет посвящено одно из наших следующих занятий.
Роль суперпользователя в системе
В системе Windows учетная запись суперпользователя называется Administrator и имеет идентификатор безопасности SID, заканчивающийся на 500, но жесткой привязки к идентификатору нет, и эти привилегии можно назначить любому другому пользователю. Службы Windows работают от различных системных учетных записей, например, System, Local Service, Network Service.
В Linux суперпользователь имеет имя root и POSIX-идентификатор 0, который до версии ядра 2.2 использовался в качестве исключения во всех проверках прав доступа. В современных системах Linux полномочия суперпользователя разделены на блоки, которые называются привилегиями (от англ. capabilities), и так же, как в Windows, могут быть назначены любому пользователю, см. справку на утилиту capsh
(от capability shell).
Отношение к графическим интерфейсам
Разработчики Windows изначально делали ставку на графический интерфейс, чтобы сделать свою систему доступной для широкого круга пользователей, поэтому администраторы долгое время избегали работу в командной строке. С появлением PowerShell ситуация стала меняться, но количество установок Windows Server Core без графического интерфейса все еще крайне незначительно.
В системе Linux первый графический интерфейс появился примерно в те же годы, но целевой аудиторией операционной системы долгое время были продвинутые пользователи, для которых командная строка была более привычной, поэтому для многих зрелых Linux-продуктов графические инструменты либо отсутствуют, либо предоставляют доступ только к части возможностей продукта.
В общем, будьте готовы к тому, что для успешного внедрения Linux-решений на предприятии вам потребуются значительно повысить свою квалификацию в части работы с командной строкой.
Отличий Windows и Linux, конечно же, намного больше, но этого минимума будет уже достаточно для того, чтобы перейти к углубленному изучению операционной системы Linux.