LXF161:Рубрика сисадмина
|
|
|
По рецептам доктора Брауна
Эзотерическое системное администрирование из причудливых заворотов кишок серверной
Содержание |
Вести из будущего
Мои попытки путешествий во времени в целом не были успешными. Однако мне удалось создать кратковременное возмущение в пространственно-временном континууме, и я смог загрузить любопытный отчет из Linux Format № 13316 от июня 3024 года. И вот он перед вами:
«Цифровым палеонтологам из Института Мира во всем мире в г. Шаттлворте недавно удалось загрузить древний компьютер, обнаруженный на чердаке в Пекхэме-на-море. Оказалось, что на нем установлена операционная система Windows 7. В археологических исследованиях в данной сфере есть значительная неопределенность (и белые пятна), так как в настоящее время отсутствуют материальные свидетельства о компьютерах с Windows 4, 5 или 6, однако, как это ни странно, науке известны компьютеры с Windows 95, 98 и даже 2000. Хроностратиграфическая последовательность не определена.
Но какова судьба этих компьютеров с Windows? Начиная примерно с 2020 года, сведений о них нет. Популярную теорию о том, что с облаков спустился Google Android и забрал их на планету Зог для подсчета, вряд ли стоит принимать всерьез. Вероятнее, имело место катастрофическое событие, которое привело к появлению смертоносного вируса – нечто вроде К-Т события, приведшего к вымиранию динозавров, но без участия астероида.
Как полагают ученые, уровень генетического разнообразия среди компьютеров Windows на тот момент был столь низок, что все они пали жертвой палеовируса, позволив гораздо менее распространенным системам Linux эволюционировать и занять освободившееся место в экологической нише».
Но сам я отношусь к этому отчету скептически. Не могу поверить, что кто-то в редакции Linux Format сможет выговорить слово «хроностратиграфический».
chris.linuxformat@gmail.com
Bitvise Tunnelier
Если между вами и вашей Linux-машиной затесался ПК с Windows, попробуйте этот клиент SSH и SFTP. Недавно мне на глаза попалась программа Tunnelier от Bitvise (www.bitvise.com). Это программа для Windows, и вам простительно спросить: с какой стати я пишу о ней в журнале о Linux? А дело в том, что в ней есть клиенты SSH и SFTP, с помощью которых можно навести мост между мирами Windows и Linux. Загрузите установщик с сайта www.bitvise.com/tunnelierdownload; установка проста, а программа бесплатна при количестве пользователей до четырех. Перед подключением к серверу SSH нужно создать профиль, введя имя хоста или его IP-адрес. Этот профиль также может включать имя пользователя и какую-либо аутентификацию – пароль, публичный ключ SSH или идентификационные данные GSSAPI. Включив их в профиль, можно просто нажать на кнопку Login, и вы сразу подключитесь к удаленному терминалу. У профилей есть имена, профили можно сохранять в файлы и загружать их. Подключиться с Tunnelier можно прямо из командной строки Windows. По команде
tunnelier -profile=tunnelier-test.tlp -loginonstartup
вы попадете прямо в командную строку компьютера, указанного в профиле Tunnelier-test, если в профиле есть логин и данные аутентификации.
Наряду с клиентом SSH вы получаете xterm или эмулятор терминала VT100 и графический клиент SFTP. Это обычный двухпанельный клиент: на левой панели – локальные файлы, на правой – удаленные. Одна из понравившихся мне возможностей – журнал активности Tunnelier в главном окне, своего рода его поток сознания. Он дает мне теплое, пушистое ощущение, что все правильно, и полезную диагностическую информацию, когда что-то не ладится. В Tunnelier мало зрелищности – но это надежная, полнофункциональная программа, с которой приятно работать. Чего же вам боле?
Совершенство слов
Всем нам досаждают плохие технические тексты, будь то убалтывание маркетологов, невразумительные инструкции или просто дурная грамматика. Поэтому я рад сообщить, что сайт Bitvise – один из самых хорошо написанных сайтов, которые я встречал. Его стоит посетить, даже если вам не нужна программа: там есть прекрасные руководства по таким темам, как перенаправление портов SSH и туннелирование, и даже статья «Как работает Интернет».
Вы решили стать сисадмином?
Первая часть серии, которая превратит вас из зеленого новичка в звезду системного администрирования.
На мои курсы приходят желающие стать системными администраторами (но есть и те, что не желают, кричат и отбиваются, и из расслабляюще-комфортной среды Windows их надо вытаскивать за уши). Мне задают самые разные вопросы, но три самых частых выглядят примерно так:
ВОПРОС 1: Я хочу стать системным администратором Linux и разбогатеть. Стоит ли специализироваться на одном конкретном дистрибутиве?
ОТВЕТ: Мой инстинктивный ответ: «У универсала больше шансов получить работу, чем у специалиста». Но это зависит от обстоятельств. Например, если вы хотите получить работу в Canonical, пожалуй, стоит сосредоточиться на Ubuntu. Или вы можете устраиваться на работу в какую-то компанию, использующую SUSE. А если у вас нет четкой специализации, но вы хотите сфокусироваться на одном дистрибутиве, им должен стать Red Hat Enterprise Linux.
ВОПРОС 2: Я несколько лет администрирую Windows и делаю все необходимое в графических утилитах. Стоит ли знакомиться с утилитами командной строки для администрирования Linux?
ОТВЕТ: Коротко – да. В современных дистрибутивах Linux в графических утилитах можно выполнять достаточно много классических задач администратора, таких как создание учетных записей пользователя и установка новых программ. Но рано или поздно эти утилиты исчерпают себя, и командная строка останется единственным возможным вариантом. Например, я не знаю, как задать дисковые квоты не в командной строке. Кроме этой, есть еще по меньшей мере три причины освоить командную строку.
Полюбите командную строку
Во-первых, навыки работы в командной строке чаще всего одинаковы для всех дистрибутивов, а графические утилиты в разных дистрибутивах отличаются. Во-вторых, написав небольшой скрипт с использованием нескольких утилит, можно сотворить чудеса с производительностью. Графическими утилитами управлять из скриптов нельзя. И третья, но не последняя по значимости, причина – есть все шансы, что на многих серверах просто не будет графических утилит и графических рабочих столов.
ВОПРОС 3: С чего начать?
ОТВЕТ: Практикуйтесь. ISO-образы большинства популярных дистрибутивов можно загрузить бесплатно. Можно установить их либо на настоящие компьютеры (если у вас есть свободные), либо на виртуальные машины VMWare или VirtualBox даже на компьютерах с Windows. VirtualBox бесплатен, как и VMWare Player. Либо можно воспользоваться бесплатным сервисом AWS и получить компьютер на облаке Amazon на один год. Лучше настроить два компьютера, чтобы поработать с сетью. Затем просто практикуйтесь: создавайте новые файловые системы, настраивайте web-сервер и брандмауэр. Выведите систему из строя, чтобы она не загружалась. Верните ее в рабочее состояние. Сделайте это снова. Получайте удовольствие! Одно из удовольствий Linux в том, что с ним легко практиковаться. Вы учитесь не на хирурга – недостатка тел для практики нет.
Довольно наставлений. Перейдем к делу. В этой статье особой практики не будет – мы познакомимся с технологиями доступа к удаленным серверам и с несколькими утилитами, помогающими понять, что происходит. В следующих мы станем поактивнее и изучим классические приемы системного администрирования для управления пользователями, сервисами и сетями, а также для поддержания безопасности. Мы предполагаем, что у вас нет никакого опыта администрирования, и решительно призываем вас последовать за нами. Готовы? Первая проблема, с которой сталкивается большинство администраторов – как получить доступ к компьютеру, который нужно администрировать. У большинства студентов моих курсов физического доступа к ним не было. У многих из них были компьютеры с Windows и утилиты удаленного доступа.
Для доступа к командной строке серверов администраторы обычно пользуются безопасной оболочкой (SSH). В большинстве дистрибутивов Linux демон sshd установлен и активирован по умолчанию; часто это единственный сервис, который запускается сразу после установки сервера Linux. Если на клиентском компьютере (тем, за которым вы находитесь) установлен Linux, в нем почти наверняка установлен клиент SSH, поэтому у вас есть все необходимое.
Волшебство SSH
Если на клиентском компьютере – Windows, то по умолчанию клиент SSH скорее всего не установлен. В качестве клиента администраторы чаще всего пользуются Putty (www.putty.org). Также есть Cygwin, прекрасная коллекция Linux-подобных утилит для Windows, в том числе и для SSH. Чтобы попробовать Cygwin, загрузите и запустите установщик (setup.exe) с сайта www.cygwin.com. При установке вы сможете выбрать, какие компоненты Cygwin установить – все сразу вам не нужны. Putty и Cygwin бесплатны. Я предпочитаю Cygwin потому что он больше похож на клиент SSH в Linux. Также есть Bitvise Tunnelier (www.bitvise.com), который я только что описал.
...и графического рабочего стола
Если вы хотите подключаться к рабочему столу серверов, вариантов имеется несколько. Механизм управления окнами в Linux (окна X) – это клиент-серверная архитектура. Поэтому один из способов удаленного подключения к рабочему столу Linux – запустить графическую утилиту (клиент X) на компьютере Linux и подключиться к X-серверу, запущенному на настольной системе Windows. В течение многих лет популярным продуктом для Windows был сервер Exceed X от Hummingbird. Также есть Xming (www.straightrunning.com/XmingNotes). Однако настроить все это в Linux не всегда просто.
Настройка VNC
Альтернативный вариант – воспользоваться технологией подключения к удаленным рабочим столам, такой как VNC, что, как ни странно, означает «Виртуальные сетевые вычисления [Virtual Network Computing]». Для начала вкратце поясню, как она работает: обычно графические приложения взаимодействуют с X-сервером, который в свою очередь взаимодействует с монитором, мышью и клавиатурой компьютера (схему см. на рисунке внизу). Чтобы воспользоваться VNC, нужно установить на удаленный компьютер сервер VNC. Для всех графических приложений, запущенных на этом компьютере, он выглядит как обычный X-сервер.
Но сервер VNC работает не с настоящими устройствами обработки графики, а с программным буфером кадра (на схеме – в середине). Любые изменения, производимые с этим буфером кадра, передаются по сети клиенту VNC, запущенному на локальном компьютере, за которым вы работаете (на схеме – справа). Данный процесс не слишком элегантен и требует компромисса между скоростью и качеством изображения, но это довольно сносное решение, к тому же оно кроссплатформенное.
Давайте настроим VNC на нашем компьютере с CentOS. Сперва посмотрим, установлен ли он:
# rpm -qa | grep vnc
Хм, никаких результатов; наверное, не установлен. Найдем нужный пакет:
# yum search vnc
gtk-vnc.i686 : A GTK widget for VNC clients
libvncserver.i686 : Library to make writing a vnc server easy
libvncserver-devel.i686 : Development files for libvncserver
tigervnc.i686 : A TigerVNC remote display system
tigervnc-server.i686 : A TigerVNC server
tigervnc-server-applet.noarch : Java TigerVNC viewer applet
for TigerVNC server
tigervnc-server-module.i686 : TigerVNC module to Xorg
Я немного сократил вывод, но, похоже, недостает tigervnc-server. Быстрый поиск в Google по фразе “tigervnc centos 6” подтверждает это и даже дает нам некоторые указания по настройке. Давайте установим его:
# yum install tigervnc-server
Теперь пакет установлен, и нужно сделать кое-какие настройки. Войдем в систему под обычным пользователем (не root) и зададим пароль для VNC командой vncpasswd. Пароль хранится в файле ~/.vnc/passwd. Обратите внимание, что он используется только для аутентификации сервером VNC. Он не имеет отношения к паролю для входа в Linux.
Теперь откройте файл /etc/sysconfig/vncservers и добавьте следующую строку, заменив “chris” на ваше имя пользователя:
VNCSERVERS=”1:chris”
Теперь запустите сервер VNC (от имени root):
# service vncserver start
Если вам нужна дополнительная справка, попробуйте прочитать статью по ссылке http://wiki.centos.org/HowTos/VNC-Server или посмотреть видеоролик www.youtube.com/watch?v=rhEhHCeFnSo.
Теперь сервер должен слушать порт 5901. Если позже вы будете добавлять новые серверы в /etc/sysconfig/vncservers, они будут слушать порты 5902, 5903 и т. д. Может возникнуть необходимость включить эти порты в брандмауэре или (если вы не знаете как это сделать) на время полностью отключить брандмауэр командой:
# iptables -F
Учтите, что с VNC нельзя получить удаленный контроль над существующим сеансом. Сеансы VNC полностью отделены от всего, что может происходить на «настоящем» рабочем столе сервера.
Теперь разберемся с клиентом VNC. Таковых существует множество. В Ubuntu попробуйте Remmina. В моей Ubuntu Precise Pangolin (12.04) он был установлен по умолчанию.
Если вам нужен клиент для Windows – их, кажется, писали все кому не лень. Некоторые из них бесплатны, некоторые нет. Попробуйте RealVNC с www.realvnc.com. Персональная версия (только клиента, не сервера) бесплатна.
Итак, теперь мы можем подключиться к серверу. Давайте оглядимся вокруг. В таблице выше приведены несколько классических утилит, с помощью которых администратор отвечает на вопросы из серии «Что происходит?». Подробности приведены на man-страницах этих команд.
Если вы хотите узнать... | ... это можно сделать так |
В каком каталоге я нахожусь? | Выполните команду pwd. |
Под каким пользователем я работаю? | Выполните команду id. Она сообщит идентификатор пользователя, его членство в группах
и (в зависимости от дистрибутива) ваш контекст безопасности SELinux. |
Каков мой IP-адрес? | Выполните команду ifconfig eth0. |
Где мои серверы DNS? | Загляните в файл /etc/resolv.conf. |
Сколько места занято
в моих файловых системах? |
Команда df даст вам общую картину. Вам пригодится параметр -h для вывода цифр в удобопонятном виде.
Для ответа на вопрос «Сколько места занимают файлы в /var?» воспользуйтесь du. |
Какие сервисы запускаются
при загрузке системы? |
Выполните команду chkconfig --list. Она выведет все сервисы системы и их уровни запуска. |
Запущен ли сервис xxx? | Выполните команду service xxx status (где xxx – сервис, например, cups или sshd). |
Какие сетевые порты открыты? | Как мы упомянули в предыдущем ответе, lsof -i сообщит вам об открытых портах и приложениях, которые их слушают. netstat -aut отображает похожую информацию, но не сообщает, какие приложения используют порты. |
Какие правила брандмауэра используются у меня? | Выполните команду iptables -L. (Интерпретировать ее вывод может быть не так-то просто.) |
Какие пакеты у меня установлены? | less (вывод команды будет объемным) |
Если пакет xxx установлен,
как определить его версию? |
grep xxx, если точное имя пакета неизвестно. Например, команда rpm -q ssh не сообщит ничего, потому что пакета ssh нет, зато команда rpm -qa | grep ssh выведет несколько похожих пакетов.* |
Какую версию пакета xxx я установил? | Выполните команду rpm -qi xxx, где xxx – имя пакета.* |