Много лет назад я читал вводный курс по Unix молодым студентам, желающим получить сертификат MSCE (Microsoft Certified Solutions Expert). На каждом занятии они задавали один и тот же вопрос: "Зачем нам нужно изучать Unix, если мы хотим получить MSCE?". Моим ответом было длительное объяснение истоков Unix, DOS и Windows, которое заканчивалось словами "... и потому что на самом деле среды имеют смешанный характер. Лишь небольшое количество компаний, какой бы размер и структуру они не имели, используют только одну операционную систему". Это было актуально в 1996 году, и остаётся актуальным сейчас.
Чем крупнее и сложнее локальная сеть, тем более неоднородной она может быть. Вы можете встретить Solaris, HP-UX, AIX, Linux и другие операционные системы, отличные от Microsoft. В более крупных компаниях существует тенденция распределения обязанностей. У вас будет группа людей, работающих только с Unix, группа, которая отвечает за коммутаторы и маршрутизаторы, и группа, администрирующая лишь системы Windows.
Как бы то ни было, изучение основ Unix не только разумно, но на некоторых предприятиях это даже необходимо. Например, несколько дней назад один мой друг показал мне вакансию на пост администратора Windows, для которой были указаны следующие требования:
- Знание Windows
- Системное администрирование базы данных SQL
- NetBackup
- VMware
- Опыт работы с Linux, а также с локальными сетями приветствуется
Заметьте, что в описании знание Windows является лишь одним из необходимых или обязательных требований для данной позиции. Будучи администратором Windows вам нужно знать больше, чем Windows; вы должны иметь полное представление о работе компьютеров и сетей. ОС Windows является лишь одной деталью более крупной системы.
Для того чтобы понимать процесс маршрутизации, вам не нужно быть в этом экспертом, а для того, чтобы иметь представление о базовой навигации, нормальном режиме работы и уметь устранять незначительные неполадки, не обязательно быть фанатом Unix. Специальная подготовка требуется для того, чтобы вы были способны оценивать проблемы, оказывать какую-либо поддержку и знали, к кому обратиться для оказания более профессиональной технической помощи. Целью данных занятий является предоставление администраторам Windows необходимых навыков работы с Unix для выполнения вышеназванных задач.
Изучение Unix с помощью Linux является великолепным способом получить опыт без риска для промышленных систем. Это также предоставляет возможность использования системы Unix как в качестве администратора, так и обычного пользователя.
В этой статье я буду проводить сравнение непосредственно Linux и Windows, чтобы вы могли увидеть, насколько похожимии являются эти системы. Критериями сравнения являются подобные комманды, сходные функции и похожая конфигурация.
Информация о безопасности в Unix
Как и в Windows, в Unix имеется два основных уровня защиты: User (Пользователь) и Administrator (Администратор). В системах Unix администратор является привилегированным пользователем. Он является локальным администратором системы. Unix - система с минимальными привилегиями, т.е. Unix предоставляет пользователям только те привилегии, которые необходимы для выполнения задач, связанных с пользователем.
Пользователи могут пользоваться файловой системой, выполнять системные команды, а также осуществлять соединение к другим системам с помощью TCP/IP утилит. Пользователи не имеют права перезагружать систему, просматривать защищенные файлы или изменять системные файлы.
Защита файлов проста. Все файлы имеют права доступа для User (Пользователь), Group (Группа) или Other (все остальные пользователи системы), либо же привилегии, которые с ними связаны. Все эти категории (User, Group и Other) имеют право на чтение файла (r), изменение его содержимого (w) или же на его исполнение (x).
User Group Other rwx rwx rwx
К примеру, у файла, который Вы создаете в своем основном каталоге, имеет базовые права доступа: rw-r--r--. Система обеспечивает такую базовую защиту с помощью того, что в мире Unix зовётся маской пользователя, или umask. Определенные привилегии, или modes, скрыты от файла при его создании. Исполняемый бит, x, никогда не приписывается файлу по умолчанию, так что любой новый файл, который Вы создаете, будет иметь права доступа rw-r--r--. Umask является системной настройкой, которая распространяется на всех пользователей.
Исполяемый бит должен быть установлен прямо в файлах. Как вы уже, возможно, догадались, исполняемый бит, x, позволяет пользователю выполнять файл с данной привилегией.
По умолчанию создаваемые файлы имеют привилегию "чтение/запись" для пользователя (Owner) (Владелец), привилегию "только чтение" для Group и такую же привилегию для Other, куда относятся те, кто не являются ни владельцами файла, ни входят в его группу. В Unix "Other" часто называется World. Вы будете часто слышать разговоры пользователей Unix о файлах, которые являются "World readable". Они имеют в виду эту r привилегию в группе Other.
Обратите внимание, что я упомянул "только чтение" как привилегию. Говоря о файлах "только для чтения", сейчас вы уже знаете происхождение данного термина, такого рода файл имеет право доступа только на чтение. Примером файла с привилегиями "только чтение" для всех пользователей является файл с правами доступа r--r--r--.
В Unix правам доступа файлов также присваиваются числа: r = 4, w = 2 и x = 1. Любой созданный вами файл будет иметь права доступа со значением 644 (rw(6)-r(4)--r(4)--). Каково значение прав доступа файла, который имеет следующие права доступа?
rwxrw-r--
Правильный ответ 764. А что насчёт файла с правами доступа только для чтения (r--r--r--) для всех вышеупомянутых? Если Вы ответили 444, то это верный ответ. Вы не можете увидеть значения прав доступа на самих файлах. Эти числа просто упрощают разговор о правах доступа файлов и облегчают их понимание с чисто цифровой точки зрения.
При просмотре списка файлов вы увидите лишь буквы. Например, вот несколько файлов из моего основного каталога (см. листинг 1).
drwxr-xr-x 2 khess khess 4096 2012-07-03 15:59 Desktop drwxr-xr-x 2 khess khess 4096 2012-07-03 15:58 Documents -rw-r--r-- 1 root root 0 2012-07-07 15:04 goo.txt drwxr-xr-x 2 khess khess 4096 2012-07-03 15:58 Music -rw-r--r-- 1 khess khess 0 2012-07-07 14:55 newbie.txt drwxr-xr-x 2 khess khess 4096 2012-07-03 15:58 Pictures drwxr-xr-x 2 khess khess 4096 2012-07-03 15:58 Public drwxr-xr-x 2 khess khess 4096 2012-07-03 15:58 Templates drwxr-xr-x 2 khess khess 4096 2012-07-03 15:58 Videos
Заметьте, что файлы newbie.txt и goo.txt имеют права доступа rw-r--r--.
Каталоги (папки) в Unix также являются файлами. Вы можете определить, какие файлы из вышеперечисленных являются каталогами? Обратите внимание, что в каталогах перед правом доступа к файлу стоит бит d. В этом списке вы также можете увидеть имя Пользователя файла и имя владельца группы. Другие пользователи в списке не указываются, так как это не релевантно.
Вы также можете заметить, что поскольку каталоги также являются файлами, у них также имеются права доступа. Исполнительный бит x рядом с каталогом означает, что вы можете применить к данному каталогу cd. Если вы знакомы с DOS или командной строкой Windows, то поймёте, что cd - это команда Change Directory (Сменить каталог). Она выполняется как в Unix, так и в Windows.
Сходные команды
Оставим вопрос о правах доступа к файлу и безопасности до лучших времён и перейдём к изучению команд, которые имеют одинаковые названия и функции в обеих операционных системах. Чтобы было понятнее, команды для Windows указаны в ВЕРХНЕМ регистре, а для Unix - в нижнем:
Команды Windows и соответствующие им команды Unix | ||
Команда / Command | Windows | Unix |
Список каталогов / Directory list | DIR | ls |
Сменить каталог / Change directory | CD | cd |
Создать каталог / Make directory | MD | mkdir |
Удалить каталог / Remove Directory | RD | rmdir |
Удалить / Delete | DEL | rm |
Эхо / Echo | ECHO | echo |
Отобразить содержимое файла / Display file contents | TYPE | cat |
Скопировать файл / Copy a file | COPY | cp |
Переместить файл / Move a file | MOVE | mv |
Переименовать файл / Rename a file | REN | mv |
Показать текущего пользователя / Display current user | WHOAMI | whoami |
Определить местонахождение файла / Locate file | WHERE | whereis |
Вывести список запущенных процессов / List running processes | TASKLIST | ps -ef |
Рекурсивная копия / Recursive copy | XCOPY | cp -R |
Отобразить дату / Display date | DATE | date |
Отобразить время / Display time | TIME | date |
Отсортировать содержимое файла / Sort file contents | SORT | sort |
Отобразить текущий каталог / Display current directory | CD | pwd |
Отобразить переменные окружения / Display environment variables | SET | set or env |
Ожидать x секунд / Wait for x seconds | SLEEP x | sleep x |
Запустить команду с повышенными привилегиями / Run command with elevated privileges | RUNAS | sudo |
Отобразить PATH / Show PATH | PATH | echo $PATH |
Вывести список открытых файлов / List open files | OPENFILES | lsof |
Показать информацию о IP адресе / Display IP address info | IPCONFIG | ifconfig |
Произвести поиск строки в файле / Search for a string in a file | FIND | grep |
Изменить атрибуты файла / Change file attributes | ATTRIB | chmod |
Произвести проверку/диагностику файловой системы / Filesystem check/diagnostics | CHKDSK | fsck |
Другие команды для подключения по TCP/IP, такие как telnet, ftp, ssh, ping и nslookup, полностью совпадают в обеих операционных системах. Помните о том, что большинство команд для Unix пишутся только строчными буквами, а команды для Windows нечувствительны к регистру.
Файловая система Unix
Теперь, когда вы уже немного знакомы с защитой файлов и аналогичными командами, пришло время войти в систему Unix и изучить основные принципы работы с командной строкой. Пользователи и администраторы Windows избегают комадной строки, однако толковые администраторы используют её постоянно. PowerShell является мощным командным языком скриптов. Такая же мощь имеется и в Unix. Вы можете выполнять команды одну за одной, объединять их в псевдо-скрипт, или же создавать файл, содержащий в себе столько различных команд, сколько может вместить в себя .CMD или batch-файл. А пока я расскажу про выполнение одиночных команд.
Если у вас есть под рукой Linux либо Unix, попробуйте выполнить эти команды сами. Также вы можете воспользоваться их аналогами в командной строке Windows для сравнения.
Войдите в Unix систему либо локально, либо удалённо и откройте окно терминала. У большинства серверов Unix отсутствует диспетчер окон или же графический рабочий стол, так что после входа в систему вы уже должны увидеть командную строку. Также обратите внимание на различия в терминологии: в Unix при входе в систему отображается "log in", а в Windows - "log on".
Запрос на ввод команды будет выглядеть так: $ или user@host:~$, или bash>$. Не имеет значения, как он выглядит, при условии, что вы вошли под профилем обычного пользователя, что обычно обозначается символом $. Привилегированный пользователь увидит символ #. Это небольшое различие помогает администраторам Unix избежать дорогих и ужасных ошибок, таких как, например, случайное удаление критических системых файлов и каталогов.
Как вы можете видеть, в отличие от Windows, операционная система Unix предполагает, что если вы выводите команду rm в файл, то вы действительно хотите его удалить. Здесь вы не увидите таких предупреждений, как "Вы уверены?", "Это критический системный файл" или даже "Данный файл в настоящий момент используется". Если вы выводите команду rm в системный файл с паролями, находясь в системе под профилем привилегированного пользователя, этот файл удаляется, и вы не сможете отменить его удаление. Для восстановления файлов вам потребуется стороннее приложение.
Так что вот два основных правила:
- Выполняйте всё, что вы можете делать как обычный пользователь, а функции привилегированного пользователя осуществляйте с помощью команды sudo (RunAs).
- Всегда создавайте резервную копию любого системного файла, который вы редактируете.
Работа в среде Unix похожа на работу с командной строкой Windows. Как только вы вошли в систему, вы попадаете в основной каталог, который имеет такое же название, как и имя пользователя, и расположен в границе каталога верхнего уровня, /home. Например, моим основным каталогом является /home/khess. Свой основной каталог вы можете посмотреть в Windows. Вполне возможно, что это C:\Users\USERNAME. Повторюсь, обе системы имеют очень похожую структуру и конвенции.
Вы, возможно, заметили одно небольшое отличие данных систем в способе обращения к каталогам и подкаталогам. В Unix отсутствуют буквенные метки дисков. Пользователи Windows ожидают увидеть C:, D:, E: и так далее, однако в Unix вы обращаетесь к каталогам, отличным от основного каталога, который не имеет никакого отношения к привилегированному пользователю. Основной каталог является находится на самом верху иерархической файловой системы (в Windows также используется система иерархии).
Для просмотра каталогов верхнего уровня в Unix, введите следующие команды, как показано на рисунке 1, нажимая в конце каждой строчки клавишу "Enter":
cd / ls
Рис. 1. Список всех файлов и каталогов, находящихся в корневом каталоге (/) файловой системы |
Не во всех системах Unix файлы и каталоги показываются в цвете.
На рисунке 2 показана (в формате Windows Explorer) вся файловая система моего компьютера с Linux. Эти каталоги находятся на самом верхнем уровне файловой системы. Если бы на этом компьютере была установлена система Windows, то это являлось бы содержимым диска C:.
Рис. 2. Отображение всех каталогов верхнего уровня из основного каталога (/) файловой системы Unix |
В Unix каждый каталог верхнего уровня имеет определенную функцию, связанную с содержащимися в нем файлами. Значения большинства функций понятны из их названия, но некоторые из них являются непонятными как по своей природе, так и по названию. На пару ключевых каталогах следует обратить внимание.
Каталоги /bin и /sbin содержат бинарные исполняемые файлы для обычного использования Unix, а также для обслуживания системы. Файлы устройств расположены в каталоге /dev. Как я уже говорил ранее, в Unix все является файлами, и обращение к устройствам осуществляется с помощью таких специальных файлов устройств. Например, в системе Linux файл устройства /dev/hda1 относится к первому разделу первого системного дисковода IDE. Файл устройства /dev/hdc или /dev/scd0 относится к системному CD/DVD дисководу.
В каталоге /etc содержатся критические системные файлы и каталоги. Здесь же находится файл пароля, passwd. Обратите внимание, что "/etc" произносится как "этси". Любой каталог любого уровня, в названии которого имеется lib, содержит в себе файлы библиотеки. Каталог /mnt традиционно является временной точкой подключения для удалённых системных файлов. Действие mount в файловой системе эквивалентно отображению удалённого дисковода в Windows.
Каталог /root является основным каталогом привилегированного пользователя. И, как вы уже догадались, каталог /tmp - место хранения временных и изменяемых файлов, наподобие каталогов C:\Windows\Temp или C:\Temp. В каталоге /usr размещаются файлы, ориентированные на пользователя: двоичные файлы, библиотеки и онлайн документация, а также личные каталоги пользователя. Каталог /var содержит различные системные сообщения, буферные файлы, системную почту, системные журналы и др. Так как его содержимое постоянно меняется, он и был назван /var от 'variable' (англ. 'изменчивый', 'меняющийся'). Каталог /lost+found изпользуется системой для восстановления файлов в процессе выполнения проверки файловой системы (fsck). Каталог /opt можно грубо сравнить с C:\Program Files, куда устанавливаются различные программы для общего доступа пользователей, такие как сборки офисных приложений, некоторые браузеры и другие сторонние приложения.
Кен ХЕСС (Ken Hess),
Admin Magazine
Горячие темы