Администрирование bash. Администрирование пользователей в Linux. Удаленный доступ к серверу Linux

LINUX



Командная строка

Понятность системы Linux



Удаленное управление Linux

Права доступа в Linux

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

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

Когда вы заходите в систему, то регистрируетесь, вводя свой пароль и имя. Если система вас опознает, вы получаете доступ к файловой системе. Правда, для ускорения быстродействия системы вы работаете в ней не под своим именем, а используете идентификатор (номер) пользователя (User ID, сокращенно UID). Соответствие между именами и UID указывается в файле /etc/passwd.

Пользователи, принадлежащие к какой-либо группе, получают еще один идентификатор – GID (group ID). Один пользователь может принадлежать к нескольким группам и иметь несколько номеров GID. Общие права группы распространяются на всех ее участников. Сочетания имен и номеров содержатся в файле /etc/group.

Остальные пользователи, не владеющие файлами и не являющиеся членами группы, обозначаются как прочие (others). Такие пользователи имеют очень мало прав, а то и вовсе ими не обладают.

Для описания прав доступа используется следующий шаблон: владелец группа прочие.

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

1 = право исполнения (- – х), сокращенно от execute – исполнять;

2 = право редактирования (-W-), сокращенно от write – писать;

3 = право чтения (г – -), сокращенно от read – читать.

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

Для обычных (нормальных) файлов используется следующий вариант (разрешено чтение и редактирование для всех):

Если владелец файла не хочет, чтобы к его файлу имели доступ, например, если это личное письмо или конфиденциальная информация, то устанавливаются следующие атрибуты:

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

Типы файловых систем Linux

Linux поддерживает большое количество типов файловых систем. Наиболее важные из них приведены ниже.

Minix – старейшая файловая система, ограниченная в своих возможностях (у файлов отсутствуют некоторые временные параметры, длина имени файла ограничена 30-ю символами) и доступных объемах (максимум 64 Мбайт на одну файловую систему).

Xia модифицированная версия системы minix, в которой увеличена максимальная длина имени файла и размер файловой системы.

Ext – предыдущая версия системы Ext2. В настоящее время практически не используется.

Ext2 – наиболее богатая функциональными возможностями файловая система Linux. На данный момент является самой популярной системой. Разработана с учетом совместимости с последующими версиями.

Ext3 – модернизация файловой системы Ext2. Помимо некоторых функциональных расширений является журналируемой. Пока широкого распространения не получила. Конкурирующая журналируемая файловая система – ReiserFS.

VFS – виртуальная файловая система. По сути – эмулятор-прослойка между реальной файловой системой (MS-DOS, Ext2, xia и т. д.) и ядром операционной системы Linux.

Proc – псевдо-файловая система, в которой посредством обычных файловых операций предоставляется доступ к некоторым параметрам и функциям ядра операционной системы.

ReiserFS – журналируемая файловая система. Наиболее используемая среди журналируемых файловых систем для Linux.

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

msdos – обеспечивается совместимость с системой MS-DOS.

umsdos – расширяет возможности драйвера файловой системы MS-DOS для Linux таким образом, что в Linux появляется возможность работы с именами файлов нестандартной длины, просмотра прав доступа к файлу, ссылок, имени пользователя, которому принадлежит файл, а также оперирования с файлами устройств. Это позволяет использовать (эмулировать) файловую систему Linux на файловой системе MS-DOS.

iso9660 – стандартная файловая система для CD-ROM.

xenix – файловая система Xenix.

sysv – файловая система System V (версия для х8б).

hpfs – доступ «только для чтения» к разделам HPFS.

Nfs – сетквая файловая система, обеспечивающая разделение одной файловой системы между несколькими компьютерами для предоставления доступа к ее файлам со всех машин.

Иерархия каталогов Linux

Иерархия каталогов первого уровня (представлена в таблице 1)

Таблица 1 – Иерархия каталогов первого уровня

Имя каталога Содержимое каталога
/ Корневой (Root) каталог. Является родительским для всех остальных каталогов в системе
/bin Содержит важные для функционирования системы файлы
/boot Содержит файлы для загрузчика ядра
/dev Хранит файлы устройств
/etc Содержит Host – специфичные файлы системной конфигурации
/home Пользовательские домашние каталоги
/lib Важные разделяемые библиотеки и модули ядра
/lost + found Содержит файлы, восстановленные при ремонте утилитами восстановления файловых систем
/misc Каталог для автоматически монтируемых устройств (дисковод, CD -ROM)
/mnt Точка монтирования временных разделов
/opt Дополнительные пакеты приложений
/proc Точка монтирования псевдофайловой системы proc, которая является интерфейсом ядра операционной системы
/root Домашний каталог пользователя root
/sbin Содержит важные системные исполняемые файлы
/tmp Хранит временные файлы
/usr Вторичная иерархия
/var Содержит переменные данные

Файлы конфигурации Linux

Для хранения конфигурации системы Linux использует конфигурационные файлы, в какой-то мере похожие на INI-файлы в Windows 3.1x. Они содержат текстовую информацию, которую можно читать и редактировать в любом текстовом редакторе.

