Вряд ли найдётся такой человек, который не хотел побывать в роли системного администратора. Будь то начинающий пипл, который только что первый раз поставил Linux или эксперт по этому делу (ИМХО, он обойдётся и без этой статьи 😉 ). Итак конкретная ситуация: у тебя имеется модем (только не винмодем) и желание поставить сервер на такой прекрасной операционке как Linux (примеры будут гарантированно работать на Mandrake, RedHat и Slackware). Наше задание поставить диалап-сервер с некоторыми сервисами (ftp, www, telnet и проч.).
1. Настройка модема
Итак, ты воткнул свой ISA или внешний модем и... система его не опознала 😉 Облом-с. Но не отчаивайся и не спеши выкидывать девайс в мусоропровод =) Скажу тебе по секрету, сами разработчики Linux сейчас работают над проблемой универсального
опознования девайсов, поэтому модем придётся устанавливать вручную. Не бойся - это несложно.
Установи аппаратно или программно твой девайс на последовательный порт и на свободное прерывание. Перезагрузи систему. Затем выполни команду: cd
/dev.
В директории /dev содержатся девайсы и устройства всего твоего сундука 🙂 Как обычно (характерно для никсов) всё представлено в виде файлов. Последовательные порты представлены в файлах ttySXX, где XX - номер порта (com1 - ttyS0, com2 - ttyS1 и т.д.).
Удостоверься, что последовательного порта для твоего модема нету в директории /dev (ls | grep ttyS). Если есть - удали (rm -f /dev/ttySXX). Затем заново создай этот порт, программным скриптом MAKEDEV, расположенном в том же каталоге. Предположим, что модем находится на com4 порту (ttyS3). Полный синтаксис команды будет:
./MAKEDEV ttyS3
Затем создай символическую ссылку на модем файлом /dev/modem - это значительно упростит настройку софта, требующего обращения к модему:
ln -s ttyS3 modem
Порт создан. Но устройство на нём так и не опознано.
Используем команду setserial, чтобы опознать его:
setserial /dev/ttyS3 autoconfig
setserial /dev/ttyS3 auto_irq
И устройство должно быть опознано. Чтобы быстро проверить это, используем терминал minicom.
minicom -s
При успешной инициализации на экране появится нечто:
ATZ .........
OK
Если так и есть, то жми "ctrl+a", а затем "x", чтобы выйти из терминала.
Если всё прошло успешно, то модем готов к работе. Следующий шаг будет настроить модем на ответ на звонки.
2. Настройка ppp-сервера.
Для настройки диалап-сервера необходимы 2 важные программы:
1) *getty - программа для слежения за линией (в моём примере uugetty)
2) pppd - демон, который обеспечивает соединение между двумя компьютерами (point to point protocol daemon).
Их можно найти в инете на фтп-сервере, где находятся программы для Linux.
Первое, что вам нужно сделать, это настроить uugetty на запуск при загрузке системы (выделить для неё отдельную консоль), установим её на 6 консоль - запишем в файл /etc/inittab следующую строку:
6:2345:respawn:/sbin/uugetty ttyS3 38400 vt100 (не забудь, что модем должен находится на порту ttyS3).
Затем скопируем файл /usr/doc/getty_ps-2.0.7j/Examples/default/uugetty.autoanswer в /etc/default/uugetty.ttyS3, где ttyS3 - опять таки порт модема.
Редактируем этот файл: найдём строку: ALTLOCK=cua2 и заменяем её на ALTLOCK=ttyS3.
Выполним reboot системы и протестим захват линии. Если всё отлично, переходим к созданию ppp-пользователя и привязке uugetty к pppd.
Создадим юзера ppp:
adduser ppp -d /home/ppp -s /usr/local/bin/pppd_dial
И установим на него пароль (ну к примеру
"ppp")
passwd ppp --stdin
ppp
Дальше, создадим файл pppd_dial, в котором пропишем автозапуск
pppd:
cat >/usr/local/bin/pppd_dial
exec /usr/sbin/pppd -detach
^D # Ctrl+d
И установим на файл права доступа 755
chmod +x /usr/local/bin/pppd_dial
Далее для определения ip пользователя на вашей машине, можно использовать файл /etc/ppp/options.ttyS3, в котором написать: ipaddrserver:user_ip, где ipaddrserver - ip адрес сервера, а user_ip - ip, которое будет предоставлено пользователю, который дозвонится на твой сервер.
Теперь можно протестить соединение с твоим сервером (по идее всё должно работать... ), за дополнительной информацией обращаться к /usr/doc/HOWTO/PPP-HOWTO
3. Установка сервисов
Какой же сервер без сервисов =) Установим сервисы на твой крутой сервер. Начнём с самого основного: www.
Находим свежий RPM-пакет с сервером Apache, либо качаем из инета. Распакуем:
rpm -i packetname.rpm
Идём в /etc/httpd/conf - директория, содержащую конфиги
Апача. Редактируем httpd.conf. Вот опции, которые можно изменить:
ServerRoot - абсолютный путь к директории ресурсов сервера (по умолчанию /etc/httpd).
Port - порт, который будет прослушивать сервер. По умолчанию: 80.
User, Group - пользователь и группа, под которыми будут выполняться все процессы и запросы сервера. По умолчанию nobody и nobody соответственно.
ServerAdmin - Е-мыло админа сервера, т.е. твоё 😉
ServerName - DNS сервера, на который будет откликаться www: например: www.lamer.com (не путать с DNS сервером)
DocumentRoot - абсолютный путь к www-директории. По умолчанию /home/httpd/html
DirectoryIndex - директива, показывает, какой index-файл, должен передаваться пользователю при URL-запросе типа
http://www.lamer.com/dir/. Пример: DirectoryIndex index.html index.htm index.cgi
Писать об Apache можно до бесконечности, поэтому я остановлюсь на самом главном. Главное , чтобы сервер работал, а остальное можно доработать. Читай документацию, смотри HOWTO.
Ftp server.
Ftp (File-transfer protocol) необходим для заливки документов на сервер. Как и другой сервис, он настраивается практически под любые требования администратора.
Я рассмотрю настройку wu-ftpd сервера, т.к. я работал только на нём 😉 Ищем rpm пакет этого сервера и anonftp-rpm пакет (анонимный сервер
ftp). Основные файлы wu-ftpd это: /etc/ftpaccess , /etc/ftphosts и /var/log/xferlog (это оптимальный вариант - для начала хватит).
Самым главным файлом является /etc/ftpaccess - каждая его строка является атрибутом сервера, а пустые строки игнорируются. Атрибуты делятся на несколько частей:
а) Контроль доступа (class, autogroup,deny)
class: определяет класс пользователя, который может обратится к FTP-серверу, например:
class localuser real 192.168.55.* создаёт класс "localuser" для реальных пользователей с локальным ip - 192.168.55.*, а class guestuser anonymous * - создаёт класс "guestuser" для anonymous-пользователя.
Классы нужны для следующей команды: autogroup - присваивание группы определённому классу, например autogroup users localuser - даёт всем локальным пользователям группу users (группа обязательно должна быть прописана в /etc/group).
deny: явный отказ в обслуживании определённым хостам, например: deny hacker.com /home/ftp/deny/.msgforhack - запретит всем хакерам с hacker.com обращение с FTP-сервером, и высветит им содержимое .msgforhack сообщения.
б) Различные команды.
alias: позволяет сделать алиас на определённую директорию, например alias www /home/httpd/html сделает алиас www на www-директорию сервера.
cdpach: определяет патч для директорий. Пример: cdpach /usr/local/html/sample. При запросе файла, например, sample.html сервер будет искать его в cdpach-прописанной директории, т.е. в /usr/local/sample.
В /etc/ftphosts указываются хосты, допустимые или недопустимые для обращения к сервису.
Администрирование wu-ftpd.
Существует несколько команд для администрирования сервиса:
ftpwho - показывает, кто в данный момент подключён к ftp-серверу
ftpcount - число подключённых к ftp-серверу.
ftpshut [-t seconds] [-d drop time] [now], где -t seconds - кол-во секунд, после истечения которых, сервер завершит работу, -d drop time - время, через которое сервер завершит работу, пример, -d 0304 (в 3 часа 04 минуты Ftpd завершит работу), now - немедленное завершение работы.
ftprestart - рестарт ftp-сервера
Вот собственно и всё. Для логического завершения темы сервисов, предлагаю поставить telnetd или sshd, а также обязательно настроить sendmail и установить pop3-сервер.
Удачи.