Форматы различных конфигурационных файлов могут иметь значительные расхождения в различных вариантах Дистрибутивов. Но все же ряд правил по их построению действителен для большинства случаев:

Пустые строки игнорируются;

Для комментариев используются строки, отмеченные символом «#»;

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

Наиболее важные файлы конфигурации содержатся в каталоге /etc:

/etc/passwd – файл с регистрационной информацией о пользователях, в том числе и их пароли, если не используется система теневых паролей;

/etc/fstab – файл для хранения списка регулярно используемых файловых систем.

Конфигурация сети в Linux

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

Если у вас есть сетевая карта, то, скорее всего, она будет правильно определена, так что вам следует согласиться с программой установки. При возникновении проблем лучше выбрать NE-2000-совместимую карту, аналоги которой наиболее доступны в России. Правильную настройку сетевой карты вы легко сделаете после начала работы с Linux.

Начальная настройка TCP/IP- соединения, хоть и содержит множество неясных вопросов, на самом деле проста. Вы моете установить любые понравившиеся вам параметры, а потом, когда будете настраивать соединение с провайдером, чинить все что угодно. Для справки ниже указаны возможные значения, которые вы можете использовать (единственное замечание, которое следует сделать, – не используйте адреса сервера вашего провайдера и любимых мест в Интернете):

Domain name – nodomain. nowhere;

Host name – noname.nodomai n.nowhere;

IP-адрес-192.168.1.5;

Netmask-255.255.255.0;

Default gateway (IP) – 192 .168.1.254;

Primary nameserver –192.168.1.1.

Загрузчик LILO в Linux

LILO (сокращение от Linux Loader) – один из самых распространенных загрузчиков для Linux. LILO может работать с различными версиями ядра Linux и загружать другие операционные системы, например Windows. Если LILO устанавливается в главный загрузочный сектор винчестера, то после включения питания компьютера вы должны ответить на его приглашение, введя метку операционной системы, которую надо загрузить.

LILO конфигурируется при установке Linux. Когда вы выбираете способ загрузки Linux, создается конфигурационный файл/etc/lilo.conf, который используется командой lilo. Чтобы была возможность выбора загрузки одной из двух операционных систем, этот файл должен выглядеть примерно так:

install=/boot/boot.b

prompt timeout=50

vmlinuz-2.2.2-3bc

Правильная корректировка LILO возможна только при запущенной операционной системе Linux.

Если получилось так, что ваши ошибочные действия привели к невозможности загрузить ни одну операционную систему, а такое вполне возможно, то воспользуйтесь недокументированным вариантом команды MS-DOS:

Плюс этой команды в том, что загрузочный сектор винчестера приводится в «стандартное» состояние, а вся информация на винчестере в разделах с файловой системой FAT остается неповрежденной и доступна из MS-DOS или Windows. Правда, вам придется снова решать вопрос об установке LILO.

Эффективнее – без эффектов

Благодаря новому внешнему виду и GNOME-подобной поддержке скинов Windows XP выглядит достаточно красиво. Но все эти утехи для глаз снижают реакцию интерфейса на действия пользователя. Для автонастройки пользовательского интерфейса XP запускает несколько тестов, стремясь сохранить и удобство, и красоту. Но в этот процесс можно вмешаться. Если исчезающие меню вызывают у вас скорее раздражение, чем удовольствие, и если вас не интересуют тени под диалоговыми окнами, то все лишнее можно убрать.

Некоторые настройки выполняются на вкладке Оформление (Appearance) в свойствах монитора. Параметры, доступ к которым открывается кнопкой Эффекты (Effects), позволяют настроить переходы в меню, тени и шрифт, включая новую технологию улучшения читаемости шрифта - Microsoft ClearType.

Дальнейшая настройка производительности графического интерфейса выполняется в окне Свойства системы (System Properties), на вкладке Дополнительно (Advanced). Нажав кнопку Параметры (Settings) в разделе Производительность (Performance), можно выбрать максимальную производительность, максимальное качество изображения или средние параметры.


Перейдя к вкладке Дополнительно (Advanced) в окне Параметры быстродействия (Performance Options), надо убедиться, что распределение ресурсов процессора и памяти ориентировано на оптимизацию работы программ. Если компьютер является сервером, нужно указать приоритет фоновых служб и кэша. Здесь же выбирается размер и местоположение файла подкачки. Но обычно эти параметры Windows XP прекрасно выбирает сама.

Быстрая смена пользователя

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

Если в системе зарегистрировалось несколько пользователей, то настройки каждого из них, а также запущенные ими программы, при переключении на другого пользователя сохраняются в памяти. Скажем, если мы запустили Word, Excel и какую-нибудь игру, отлучились на минутку, а тем временем пришел ваш брат, переключил систему на себя и попытался поиграть, то он обязательно заметит явное (вплоть до полной остановки игры) снижение производительности.

Если объем оперативной памяти в компьютере составляет 64 Мб или меньше, Windows XP автоматически отключает функцию быстрой смены пользователей. Для обеспечения максимальной производительности проследите, чтобы в системе не было зарегистрировано сразу несколько пользователей. Или отключите эту функцию, для чего нужно зайти в Панель управления > Учетные записи пользователей (Control Panel > User Accounts), нажать кнопку Переключение пользователей и отключить режим Использовать быстрое переключение пользователей.

Автоматическое обновление

Устанавливать последние исправления версии DirectX и другие обновления необходимо своевременно. По умолчанию XP делает это автоматически. Для этого в фоновом режиме запускается специальная небольшая программа, проверяющая обновления.

Можно также следить за обновлениями самостоятельно, для этого можно отключить эту функцию XP, перейдя на вкладку Автоматическое обновление (Automatic Updates) в окне Свойства системы (System Properties).

Дефрагментация

DOS и версии Windows, не входящие в семейство NT, мало заботятся об оптимизации файловой системы. Это приводит к образованию "дыр" в разных местах дискового пространства при установке и удалении программ. В результате свободные участки, вместо того чтобы образовать один сплошной блок, разбросаны по всему диску. При заполнении свободного пространства файлы тоже оказываются разбросанными по нескольким секторам, что сильно снижает производительность – при обращении к файлу приходится читать не один последовательный участок диска, а несколько, да еще расположенных произвольно.

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

Если диск дефрагментируется достаточно часто, то мы не заметите после очередной дефрагментации ощутимого прироста в производительности. Это совершенно нормально. Напротив – если прирост заметен, это значит, что дефрагментацию нужно поводить чаще.

Лишние службы

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

  • Автоматическое обновление (Automatic Updates) . Обновлять систему можно и вручную, особенно если нет постоянного соединения с интернетом. Не забудьте только отменить заодно и автоматическое обновление на одноименной вкладке свойств системы.
  • Обозреватель сети (Computer Browser) . Занимается обновлением списка компьютеров в сети. При отсутствии сети не нужен.
  • Служба шифрования (Cryptographic Service) . Служба безопасного обмена ключами и шифрования передаваемых данных в локальной сети. Если локальной сети нет, то эту службу можно отключить, если же сеть есть - решайте сами...
  • DHCP клиент (DHCP client) . Занимается автоматическим распределением IP-адресов. Если сети нет (ни локальной, ни интернета, даже через модем), то эта служба не нужна.
  • Журнал событий (Event Log) . Ведет журнал системных и программных событий, а также событий системы безопасности. Если вопросы безопасности вас не волнуют, то эту функцию можно отключить.
  • Служба сообщений (Messenger) . Отвечает за прием и отправку сообщений администратора. При отсутствии сети (и администратора) абсолютно бесполезна.
  • Сетевые соединения (Network Connections) . Управление всеми сетевыми соединениями. Если сети нет (в том числе и подключения к интернету), то эта служба не нужна.
  • Спулер печати (Print Spooler) . Не нужен, если нет принтера.
  • Portable media serial number . Отвечает за получение серийного номера переносного музыкального устройства, подключаемого к компьютеру.
  • Protected Storage . Отвечает за защиту важных данных, в том числе ключей пользователей; запрещает неавторизированный доступ. Если сети нет (в том числе и интернета) или если вас не волнуют вопросы безопасности, то эту службу тоже можно отключить.
  • Remote Registry Service . Функция удаленного управления реестром. Нужна только администраторам сети.
  • System Event Notification . Отслеживает системные события. Если все уже настроено и нормально работает, можно отключить.
  • SSDP Discovery . Обеспечивает работу внешних устройств, поддерживающих UPnP (универсальная система Plug&Play, которая, по задумке, должна связывать компьютер с самой различной бытовой техникой, вроде пылесоса или холодильника).
  • Планировщик заданий (Task Scheduler) . Обеспечивает запуск приложений в заданное время. Если эта функция не используется, ее можно отключить.
  • Telephony . Взаимодействие с модемом. Нет модема - отключаем.
  • Telnet . Обеспечивает соединение и удаленную работу по протоколу telnet. Если вы не знаете и не хотите знать, что это такое, эту службу можете отключать.
  • Uninterruptible power supply . Управляет работой бесперебойных источников питания (UPS). Если UPS с обратной связью нет, данную службу можно отключить.
  • Terminal Service . Служит для удаленного управления компьютером по сети. Домашнему пользователю эта функция, в общем-то, ни к чему.
  • Windows time . Синхронизирует время на локальной машине и сервере; если нет time-сервера, то и служба не нужна.
  • Wireless zero configuration . Служба автоматической настройки беспроводных сетей стандарта 803.11 и 803.11b.

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

Оптимизация интерфейса

Следующий этап – ускорение работы интерфейса. Заходим в System Properties, открываем вкладку Advanced, нажимаем в разделе Performance кнопку Settings и в открывшемся окне Visual Effects активизируем режим Adjust for best performance, отключая тем самым абсолютно все эффекты. Их можно отключить и по отдельности, оставив те, без которых прожить ну никак нельзя.

Теперь примемся за меню Пуск. Изначально оно открывается с некоторой задержкой (по умолчанию - 400 миллисекунд). Ее величина определяется в реестре - значением ключа MenuShowDelay, находящегося по адресу HKEY_CURRENT_USER \ControlPanel \Desktop. В случае установки для этого параметра значения 0 меню будет появляться без задержки.

Там же, в реестре, находится еще один параметр, изменение которого несколько ускорит работу интерфейса, – MinAnimate, включающий анимацию при сворачивании и разворачивании окон. Он находится по адресу HKEY_CURRENT_USER \ControlPanel \Desktop \WindowsMetrics. Если значение этого параметра 1 - анимация включена, 0 - выключена. Если же этого ключа в реестре нет, создайте его (тип - String). И не забудьте: для вступления подобных изменений в силу необходимо перезагрузить компьютер.

Если в папке, которая находится в NTFS-разделе, много файлов, открываться она будет довольно медленно. Windows каждый раз тратит время на обновление метки последнего доступа к файлам. Для отключения этой функции нужно по адресу HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Control \FileSystem создать параметр NtfsDisableLastAccessUpdate типа DWord и присвоить ему значение 1.

Для оптимизации работы системы можно также воспользоваться специальными программами, например, такими как Tweak-XP - набор из двух десятков утилит для настройки Windows XP.

Настройка жесткого диска

Проверим настройку параметров жесткого диска, поскольку именно там находится файл подкачки. Правильная конфигурация его влияет на скорость работы системы. Откроем Device Manager в свойствах системы (или на вкладке Hardware в свойствах любого диска). Просмотрим свойства нашего жесткого диска. Убедимся, что на вкладке Polices включен режим Enable write caching on the disk. Для дисков SCSI следует также включить на вкладке SCSI Properties следующие режимы: Disable Tagged Queuing и Disable Synchronous Transfers.

Администрирование и конфигурирование Linux.

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

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

Наибольшей популярностью в мире пользуются операционные системы фирмы Microsoft. Их доля составляет 95% среди всех операционных систем. Наиболее устойчивые системы этой фирмы основаны на технологии NT (Windows NT/2k/XP). В последние шесть лет возрастает популярность операционной системы под названием Linux.

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

На сегодняшний день, развитие Linux идет по двум ветвям. Первая, с четными номерами версий (2.0, 2.2, 2.4), считается более стабильной, надежной версией Linux. Вторая, чьи версии нумеруются нечетными номерами (2.1, 2.3), является более дерзкой и быстрее развивающейся и, следовательно (к сожалению), более богатой ошибками. Но это уже дело вкуса.

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

Модульность ядра позволяет подключать любые сервисы ОС без перезагрузки компьютера. Кроме того, вы можете переделать само ядро ОС, благо исходные тексты ядра также имеются в любом дистрибутиве.

В ОС Linux очень умело, если так можно выразиться, используется идея многозадачности, т.е. любые процессы в системе выполняются одновременно (сравните с Windows: копирование файлов на дискету и попытка слушать в этот момент музыку не всегда совместимы).

Но, не все так просто. Linux чуть более сложен, чем Windows, и не всем так просто перейти на него после использования окошек. На первый взгляд, может даже показаться, что он очень неудобен и труднонастраиваем. Но это не так. Вся изюминка Linux’a в том, что его можно настроить под себя, настроить так, что от пользования этой ОС вы будете испытывать огромное удовлетворение. Огромное количество настроек позволяет изменить внешний (да и внутренний) вид ОС, причем ни одна Linux-система не будет похожа на вашу. В Linux у вас есть выбор в использовании графической оболочки, есть несколько офисных пакетов, программы-серверы, файерволы… Просто целая куча разнообразных программ на любой вкус.

Командная строка

В MS-DOS и Windows командная строка неудобна в использовании, что внушает отвращение к ней пользователям, а язык командных файлов сравнительно беден. В Unix пользовательский интерфейс командной строки приближен к совершенству, в комплекте с системой идет множество полезных утилит, которые можно использовать с командной строки, а скрипты позволяют автоматизировать множество задач. Работа с командной строки намного эффективнее, чем работа на мышке. Несомненно, нужно помнить команды, ключи и другие параметры команд, но основные команды очень быстро запоминается, а по другим можно заглянуть в справочник. Многим пользователям на самом деле нужно всего несколько команд. А для тех пользователей, которые не хотят или не могут запомнить команды, системный администратор может настроить Linux так, чтобы для этих пользователей все нужные им программы запускались автоматически. Работа в командной строке не сложнее графического интерфейса Windows, просто она другая. Может быть она менее наглядна, но профессионалам она позволяет работать намного более эффективно. Даже графический интерфейс Unix – X Window System (Иксы) не предполагает отказа от командной строки и никогда ей не противопоставлялся, как в Windows. Многие графические приложения могут управляться с командной строки, сочетая преимущества обоих методов. Под Linux существуют и программы типа Norton-а – Midnight Commander.

Понятность системы Linux

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

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

Систематизация файлов тоже помогает разбираться в файловой системе. Например, все программы, которые предназначены для запуска пользователем находятся в каталоге bin, все конфигурационные файлы в etc, а библиотеки в lib.

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

Удаленное управление Linux

Linux имеет очень развитые средства удаленного управления. Причем управлять машиной под управлением Linux можно с любой другой системы, где есть программа эмулятор терминала (в отличие, например, от Windows NT). Если машина подключена в Интернет, то управлять ей можно практически с любой другой машины, также подключенной в Интернет, быстрое подключение не требуется. Удаленное управление рабочими станциями сокращает затраты на администрирование сети, поскольку системному администратору не нужно даже вставать со стула для того, чтобы, например, поставить какое-либо программное обеспечение на все рабочие станции с Linux. Графическая среда поддерживает отображение графики на другой машине и даже запуск разных приложений с разных систем с отображением их на одном экране. При этом приложения сохраняют возможность взаимодействовать между собой (например, имеют общий буфер обмена).

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

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

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

  • Удаленный доступ;
  • Диагностика сети;
  • Мониторинг ресурсов системы;
  • Проверка работоспособности сервисов;
  • Просмотр логов;
  • Установка программного обеспечения.

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

Удаленный доступ к серверу Linux

Чаще всего веб-мастера и администраторы используют для удаленного доступа и загрузки файлов на сервер протокол SSH и FTP. По SSH вы не только передавать файлы, но и выполнять на сервере различные команды Linux. Протокол FTP позволяет лишь загружать файлы на сервер, перемещать и переименовывать их. Если кратко, то, например, чтобы перенести файлы сайта с одного сервера на другой, сначала мы создаем архив с помощью tar:

tar cvzf backup.tar.gz /папка/с/файлами

Обратите внимание, что опцию p передавать не нужно, чтобы права на файлы не сохранились, затем, вам нужно будет установить права вручную. Когда архив готов, используем для передачи его на сервер:

scp backup.tar.gz user@ip_сервера:/var/www/public_html/

ssh user@ip_сервера
$ cd /var/www/public_html/
$ tar xvzf backup.tar.gz

После этого останется сменить владельца для распакованных данных на имя пользователя веб-сервера:

chown -R www-data /var/ww/public_html/project/

Большинство действий по администрированию сервера вам придется выполнять так что лучше понять .

Диагностика сети Linux

Этот момент администрирования Linux серверов подходит больше для компьютеров, к которым у вас есть физический доступ, но может в некоторых случаях полезным и на сервере. Самый простой способ проверить есть ли доступ к сети на компьютере, это выполнить команду ping:

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

Убедитесь, что правильно задан шлюз доступа к сети:

Обычно, это может подсказать вам, что конфигурация сети выполнена неверно, например, компьютер не получает нужные данные по протоколу DHCP или заданы неправильные статические настройки. Также проблема может быть в DNS. Возможно, сеть есть, но сервер не может получить ip адрес на основе доменного имени, для проверки вы можете выполнить ping какого-либо внешнего ip:

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

traceroute 8.8.8.8

Все эти данные помогут понять в чем была ошибка и как ее решить.

Мониторинг ресурсов системы

Часто может случится, что сервер начинает работать очень медленно, веб-службы начинают очень долго отвечать на запросы и даже соединение по SSH работает медленно. Скорее всего, причиной этому может стать перегрузка ресурсов процессора или памяти. Если вся память будет занята, система будет сбрасывать данные на диск, в раздел подкачки, что тоже сильно замедляет работу сервера. Чтобы посмотреть сколько памяти осталось доступно используйте команду free:

Естественно, что если свободно только 40-50 Мб, то этого системе очень мало и все будет работать очень медленно. Следующим шагом будет выяснить какой процесс потребляет больше всего памяти, для этого можно использовать команду htop:


В утилите вы можете сортировать процессы по загрузке процессора, колонка %CPU% или по потреблению памяти %MEM%. Так вы можете очень просто понять в чем проблема и кто перегружает систему. Например, веб-сервер Apache потребляет слишком много памяти, поэтому, возможно, будет эффективнее использовать Nginx.

Также в некоторых случаях нас может интересовать и какие именно процессы перегружают жесткий диск. Для этого применяется утилита iotop. Просто выполните утилиту без параметров:

Проверка работоспособности сервисов

В системное администрирование linux также входит управление сервисами. Сейчас в большинстве дистрибутивов, в качестве системы инициализации используется systemd. Соответственно, выполняется с помощью нее. Чтобы посмотреть запущена ли служба, например, веб-сервер nginx, выполните:

sudo systemctl status httpd

В многочисленном выводе утилиты вы должны увидеть сообщение Active (running), это означает, что все хорошо и служба работает так как нужно. Возможно, также вам придется перезапустить службу:

sudo systemctl restart httpd

Или запустить ее, если она не была запущена до этого:

sudo systemctl start httpd

Если служба не запустилась, то вы можете посмотреть информацию об этом с помощью команды status или же выполнить:

Просмотр логов

Если какой-либо сервис или системный компонент не работает, то первое что нужно сделать - это смотреть логи. Если не помогает - включить режим отладки и смотреть логи. В 90% вы найдете ответ почему ничего не работает в логах программы. Логи всех служб и системные логи находятся в папке /var/log/. Некоторые службы создают отдельные папки для своих файлов, например, /var/log/nginx или /var/log/apache.

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

tail -f /путь/к/лог/файлу

С помощью этой команды вы можете в реальном времени просматривать изменения в конце лог файла. Если опцию -f не указывать, то команда tail покажет десять последних строк из лога:

tail /путь/к/лог/файлу

Также для вы можете использовать любой текстовый редактор или утилиту cat.

Установка программного обеспечения

Установка программного обеспечения, одна из распространенных задач администрирования. В Linux большинство программ можно установить из официальных или сторонних репозиториев. Некоторые программы нужно . Для установки софта из репозиториев используется пакетный менеджер. Существуют два основных пакетных менеджера, которые применяются на серверах, это yum, который используется в CentOS и apt, который применяется в Ubuntu. Работают пакетные менеджеры похожим образом и все их мы рассматривали в отдельных статьях, смотрите и Например, чтобы установить пакет в Ubuntu используйте такую команду:

sudo apt install имя_пакета

А в CentOS/RedHat:

sudo yum install имя_пакета

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

Выводы

В этой статье мы рассмотрели в общих чертах администрирование Linux для начинающих, это очень обширная тема, поэтому сложно охватить ее в одной статье. Мы рассмотрели диагностику сети, установку пакетов, просмотр логов и другие основные действия. Если у вас остались вопросы, спрашивайте в комментариях!

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

Суперпользователь
В Linux Суперпользователь (Super User) называется root. Пользователь root может контролировать каждый процесс, имеет доступ к каждому файлу и может выполнить любую функцию в системе. Ничего не может быть спрятано от root"а. Говоря административным языком, root -- это высшее существо. Поэтому очень важно, чтобы учетная запись root была защищена секретным паролем. Не стоит использовать root"а для выполнения обычных задач.

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


Создание новых пользователей

Новых пользователей можно создавать либо из консоли, либо с помощью инструментария типа программы Webmin. Пользователь добавляется командой useradd. Из консоли это делается, например, так:

useradd -c "normal user" -d /home/userid -g users\
-G webadm,helpdesk -s\ /bin/bash userid

Эта команда создает нового пользователя по имени "userid" (последний параметр в команде). Дается комментарий, который говорит, что "userid" -- "normal user" (обычный пользователь). Для него будет создан домашний каталог "/home/userid". Его основной группой будет users, но он также будет входить в группы "webadm" и "helpdesk". В качестве обычного консольного окружения новый пользователь из примера будет использовать оболочку "/bin/bash".

Webmin позволяет создать нового пользователя легко и наглядно. Войдите в Webmin своим любимым браузером и зайдите в раздел System . Выберите инструмент "Users and Groups" , а затем щелкните на Create a new user.

Впишите подробности про пользователя и нажмите Create. Будет создан пользователь.

Изменение паролей

Из консоли пользовательский пароль меняется командой passwd:

Изменить пароль другого пользователя таким способом может только root. После ввода команды вам будет предложено ввести и подтвердить устанавливаемый пароль. Если они совпадут, то данные пользователя будут обновлены, а пароль изменен. Пользователь также может изменить свой собственный пароль, написав в командной строке консоли passwd; в этом случае прежде чем вводить новый пароль, необходимо будет ввести старый.

Большинство дистрибутивов Linux устанавливаются с модулем password cracker, который вызывается для изменений пароля. Этот модуль проверяет, насколько пароль хорош. Если не очень, то появляется предупреждение, что у пользователя плохой пароль. В зависимости от конфигурации, у него могут потребовать придумать безопасный пароль, а только потом принять его. Root"а же могут просто известить, когда пароль уже установлен.

В Webmin"е пароль меняется с помощью модуля "Change Passwords" из раздела System . Выберите пользователя из списка и введите новый пароль в пустые поля формы.

Удаление пользователей

Из консоли пользователи удаляются командой userdel.

userdel -r userid

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

Как организованы пользователи

Конфигурация Linux имеет в своей основе текст. Поэтому все пользователи в Linux расположены в файле под названием /etc/passwd. Командой more вы можете постранично просмотреть этот файл:

more /etc/passwd

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

userid:x:75000:75000::/home/userid:/bin/bash

В первой колонке находится имя пользователя. Во второй -- его пароль. В третьей -- пользовательский числовой id. В четвертой -- id основной группы пользователя. В пятой -- полное имя пользователя. В шестой -- расположение пользовательского каталога. Обычно этот каталог живет в /home и называется по имени пользователя. Седьмая колонка содержит shell по умолчанию.

Структура файла паролей

Заметьте, что в приведенном выше примере, в колонке с паролем стоит "x". Это вовсе не означает, что у пользователя такой пароль. Одно время пароли хранились внутри файла в виде обычного текста. Такая конфигурация возможна и сейчас, но встречается редко из-за последствий. Решено было создать нечто под названием теневой пароль. На месте пароля в файле /etc/passwd записывается "х", а закодированная версия пароля идет в файл /etc/shadow. Такая технология улучшает безопасность посредством разделения информации о пользователе и пароля. Алгоритм кодирования паролей MD5 еще улучшил безопасность, позволяя только надежные пароли. Ниже приведен пример записи теневого пароля:

userid:$1$z2NXZR19$PZpyL84DmPKBXMeURaXXM.:12138:0:186:7:::
Вся функция теневого пароля остается за кадром, а вам редко потребуется делать что-нибудь большее, чем включать ее.

Группы

Группы в Linux почти то же самое, что и в Windows. Вы создаете группу и добавляете в ее список участников. Ресурсы могут иметь права, приписанные группе. Члены группы имеют доступ к ресурсу, ассоциированному с этой группой.

Создание группы выполняется просто, консольной командой groupadd:

groupadd mygroup

Эта команда создаст группу без участников с названием "mygroup". Группы живут в файле с названием /etc/group. Каждой группе отводится отдельная строка, как написанная ниже:

Первая колонка показывает имя группы. Вторая -- пароль. Опять-таки "x" означает, что настоящий пароль хранится в теневом файле /etc/gshadow. Третья колонка будет содержать разделенные запятыми идентификаторы участников группы.

Чтобы добавить члена группы, используйте команду gpasswd с ключом -a и id пользователя, которого вы хотите добавить:

gpasswd -a userid mygroup

Удалить пользователей из группы можно той же командой, но с ключом -d вместо -a:

gpasswd -d userid mygroup

Вносить изменения в группы можно также прямым редактированием файла /etc/group.Группы могут быть созданы, отредактированы и уничтожены в программе Webmin тем же самым инструментом, который использовался выше для работы с пользователями.

Пользовательские и групповые приложения

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

Не обращая пока что внимания на остальные колонки, посмотрите на третью, четвертую и последнюю. В третьей колонке находится имя владельца файла, userid. Четвертая колонка содержит группу, ассоциированную с файлом, mygroup. Последняя колонка -- это имя файла. Каждый файл имеет только одного владельца и одну группу. Можно дать права Other (Остальным), пользователям, которые не попадают ни в какую категорию. Считайте Other эквивалентом группы Everyone в Windows.

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

Более полную информацию о связи пользователей и групп можно найти в разделе Ресурсы в конце этой статьи. За подробностями о том, как менять полномочия доступа к файлу, обращайтесь к man chmod.

Заключение

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

Информация о пользователе и группе хранится в файлах /etc/passwd и /etc/group, соответственно. Ваша система возможно также содержит файлы /etc/shadow и /etc/gshadow, в которых находятся зашифрованные пароли для большей безопасности. Можно работать с пользователями и группами, непосредственно редактируя файлы, однако делать это надо с большой осторожностью.

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

Оставьте свой комментарий!

Приветствую, коллеги. Долгое время проект NetSkills был посвящен исключительно сетевым технологиям - Курс молодого бойца, Основы GNS, UNetLab . Однако от подписчиков все чаще звучал вопрос: “А что еще должен знать сетевой инженер или системный администратор?” . Тут можно привести большой список технологий/направлений и в итоге сделать вывод, что знать только сети - недостаточно ! Совершенно очевидно, что для успешной карьеры нужно намного больше. Поэтому было принято решение расширить проект и для начала выпустить курс “Linux для начинающих”.

Немаловажная деталь, преподаватель - девушка , которая совсем недавно примкнула к проекту NetSkills . Чему же может научить девушка? Если вы заинтересовались, добро пожаловать под кат…

Цель курса – изучить основы администрирования операционных систем Linux. Материал по большей части практический и содержит минимальное количество теории. Курс подойдет как для начинающих системных администраторов, которые занимаются настройкой серверов компании, так и для сетевых инженеров, т.к. бОльшая часть сетевого оборудования работает под управлением Linux (особенно если учитывать тенденцию импортозамещения), поэтому навыки работы с этой системой им однозначно не помешают. Да и вообще, каждый уважающий себя ИТ-шник просто обязан обладать базовыми навыками работы с Linux системами. Ценность такого сотрудника сразу вырастает.

Весь курс будет разделен на две части: базовый и расширенный курс . В базовом курсе мы рассмотрим основные понятия, научимся производить первоначальную настройку сервера, а также настроим шлюз доступа в Интернет. В расширенном курсе мы рассмотрим, как развернуть серверную инфраструктуру компании на основе Linux.

В план базового курса вошли следующие темы:
1.Цели изучения операционной системы Linux, ее основные преимущества.
2.Создание виртуальных машин.
3.Установка операционной системы CentOS.
4.Структура файловой системы Linux.
5.Основные команды, необходимые для работы в консоли Linux (cd, ls, man, grep, find, cp, mv, rm и т.д.).
6.Настройка сети в CentOS. Утилиты Putty, WinSCP.
7.Основы безопасности. Заведение новых пользователей в системе.
8.Установка пакетов. Пакетный менеджер. Репозитории.
9.Файловый менеджер mc, текстовый редактор nano и сетевые утилиты (ifconfig, nslookup, arp, telnet).
10.Настройка шлюза доступа в Интернет. Iptables. NAT. DHCP.

Итак, зачем изучать линукс и каковы его преимущества? Полагаю, стоит начать с определения.
GNU/Linux – это семейство unix-подобных операционных систем, основанных на ядре Linux. ОС из этого семейства распространяются обычно бесплатно в виде так называемых дистрибутивов, содержащих помимо самой ОС еще и набор прикладного ПО (т.е. по сути сборка). Дистрибутивов Linux на сегодняшний день существует огромное количество, но почти все они являются потомками трех основных дистрибутивов: Debian, Slackware и Red Hat. Подробнее о GNU/Linux и дистрибутивах можно прочитать и .

Возможно, у кого-то возник вопрос: почему GNU/Linux, а не просто Linux. Все дело в том, что Linux – это всего лишь ядро, в то время как GNU/Linux – это операционная система. Однако, Linux’ом можно называть как ядро так и ОС – и так и так будет правильно.

Условно говоря, ОС состоит из двух частей: kernel space и user space . Kernel space это ядро, которое непосредственно взаимодействует с устройствами в системе, обслуживает их и производит настройку. В нашем случае – это ядро Linux, разработка которого началась в 1991 году Линусом Торвальдсом, являвшимся на тот момент студентом. Оно поддерживает многозадачность, динамические библиотеки, виртуальную память, отложенную загрузку, большинство сетевых протоколов и производительную систему управления памятью и распространяется по лицензии GNU GPL, т.е. свободно. Подробнее про само ядро и его «увлекательную» систему нумерации версий можно узнать . Пользователи же работают в пространстве user space (пространстве приложений), а это в свою очередь файлы. Вообще говоря, все в Linux’е представлено файлами - настройки, сами приложения, даже процессы. Это очень удобно при настройке и когда пытаешься выяснить почему же все поломалось.

Дистрибутивы Linux распространяются в основном по лицензии GNU General Public License – лицензии на свободное программное обеспечение. Цель GNU GPL - предоставить пользователю права копировать, модифицировать и распространять (в том числе на коммерческой основе) программы, а также гарантировать, что и пользователи всех производных программ получат вышеперечисленные права.

Помимо выше указанных неоспоримых плюсов данной ОС, она обладает еще рядом особенностей:
1.Безопасность
2.Производительность
3.Надежность
4.Масштабируемость
5.Аппаратная совместимость
6.Не требуется импортозамещение
7.Зарплата Linux администраторов выше, чем у обычных администраторов

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

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

Мы можем:
1.Настроить программный маршрутизатор/ шлюз доступа в Интернет с функциями межсетевого экрана и DHCP сервера
2.Ограничить доступ пользователей к сети Интернет с помощью proxy сервера
3.Организовать почтовый сервер для корпоративной почты
4.Создать веб сервер для корпоративного сайта и внутренних веб ресурсов
6.Настроить первичный и вторичный DNS сервера
7.Развернуть файловый сервер
8.Собирать резервные копии с остальных серверов
9.Развернуть сервер логирования для сбора событий с других серверов

Такую схему мы и будем разворачивать в рамках данного курса.

Полагаю, на этом первый урок можно закончить.

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

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

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

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

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

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

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

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

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

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

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

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х иерархична. Она начинается от корня, который обозначается знаком / (слеш), и имеет древовидную структуру. При этом абсолютно не имеет значения, что отдельные части файловой системы могут находиться на других разделах или вообще физических дисках.

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

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

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

Всё есть файл

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

Что это дает? Не будем вдаваться в подробности, а разберем несколько простых примеров. Скажем, нужно создать образ оптического диска. В 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

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

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

Ifconfig > ~/123.txt

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

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

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

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

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

Dpkg -l | grep squid

Вот это совсем другое дело!

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

Cat /etc/squid3/squid.conf | grep -v "^#" | sed "/^$/d" > ~/mysquid.conf

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

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

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

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 .

Стесняюсь спросить...

Позвольте, скажет иной читатель, это ведь сколько всего надо помнить: синтаксис команд, ключи, опции и т.д., и т.п. Тут нужно справочник покупать или всегда интернет под рукой держать... Вовсе нет, достаточно помнить названия команд, это как раз несложно, по сложившимся в UNIX традициям, командам дают короткие и удобные имена. А все остальное можно спросить у системы. Вопреки распространенному мнению, Linux системы прекрасно документированы. Посмотреть синтаксис и ключи любой команды можно запустив ее с ключом --help , а так как описания обычно не помещаются на один экран, то следует перенаправить вывод справки утилите more , которая выведет информацию поэкранно. Допустим, нас интересует команда grep :

Grep --help | more

Более подробную информацию можно получить с помощью команды man :

Man grep

К сожалению, информация на английском, но знание технического английского, хотя бы на уровне "читаю со словарем" необходимое требование к системному администратору. Вам ничего не напоминает последний скриншот? Правильно, OpenNET.

Нисколько не умаляя значение этого ресурса, можно сказать, что взяв на вооружение команду man и базовые познания в английском, OpenNET вы будете посещать гораздо реже.

Заключение

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

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

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

  • Теги:

Please enable JavaScript to view the