Дистрибутивы Linux для начинающих. Debian для новичков


Debian Server для новичка | Блог Линуксоида

Как-то обеспокоился наличием собственного FTP-сервака. Тем более под это дело «на помойку» был отдан комп этак десятилетней давности. Так как я человек хоть и виндовый, но начинал с чистого ДОСа (про книжки тов. Фигурнова кто помнит?), то я решил сделать все на линуксе. В линуксе я был ноль полный. Еще и усложнил задачу — только консоль, никаких исков (как же — это ж линукс). Дистрибутивом был выбран Debian. Так получилось, что надобность в 2Тб личном хранилице отпала через год и комп был отдан в хорошие руки, а хард пристроен в нужное место. Но был накоплен неплохой опыт стопроцентного новичка. Какие только глупые ошибки я не совершал поначалу!

Что и как хотим получить в результате:

  • консольная установка ОС с флешки;
  • навыки консольного управление;
  • создание собственного репозитория;
  • обеспечение удаленного доступа по протоколу FTP/SFTP;
  • обеспечение удаленного управления по протоколу SSH;
  • дистанционное включение сервера, находящегося за маршрутизатором;
  • создание условий работы веб-сервера (в идеале связка nginx+apache).

В инете куча всяких пошаговых инструкций. Порой там бывают досадные ошибки, а если еще линуксоид и сопливый еще покамест, то можно пару часов потратить только на то, что бы понять, что не нужна лишняя палочка или точечка — в линуксе важно все! Нижеизложенное делается для практических целей поставленных задач — не надо воспринимать все как серьезную инструкцию для создания серьезного сервера. Тем более в процессе «восстановления опыта» могут и ошибки тоже быть и у меня…

Итак, имеется пустой комп с подключенной периферией.

Для начала нужно установить саму ОС. Имеется так же образы всех дисков Debian 6.0.0 stable. От лазерных носителей я давно отказался, т.е. для установки нужно изготовить загрузочную флешку. Флешка нашлась на 2Gb. После поисков оказалось, что изготовить можно, но из самой линуксовой среды. Пришлось установить с образа первого диска дебиан на виртуальную машину (подключаем образ к виртуалке в качестве виртуального CD-ROM и установка выполняется «честно» как бы с лазерного диска). Устанавливал «оптом» — т.е. и GUI тоже (в 6 версии был только GNOME). Тем не менее, после того, как все сделалось, грузим деабиан, подключаем флешку к виртуалке и открываем консоль.

Выполняем команду:

# dmesg

Видим что-то типа этого:

[373982.581725] sd 8:0:0:0: [sdc] 4001760 512-byte hardware sectors (2049 MB)[373982.582718] sd 8:0:0:0: [sdc] Write Protect is off[373982.582718] sd 8:0:0:0: [sdc] Mode Sense: 03 00 00 00[373982.582718] sd 8:0:0:0: [sdc] Assuming drive cache: write through[373982.584152] sd 8:0:0:0: [sdc] 4001760 512-byte hardware sectors (2049 MB)[373982.585718] sd 8:0:0:0: [sdc] Write Protect is off[373982.585718] sd 8:0:0:0: [sdc] Mode Sense: 03 00 00 00[373982.585718] sd 8:0:0:0: [sdc] Assuming drive cache: write through[373982.585718] sdc:[373982.589280] sd 8:0:0:0: [sdc] Attached SCSI disk

Это значит, что флешка определилась в системе.

Скачиваем файл boot.img.gz (debian.org) для нужной архитектуры (в моем случае i386) и копируем его в какую-нибудь директори. Далее выполняем команду из этой директории:

# zcat boot.img.gz > /dev/sdc

Теперь надо вытащить и воткнуть обратно USB флешку, чтобы новая структура/таблица разделов распозналась. Это обновит таблицу разделов, хранимую udev. Для проверки выполняем следующие команды:

# mkdir /mnt# mount /dev/sdс /mnt/# ls /mnt

и видим инсталляционные файлы, такие как syslinux.cfg, setup.exe, и так далее. Значит все нормально — флешку примонтировали.

Далее скачиваем ISO образ netinstall (debian.org) размером 150-180MB для соответствующей архитектуры (в моем случае i386). Netinstall устанвливает базовую систему, сеть не нужна. Копируем этот образ в какую-нибудь директорию и из этой директории выполняем и отмонтируем флешку:

# cp debian-6.0.1a-i386-netinst /mnt# umount /dev/sdс

Уф. Теперь при себе есть всегда флешка для установки.

Если же необходимо включить такой инсталлятор на флешку с другими ОСами, то можно обратиться к загрузчику grub. У меня уже имеется загрузочная флешка с grub4dos. Создаем папку debian в корне флешки и кидаем туда: debian-6.0.1a-i386-netinst.iso, initrd.gz, initrdg.gz, linux — последние 3 файла можно выдернуть с первого установочного диска Debian 6.0.0 stable или скачать (debian.org). А в меню grub’a (menu.lst) нужно добавить следующее:

title Debian 6.0.1a - Netinstall (Basic System, VGA Install)kernel /debian/linux video=vesa:ywrap,mtrr vga=788 -- quietinitrd /debian/initrdg.gz

title Debian 6.0.1a - Netinstall (Basic System, TXT Install)kernel /debian/linux -- quietinitrd /debian/initrd.gz

Теперь втыкаем флешку в наш импровизированный сервак, через BIOS выбираем загрузку с флешки и штатно устанавливаем Debian. При установке ничего особого я не обнаружил: выбираем установку с графическим интерфейсом и далее диалоговый режим. Разметить файловую систему можно автоматом — на первый раз сойдет. После установки и перезагрузки, а так же входа в систему мы будем радостно лицезреть черный экран с приглашением командной строки — базовая установка выполнена!

Далее необходимо настоить доступ и управление по протоколу SSH.

Так же, что бы особо не париться с консолью нужно бы установить mc (Midnight Commander) — аналог nc (Norton Commander) в DOS или tc (TotalCommander) в Windows. Но для установки нужно скопировать из сети пакет и установить его. Сети же нет. В то же время практически весь хоть сколько-то нужный софт есть на дисках Debian 6.0.0 stable (дисков, кажется, 6). Но я отказался от работы с дисками. Можно настроить сеть и воспользоваться официальным сетевым репозиторием — способ проще некуда. Однако это решение не для нас — нужна широкая автономность на первом этапе. Да и с каких пор мы идем по легкому пути — знакомство носит все же больше исследовательский характер. Значит нужно сделать свой локальный репозиторий.

1) подготовка…

Придется опять еще раз вернуться в виртульную машину. Входим в консоль под root’ом (на сервере мы в будущем настроим sudo, что бы по каждой ерунде не светить root’а). Создаем директории:

# mkdir debian/pool# mkdir debian/pool/contrib# mkdir debian/pool/main

В эти директории копируем содержимое одноименных директорий со всех дисков. Получится одна папочка объемом этак с 30Гб. После того, как содержимое всех дисков скопировано, создаём директории для хранения информации об находящихся в репозитарии пакетах:

# cd /debian# mkdir -p debian/dists/stable/contrib/binary-i386# mkdir -p debian/dists/stable/main/binary-i386

Далее все команды выполняются исходя из текущего каталога debian — за его пределы никуда не выходим! Собираем списки пакетов:

# apt-ftparchive packages pool/main/ > dists/stable/main/binary-i386/Packages# apt-ftparchive packages pool/contrib/ > dists/stable/contrib/binary-i386/Packages

Сжимаем списки:

# gzip -c dists/stable/contrib/binary-i386/Packages > dists/stable/contrib/binary-i386/Packages.gz# gzip -c dists/stable/main/binary-i386/Packages > dists/stable/main/binary-i386/Packages.gz

Создаём файлы Release:

# apt-ftparchive release pool/contrib/ > dists/stable/contrib/binary-i386/Release# apt-ftparchive release pool/main/ > dists/stable/main/binary-i386/Release# cd /debian/pool/dists/stable# apt-ftparchive release. > Release

Теперь папку /debian можно скопировать на жесткий диск и при желании подключать и организовывать локальные репозитории в других системах. Что и делаем — копируем папку на съемных USB-хард.

2) подключение… заходим на сервер под root’ом

Подключаем USB-хард к серверу. Далее соображаем как определился хард:

# dmesg

Монтируем его и сливаем все что натворили раньше:

# mount /dev/sda1 /mnt/# mkdir /dpool# cp -r /mnt/* /dpool

Правим файл /etc/apt/sources.list — комментим все репозитории и прописываем наш:

deb file:/debian/ stable contrib main

Тут надо сделать краткое отступление. Как поправить файл, если одна консоль? Для этого есть редактор vi:

# cd /etc/apt# sudo vi sources.list

Далее делаем что нужно: передвигаем курсор в нужную позицию и жмем «i». Это режим ввода. Делаем что нужно. Сделали и жмем ESC для возврата в командный режим. Далее — все по новой. После того как все завершено жмем последовательность «ESC: w! Enter» — это команда возврата с сохранением изменений. Страшно? После установки mc жизнь упростится…

Делаем апдейт:

# apt-get update# apt-cache gencaches

Готово наше локальное хранилище!

Теперь наконец-то добрались до SSH вплотную почти.

1) не всю же жизнь под root’ом работать…

Но сначала немного облегчим себе жизнь — настроим sudo. Sudo — система позволяющая делегировать те или иные привилегированные ресурсы пользователям с ведением протокола работы. Проще говоря user сможет выполнять действия, которые изначально предполагалось выполнять только от root’а.

Заходим на сервер под root’ом и открываем файл /etc/sudoers. Используем опять же редактор vi:

# cd /etc# vi sudoers

Ищем строку:

root ALL=(ALL) ALL

И под ней дописываем:

user ALL=(ALL) ALL

Выходим с сохранением. Готово! Теперь можно заходить под user’ом, но при выполнении критических команд просто перед командой добавлять «sudo». В первый раз система запросит текущий пароль для идентификации. Выходим из системы и заходим под user’ом. Пароль от root’а можно отныне записать на бумажке — пользоваться будем сильно редко, можно и забыть)

2) замучила консоль и vi…

Ставим пакет:

# sudo apt-get install mc

После установки введя команду

# mc

Теперь можно радоваться и забыть про команды mkdir, cp, ls, cd, а так же консольное управление в vi. Править файлы теперь можно по F4. Ностальгия по 2000ым — тогда я на 386ом только нортом и пользовался…

3) наконец-то SSH…

Ставим пакет:

# sudo apt-get install ssh

После успешной установки нужно добавить в конец файла /etc/ssh/sshd_config строку для ограничения доступа:

AllowUsers root, user

Выполняем:

# sudo mc

Далее идем по указанному пути и правим файл. После правки проблем с сохранением не будет — mc запущен под root’ом же. После правки нужно обновить сервис ssh — выходим в консоль и выполняем рестарт сервиса:

# sudo /etc/init.d/ssh restart

Для последнего штриха перед переходом на удаленное управление нужно только настроить сеть.

У меня ситуация простая: комп подключен к маршрутизатору проводом. Так как на маршрутизаторе включен DHCP, то интернет получим от него автоматом.

Настройки сетевых интерфейсов хранятся в файле: /etc/network/interfaces

Вот пример рабочего содержимого файла:

# The loopback network interfaceauto loiface lo inet loopback

# The primary network interfaceallow-hotplug eth0iface eth0 inet static address 10.0.0.10 netmask 255.0.0.0 network 10.0.0.0 broadcast 10.255.255.255 gateway 10.0.0.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 10.0.0.1 dns-search debian

Запускаем mc через sudo и правим этот файл в соответствии с теми сетевыми настройками, которые справедливы для вашей сети.

Настройка имени сервера и хостов находятся: /etc/hostname, /etc/hostsЕсли наш сервер называется «debian», то проверяем:В hostname значится только:

debian

А в host первые строчки:

127.0.0.1 localhost debian 10.0.0.10 debian.localhost debian

После всего этого гасим компьютер:

# sudo poweroff

2) удаленное управление…

Отключаем все кабели, тянем наш сервер в самый дальний угол и подключаем его в розетку и к сети. При этом надо заранее позаботится что бы на этапе загрузки BIOS не ждал нажатия кнопки с названием «any» после того как он с удивлением обнаружит, что клавиатура и мышь не обнаруживаются. Нажимаем кнопку питания и возвращаемся к рабочему компьютеру. На этом компе у меня винда. Как же теперь подключиться к серверу?

Есть такая программа putty. Добыть ее можно в интернете. После ее запуска во вкладке «Session» прописываем IP адрес нашего сервера, в качестве порта оставляем значение 22 (это стандартный порт для Shell). Проверяем, что во вкладке «Translation» выставлено UTF-8, что бы неогрести крякозяблев при отображении кириллицы. Возвращаемся в «Session» и открываем канал: «Open». После соединения нас попросят подтвердить создание ключей соединения с нами — подтверждаем. Вводит логин: user. Далее вводим пароль — пароль при вводе не отображается, т.е. это нормально. После соединения видим приглашение сервера и родную консоль, только не на всем мониторе, а в маленьком окошке, которое можно и подрястянуть мышкой. Это значит «Ура, товарищи!».

В принципе, для досутпа к файловой системе можно использовать WinSCP.

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

Ставим пакет:

# sudo apt-get install samba

Теперь редактируем файл /etc/samba/smb.conf. Вот пример рабочего содержимого:

[global]

workgroup = WORKGROUPserver string = %h serverdns proxy = no

log file = /var/log/samba/log.%mmax log size = 1000syslog = 0panic action = /usr/share/samba/panic-action %d

security = shareencrypt passwords = truepassdb backend = tdbsam

obey pam restrictions = yes

unix password sync = yespasswd program = /usr/bin/passwd %upasswd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .pam password change = yes

[homes]comment = Home Directoriesbrowseable = noread only = yescreate mask = 0700directory mask = 0700valid users = %S

[printers]comment = All Printersbrowseable = nopath = /var/spool/sambaprintable = yesguest ok = noread only = yescreate mask = 0700

[print$]comment = Printer Driverspath = /var/lib/samba/printersbrowseable = yesread only = yesguest ok = no

[user]path = /ftp/pubreadonly = noguest ok = yes

В качестве комментария можно заметить следующее:— необходимо указать рабочую группу, в которой работают виндовые машины;— параметр security должен быть установлен в share;— в секции «user» нужно указать реальный путь и разрешить гостевой доступ — собственно именно эту секцию мы в файл и добавляем.

После всего этого дела создаем указанные каталоги:

# mkdir /ftp# mkdir /ftp/pub

И разбираемся с правами на эти папки:

# sudo chmod 0755 /ftp# sudo chmod 0777 /ftp/pub# sudo chown -R root /ftp

В таком случае доступ будет осуществлен к папке ftp, но в ней изменить ничего нельзя будет. А вот в папке pub — делаем что угодно. Естественно, можно все упростить выкинув папочку pub и поправив права для ftp…

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

# sudo /etc/init.d/samba restart

Теперь пора выпустить нашего малыша в сеть.

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

У нас должен быть выход в интернет с статичным реальный IP-адресом. Т.е. доступ из вне должен осуществляться напрямую, а не через коммутацию сетей провайдера. Например, пользователи сети Рамнет все сидят за большим NAT’ом, т.к. выходят в сеть через несколько пулов. Это значит, что IP выданный при регистрации вовсе и не совпадает с тем IP, который «отпечатывается», например, при посещении сайтов. Реальный IP — это однозначно тот IP, который прописан в сетевых настройках драйвера сетевой платы. Узнать реальный IP или нет можно воспользовавшись каким-нибудь сетевым сервисом в интернете, который показывает ваш IP-адрес. Допустим у нас имеется реальный IP.

Далее, если сетевой провод напрямую заведен на сервер, то проблем особых уже и нет — сервер уже в сети. А если стоит какое-то маршрутизирующее устройство (маршрутизатор, или промежуточный разветвитель-коммутатор на базе того же линукса)? В таком случае мы оказываемся уже за своим NAT’ом, который нужно немного настроить: осуществить проброс портов. Для каждой сетевой службы на машине имеется свой порт: SSH — 22, FTP — 21. Т.е., маршрутизатор нужно настроить так, что бы при обращении к порту по нашему реальному IP осуществлялось обращение именно к серверу по этому порту. Если наш сервер имеет адрес 10.0.0.10, а провайдером выдан реальный IP 172.122.34.89, то в маршрутизаторе необходимо выполнить проброс портов (Port Forwarding) 21 и 22 из вне (172.122.34.89) на сервер (10.0.0.10). Просто настраивается пара строчек в админке маршрутизатора или правится таблица маршуртизации промежуточного линукса-коммутатора. Допустим это тоже все сделали.

В таком случае для досутпа по SSH через putty необходимо просто будет указать реальный IP-адрес, порт 22 (см. выше, где описана небольшая настройка клиента putty). Осуществляем вход и получаем доступ к консоли сервера.

А файловый доступ? Тут чуть сложнее. Можно использовать WinSCP, но как уже упоминалось, это не наш метод. Samba работает только в локалке. Придется настроить FTP доступ…

Для FTP используем сервис proftpd. Ставим пакет:

# sudo apt-get install proftpd

Файл конфигурации находится здесь: /etc/proftpd/proftpd.conf. Вот пример рабочего файла:

Include /etc/proftpd/modules.conf

ServerName "Debian"ServerType standaloneDeferWelcome off

MultilineRFC2228 onDefaultServer onShowSymlinks on

TimeoutNoTransfer 600TimeoutStalled 600TimeoutIdle 1200

DisplayLogin welcome.msgDisplayChdir .message trueListOptions "-l"

DenyFilter \*.*/

DefaultRoot ~

RequireValidShell off

Port 21

<IfModule mod_dynmasq.c># DynMasqRefresh 28800</IfModule>

MaxInstances 10

User nobodyGroup nogroup

Umask 022 022AllowOverwrite on

TransferLog /var/log/proftpd/xferlogSystemLog /var/log/proftpd/proftpd.log

<IfModule mod_quotatab.c>QuotaEngine off</IfModule>

<IfModule mod_ratio.c>Ratios off</IfModule>

<IfModule mod_delay.c>DelayEngine on</IfModule>

<IfModule mod_ctrls.c>ControlsEngine offControlsMaxClients 2ControlsLog /var/log/proftpd/controls.logControlsInterval 5ControlsSocket /var/run/proftpd/proftpd.sock</IfModule>

<IfModule mod_ctrls_admin.c>AdminControlsEngine off</IfModule>

<Anonymous /home/ftp/pub> User user1 Group nogroup UserAlias anonymous user1 #RequireValidShell off MaxClients 10 TransferRate RETR,STOR 4096

<Limit LOGIN> AllowAll </Limit> <Limit READ> AllowAll </Limit> <Limit WRITE> AllowAll </Limit> </Anonymous>

<Anonymous /home/ftp/pub> User user2 Group nogroup #UserAlias anonymous user2 #RequireValidShell off MaxClients 3 #TransferRate RETR,STOR 4096

<Limit LOGIN> AllowAll </Limit> <Limit READ> AllowAll </Limit> <Limit WRITE> AllowAll </Limit> </Anonymous></code>

Комментарии:— сервер FTP запускаем отдельным процессом «standalone», хотя для слабых компов это и не будет оптимальным;— секции «Anonymous» прописываем сами: для user1 будет открыт анонимный доступ с ограничением скорости в 4МБ/с и ограничением количества запускаемых серверов 10, для user2 ограничения скорости нет, а ограничение запускаемых таких серверов установлено в 3.

Перезапускаем ftp-сервер:

# sudo /etc/init.d/proftpd restart

В таком случае мы сможем подключиться к нашему серверу используя любой FTP-клиент из любой точки сети. Учитываем, что порт 21 мы уже пробросили через маршрутизатор ранее. При этом можно использовать анонимный доступ или введя логин/пароль для авторизации снять лимит скорости скачивания/отправки. Но для авторизации нужно иметь зарегистрированные учетные записи на сервере. Создадим пользователей без создания для них домашних каталогов:

# sudo useradd user1# sudo useradd user2

И зададим им пароли:

# sudo passwd user1# sudo passwd user2

Ну вот теперь появилось уже что-то более-менее полезное)))

В идеале хотелось бы настроить защищенный SFTP доступ. Для proftpd существует модуль mod_sftp. Я очень долго (3 вечера) курил мануалы по этой теме и кое как сумел настроить. Но сервер нещадно резал скорость на уровне 10мегабит как при доступе внутри сети, так и снаружи. Ничего с этим не поделав пришлось отказаться пока от этого решения.

Так же SFTP можно настроить через SSH — в нем уже имеется такая возможность. Однако при такой организации у меня никак не получалось нормально запереть пользователя в нужной директории, т.к. иначе ему, после авторизации, открывался доступ сразу ко всей системе.

SFTP идея гораздо полезнее (при FTP пароли вообще в открытом виде передаются, если это не анонимный доступ), но пока ее пришлось забросить.

Может быть будет кому-то интересно подключение mod_sftp. Я реализовывал так, что бы ключи авторизации цеплялись с SSH:

<source lang="bash"><IfModule mod_sftp.c>SFTPEngine onSFTPLog /var/log/proftpd/sftp.logTransferLog /var/log/proftpd/xferlog-sftp.logPort 2220SFTPHostKey /etc/ssh/ssh_host_rsa_keySFTPHostKey /etc/ssh/ssh_host_dsa_keySFTPAuthorizedUserKeys file:~/.sftp/authorized_keysSFTPCompression delayedMaxLoginAttempts 6</IfModule>

Это дело вставляется в proftpd.conf и доступ осуществляется через порт 2220. Но при этом mod_sftp должен быть установлен вместе с proftpd. В штатном репозитории proftpd собран без mod_sftp. Его придется «дособирать» самостоятельно. «Впатчивал» я по какой-то английской инструкции — уже не помню. Процесс это не менее творческий, чем сборка своего репозитория, а результат все равно не порадовал, поэтому это все описывать не буду.

Итак, мы настроили FTP.

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

Тут есть одна тонкость. К нашему серверу подключено только электропитание и сеть. Но сетевые карты давно научились «будить» компьютер: достаточно только включить такую поддержку в BIOS компьютера и послеать не него «магический» пакет (Magic packet). Читаем в wikipedia:

Magic packet — это специальная последовательность байтов, которую для нормального прохождения по локальным сетям можно вставить в пакеты UDP или IPX. Обычно для WOL пакеты протоколов верхнего уровня рассылают широковещательно, так как в случае динамического присвоения адресов неизвестно, какой, скажем, IP-адрес соответствует какому MAC-адресу. Однако, для корректного прохождения через маршрутизатор, запрещающий широковещательные пакеты, можно послать пакет по какому-то определённому адресу.

Состав magic packet

Вначале идет так называемая «цепочка синхронизации»: 6 байт, равных 0xFF. Затем — MAC-адрес сетевой платы, повторённый 16 раз. То есть, если бы адрес платы выглядел как 01:02:03:04:05:06, то магический пакет оказался бы таким:

FFFFFFFFFFFF010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506

Есть куча программ, половина из которых работает, а другая нет, которые формируют и отсылают такие пакеты по указанному IP. Но это справедливо только в локальной сети. Но ведь у нас реальный IP — значит можно попробовать просто отослать пакет на него, а маршрутизатор настроить на ретрансляцию этого пакета серверу. Пакеты на «побудку» рассылаются обычно по портам 7 или 9. Прокидываем их через маршрутизатор на IP сервера. Далее проще всего воспользоваться сетевым ресурсом wakeonlan.ru: забиваем свой реальный адрес IP и MAC адрес сетевой платы сервера. Жмем кнопочку «Включить компьютер!». После пары отправок система вполне может и написать о неудаче включения — сервер-то все же за NAT’ом, а отклик на пингование маршрутизатора разумнее выключить в настройках маршрутизатора. Такой способ включения удобен, правда придется выучить наизусть IP и MAC. Но у нас же память хорошая — мы же задаем и помним правильные пароли составом не менее 14 символов?) Зато теперь сервер можно включить с сотового телефона (при наличии в нем браузера и GPRS доступа).

Интересная так же штука вышла с маршрутизатором. Дело в том, что пока сервер включен маршрутизатор точно знает к какому его порту этот сервер подключен. Но как только сервер выключаем маршрутизатор, через некоторое время, начисто забывает этот факт. Заставить делать широковещательную рассылку «магического» пакета по всем портам я не сумел его заставить. Пришлось на разбирательство потратить приличное время. В результате на маршрутизатор установил прошивку от DD-WRT (на базе линукса). Прошивка по сравнению с штатными прошивками от производителей просто блещет функционалом. Он явно избыточен) Однако и она забывала порт, хотя широковещательно пакеты рассылать уже могла (только комп почему-то не включался). Если был бы вместо маршрутизатора коммутатор-комп на линукс, то можно было бы просто подредактировать таблицу маршрутизации и делов-то… Аналогично и тут — нужно внести изменения в таблицу ARP маршрутизатора. В данной прошивке есть некая консоль и можно при загрузке маршрутизатора добавить скрипт запуска. Что и делаем, скрип таков:

ip neigh change 10.0.0.10 lladdr 00:10:20:1F:C4:57 nud permanent dev br0ip neigh add 10.0.0.10 lladdr 00:10:20:1F:C4:57 nud permanent dev br0

Подразумевается, что на физическом аппаратном уровне порты маршрутизатора и платы друг друга «узнают» по своим MAC-адресам (они же с собой постоянно общаются при наличии питания) и маршрутизатор «догадается» что вышеуказанный IPшник будет принадлежать именно этому адресату (пока комп не включен это знание маршрутизатору недосутпно ибо еще нет никакого интерфейса сетевого уровня — однако эта знание мы и заложили при загрузке в ARP) после включения.

Ну вот — на этом и закончивается мое первое знакомство с линуксом. Если кому-то это помогло — всегда пожалуйста.

Взято тут

www.linux16.ru

Debian+Drupal для начинающих | Мой МеморизИТ

Сам я в никсах ноль полный. Почитав несколько инструкций, понапрягав пару дней нескольких своих друзей (привет lexit), решил состряпать нижеприлагающийся мануал. Подобных в инете много, но там есть некоторые недочёты, в частности — там уже везде требуют умение работать в линуксах. Свой контингент этот мануал найдёт. В общем поехали.

Для установки виртуальной системы нам потребуется установочный диск Debian. Валим сюда http://www.debian.org/distrib/ и забираем образ netinst (он весит порядка 200 мб). Далее, лезем на http://www.vmware.com/ и скачиваем VMware Server (для этого надо будет зарегистрироваться,

процедура простая и быстрая). Заодно получите лице

нзионный ключ на установку. Описывать процесс установки считаю бесполезным занятием, надеюсь все умеют. Поставили. Если надо — ребутаемся.

Запускаем Manage Virtual Networks (находится в Пуске=>VMware=>VMware Server). Нам надо сделать будующим виртуальным машинам выход в инет. У меня сервак устроен так: имеются 2 сетевухи, одна смотрит в локальную сеть, вторая на провайдера (свич у меня стоит). Зачем я так сделал — внутреннюю сетевуху я использую для доступа к самому серваку из локалки, а внешняя сетевуха у меня без настроек, голая, но к ней подключен кабель от провайдера. Поэтому и настраивать виртуальные сети мы будем так, чтобы как будто эта сетевуха просто была свичём(коммутатором). Значит запустили программу, перешли на вкладку Host Virtual Network Mapping, и например строке VMnet2 (или в любой другой пустой) выбрали вашу сетевуху, которая смотрит в сторону провайдера(определить название адаптера я думаю вы сможете). Жмём ОК.

Переходим к созданию и запуску виртуальной машины. Коннектимся к нашему (у меня он называется Titan, соответственно далее по тексту именно так я буду обозначать свой сервак) виртуальному серверу через ярлык на рабочем столе, заботливо созданным установщиком VMware, либо с другой машины по адресу https://titan:8333 . Система заматерится на предмет недоброкачественного сертификата (не может проверить достоверность удостоверяющего центра), смело жмакаем на продолжение, вводим логин и пароль и попадаем в консоль управления. Логин и пасс используете либо локальные из группы админов, либо доменного пользователя из группы админа домена.

Кратко пробегусь чего тут к чему.

Summary — ну тут понятно, общая информация, загрузка проца и т.д.

Virtual Machines — список виртуальных машин и управление ими.

Tasks — задачи. чо де происходило.

Events — события.

Permissions — тут можно настроить разрешения для других пользователей для доступа к консоли виртуальных машин.

Нам нужно второе (Virtual Machines), с остальным сами поковыряйтесь. Сломаете — переустановите.

Жмём Create Virtual Machine.

Name and Location — указываем имя и хранилище, де она будет лежать. Next.

Guest Operating System — выбираем операционку, которую будем туда ставить — Linux operating system и из выпадающего списка Debian GNU/Linux 4 (32-bit). Next.

Memory and Processors — нам за глаза хватит 512Мб и 1 процессор. Next.

Hard Disk — жесткий диск для системы. Создаём новый (Create a new).

Properties — размер, я поставил 50 гиг, чтоб уж наверняка и на будущее, а вдруг чего заливать буду. ваще не жалко, у меня всё равно там винт терабайтник стоит 🙂 Next.

Network Adapter — добавляем сетевуху Add a Network Adapter

Properties — в списке выбираем ту сеть (VMnet2), которую настраивали в отдельной програмке выше. Next.

CD/DVD Drive — используем образ Use an ISO Image.

Properties — и вот тут укажем на наш дистрибутив с Debian. Рекомендую закинуть его в каталог заранее. удобнее будет.

Floppy Drive — не добавляем — он нам не облокотился абсолютно.

USB Controller — аналогично.

Ready to Complete — жмём Finish.

Виртуалку создали. Теперь запускаем её. Становимся на нашей машине слева и жмём зелёную кнопку вверху, похожую на Play. На машине появится этот самый значок, что означает, что машина запущена. Для удобства дальнейшей работы работы сделаем себе ярлык. Для этого встанем на машину слева, и перейдём на вкладку Summary и жмакнем Generate Virtual Machine Shortcut справа. И вот тут нас ожидает первое западло. Оказывается мы не поставили себе VMware Remote Console Plug-in. Сразу говорю, на момент написания данной статьи, плагина для Chrome не было. Только для IE и FF.

Но юзать виртуалку даже из под браузера меня обламывает. Поэтому лезем на наш сервак туда куда установили VMware(по дефолту Program FilesVMwareVMware Servertomcatwebappsuiplugin) и устанавливаем vmware-vmrc-win32-x86.exe .

Здесь нас подстерегает второе западло — оказывается что даже установка это плагина не позволяет сделать ярлык на запуск виртуалки. А посему, запускаем IE ну или FF — у кого что есть, подключаемся к нашему серверу по https как было описано выше, и генерируем ярлык на рабочий стол.

Можно сделать и ссылкой на веб, но оно нам и нафиг не надо. Поэтому жмём на Install Desktop Shortcut to ИмяВашейВиртуалки. Теперь окно IE можно свернуть. пока оно нам не понадобится.

Запускаем с рабочего стола ярлык Connect to ВашаВиртуалка on ВашСервак_8333 и видим окно запроса логина и пароля.

Вводим наши логин и пароль и попадаем в нашу виртуальную машину(наконец-то!).

Перекур……

Покурили ? Готовы ? Ну тогда понеслась:

Не будем заморачиваться с графическим интерфейсом и поставим всё через текст, так оно побыстрее будет. А посему, жмём Install.

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

Раз мы выбрали Русский, значит считают что мы находимся в РФ, Украине или ещё где-то. В кармане паспорт гражданина РФ. Выбор очевиден.

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

Что-то подгружается, загружается… Если вмешаться не даёт — значит так и надо.

Адреса автоматом мы не получили, ввиду того, что мой провайдер выдаёт статические адреса своим клиентам.

Установщик нас не балует разнообразием, а посему жмакаем одну лишь кнопку «Продолжить» 🙂

 

И настраиваем адрес ручками. Для этого тыкаемся в «Настроить сеть вручную».

Картинки показывать не буду, и так понятно что поочерёдно будут появляться запросы на вводу IP-адреса, маски, шлюза и DNS (если серверов ДНС несколько — указывайте их через пробел). Также введите имя компьютера, и домен (я написал свой внешний, а вообще без разницы).

Задаём пароль root’а (суперпользователя), повторяем его.

Вводим имя пользователя(например Uncle Bob), под которым будем работать в системе, ибо как вы знаете — работать под root’ом не рекомендуется.

Вводим желаемый логин пользователя, задаём ему пароль и повторяем пароль.

Выберем нужный нам часовой пояс, я взял Москву, ибо вроде как в ней.

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

Теперь нам предлагают разбить диски.

Не будем заморачиваться с разметкой диска и тому подобным, просто ставим «Авто», далее выбираем диск, он у нас будет единственный, далее указываем схему разметки «Все файлы в одном разделе(рекомендуется новичкам)«, заканчиваем разметку и записываем изменения на диск, и соглашаемся с тем, что все данные будут нафиг потеряны.

Далее происходит форматирование разделов, монтирование дисков(или наоборот, да и пофиг) и установка базовой системы. В процессе предложат выбрать комбинацию для переключения языков — я всегда юзаю Control+Shift. Установка продолжится.

Настроим зеркало архивов, откуда мы будем получать пакеты для установки и т.д. Мы в России, а значит нам нужна Российская Федерация, а зеркалом мы укажем mirror.yandex.ru. Он то пошустрее буржуйских будет, всё таки он у нас 🙂

Далее надо настроить прокси, в случае если вы через него юзаете инет. Но если вы решили создавать свой сервак то явно у вас выделенный адрес и никаких проксей нет. А поэтому смело жмём «Продолжить».

Опять чего то скачивается настраивается устанавливается. На вопрос об отправке анонимных сообщений со статистикой использования пакетов как хотите так и отвечайте. Я не люблю ничего никуда слать. поэтому говорю «Нет». И мы переходим к выбору программного обеспечения.

Оставляем отметки только на «Сервер SSH» и «Стандартные системные утилиты». Остальное потом. Жмём на «Продолжить».

Происходит скачивание и установка выбранных нами компонентов.

Нас прервут на вопрос. Так как эта операционка у нас единственная на этой виртуалке, то устанавливаем загрузчик GRUB в главную загрузочную запись, т.е. отвечаем «Да».

Ещё некоторое время поустанавливаются всякие штуки и всё.

Прежде чем нажать на «Продолжить», зайдём через IE на наш сервер с виртуалками, и на нашей виртуалке отключим CD-ROM, он нам больше не понадобится. Для этого щёлкнем по значку сидюка, и выберем Edit. Далее выставим значение Disconnected и уберём галочку с Connect at power on. Жмём «ОК».

После этого жмём «Продолжить» в виртуальной машине, и наблюдаем как она перезагружается. Собственно на этом установка виртуальной машины закончена. В итоге мы имеем виртуалку с установленной на ней Debian.

Можна позакрывать все окна, в том числе и окно виртуалки , ибо в дальнейшем оно нам не будет нужно.

Переходим ко второй фазе — настройке самой системы и установке Drupal.

Тащим из инета две приблуды которые будут нам очень необходимы. Первая — чтобы подключаться к нашей виртуалке, дабы управлять ей — Putty. Скачать можно тут http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html . Вторая прога — WinSCP — с её помощью мы будем закачивать файлы на нашу виртуалку. Слить можно отсюда http://winscp.net/eng/download.php . Я себе взял версию Portable, чтобы не устанавливать а при случае таскать с собой на флешке.

Переместим скачанный нами putty.exe в каталог WinSCP. Это нужно чтобы запускать putty по кнопке из WinSCP. Запускаем WinSCP.

Настраиваем подключение к нашей виртуалке. В поле Host Name вводим ip-адрес виртуалки, в поле User Name вводим имя созданного пользователя в виртуалке, сохраняем и подключаемся. Вводим пароль и видим окно, весьма похожее на Тотал Коммандер. В правой панели переходим в каталог /tmp, именно сюда мы будем всё заливать, а потом уже перекидывать куда надо.

Лезем на http://drupal.org и скачиваем нужную нам версию Друпала. Я выбрал 6.22, сказали что она стабильная, а 7я ещё сыровата и глюков много. Поверим знающим людям, фигле.

Полученный архив drupal-6.22.tar.gz просто перетаскиваем в правую панель WinSCP, в каталог /tmp . Предварительную подготовку провели.

Жмакаем на значок Putty в тулбаре и соглашаемся с предупреждением. Вводим пароль от созданного пользователя. Отлично, мы внутри. Для того, чтобы правильно отображались русские буквы в системе, необходимо кликнуть правой кнопкой мыши на шапке окна Putty и выбрать Change Settings. В появившемся окне перейти в раздел Translation, и поменять значение в Remote Character Set на UTF-8. Жмём Apply.

Для выполнения команд нам потребуются права суперпользователя.

Для этого набираем команду su и вводим пароль от root’а. Всё. права получили. Теперь обновим систему и поставим apache+php+mysql. Для этого введём команду ниже (просто скопируйте её и вставьте в Putty):

[stextbox id=»black» caption=»[email protected]»]

aptitude update && aptitude upgrade && aptitude install apache2 php5 libapache2-mod-php5 mysql-server mysql-client php5-mysql phpmyadmin

[/stextbox]

на все вопросы отвечаем утвердительно, то бишь пишем Y .

Нам предложат создать пароль для MySQL — создаём и подтвержаем.

Выбираем веб-сервер который будет настроен для работы с phpmyadmin. У нас apache, соответственно его и выбираем. Ждём пока всё загрузится и установится.

Далее нас спросят о создании базы для phpmyadmin. Если мы неопытные админы баз данных, то лучше просто нажать «Да», тем более там так и написано.

Создаём пароль для доступа, подтвержаем. Ждём ещё немного. Установка закончена.

Можем проверить. Забиваем в браузере http://ip-адрес_виртуалки/phpmyadmin . Логин root, пароль какой ставили. Как ни странно, но работает.

Ставим Midnight Commander:

[stextbox id=»black» caption=»[email protected]»]

apt-get install mc

[/stextbox]

Соглашаемся с вопросом. Установка проходит быстро. Проверяем — набираем команду mc — запустится оболочка, до боли напоминающая Volkov Commander (привет девяностые !). Выход из него по кнопке F10 — это для справки.

Переходим в каталог /etc/apache2/conf.d и редактируем(F4) файл phpmyadmin.conf . После вставляем следующие строки:

AuthType Basic

AuthName «Restricted area»

Require user ВАШ_ЛОГИН

AuthUserFile /var/.htpasswd

Сохраняем комбинацией клавиш Ctrl+O и выходим Ctrl+X. Выходим из МС.

Переходим в каталог /var командой: cd /var

Выполняем команду: htpasswd -c .htpasswd ВАШ_ЛОГИН

Вводим новый пароль для вашего пользователя(можно тот же что и был). Подтверждаем.

Перезапускаем apache командой: apachectl restart

Это всё сделано для того, чтобы на страницу phpmyadmin нельзя было попасть всем подряд — нужно знать логин и пароль. Дополнительная безопасность, так сказать.

Помните мы заливали в /tmp архив с друпалом ? Самое время им заняться.

Переходим в каталог /tmp командой: cd /tmp

Прочитаем содержимое каталога: ls

Да, действительно наш архив там.

Распаковываем архив : tar -xzvf drupal-6.22.tar.gz

Запускаем мс, переходим на одной панели в /tmp/drupal-6.22 а на другой в /var/www и копируем содержимое первого во второй(предварительно удалите index.html в /var/www).

Открываем наш сайт в браузере http://ip-адрес_виртуалки .

Загрузится страница инсталяции Drupal. С английским у меня вроде бы неплохо, но хотелось бы проводить установку на русском языке.

и нажимаем на «Экспорт». В итоге получаем архив drupal-6.22-ru-translations.tgz . Распаковываем его себе, и получившиеся каталоги (modules,profiles,themes) заливаем на виртуалку в каталог /tmp . Затем эти 3 каталога копируем в /var/www . и обновляем страницу установки Друпала, и видим возможность выбора 2х языков — английского и русского. Выбираем русский и жмём Select Language. И секунды ни прошло — следом вышло западло!

Собственно всё понятно. Надо назначить права. Переключаемся в Putty, выходим из MC и набираем команды:

cd /var/www

cp sites/default/default.settings.php sites/default/settings.php

chmod o+w sites/default/settings.php

Обновляем страницу установки — ошибка исчезла. Теперь необходимо ввести параметры базы данных. Но для начала её нужно создать. Открываем в браузере http://ip-адрес-виртуалки/phpmyadmin . Логинимся и создаём новую базу. Для этого перейдём на вкладку «Базы данных», и внизу страницы в поле «Новая база» введём имя нашей новой базы, например drupal, кодировку поставим utf8_unicode_ci, она самая последняя. База данных была создана — об этом нас известят.

Возвращаемся на страницу установки Друпал с параметрами базы. Вписываем только что созданную базу drupal, пользователя root и пароль от него на MySQL. Сохраняем и продолжаем.

Система сама поставит свои вещи, далее увидим «Конфигурирование системы». Заполняем поля согласно требованиям — название сайта, почтовые ящики, логин и пароль админа.

Также нас просят убрать права с тех файлов что мы давали выше. Не вопрос. Переходим в Putty и вбиваем команды

cd /var/www

chmod a-w sites/default/settings.php

chmod a-w sites/default

Обратно идём на страницу инсталяции Друпала. Сохраняем и продолжаем.

Поздравляем! Установка Drupal на ваш сайт завершена!

Чего теперь делать дальше… А чёрт его знает. Курить мануалы по работе с самой Друпал 🙂

P.S. Не судите строго, мой первый пост. Если что не так — комментируйте, исправлю.

P.S.S. А установка руссификации для Drupal 7 гораздо проще. Наверное всё таки её заюзаю, ведь релизов то уже куча, да и модулей в ней идёт поболее.

Автор статьи, то бишь я, выражает огромную благодарность, щенячий восторг и слёзы радости двум замечательным людям — Дмитрию aka SinteZ и Алексею aka lexit за помощь и консультации, а также терпение 🙂

iamroot.ru

Debian Server для новичка — /dev/mem

Как-то обеспокоился наличием собственного FTP-сервака. Тем более под это дело «на помойку» был отдан комп этак десятилетней давности. Так как я человек хоть и виндовый, но начинал с чистого ДОСа (про книжки тов. Фигурнова кто помнит?), то я решил сделать все на линуксе. В линуксе я был ноль полный. Еще и усложнил задачу — только консоль, никаких исков (как же — это ж линукс). Дистрибутивом был выбран Debian. Так получилось, что надобность в 2Тб личном хранилице отпала через год и комп был отдан в хорошие руки, а хард пристроен в нужное место. Но был накоплен неплохой опыт стопроцентного новичка. Какие только глупые ошибки я не совершал поначалу! И хабр читал, между прочим, пока разбирался с проблемами. Поэтому эту свою дебютную (первую) статью на хабре я посвящаю тем, кто хочет заняться линуксом с нуля и эта статья призвана для плавного ввода «в тему», являясь, по сути, фильтрацией и систематизацией всего того, что я нашел на просторах интернета. Ранее я этот материал уже публиковал, но, думаю, на хабре он тоже будет полезен.

Что и как хотим получить в результате:— консольная установка ОС с флешки;— навыки консольного управление;— создание собственного репозитория;— обеспечение удаленного доступа по протоколу FTP/SFTP;— обеспечение удаленного управления по протоколу SSH;— дистанционное включение сервера, находящегося за маршрутизатором;— создание условий работы веб-сервера (в идеале связка nginx+apache).

В инете куча всяких пошаговых инструкций. Порой там бывают досадные ошибки, а если еще линуксоид и сопливый еще покамест, то можно пару часов потратить только на то, что бы понять, что не нужна лишняя палочка или точечка — в линуксе важно все! Нижеизложенное делается для практических целей поставленных задач — не надо воспринимать все как серьезную инструкцию для создания серьезного сервера. Тем более в процессе «восстановления опыта» могут и ошибки тоже быть и у меня…

— Раз

Итак, имеется пустой комп с подключенной периферией. Для начала нужно установить саму ОС. Имеется так же образы всех дисков Debian 6.0.0 stable. От лазерных носителей я давно отказался, т.е. для установки нужно изготовить загрузочную флешку. Флешка нашлась на 2Gb. После поисков оказалось, что изготовить можно, но из самой линуксовой среды. Пришлось установить с образа первого диска дебиан на виртуальную машину (подключаем образ к виртуалке в качестве виртуального CD-ROM и установка выполняется «честно» как бы с лазерного диска). Устанавливал «оптом» — т.е. и GUI тоже (в 6 версии был только GNOME). Тем не менее, после того, как все сделалось, грузим деабиан, подключаем флешку к виртуалке и открываем консоль.

Выполняем команду:

# dmesg

Видим что-то типа этого:[373982.581725] sd 8:0:0:0: [sdc] 4001760 512-byte hardware sectors (2049 MB)[373982.582718] sd 8:0:0:0: [sdc] Write Protect is off[373982.582718] sd 8:0:0:0: [sdc] Mode Sense: 03 00 00 00[373982.582718] sd 8:0:0:0: [sdc] Assuming drive cache: write through[373982.584152] sd 8:0:0:0: [sdc] 4001760 512-byte hardware sectors (2049 MB)[373982.585718] sd 8:0:0:0: [sdc] Write Protect is off[373982.585718] sd 8:0:0:0: [sdc] Mode Sense: 03 00 00 00[373982.585718] sd 8:0:0:0: [sdc] Assuming drive cache: write through[373982.585718] sdc:[373982.589280] sd 8:0:0:0: [sdc] Attached SCSI disk

Это значит, что флешка определилась в системе.

Скачиваем файл boot.img.gz (debian.org) для нужной архитектуры (в моем случае i386) и копируем его в какую-нибудь директори. Далее выполняем команду из этой директории:

# zcat boot.img.gz > /dev/sdc

Теперь надо вытащить и воткнуть обратно USB флешку, чтобы новая структура/таблица разделов распозналась. Это обновит таблицу разделов, хранимую udev. Для проверки выполняем следующие команды:

# mkdir /mnt# mount /dev/sdс /mnt/# ls /mnt

и видим инсталляционные файлы, такие как syslinux.cfg, setup.exe, и так далее. Значит все нормально — флешку примонтировали.

Далее скачиваем ISO образ netinstall (debian.org) размером 150-180MB для соответствующей архитектуры (в моем случае i386). Netinstall устанвливает базовую систему, сеть не нужна. Копируем этот образ в какую-нибудь директорию и из этой директории выполняем и отмонтируем флешку:

# cp debian-6.0.1a-i386-netinst /mnt# umount /dev/sdс

Уф. Теперь при себе есть всегда флешка для установки.

Если же необходимо включить такой инсталлятор на флешку с другими ОСами, то можно обратиться к загрузчику grub. У меня уже имеется загрузочная флешка с grub4dos. Создаем папку debian в корне флешки и кидаем туда: debian-6.0.1a-i386-netinst.iso, initrd.gz, initrdg.gz, linux — последние 3 файла можно выдернуть с первого установочного диска Debian 6.0.0 stable или скачать (debian.org). А в меню grub’a (menu.lst) нужно добавить следующее:title Debian 6.0.1a - Netinstall (Basic System, VGA Install)kernel /debian/linux video=vesa:ywrap,mtrr vga=788 -- quietinitrd /debian/initrdg.gz

title Debian 6.0.1a - Netinstall (Basic System, TXT Install)kernel /debian/linux -- quietinitrd /debian/initrd.gz

Теперь втыкаем флешку в наш импровизированный сервак, через BIOS выбираем загрузку с флешки и штатно устанавливаем Debian. При установке ничего особого я не обнаружил: выбираем установку с графическим интерфейсом и далее диалоговый режим. Разметить файловую систему можно автоматом — на первый раз сойдет. После установки и перезагрузки, а так же входа в систему мы будем радостно лицезреть черный экран с приглашением командной строки — базовая установка выполнена!

— Два

Далее необходимо настоить доступ и управление по протоколу SSH. Так же, что бы особо не париться с консолью нужно бы установить mc (Midnight Commander) — аналог nc (Norton Commander) в DOS или tc (TotalCommander) в Windows. Но для установки нужно скопировать из сети пакет и установить его. Сети же нет. В то же время практически весь хоть сколько-то нужный софт есть на дисках Debian 6.0.0 stable (дисков, кажется, 6). Но я отказался от работы с дисками. Можно настроить сеть и воспользоваться официальным сетевым репозиторием — способ проще некуда. Однако это решение не для нас — нужна широкая автономность на первом этапе. Да и с каких пор мы идем по легкому пути — знакомство носит все же больше исследовательский характер. Значит нужно сделать свой локальный репозиторий.

1) подготовка…

Придется опять еще раз вернуться в виртульную машину. Входим в консоль под root’ом (на сервере мы в будущем настроим sudo, что бы по каждой ерунде не светить root’а). Создаем директории:

# mkdir debian/pool# mkdir debian/pool/contrib# mkdir debian/pool/main

В эти директории копируем содержимое одноименных директорий со всех дисков. Получится одна папочка объемом этак с 30Гб. После того, как содержимое всех дисков скопировано, создаём директории для хранения информации об находящихся в репозитарии пакетах:

# cd /debian# mkdir -p debian/dists/stable/contrib/binary-i386# mkdir -p debian/dists/stable/main/binary-i386

Далее все команды выполняются исходя из текущего каталога debian — за его пределы никуда не выходим! Собираем списки пакетов:

# apt-ftparchive packages pool/main/ > dists/stable/main/binary-i386/Packages# apt-ftparchive packages pool/contrib/ > dists/stable/contrib/binary-i386/Packages

Сжимаем списки:

# gzip -c dists/stable/contrib/binary-i386/Packages > dists/stable/contrib/binary-i386/Packages.gz# gzip -c dists/stable/main/binary-i386/Packages > dists/stable/main/binary-i386/Packages.gz

Создаём файлы Release:

# apt-ftparchive release pool/contrib/ > dists/stable/contrib/binary-i386/Release# apt-ftparchive release pool/main/ > dists/stable/main/binary-i386/Release# cd /debian/pool/dists/stable# apt-ftparchive release. > Release

Теперь папку /debian можно скопировать на жесткий диск и при желании подключать и организовывать локальные репозитории в других системах. Что и делаем — копируем папку на съемных USB-хард.

2) подключение… заходим на сервер под root’ом

Подключаем USB-хард к серверу. Далее соображаем как определился хард:

# dmesg

Монтируем его и сливаем все что натворили раньше:# mount /dev/sda1 /mnt/# mkdir /dpool# cp -r /mnt/* /dpool

Правим файл /etc/apt/sources.list — комментим все репозитории и прописываем наш:

deb file:/debian/ stable contrib main

Тут надо сделать краткое отступление. Как поправить файл, если одна консоль? Для этого есть редактор vi:

# cd /etc/apt# sudo vi sources.list

Далее делаем что нужно: передвигаем курсор в нужную позицию и жмем «i». Это режим ввода. Делаем что нужно. Сделали и жмем ESC для возврата в командный режим. Далее — все по новой. После того как все завершено жмем последовательность «ESC: w! Enter» — это команда возврата с сохранением изменений. Страшно? После установки mc жизнь упростится…

Делаем апдейт:

# apt-get update# apt-cache gencaches

Готово наше локальное хранилище!

— Три

Теперь наконец-то добрались до SSH вплотную почти.

1) не всю же жизнь под root’ом работать…

Но сначала немного облегчим себе жизнь — настроим sudo. Sudo — система позволяющая делегировать те или иные привилегированные ресурсы пользователям с ведением протокола работы. Проще говоря user сможет выполнять действия, которые изначально предполагалось выполнять только от root’а.

Заходим на сервер под root’ом и открываем файл /etc/sudoers. Используем опять же редактор vi:

# cd /etc# vi sudoers

Ищем строку:

root ALL=(ALL) ALL

И под ней дописываем:

user ALL=(ALL) ALL

Выходим с сохранением. Готово! Теперь можно заходить под user’ом, но при выполнении критических команд просто перед командой добавлять «sudo». В первый раз система запросит текущий пароль для идентификации. Выходим из системы и заходим под user’ом. Пароль от root’а можно отныне записать на бумажке — пользоваться будем сильно редко, можно и забыть)

2) замучила консоль и vi…

Ставим пакет:

# sudo apt-get install mc

После установки введя команду

# mc

Теперь можно радоваться и забыть про команды mkdir, cp, ls, cd, а так же консольное управление в vi. Править файлы теперь можно по F4. Ностальгия по 2000ым — тогда я на 386ом только нортом и пользовался…

3) наконец-то SSH…

Ставим пакет:

# sudo apt-get install ssh

После успешной установки нужно добавить в конец файла /etc/ssh/sshd_config строку для ограничения доступа:

AllowUsers root, user

Выполняем:

# sudo mc

Далее идем по указанному пути и правим файл. После правки проблем с сохранением не будет — mc запущен под root’ом же. После правки нужно обновить сервис ssh — выходим в консоль и выполняем рестарт сервиса:

# sudo /etc/init.d/ssh restart

— Четыре

1) сеть…

Для последнего штриха перед переходом на удаленное управление нужно только настроить сеть. У меня ситуация простая: комп подключен к маршрутизатору проводом. Так как на маршрутизаторе включен DHCP, то интернет получим от него автоматом.

Настройки сетевых интерфейсов хранятся в файле: /etc/network/interfaces

Вот пример рабочего содержимого файла:

Запускаем mc через sudo и правим этот файл в соответствии с теми сетевыми настройками, которые справедливы для вашей сети.

Настройка имени сервера и хостов находятся: /etc/hostname, /etc/hostsЕсли наш сервер называется «debian», то проверяем:В hostname значится только:

debian

А в host первые строчки:

127.0.0.1 localhost debian 10.0.0.10 debian.localhost debian

После всего этого гасим компьютер:

# sudo poweroff

2) удаленное управление…

Отключаем все кабели, тянем наш сервер в самый дальний угол и подключаем его в розетку и к сети. При этом надо заранее позаботится что бы на этапе загрузки BIOS не ждал нажатия кнопки с названием «any» после того как он с удивлением обнаружит, что клавиатура и мышь не обнаруживаются. Нажимаем кнопку питания и возвращаемся к рабочему компьютеру. На этом компе у меня винда. Как же теперь подключиться к серверу?

Есть такая программа putty. Добыть ее можно в интернете. После ее запуска во вкладке «Session» прописываем IP адрес нашего сервера, в качестве порта оставляем значение 22 (это стандартный порт для Shell). Проверяем, что во вкладке «Translation» выставлено UTF-8, что бы неогрести крякозяблев при отображении кириллицы. Возвращаемся в «Session» и открываем канал: «Open». После соединения нас попросят подтвердить создание ключей соединения с нами — подтверждаем. Вводит логин: user. Далее вводим пароль — пароль при вводе не отображается, т.е. это нормально. После соединения видим приглашение сервера и родную консоль, только не на всем мониторе, а в маленьком окошке, которое можно и подрястянуть мышкой. Это значит «Ура, товарищи!».

— Пять

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

Ставим пакет:

# sudo apt-get install samba

Теперь редактируем файл /etc/samba/smb.conf. Вот пример рабочего содержимого:[global]

workgroup = WORKGROUPserver string = %h serverdns proxy = no

log file = /var/log/samba/log.%mmax log size = 1000syslog = 0panic action = /usr/share/samba/panic-action %d

security = shareencrypt passwords = truepassdb backend = tdbsam

obey pam restrictions = yes

unix password sync = yespasswd program = /usr/bin/passwd %upasswd chat = *Entersnews*spassword:* %nn *Retypesnews*spassword:* %nn *passwordsupdatedssuccessfully* .pam password change = yes

[homes]comment = Home Directoriesbrowseable = noread only = yescreate mask = 0700directory mask = 0700valid users = %S

[printers]comment = All Printersbrowseable = nopath = /var/spool/sambaprintable = yesguest ok = noread only = yescreate mask = 0700

[print$]comment = Printer Driverspath = /var/lib/samba/printersbrowseable = yesread only = yesguest ok = no

[user]path = /ftp/pubreadonly = noguest ok = yes

В качестве комментария можно заметить следующее:— необходимо указать рабочую группу, в которой работают виндовые машины;— параметр security должен быть установлен в share;— в секции «user» нужно указать реальный путь и разрешить гостевой доступ — собственно именно эту секцию мы в файл и добавляем.

После всего этого дела создаем указанные каталоги:

# mkdir /ftp# mkdir /ftp/pub

И разбираемся с правами на эти папки:

# sudo chmod 0755 /ftp# sudo chmod 0777 /ftp/pub# sudo chown -R root /ftp

В таком случае доступ будет осуществлен к папке ftp, но в ней изменить ничего нельзя будет. А вот в папке pub — делаем что угодно. Естественно, можно все упростить выкинув папочку pub и поправив права для ftp…

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

# sudo /etc/init.d/samba restart

— Шесть

Теперь пора выпустить нашего малыша в сеть )))

Для начала неплохо было бы сделать сетевой файловый доступ и управление из любой точки сети. Но что мы имеем по топологии? У нас должен быть выход в интернет с статичным реальный IP-адресом. Т.е. доступ из вне должен осуществляться напрямую, а не через коммутацию сетей провайдера. Например, пользователи сети Рамнет все сидят за большим NAT’ом, т.к. выходят в сеть через несколько пулов. Это значит, что IP выданный при регистрации вовсе и не совпадает с тем IP, который «отпечатывается», например, при посещении сайтов. Реальный IP — это однозначно тот IP, который прописан в сетевых настройках драйвера сетевой платы. Узнать реальный IP или нет можно воспользовавшись каким-нибудь сетевым сервисом в интернете, который показывает ваш IP-адрес. Допустим у нас имеется реальный IP.Далее, если сетевой провод напрямую заведен на сервер, то проблем особых уже и нет — сервер уже в сети. А если стоит какое-то маршрутизирующее устройство (маршрутизатор, или промежуточный разветвитель-коммутатор на базе того же линукса)? В таком случае мы оказываемся уже за своим NAT’ом, который нужно немного настроить: осуществить проброс портов. Для каждой сетевой службы на машине имеется свой порт: SSH — 22, FTP — 21. Т.е., маршрутизатор нужно настроить так, что бы при обращении к порту по нашему реальному IP осуществлялось обращение именно к серверу по этому порту. Если наш сервер имеет адрес 10.0.0.10, а провайдером выдан реальный IP 172.122.34.89, то в маршрутизаторе необходимо выполнить проброс портов (Port Forwarding) 21 и 22 из вне (172.122.34.89) на сервер (10.0.0.10). Просто настраивается пара строчек в админке маршрутизатора или правится таблица маршуртизации промежуточного линукса-коммутатора. Допустим это тоже все сделали.

В таком случае для досутпа по SSH через putty необходимо просто будет указать реальный IP-адрес, порт 22 (см. выше, где описана небольшая настройка клиента putty). Осуществляем вход и получаем доступ к консоли сервера.

А файловый доступ? Тут чуть сложнее. Можно использовать WinSCP, но как уже упоминалось, это не наш метод. Samba работает только в локалке. Придется настроить FTP доступ…

Для FTP используем сервис proftpd. Ставим пакет:

# sudo apt-get install proftpd

Файл конфигурации находится здесь: /etc/proftpd/proftpd.conf. Вот пример рабочего файла:Include /etc/proftpd/modules.conf

ServerName "Debian"ServerType standaloneDeferWelcome off

MultilineRFC2228 onDefaultServer onShowSymlinks on

TimeoutNoTransfer 600TimeoutStalled 600TimeoutIdle 1200

DisplayLogin welcome.msgDisplayChdir .message trueListOptions "-l"

DenyFilter *.*/

DefaultRoot ~

RequireValidShell off

Port 21

<IfModule mod_dynmasq.c>

MaxInstances 10

User nobodyGroup nogroup

Umask 022 022AllowOverwrite on

TransferLog /var/log/proftpd/xferlogSystemLog /var/log/proftpd/proftpd.log

<IfModule mod_quotatab.c>QuotaEngine off</IfModule>

<IfModule mod_ratio.c>Ratios off</IfModule>

<IfModule mod_delay.c>DelayEngine on</IfModule>

<IfModule mod_ctrls.c>ControlsEngine offControlsMaxClients 2ControlsLog /var/log/proftpd/controls.logControlsInterval 5ControlsSocket /var/run/proftpd/proftpd.sock</IfModule>

<IfModule mod_ctrls_admin.c>AdminControlsEngine off</IfModule>

<Anonymous /home/ftp/pub>User user1Group nogroupUserAlias anonymous user1

<Limit LOGIN>AllowAll</Limit><Limit READ>AllowAll</Limit><Limit WRITE>AllowAll</Limit></Anonymous>

<Anonymous /home/ftp/pub>User user2Group nogroup

<Limit LOGIN>AllowAll</Limit><Limit READ>AllowAll</Limit><Limit WRITE>AllowAll</Limit></Anonymous></code>

Комментарии:- сервер FTP запускаем отдельным процессом "standalone", хотя для слабых компов это и не будет оптимальным;- секции "Anonymous" прописываем сами: для user1 будет открыт анонимный доступ с ограничением скорости в 4МБ/с и ограничением количества запускаемых серверов 10, для user2 ограничения скорости нет, а ограничение запускаемых таких серверов установлено в 3.

Перезапускаем ftp-сервер:

<b>

В таком случае мы сможем подключиться к нашему серверу используя любой FTP-клиент из любой точки сети. Учитываем, что порт 21 мы уже пробросили через маршрутизатор ранее. При этом можно использовать анонимный доступ или введя логин/пароль для авторизации снять лимит скорости скачивания/отправки. Но для авторизации нужно иметь зарегистрированные учетные записи на сервере. Создадим пользователей без создания для них домашних каталогов:

<b>

И зададим им пароли:

<b>

Ну вот теперь появилось уже что-то более-менее полезное)))

В идеале хотелось бы настроить защищенный SFTP доступ. Для proftpd существует модуль mod_sftp. Я очень долго (3 вечера) курил мануалы по этой теме и кое как сумел настроить. Но сервер нещадно резал скорость на уровне 10мегабит как при доступе внутри сети, так и снаружи. Ничего с этим не поделав пришлось отказаться пока от этого решения.Так же SFTP можно настроить через SSH - в нем уже имеется такая возможность. Однако при такой организации у меня никак не получалось нормально запереть пользователя в нужной директории, т.к. иначе ему, после авторизации, открывался доступ сразу ко всей системе. SFTP идея гораздо полезнее (при FTP пароли вообще в открытом виде передаются, если это не анонимный доступ), но пока ее пришлось забросить.

Может быть будет кому-то интересно подключение mod_sftp. Я реализовывал так, что бы ключи авторизации цеплялись с SSH:<source lang="bash"><IfModule mod_sftp.c>SFTPEngine onSFTPLog /var/log/proftpd/sftp.logTransferLog /var/log/proftpd/xferlog-sftp.logPort 2220SFTPHostKey /etc/ssh/ssh_host_rsa_keySFTPHostKey /etc/ssh/ssh_host_dsa_keySFTPAuthorizedUserKeys file:~/.sftp/authorized_keysSFTPCompression delayedMaxLoginAttempts 6</IfModule>

Это дело вставляется в proftpd.conf и доступ осуществляется через порт 2220. Но при этом mod_sftp должен быть установлен вместе с proftpd. В штатном репозитории proftpd собран без mod_sftp. Его придется «дособирать» самостоятельно. «Впатчивал» я по какой-то английской инструкции — уже не помню. Процесс это не менее творческий, чем сборка своего репозитория, а результат все равно не порадовал, поэтому это все описывать не буду.

— Семь

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

Тут есть одна тонкость. К нашему серверу подключено только электропитание и сеть. Но сетевые карты давно научились «будить» компьютер: достаточно только включить такую поддержку в BIOS компьютера и послеать не него «магический» пакет (Magic packet). Читаем в wikipedia:

Magic packet — это специальная последовательность байтов, которую для нормального прохождения по локальным сетям можно вставить в пакеты UDP или IPX. Обычно для WOL пакеты протоколов верхнего уровня рассылают широковещательно, так как в случае динамического присвоения адресов неизвестно, какой, скажем, IP-адрес соответствует какому MAC-адресу. Однако, для корректного прохождения через маршрутизатор, запрещающий широковещательные пакеты, можно послать пакет по какому-то определённому адресу.

Состав magic packet

Вначале идет так называемая «цепочка синхронизации»: 6 байт, равных 0xFF. Затем — MAC-адрес сетевой платы, повторённый 16 раз. То есть, если бы адрес платы выглядел как 01:02:03:04:05:06, то магический пакет оказался бы таким:

FFFFFFFFFFFF010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506

Есть куча программ, половина из которых работает, а другая нет, которые формируют и отсылают такие пакеты по указанному IP. Но это справедливо только в локальной сети. Но ведь у нас реальный IP — значит можно попробовать просто отослать пакет на него, а маршрутизатор настроить на ретрансляцию этого пакета серверу. Пакеты на «побудку» рассылаются обычно по портам 7 или 9. Прокидываем их через маршрутизатор на IP сервера. Далее проще всего воспользоваться сетевым ресурсом wakeonlan.ru: забиваем свой реальный адрес IP и MAC адрес сетевой платы сервера. Жмем кнопочку «Включить компьютер!». После пары отправок система вполне может и написать о неудаче включения — сервер-то все же за NAT’ом, а отклик на пингование маршрутизатора разумнее выключить в настройках маршрутизатора. Такой способ включения удобен, правда придется выучить наизусть IP и MAC. Но у нас же память хорошая — мы же задаем и помним правильные пароли составом не менее 14 символов?) Зато теперь сервер можно включить с сотового телефона (при наличии в нем браузера и GPRS доступа).

Интересная так же штука вышла с маршрутизатором. Дело в том, что пока сервер включен маршрутизатор точно знает к какому его порту этот сервер подключен. Но как только сервер выключаем маршрутизатор, через некоторое время, начисто забывает этот факт. Заставить делать широковещательную рассылку «магического» пакета по всем портам я не сумел его заставить. Пришлось на разбирательство потратить приличное время. В результате на маршрутизатор установил прошивку от DD-WRT (на базе линукса). Прошивка по сравнению с штатными прошивками от производителей просто блещет функционалом. Он явно избыточен) Однако и она забывала порт, хотя широковещательно пакеты рассылать уже могла (только комп почему-то не включался). Если был бы вместо маршрутизатора коммутатор-комп на линукс, то можно было бы просто подредактировать таблицу маршрутизации и делов-то… Аналогично и тут — нужно внести изменения в таблицу ARP маршрутизатора. В данной прошивке есть некая консоль и можно при загрузке маршрутизатора добавить скрипт запуска. Что и делаем, скрип таков:ip neigh change 10.0.0.10 lladdr 00:10:20:1F:C4:57 nud permanent dev br0ip neigh add 10.0.0.10 lladdr 00:10:20:1F:C4:57 nud permanent dev br0

Подразумевается, что на физическом аппаратном уровне порты маршрутизатора и платы друг друга «узнают» по своим MAC-адресам (они же с собой постоянно общаются при наличии питания) и маршрутизатор «догадается» что вышеуказанный IPшник будет принадлежать именно этому адресату (пока комп не включен это знание маршрутизатору недосутпно ибо еще нет никакого интерфейса сетевого уровня — однако эта знание мы и заложили при загрузке в ARP) после включения.

Ну вот — на этом и закончивается мое первое знакомство с линуксом. Если кому-то это помогло — всегда пожалуйста.

pustovoi.ru

Debian Server для новичка

Как-то обеспокоился наличием собственного FTP-сервака. Тем более под это дело «на помойку» был отдан комп этак десятилетней давности. Так как я человек хоть и виндовый, но начинал с чистого ДОСа (про книжки тов. Фигурнова кто помнит?), то я решил сделать все на линуксе. В линуксе я был ноль полный. Еще и усложнил задачу — только консоль, никаких исков (как же — это ж линукс). Дистрибутивом был выбран Debian. Так получилось, что надобность в 2Тб личном хранилице отпала через год и комп был отдан в хорошие руки, а хард пристроен в нужное место. Но был накоплен неплохой опыт стопроцентного новичка. Какие только глупые ошибки я не совершал поначалу! И хабр читал, между прочим, пока разбирался с проблемами. Поэтому эту свою дебютную (первую) статью на хабре я посвящаю тем, кто хочет заняться линуксом с нуля и эта статья призвана для плавного ввода «в тему», являясь, по сути, фильтрацией и систематизацией всего того, что я нашел на просторах интернета. Ранее я этот материал уже публиковал, но, думаю, на хабре он тоже будет полезен.

Что и как хотим получить в результате:— консольная установка ОС с флешки;— навыки консольного управление;— создание собственного репозитория;— обеспечение удаленного доступа по протоколу FTP/SFTP;— обеспечение удаленного управления по протоколу SSH;— дистанционное включение сервера, находящегося за маршрутизатором;— создание условий работы веб-сервера (в идеале связка nginx+apache).

В инете куча всяких пошаговых инструкций. Порой там бывают досадные ошибки, а если еще линуксоид и сопливый еще покамест, то можно пару часов потратить только на то, что бы понять, что не нужна лишняя палочка или точечка — в линуксе важно все! Нижеизложенное делается для практических целей поставленных задач — не надо воспринимать все как серьезную инструкцию для создания серьезного сервера. Тем более в процессе «восстановления опыта» могут и ошибки тоже быть и у меня…

— Раз

Итак, имеется пустой комп с подключенной периферией. Для начала нужно установить саму ОС. Имеется так же образы всех дисков Debian 6.0.0 stable. От лазерных носителей я давно отказался, т.е. для установки нужно изготовить загрузочную флешку. Флешка нашлась на 2Gb. После поисков оказалось, что изготовить можно, но из самой линуксовой среды. Пришлось установить с образа первого диска дебиан на виртуальную машину (подключаем образ к виртуалке в качестве виртуального CD-ROM и установка выполняется «честно» как бы с лазерного диска). Устанавливал «оптом» — т.е. и GUI тоже (в 6 версии был только GNOME). Тем не менее, после того, как все сделалось, грузим деабиан, подключаем флешку к виртуалке и открываем консоль.

Выполняем команду:

# dmesg

Видим что-то типа этого:

[373982.581725] sd 8:0:0:0: [sdc] 4001760 512-byte hardware sectors (2049 MB) [373982.582718] sd 8:0:0:0: [sdc] Write Protect is off [373982.582718] sd 8:0:0:0: [sdc] Mode Sense: 03 00 00 00 [373982.582718] sd 8:0:0:0: [sdc] Assuming drive cache: write through [373982.584152] sd 8:0:0:0: [sdc] 4001760 512-byte hardware sectors (2049 MB) [373982.585718] sd 8:0:0:0: [sdc] Write Protect is off [373982.585718] sd 8:0:0:0: [sdc] Mode Sense: 03 00 00 00 [373982.585718] sd 8:0:0:0: [sdc] Assuming drive cache: write through [373982.585718] sdc: [373982.589280] sd 8:0:0:0: [sdc] Attached SCSI disk

Это значит, что флешка определилась в системе.

Скачиваем файл boot.img.gz (debian.org) для нужной архитектуры (в моем случае i386) и копируем его в какую-нибудь директори. Далее выполняем команду из этой директории:

# zcat boot.img.gz > /dev/sdc

Теперь надо вытащить и воткнуть обратно USB флешку, чтобы новая структура/таблица разделов распозналась. Это обновит таблицу разделов, хранимую udev. Для проверки выполняем следующие команды:

# mkdir /mnt# mount /dev/sdс /mnt/# ls /mnt

и видим инсталляционные файлы, такие как syslinux.cfg, setup.exe, и так далее. Значит все нормально — флешку примонтировали.

Далее скачиваем ISO образ netinstall (debian.org) размером 150-180MB для соответствующей архитектуры (в моем случае i386). Netinstall устанвливает базовую систему, сеть не нужна. Копируем этот образ в какую-нибудь директорию и из этой директории выполняем и отмонтируем флешку:

# cp debian-6.0.1a-i386-netinst /mnt# umount /dev/sdс

Уф. Теперь при себе есть всегда флешка для установки.

Если же необходимо включить такой инсталлятор на флешку с другими ОСами, то можно обратиться к загрузчику grub. У меня уже имеется загрузочная флешка с grub4dos. Создаем папку debian в корне флешки и кидаем туда: debian-6.0.1a-i386-netinst.iso, initrd.gz, initrdg.gz, linux — последние 3 файла можно выдернуть с первого установочного диска Debian 6.0.0 stable или скачать (debian.org). А в меню grub'a (menu.lst) нужно добавить следующее:title Debian 6.0.1a - Netinstall (Basic System, VGA Install)kernel /debian/linux video=vesa:ywrap,mtrr vga=788 -- quietinitrd /debian/initrdg.gz

title Debian 6.0.1a - Netinstall (Basic System, TXT Install)kernel /debian/linux -- quietinitrd /debian/initrd.gz

Теперь втыкаем флешку в наш импровизированный сервак, через BIOS выбираем загрузку с флешки и штатно устанавливаем Debian. При установке ничего особого я не обнаружил: выбираем установку с графическим интерфейсом и далее диалоговый режим. Разметить файловую систему можно автоматом — на первый раз сойдет. После установки и перезагрузки, а так же входа в систему мы будем радостно лицезреть черный экран с приглашением командной строки — базовая установка выполнена!

— Два

Далее необходимо настоить доступ и управление по протоколу SSH. Так же, что бы особо не париться с консолью нужно бы установить mc (Midnight Commander) — аналог nc (Norton Commander) в DOS или tc (TotalCommander) в Windows. Но для установки нужно скопировать из сети пакет и установить его. Сети же нет. В то же время практически весь хоть сколько-то нужный софт есть на дисках Debian 6.0.0 stable (дисков, кажется, 6). Но я отказался от работы с дисками. Можно настроить сеть и воспользоваться официальным сетевым репозиторием — способ проще некуда. Однако это решение не для нас — нужна широкая автономность на первом этапе. Да и с каких пор мы идем по легкому пути — знакомство носит все же больше исследовательский характер. Значит нужно сделать свой локальный репозиторий.

1) подготовка…

Придется опять еще раз вернуться в виртульную машину. Входим в консоль под root'ом (на сервере мы в будущем настроим sudo, что бы по каждой ерунде не светить root'а). Создаем директории:

# mkdir debian/pool# mkdir debian/pool/contrib# mkdir debian/pool/main

В эти директории копируем содержимое одноименных директорий со всех дисков. Получится одна папочка объемом этак с 30Гб. После того, как содержимое всех дисков скопировано, создаём директории для хранения информации об находящихся в репозитарии пакетах:

# cd /debian# mkdir -p debian/dists/stable/contrib/binary-i386# mkdir -p debian/dists/stable/main/binary-i386

Далее все команды выполняются исходя из текущего каталога debian — за его пределы никуда не выходим! Собираем списки пакетов:

# apt-ftparchive packages pool/main/ > dists/stable/main/binary-i386/Packages# apt-ftparchive packages pool/contrib/ > dists/stable/contrib/binary-i386/Packages

Сжимаем списки:

# gzip -c dists/stable/contrib/binary-i386/Packages > dists/stable/contrib/binary-i386/Packages.gz# gzip -c dists/stable/main/binary-i386/Packages > dists/stable/main/binary-i386/Packages.gz

Создаём файлы Release:

# apt-ftparchive release pool/contrib/ > dists/stable/contrib/binary-i386/Release# apt-ftparchive release pool/main/ > dists/stable/main/binary-i386/Release# cd /debian/pool/dists/stable# apt-ftparchive release. > Release

Теперь папку /debian можно скопировать на жесткий диск и при желании подключать и организовывать локальные репозитории в других системах. Что и делаем — копируем папку на съемных USB-хард.

2) подключение… заходим на сервер под root'ом

Подключаем USB-хард к серверу. Далее соображаем как определился хард:

# dmesg

Монтируем его и сливаем все что натворили раньше:# mount /dev/sda1 /mnt/# mkdir /dpool# cp -r /mnt/* /dpool

Правим файл /etc/apt/sources.list — комментим все репозитории и прописываем наш:

deb file:/debian/ stable contrib main

Тут надо сделать краткое отступление. Как поправить файл, если одна консоль? Для этого есть редактор vi:

# cd /etc/apt# sudo vi sources.list

Далее делаем что нужно: передвигаем курсор в нужную позицию и жмем «i». Это режим ввода. Делаем что нужно. Сделали и жмем ESC для возврата в командный режим. Далее — все по новой. После того как все завершено жмем последовательность «ESC: w! Enter» — это команда возврата с сохранением изменений. Страшно? После установки mc жизнь упростится…

Делаем апдейт:

# apt-get update# apt-cache gencaches

Готово наше локальное хранилище!

— Три

Теперь наконец-то добрались до SSH вплотную почти.

1) не всю же жизнь под root'ом работать…

Но сначала немного облегчим себе жизнь — настроим sudo. Sudo — система позволяющая делегировать те или иные привилегированные ресурсы пользователям с ведением протокола работы. Проще говоря user сможет выполнять действия, которые изначально предполагалось выполнять только от root'а.

Заходим на сервер под root'ом и открываем файл /etc/sudoers. Используем опять же редактор vi:

# cd /etc# vi sudoers

Ищем строку:

root ALL=(ALL) ALL

И под ней дописываем:

user ALL=(ALL) ALL

Выходим с сохранением. Готово! Теперь можно заходить под user'ом, но при выполнении критических команд просто перед командой добавлять «sudo». В первый раз система запросит текущий пароль для идентификации. Выходим из системы и заходим под user'ом. Пароль от root'а можно отныне записать на бумажке — пользоваться будем сильно редко, можно и забыть)

2) замучила консоль и vi…

Ставим пакет:

# sudo apt-get install mc

После установки введя команду

# mc

Теперь можно радоваться и забыть про команды mkdir, cp, ls, cd, а так же консольное управление в vi. Править файлы теперь можно по F4. Ностальгия по 2000ым — тогда я на 386ом только нортом и пользовался…

3) наконец-то SSH…

Ставим пакет:

# sudo apt-get install ssh

После успешной установки нужно добавить в конец файла /etc/ssh/sshd_config строку для ограничения доступа:

AllowUsers root, user

Выполняем:

# sudo mc

Далее идем по указанному пути и правим файл. После правки проблем с сохранением не будет — mc запущен под root'ом же. После правки нужно обновить сервис ssh — выходим в консоль и выполняем рестарт сервиса:

# sudo /etc/init.d/ssh restart

— Четыре

1) сеть…

Для последнего штриха перед переходом на удаленное управление нужно только настроить сеть. У меня ситуация простая: комп подключен к маршрутизатору проводом. Так как на маршрутизаторе включен DHCP, то интернет получим от него автоматом.

Настройки сетевых интерфейсов хранятся в файле: /etc/network/interfaces

Вот пример рабочего содержимого файла:

# The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address 10.0.0.10 netmask 10.0.0.0 network 10.0.0.0 broadcast 10.255.255.255 gateway 10.0.0.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 10.0.0.1 dns-search debian

Запускаем mc через sudo и правим этот файл в соответствии с теми сетевыми настройками, которые справедливы для вашей сети.

Настройка имени сервера и хостов находятся: /etc/hostname, /etc/hostЕсли наш сервер называется «debian», то проверяем:В hostname значится только:

debian

А в host первые строчки:

127.0.0.1 localhost debian 10.0.0.10 debian.localhost debian

После всего этого гасим компьютер:

# sudo poweroff

2) удаленное управление…

Отключаем все кабели, тянем наш сервер в самый дальний угол и подключаем его в розетку и к сети. При этом надо заранее позаботится что бы на этапе загрузки BIOS не ждал нажатия кнопки с названием «any» после того как он с удивлением обнаружит, что клавиатура и мышь не обнаруживаются. Нажимаем кнопку питания и возвращаемся к рабочему компьютеру. На этом компе у меня винда. Как же теперь подключиться к серверу?

Есть такая программа putty. Добыть ее можно в интернете. После ее запуска во вкладке «Session» прописываем IP адрес нашего сервера, в качестве порта оставляем значение 22 (это стандартный порт для Shell). Проверяем, что во вкладке «Translation» выставлено UTF-8, что бы неогрести крякозяблев при отображении кириллицы. Возвращаемся в «Session» и открываем канал: «Open». После соединения нас попросят подтвердить создание ключей соединения с нами — подтверждаем. Вводит логин: user. Далее вводим пароль — пароль при вводе не отображается, т.е. это нормально. После соединения видим приглашение сервера и родную консоль, только не на всем мониторе, а в маленьком окошке, которое можно и подрястянуть мышкой. Это значит «Ура, товарищи!».

— Пять

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

Ставим пакет:

# sudo apt-get install samba

Теперь редактируем файл /etc/samba/smb.conf. Вот пример рабочего содержимого:

[global] workgroup = WORKGROUP server string = %h server dns proxy = no log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 panic action = /usr/share/samba/panic-action %d security = share encrypt passwords = true passdb backend = tdbsam obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes [homes] comment = Home Directories browseable = no read only = yes create mask = 0700 directory mask = 0700 valid users = %S [printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700 [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no [user] path = /ftp/pub readonly = no guest ok = yes

В качестве комментария можно заметить следующее:— необходимо указать рабочую группу, в которой работают виндовые машины;— параметр security должен быть установлен в share;— в секции «user» нужно указать реальный путь и разрешить гостевой доступ — собственно именно эту секцию мы в файл и добавляем.

После всего этого дела создаем указанные каталоги:

# mkdir /ftp# mkdir /ftp/pub

И разбираемся с правами на эти папки:

# sudo chmod 0755 /ftp# sudo chmod 0777 /ftp/pub# sudo chown -R root /ftp

В таком случае доступ будет осуществлен к папке ftp, но в ней изменить ничего нельзя будет. А вот в папке pub — делаем что угодно. Естественно, можно все упростить выкинув папочку pub и поправив права для ftp…

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

# sudo /etc/init.d/samba restart

— Шесть

Теперь пора выпустить нашего малыша в сеть )))

Для начала неплохо было бы сделать сетевой файловый доступ и управление из любой точки сети. Но что мы имеем по топологии? У нас должен быть выход в интернет с статичным реальный IP-адресом. Т.е. доступ из вне должен осуществляться напрямую, а не через коммутацию сетей провайдера. Например, пользователи сети Рамнет все сидят за большим NAT'ом, т.к. выходят в сеть через несколько пулов. Это значит, что IP выданный при регистрации вовсе и не совпадает с тем IP, который «отпечатывается», например, при посещении сайтов. Реальный IP — это однозначно тот IP, который прописан в сетевых настройках драйвера сетевой платы. Узнать реальный IP или нет можно воспользовавшись каким-нибудь сетевым сервисом в интернете, который показывает ваш IP-адрес. Допустим у нас имеется реальный IP.Далее, если сетевой провод напрямую заведен на сервер, то проблем особых уже и нет — сервер уже в сети. А если стоит какое-то маршрутизирующее устройство (маршрутизатор, или промежуточный разветвитель-коммутатор на базе того же линукса)? В таком случае мы оказываемся уже за своим NAT'ом, который нужно немного настроить: осуществить проброс портов. Для каждой сетевой службы на машине имеется свой порт: SSH — 22, FTP — 21. Т.е., маршрутизатор нужно настроить так, что бы при обращении к порту по нашему реальному IP осуществлялось обращение именно к серверу по этому порту. Если наш сервер имеет адрес 10.0.0.10, а провайдером выдан реальный IP 172.122.34.89, то в маршрутизаторе необходимо выполнить проброс портов (Port Forwarding) 21 и 22 из вне (172.122.34.89) на сервер (10.0.0.10). Просто настраивается пара строчек в админке маршрутизатора или правится таблица маршуртизации промежуточного линукса-коммутатора. Допустим это тоже все сделали.

В таком случае для досутпа по SSH через putty необходимо просто будет указать реальный IP-адрес, порт 22 (см. выше, где описана небольшая настройка клиента putty). Осуществляем вход и получаем доступ к консоли сервера.

А файловый доступ? Тут чуть сложнее. Можно использовать WinSCP, но как уже упоминалось, это не наш метод. Samba работает только в локалке. Придется настроить FTP доступ…

Для FTP используем сервис proftpd. Ставим пакет:

# sudo apt-get install proftpd

Файл конфигурации находится здесь: /etc/proftpd/proftpd.conf. Вот пример рабочего файла:

Include /etc/proftpd/modules.conf ServerName "Debian" ServerType standalone DeferWelcome off MultilineRFC2228 on DefaultServer on ShowSymlinks on TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200 DisplayLogin welcome.msg DisplayChdir .message true ListOptions "-l" DenyFilter \*.*/ DefaultRoot ~ RequireValidShell off Port 21 <IfModule mod_dynmasq.c> # DynMasqRefresh 28800 </IfModule> MaxInstances 10 User nobody Group nogroup Umask 022 022 AllowOverwrite on TransferLog /var/log/proftpd/xferlog SystemLog /var/log/proftpd/proftpd.log <IfModule mod_quotatab.c> QuotaEngine off </IfModule> <IfModule mod_ratio.c> Ratios off </IfModule> <IfModule mod_delay.c> DelayEngine on </IfModule> <IfModule mod_ctrls.c> ControlsEngine off ControlsMaxClients 2 ControlsLog /var/log/proftpd/controls.log ControlsInterval 5 ControlsSocket /var/run/proftpd/proftpd.sock </IfModule> <IfModule mod_ctrls_admin.c> AdminControlsEngine off </IfModule> <Anonymous /home/ftp/pub> User user1 Group nogroup UserAlias anonymous user1 #RequireValidShell off MaxClients 10 TransferRate RETR,STOR 4096 <Limit LOGIN> AllowAll </Limit> <Limit READ> AllowAll </Limit> <Limit WRITE> AllowAll </Limit> </Anonymous> <Anonymous /home/ftp/pub> User user2 Group nogroup #UserAlias anonymous user2 #RequireValidShell off MaxClients 3 #TransferRate RETR,STOR 4096 <Limit LOGIN> AllowAll </Limit> <Limit READ> AllowAll </Limit> <Limit WRITE> AllowAll </Limit> </Anonymous></code> Комментарии: - сервер FTP запускаем отдельным процессом "standalone", хотя для слабых компов это и не будет оптимальным; - секции "Anonymous" прописываем сами: для user1 будет открыт анонимный доступ с ограничением скорости в 4МБ/с и ограничением количества запускаемых серверов 10, для user2 ограничения скорости нет, а ограничение запускаемых таких серверов установлено в 3. Перезапускаем ftp-сервер: <b># sudo /etc/init.d/proftpd restart</b> В таком случае мы сможем подключиться к нашему серверу используя любой FTP-клиент из любой точки сети. Учитываем, что порт 21 мы уже пробросили через маршрутизатор ранее. При этом можно использовать анонимный доступ или введя логин/пароль для авторизации снять лимит скорости скачивания/отправки. Но для авторизации нужно иметь зарегистрированные учетные записи на сервере. Создадим пользователей без создания для них домашних каталогов: <b># sudo useradd user1 # sudo useradd user2</b> И зададим им пароли: <b># sudo passwd user1 # sudo passwd user2</b> Ну вот теперь появилось уже что-то более-менее полезное))) В идеале хотелось бы настроить защищенный SFTP доступ. Для proftpd существует модуль mod_sftp. Я очень долго (3 вечера) курил мануалы по этой теме и кое как сумел настроить. Но сервер нещадно резал скорость на уровне 10мегабит как при доступе внутри сети, так и снаружи. Ничего с этим не поделав пришлось отказаться пока от этого решения. Так же SFTP можно настроить через SSH - в нем уже имеется такая возможность. Однако при такой организации у меня никак не получалось нормально запереть пользователя в нужной директории, т.к. иначе ему, после авторизации, открывался доступ сразу ко всей системе. SFTP идея гораздо полезнее (при FTP пароли вообще в открытом виде передаются, если это не анонимный доступ), но пока ее пришлось забросить. Может быть будет кому-то интересно подключение mod_sftp. Я реализовывал так, что бы ключи авторизации цеплялись с SSH: <source lang="bash"><IfModule mod_sftp.c> SFTPEngine on SFTPLog /var/log/proftpd/sftp.log TransferLog /var/log/proftpd/xferlog-sftp.log Port 2220 SFTPHostKey /etc/ssh/ssh_host_rsa_key SFTPHostKey /etc/ssh/ssh_host_dsa_key SFTPAuthorizedUserKeys file:~/.sftp/authorized_keys SFTPCompression delayed MaxLoginAttempts 6 </IfModule>

Это дело вставляется в proftpd.conf и доступ осуществляется через порт 2220. Но при этом mod_sftp должен быть установлен вместе с proftpd. В штатном репозитории proftpd собран без mod_sftp. Его придется «дособирать» самостоятельно. «Впатчивал» я по какой-то английской инструкции — уже не помню. Процесс это не менее творческий, чем сборка своего репозитория, а результат все равно не порадовал, поэтому это все описывать не буду.

— Семь

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

Тут есть одна тонкость. К нашему серверу подключено только электропитание и сеть. Но сетевые карты давно научились «будить» компьютер: достаточно только включить такую поддержку в BIOS компьютера и послеать не него «магический» пакет (Magic packet). Читаем в wikipedia:

Magic packet — это специальная последовательность байтов, которую для нормального прохождения по локальным сетям можно вставить в пакеты UDP или IPX. Обычно для WOL пакеты протоколов верхнего уровня рассылают широковещательно, так как в случае динамического присвоения адресов неизвестно, какой, скажем, IP-адрес соответствует какому MAC-адресу. Однако, для корректного прохождения через маршрутизатор, запрещающий широковещательные пакеты, можно послать пакет по какому-то определённому адресу.

Состав magic packet

Вначале идет так называемая «цепочка синхронизации»: 6 байт, равных 0xFF. Затем — MAC-адрес сетевой платы, повторённый 16 раз. То есть, если бы адрес платы выглядел как 01:02:03:04:05:06, то магический пакет оказался бы таким:

FFFFFFFFFFFF010203040506010203040506010203040506010203040506 010203040506010203040506010203040506010203040506010203040506 010203040506010203040506010203040506010203040506010203040506 010203040506010203040506

Есть куча программ, половина из которых работает, а другая нет, которые формируют и отсылают такие пакеты по указанному IP. Но это справедливо только в локальной сети. Но ведь у нас реальный IP — значит можно попробовать просто отослать пакет на него, а маршрутизатор настроить на ретрансляцию этого пакета серверу. Пакеты на «побудку» рассылаются обычно по портам 7 или 9. Прокидываем их через маршрутизатор на IP сервера. Далее проще всего воспользоваться сетевым ресурсом wakeonlan.ru: забиваем свой реальный адрес IP и MAC адрес сетевой платы сервера. Жмем кнопочку «Включить компьютер!». После пары отправок система вполне может и написать о неудаче включения — сервер-то все же за NAT'ом, а отклик на пингование маршрутизатора разумнее выключить в настройках маршрутизатора. Такой способ включения удобен, правда придется выучить наизусть IP и MAC. Но у нас же память хорошая — мы же задаем и помним правильные пароли составом не менее 14 символов?) Зато теперь сервер можно включить с сотового телефона (при наличии в нем браузера и GPRS доступа).

Интересная так же штука вышла с маршрутизатором. Дело в том, что пока сервер включен маршрутизатор точно знает к какому его порту этот сервер подключен. Но как только сервер выключаем маршрутизатор, через некоторое время, начисто забывает этот факт. Заставить делать широковещательную рассылку «магического» пакета по всем портам я не сумел его заставить. Пришлось на разбирательство потратить приличное время. В результате на маршрутизатор установил прошивку от DD-WRT (на базе линукса). Прошивка по сравнению с штатными прошивками от производителей просто блещет функционалом. Он явно избыточен) Однако и она забывала порт, хотя широковещательно пакеты рассылать уже могла (только комп почему-то не включался). Если был бы вместо маршрутизатора коммутатор-комп на линукс, то можно было бы просто подредактировать таблицу маршрутизации и делов-то… Аналогично и тут — нужно внести изменения в таблицу ARP маршрутизатора. В данной прошивке есть некая консоль и можно при загрузке маршрутизатора добавить скрипт запуска. Что и делаем, скрип таков:ip neigh change 10.0.0.10 lladdr 00:10:20:1F:C4:57 nud permanent dev br0ip neigh add 10.0.0.10 lladdr 00:10:20:1F:C4:57 nud permanent dev br0

Подразумевается, что на физическом аппаратном уровне порты маршрутизатора и платы друг друга «узнают» по своим MAC-адресам (они же с собой постоянно общаются при наличии питания) и маршрутизатор «догадается» что вышеуказанный IPшник будет принадлежать именно этому адресату (пока комп не включен это знание маршрутизатору недосутпно ибо еще нет никакого интерфейса сетевого уровня — однако эта знание мы и заложили при загрузке в ARP) после включения.

l.wzm.me

Дистрибутивы Linux для начинающих

Рубрика: Linux Опубликовано 11.02.2018   ·   Комментарии: 8   ·   На чтение: 4 мин   ·   Просмотры:

Post Views: 2 423

Я всегда приветствую решение человека, который хочет попробовать что-то другое, кроме windows.Если человек решил попробовать другую операционную систему, но на MacOS денег нет, то остается альтернатива — Linux. Вот про linux и пойдет речь в данной статье.Человек решивший перейти на linux, должен понимать, что 95% дистрибутивов — это мусор, на который не стоит обращать внимание. Ну а какие заслуживают внимания, я опишу чуть ниже.

Окружение рабочего стола XFCE

Linux Mint — основан на дистрибутиве Ubuntu. Разработчики linux mint, предлагают четыре редакции дистрибутива, с рабочими столами: Cinnamon, MATE, Xfce, и KDE. Последний из которых, по словам разработчика, перестанут выпускать. Linux mint использует deb пакеты и имеет свои собственные репозитории, можно также подключать и стороннии репозитории.Linux Mint — используют не только начинающие пользователи linux, но и продвинутые пользователи. Для начинающего пользователя Linux Mint — это оптимальный вариант, и рациональное решение, в плане освоения linux, и экономии времени. Linux Mint достаточно сбалансированный дистрибутив, с хорошей стабильностью и набором ПО. Если вы цените свое время, и вам не нужны углубленные познания основ линукса, то Linux Mint это ваш выбор!

Официальный сайт Linux Mint

Окружение рабочего стола XFCE

Mageia — дистрибутив linux, основанный на Mandriva linux. Mageia использует пакетный менеджер RPM.Mageia достаточно популярный дистрибутив для домашнего использования. Mageia включает в себя все популярные графические окружения рабочего стола: GNOME, LXDE, Xfce, Mate, Cinnamon и другие. Основным окружением рабочего стола в дистрибутиве является — KDE Plasma.Дистрибутив Mageia стабильный, внешне выглядит приятно, имеет разнообразные темы оформления, на момент написания статьи,доступно ядро 4.14, в случаи проблем и ошибок, имеется Wiki Mageia Russian Community где можно найти ответы на свои вопросы. Неиспользуемое программное обеспечение можно удалить, а нужные программы установить, за пару кликов мышкой. Система легкая и приятная в работе.

Официальный сайт Mageia

Окружение рабочего стола XFCE

Debian — пожалуй самый старый и уважаемый дистрибутив linux. Debian — это универсальная операционная система, которую используют как профессионалы, так и начинающие пользователи. Для использования Debian требуется базовые знания linux, и умение пользоваться терминалом. Определенной сложности debian не представляет, но если настроить систему и довести ее до ума, то вы получите бастион надежности.Debian поддерживает все популярные графические окружения рабочих столов, по умолчанию использует GNOME. Debian имеет огромный репозиторий, в котором имеются десятки тысяч разнообразных пакетов, программ, на все случаи жизни. Для помощи в решении каких то вопросов, поможет официальная wiki debian а также различные группы в социальных сетях.

Официальный сайт Debian

Окружение рабочего стола XFCE

Manjaro — достаточно неплохой дистрибутив, как для начинающих так и для опытных пользователей. Все сильные стороны Manjaro почерпнул от Arch Linux, так как Manjaro был создан на базе Arch Linux. Manjaro использует свои собственные репозитории, также имеет совместимость с AUR. Manjaro использует пакетный менеджер pacman. Официально разработчики поддерживают KDE и XFCE. Сообществом поддерживается все остальное. Дистрибутив работает шустро, в репозиториях всегда свежее ПО, метод обновления rolling release, т.е. обновления будут поступать всегда, и система будет всегда в актуальном состоянии. Визуально выглядит приятно, не уродливо, что нельзя сказать о других дистрибутивах linux. Для большинства людей такой вариант является лучшим.

Официальный сайт Manjaro

Итог

В данной статье я выделил четыре дистрибутива linux, которые могут использовать люди, решившие перейти на linux. Это мое субъективное мнение сложенное на моем опыте. Я прихожу в ужас когда вижу статьи, в которых авторы советуют начинающим, использовать такие дистрибутивы как: Gentoo, CentOS, итд. Охота спросить, у вас жопа вместо головы или что? Зачастую кто такое советует, знает только слова Gentoo и CentOS, либо понты обычные. Дистрибутив нужно выбрать тот, за которым комфортно работать и проводить время, а не тот который модный, сложный, где нужно компилировать итд. Такие дистрибутивы начинающим не нужны, да и для большинства людей тоже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Post Views: 2 423

musikhin.ru

Lin.in.ua :: Debian Server для новичка

Как-то обеспокоился наличием собственного FTP-сервака. Тем более под это дело «на помойку» был отдан комп этак десятилетней давности. Так как я человек хоть и виндовый, но начинал с чистого ДОСа (про книжки тов. Фигурнова кто помнит?), то я решил сделать все на линуксе.Как-то обеспокоился наличием собственного FTP-сервака. Тем более под это дело «на помойку» был отдан комп этак десятилетней давности. Так как я человек хоть и виндовый, но начинал с чистого ДОСа (про книжки тов. Фигурнова кто помнит?), то я решил сделать все на линуксе. В линуксе я был ноль полный. Еще и усложнил задачу — только консоль, никаких исков (как же — это ж линукс). Дистрибутивом был выбран Debian. Так получилось, что надобность в 2Тб личном хранилице отпала через год и комп был отдан в хорошие руки, а хард пристроен в нужное место. Но был накоплен неплохой опыт стопроцентного новичка. Какие только глупые ошибки я не совершал поначалу! И хабр читал, между прочим, пока разбирался с проблемами. Поэтому эту свою дебютную (первую) статью на хабре я посвящаю тем, кто хочет заняться линуксом с нуля и эта статья призвана для плавного ввода «в тему», являясь, по сути, фильтрацией и систематизацией всего того, что я нашел на просторах интернета. Ранее я этот материал уже публиковал, но, думаю, на хабре он тоже будет полезен.

Что и как хотим получить в результате:— консольная установка ОС с флешки;— навыки консольного управление;— создание собственного репозитория;— обеспечение удаленного доступа по протоколу FTP/SFTP;— обеспечение удаленного управления по протоколу SSH;— дистанционное включение сервера, находящегося за маршрутизатором;— создание условий работы веб-сервера (в идеале связка nginx+apache).

В инете куча всяких пошаговых инструкций. Порой там бывают досадные ошибки, а если еще линуксоид и сопливый еще покамест, то можно пару часов потратить только на то, что бы понять, что не нужна лишняя палочка или точечка — в линуксе важно все! Нижеизложенное делается для практических целей поставленных задач — не надо воспринимать все как серьезную инструкцию для создания серьезного сервера. Тем более в процессе «восстановления опыта» могут и ошибки тоже быть и у меня…— Раз Итак, имеется пустой комп с подключенной периферией. Для начала нужно установить саму ОС. Имеется так же образы всех дисков Debian 6.0.0 stable. От лазерных носителей я давно отказался, т.е. для установки нужно изготовить загрузочную флешку. Флешка нашлась на 2Gb. После поисков оказалось, что изготовить можно, но из самой линуксовой среды. Пришлось установить с образа первого диска дебиан на виртуальную машину (подключаем образ к виртуалке в качестве виртуального CD-ROM и установка выполняется «честно» как бы с лазерного диска). Устанавливал «оптом» — т.е. и GUI тоже (в 6 версии был только GNOME). Тем не менее, после того, как все сделалось, грузим деабиан, подключаем флешку к виртуалке и открываем консоль.

Выполняем команду:

# dmesg

Видим что-то типа этого:[373982.581725] sd 8:0:0:0: [sdc] 4001760 512-byte hardware sectors (2049 MB) [373982.582718] sd 8:0:0:0: [sdc] Write Protect is off [373982.582718] sd 8:0:0:0: [sdc] Mode Sense: 03 00 00 00 [373982.582718] sd 8:0:0:0: [sdc] Assuming drive cache: write through [373982.584152] sd 8:0:0:0: [sdc] 4001760 512-byte hardware sectors (2049 MB) [373982.585718] sd 8:0:0:0: [sdc] Write Protect is off [373982.585718] sd 8:0:0:0: [sdc] Mode Sense: 03 00 00 00 [373982.585718] sd 8:0:0:0: [sdc] Assuming drive cache: write through [373982.585718] sdc: [373982.589280] sd 8:0:0:0: [sdc] Attached SCSI disk

Это значит, что флешка определилась в системе.

Скачиваем файл boot.img.gz (debian.org) для нужной архитектуры (в моем случае i386) и копируем его в какую-нибудь директори. Далее выполняем команду из этой директории:

# zcat boot.img.gz > /dev/sdc

Теперь надо вытащить и воткнуть обратно USB флешку, чтобы новая структура/таблица разделов распозналась. Это обновит таблицу разделов, хранимую udev. Для проверки выполняем следующие команды:

# mkdir /mnt# mount /dev/sdс /mnt/# ls /mnt

и видим инсталляционные файлы, такие как syslinux.cfg, setup.exe, и так далее. Значит все нормально — флешку примонтировали.

Далее скачиваем ISO образ netinstall (debian.org) размером 150-180MB для соответствующей архитектуры (в моем случае i386). Netinstall устанвливает базовую систему, сеть не нужна. Копируем этот образ в какую-нибудь директорию и из этой директории выполняем и отмонтируем флешку:

# cp debian-6.0.1a-i386-netinst /mnt# umount /dev/sdс

Уф. Теперь при себе есть всегда флешка для установки.

Если же необходимо включить такой инсталлятор на флешку с другими ОСами, то можно обратиться к загрузчику grub. У меня уже имеется загрузочная флешка с grub4dos. Создаем папку debian в корне флешки и кидаем туда: debian-6.0.1a-i386-netinst.iso, initrd.gz, initrdg.gz, linux — последние 3 файла можно выдернуть с первого установочного диска Debian 6.0.0 stable или скачать (debian.org). А в меню grub'a (menu.lst) нужно добавить следующее:title Debian 6.0.1a - Netinstall (Basic System, VGA Install)kernel /debian/linux video=vesa:ywrap,mtrr vga=788 -- quietinitrd /debian/initrdg.gz

title Debian 6.0.1a - Netinstall (Basic System, TXT Install)kernel /debian/linux -- quietinitrd /debian/initrd.gz

Теперь втыкаем флешку в наш импровизированный сервак, через BIOS выбираем загрузку с флешки и штатно устанавливаем Debian. При установке ничего особого я не обнаружил: выбираем установку с графическим интерфейсом и далее диалоговый режим. Разметить файловую систему можно автоматом — на первый раз сойдет. После установки и перезагрузки, а так же входа в систему мы будем радостно лицезреть черный экран с приглашением командной строки — базовая установка выполнена!— ДваДалее необходимо настоить доступ и управление по протоколу SSH. Так же, что бы особо не париться с консолью нужно бы установить mc (Midnight Commander) — аналог nc (Norton Commander) в DOS или tc (TotalCommander) в Windows. Но для установки нужно скопировать из сети пакет и установить его. Сети же нет. В то же время практически весь хоть сколько-то нужный софт есть на дисках Debian 6.0.0 stable (дисков, кажется, 6). Но я отказался от работы с дисками. Можно настроить сеть и воспользоваться официальным сетевым репозиторием — способ проще некуда. Однако это решение не для нас — нужна широкая автономность на первом этапе. Да и с каких пор мы идем по легкому пути — знакомство носит все же больше исследовательский характер. Значит нужно сделать свой локальный репозиторий.

1) подготовка…

Придется опять еще раз вернуться в виртульную машину. Входим в консоль под root'ом (на сервере мы в будущем настроим sudo, что бы по каждой ерунде не светить root'а). Создаем директории:

# mkdir debian/pool# mkdir debian/pool/contrib# mkdir debian/pool/main

В эти директории копируем содержимое одноименных директорий со всех дисков. Получится одна папочка объемом этак с 30Гб. После того, как содержимое всех дисков скопировано, создаём директории для хранения информации об находящихся в репозитарии пакетах:

# cd /debian# mkdir -p debian/dists/stable/contrib/binary-i386# mkdir -p debian/dists/stable/main/binary-i386

Далее все команды выполняются исходя из текущего каталога debian — за его пределы никуда не выходим! Собираем списки пакетов:

# apt-ftparchive packages pool/main/ > dists/stable/main/binary-i386/Packages# apt-ftparchive packages pool/contrib/ > dists/stable/contrib/binary-i386/Packages

Сжимаем списки:

# gzip -c dists/stable/contrib/binary-i386/Packages > dists/stable/contrib/binary-i386/Packages.gz# gzip -c dists/stable/main/binary-i386/Packages > dists/stable/main/binary-i386/Packages.gz

Создаём файлы Release:

# apt-ftparchive release pool/contrib/ > dists/stable/contrib/binary-i386/Release# apt-ftparchive release pool/main/ > dists/stable/main/binary-i386/Release# cd /debian/pool/dists/stable# apt-ftparchive release. > Release

Теперь папку /debian можно скопировать на жесткий диск и при желании подключать и организовывать локальные репозитории в других системах. Что и делаем — копируем папку на съемных USB-хард.

2) подключение… заходим на сервер под root'ом

Подключаем USB-хард к серверу. Далее соображаем как определился хард:

# dmesg

Монтируем его и сливаем все что натворили раньше:# mount /dev/sda1 /mnt/# mkdir /dpool# cp -r /mnt/* /dpool

Правим файл /etc/apt/sources.list — комментим все репозитории и прописываем наш:

deb file:/debian/ stable contrib main

Тут надо сделать краткое отступление. Как поправить файл, если одна консоль? Для этого есть редактор vi:

# cd /etc/apt# sudo vi sources.list

Далее делаем что нужно: передвигаем курсор в нужную позицию и жмем «i». Это режим ввода. Делаем что нужно. Сделали и жмем ESC для возврата в командный режим. Далее — все по новой. После того как все завершено жмем последовательность «ESC: w! Enter» — это команда возврата с сохранением изменений. Страшно? После установки mc жизнь упростится…

Делаем апдейт:

# apt-get update# apt-cache gencaches

Готово наше локальное хранилище!— Три Теперь наконец-то добрались до SSH вплотную почти.

1) не всю же жизнь под root'ом работать…

Но сначала немного облегчим себе жизнь — настроим sudo. Sudo — система позволяющая делегировать те или иные привилегированные ресурсы пользователям с ведением протокола работы. Проще говоря user сможет выполнять действия, которые изначально предполагалось выполнять только от root'а.

Заходим на сервер под root'ом и открываем файл /etc/sudoers. Используем опять же редактор vi:

# cd /etc# vi sudoers

Ищем строку:

root ALL=(ALL) ALL

И под ней дописываем:

user ALL=(ALL) ALL

Выходим с сохранением. Готово! Теперь можно заходить под user'ом, но при выполнении критических команд просто перед командой добавлять «sudo». В первый раз система запросит текущий пароль для идентификации. Выходим из системы и заходим под user'ом. Пароль от root'а можно отныне записать на бумажке — пользоваться будем сильно редко, можно и забыть)

2) замучила консоль и vi…

Ставим пакет:

# sudo apt-get install mc

После установки введя команду

# mc

Теперь можно радоваться и забыть про команды mkdir, cp, ls, cd, а так же консольное управление в vi. Править файлы теперь можно по F4. Ностальгия по 2000ым — тогда я на 386ом только нортом и пользовался…

3) наконец-то SSH…

Ставим пакет:

# sudo apt-get install ssh

После успешной установки нужно добавить в конец файла /etc/ssh/sshd_config строку для ограничения доступа:

AllowUsers root, user

Выполняем:

# sudo mc

Далее идем по указанному пути и правим файл. После правки проблем с сохранением не будет — mc запущен под root'ом же. После правки нужно обновить сервис ssh — выходим в консоль и выполняем рестарт сервиса:

# sudo /etc/init.d/ssh restart— Четыре 1) сеть…

Для последнего штриха перед переходом на удаленное управление нужно только настроить сеть. У меня ситуация простая: комп подключен к маршрутизатору проводом. Так как на маршрутизаторе включен DHCP, то интернет получим от него автоматом.

Настройки сетевых интерфейсов хранятся в файле: /etc/network/interfaces

Вот пример рабочего содержимого файла:

# The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address 10.0.0.10 netmask 255.0.0.0 network 10.0.0.0 broadcast 10.255.255.255 gateway 10.0.0.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 10.0.0.1 dns-search debian  Запускаем mc через sudo и правим этот файл в соответствии с теми сетевыми настройками, которые справедливы для вашей сети.

Настройка имени сервера и хостов находятся: /etc/hostname, /etc/hostsЕсли наш сервер называется «debian», то проверяем:В hostname значится только:

debian

А в host первые строчки:

127.0.0.1 localhost debian 10.0.0.10 debian.localhost debian

После всего этого гасим компьютер:

# sudo poweroff

2) удаленное управление…

Отключаем все кабели, тянем наш сервер в самый дальний угол и подключаем его в розетку и к сети. При этом надо заранее позаботится что бы на этапе загрузки BIOS не ждал нажатия кнопки с названием «any» после того как он с удивлением обнаружит, что клавиатура и мышь не обнаруживаются. Нажимаем кнопку питания и возвращаемся к рабочему компьютеру. На этом компе у меня винда. Как же теперь подключиться к серверу?

Есть такая программа putty. Добыть ее можно в интернете. После ее запуска во вкладке «Session» прописываем IP адрес нашего сервера, в качестве порта оставляем значение 22 (это стандартный порт для Shell). Проверяем, что во вкладке «Translation» выставлено UTF-8, что бы неогрести крякозяблев при отображении кириллицы. Возвращаемся в «Session» и открываем канал: «Open». После соединения нас попросят подтвердить создание ключей соединения с нами — подтверждаем. Вводит логин: user. Далее вводим пароль — пароль при вводе не отображается, т.е. это нормально. После соединения видим приглашение сервера и родную консоль, только не на всем мониторе, а в маленьком окошке, которое можно и подрястянуть мышкой. Это значит «Ура, товарищи!».— Пять В принципе, для досутпа к файловой системе можно использовать WinSCP. Это даст возможность копировать файлы между машинами. Но это будет не очень правильно, т.к. после авторизации SSH будет открыт доступ ко всей системе. В идеале хотелось бы просто сделать одну сетевую папку на сервере и открыть доступ к ней. И решение для этого есть.

Ставим пакет:

# sudo apt-get install samba

Теперь редактируем файл /etc/samba/smb.conf. Вот пример рабочего содержимого:

[global] workgroup = WORKGROUP server string = %h server dns proxy = no log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 panic action = /usr/share/samba/panic-action %d security = share encrypt passwords = true passdb backend = tdbsam obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes [homes] comment = Home Directories browseable = no read only = yes create mask = 0700 directory mask = 0700 valid users = %S [printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700 [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no [user] path = /ftp/pub readonly = no guest ok = yes

В качестве комментария можно заметить следующее:— необходимо указать рабочую группу, в которой работают виндовые машины;— параметр security должен быть установлен в share;— в секции «user» нужно указать реальный путь и разрешить гостевой доступ — собственно именно эту секцию мы в файл и добавляем.

После всего этого дела создаем указанные каталоги:

# mkdir /ftp# mkdir /ftp/pub

И разбираемся с правами на эти папки:

# sudo chmod 0755 /ftp# sudo chmod 0777 /ftp/pub# sudo chown -R root /ftp

В таком случае доступ будет осуществлен к папке ftp, но в ней изменить ничего нельзя будет. А вот в папке pub — делаем что угодно. Естественно, можно все упростить выкинув папочку pub и поправив права для ftp…

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

# sudo /etc/init.d/samba restart— Шесть

Теперь пора выпустить нашего малыша в сеть )))

Для начала неплохо было бы сделать сетевой файловый доступ и управление из любой точки сети. Но что мы имеем по топологии? У нас должен быть выход в интернет с статичным реальный IP-адресом. Т.е. доступ из вне должен осуществляться напрямую, а не через коммутацию сетей провайдера. Например, пользователи сети Рамнет все сидят за большим NAT'ом, т.к. выходят в сеть через несколько пулов. Это значит, что IP выданный при регистрации вовсе и не совпадает с тем IP, который «отпечатывается», например, при посещении сайтов. Реальный IP — это однозначно тот IP, который прописан в сетевых настройках драйвера сетевой платы. Узнать реальный IP или нет можно воспользовавшись каким-нибудь сетевым сервисом в интернете, который показывает ваш IP-адрес. Допустим у нас имеется реальный IP.Далее, если сетевой провод напрямую заведен на сервер, то проблем особых уже и нет — сервер уже в сети. А если стоит какое-то маршрутизирующее устройство (маршрутизатор, или промежуточный разветвитель-коммутатор на базе того же линукса)? В таком случае мы оказываемся уже за своим NAT'ом, который нужно немного настроить: осуществить проброс портов. Для каждой сетевой службы на машине имеется свой порт: SSH — 22, FTP — 21. Т.е., маршрутизатор нужно настроить так, что бы при обращении к порту по нашему реальному IP осуществлялось обращение именно к серверу по этому порту. Если наш сервер имеет адрес 10.0.0.10, а провайдером выдан реальный IP 172.122.34.89, то в маршрутизаторе необходимо выполнить проброс портов (Port Forwarding) 21 и 22 из вне (172.122.34.89) на сервер (10.0.0.10). Просто настраивается пара строчек в админке маршрутизатора или правится таблица маршуртизации промежуточного линукса-коммутатора. Допустим это тоже все сделали.

В таком случае для досутпа по SSH через putty необходимо просто будет указать реальный IP-адрес, порт 22 (см. выше, где описана небольшая настройка клиента putty). Осуществляем вход и получаем доступ к консоли сервера.

А файловый доступ? Тут чуть сложнее. Можно использовать WinSCP, но как уже упоминалось, это не наш метод. Samba работает только в локалке. Придется настроить FTP доступ…

Для FTP используем сервис proftpd. Ставим пакет:

# sudo apt-get install proftpd

Файл конфигурации находится здесь: /etc/proftpd/proftpd.conf. Вот пример рабочего файла:

Include /etc/proftpd/modules.conf ServerName "Debian" ServerType standalone DeferWelcome off MultilineRFC2228 on DefaultServer on ShowSymlinks on TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200 DisplayLogin welcome.msg DisplayChdir .message true ListOptions "-l" DenyFilter \*.*/ DefaultRoot ~ RequireValidShell off Port 21 # DynMasqRefresh 28800 MaxInstances 10 User nobody Group nogroup Umask 022 022 AllowOverwrite on TransferLog /var/log/proftpd/xferlog SystemLog /var/log/proftpd/proftpd.log QuotaEngine off Ratios off DelayEngine on ControlsEngine off ControlsMaxClients 2 ControlsLog /var/log/proftpd/controls.log ControlsInterval 5 ControlsSocket /var/run/proftpd/proftpd.sock AdminControlsEngine off User user1 Group nogroup UserAlias anonymous user1 #RequireValidShell off MaxClients 10 TransferRate RETR,STOR 4096 AllowAll AllowAll AllowAll User user2 Group nogroup #UserAlias anonymous user2 #RequireValidShell off MaxClients 3 #TransferRate RETR,STOR 4096 AllowAll AllowAll AllowAll Комментарии: - сервер FTP запускаем отдельным процессом "standalone", хотя для слабых компов это и не будет оптимальным; - секции "Anonymous" прописываем сами: для user1 будет открыт анонимный доступ с ограничением скорости в 4МБ/с и ограничением количества запускаемых серверов 10, для user2 ограничения скорости нет, а ограничение запускаемых таких серверов установлено в 3. Перезапускаем ftp-сервер: # sudo /etc/init.d/proftpd restart В таком случае мы сможем подключиться к нашему серверу используя любой FTP-клиент из любой точки сети. Учитываем, что порт 21 мы уже пробросили через маршрутизатор ранее. При этом можно использовать анонимный доступ или введя логин/пароль для авторизации снять лимит скорости скачивания/отправки. Но для авторизации нужно иметь зарегистрированные учетные записи на сервере. Создадим пользователей без создания для них домашних каталогов: # sudo useradd user1 # sudo useradd user2 И зададим им пароли: # sudo passwd user1 # sudo passwd user2 Ну вот теперь появилось уже что-то более-менее полезное))) В идеале хотелось бы настроить защищенный SFTP доступ. Для proftpd существует модуль mod_sftp. Я очень долго (3 вечера) курил мануалы по этой теме и кое как сумел настроить. Но сервер нещадно резал скорость на уровне 10мегабит как при доступе внутри сети, так и снаружи. Ничего с этим не поделав пришлось отказаться пока от этого решения. Так же SFTP можно настроить через SSH - в нем уже имеется такая возможность. Однако при такой организации у меня никак не получалось нормально запереть пользователя в нужной директории, т.к. иначе ему, после авторизации, открывался доступ сразу ко всей системе. SFTP идея гораздо полезнее (при FTP пароли вообще в открытом виде передаются, если это не анонимный доступ), но пока ее пришлось забросить. Может быть будет кому-то интересно подключение mod_sftp. Я реализовывал так, что бы ключи авторизации цеплялись с SSH: SFTPEngine on SFTPLog /var/log/proftpd/sftp.log TransferLog /var/log/proftpd/xferlog-sftp.log Port 2220 SFTPHostKey /etc/ssh/ssh_host_rsa_key SFTPHostKey /etc/ssh/ssh_host_dsa_key SFTPAuthorizedUserKeys file:~/.sftp/authorized_keys SFTPCompression delayed MaxLoginAttempts 6

Комментарии:- сервер FTP запускаем отдельным процессом "standalone", хотя для слабых компов это и не будет оптимальным;- секции "Anonymous" прописываем сами: для user1 будет открыт анонимный доступ с ограничением скорости в 4МБ/с и ограничением количества запускаемых серверов 10, для user2 ограничения скорости нет, а ограничение запускаемых таких серверов установлено в 3.

Перезапускаем ftp-сервер:

# sudo /etc/init.d/proftpd restart

В таком случае мы сможем подключиться к нашему серверу используя любой FTP-клиент из любой точки сети. Учитываем, что порт 21 мы уже пробросили через маршрутизатор ранее. При этом можно использовать анонимный доступ или введя логин/пароль для авторизации снять лимит скорости скачивания/отправки. Но для авторизации нужно иметь зарегистрированные учетные записи на сервере. Создадим пользователей без создания для них домашних каталогов:

# sudo useradd user1 # sudo useradd user2

И зададим им пароли:

# sudo passwd user1 # sudo passwd user2

Ну вот теперь появилось уже что-то более-менее полезное)))

В идеале хотелось бы настроить защищенный SFTP доступ. Для proftpd существует модуль mod_sftp. Я очень долго (3 вечера) курил мануалы по этой теме и кое как сумел настроить. Но сервер нещадно резал скорость на уровне 10мегабит как при доступе внутри сети, так и снаружи. Ничего с этим не поделав пришлось отказаться пока от этого решения.Так же SFTP можно настроить через SSH - в нем уже имеется такая возможность. Однако при такой организации у меня никак не получалось нормально запереть пользователя в нужной директории, т.к. иначе ему, после авторизации, открывался доступ сразу ко всей системе. SFTP идея гораздо полезнее (при FTP пароли вообще в открытом виде передаются, если это не анонимный доступ), но пока ее пришлось забросить.

Может быть будет кому-то интересно подключение mod_sftp. Я реализовывал так, что бы ключи авторизации цеплялись с SSH:

SFTPEngine onSFTPLog /var/log/proftpd/sftp.logTransferLog /var/log/proftpd/xferlog-sftp.logPort 2220SFTPHostKey /etc/ssh/ssh_host_rsa_keySFTPHostKey /etc/ssh/ssh_host_dsa_keySFTPAuthorizedUserKeys file:~/.sftp/authorized_keysSFTPCompression delayedMaxLoginAttempts 6

Это дело вставляется в proftpd.conf и доступ осуществляется через порт 2220. Но при этом mod_sftp должен быть установлен вместе с proftpd. В штатном репозитории proftpd собран без mod_sftp. Его придется «дособирать» самостоятельно. «Впатчивал» я по какой-то английской инструкции — уже не помню. Процесс это не менее творческий, чем сборка своего репозитория, а результат все равно не порадовал, поэтому это все описывать не буду.— Семь Итак, мы настроили FTP. Теперь хотелось бы уметь включать сервер когда надо. Например, нужно что-то взять из сетевой папки.

Тут есть одна тонкость. К нашему серверу подключено только электропитание и сеть. Но сетевые карты давно научились «будить» компьютер: достаточно только включить такую поддержку в BIOS компьютера и послеать не него «магический» пакет (Magic packet). Читаем в wikipedia:

Magic packet — это специальная последовательность байтов, которую для нормального прохождения по локальным сетям можно вставить в пакеты UDP или IPX. Обычно для WOL пакеты протоколов верхнего уровня рассылают широковещательно, так как в случае динамического присвоения адресов неизвестно, какой, скажем, IP-адрес соответствует какому MAC-адресу. Однако, для корректного прохождения через маршрутизатор, запрещающий широковещательные пакеты, можно послать пакет по какому-то определённому адресу.

Состав magic packet

Вначале идет так называемая «цепочка синхронизации»: 6 байт, равных 0xFF. Затем — MAC-адрес сетевой платы, повторённый 16 раз. То есть, если бы адрес платы выглядел как 01:02:03:04:05:06, то магический пакет оказался бы таким:

FFFFFFFFFFFF010203040506010203040506010203040506010203040506 010203040506010203040506010203040506010203040506010203040506 010203040506010203040506010203040506010203040506010203040506 010203040506010203040506

Есть куча программ, половина из которых работает, а другая нет, которые формируют и отсылают такие пакеты по указанному IP. Но это справедливо только в локальной сети. Но ведь у нас реальный IP — значит можно попробовать просто отослать пакет на него, а маршрутизатор настроить на ретрансляцию этого пакета серверу. Пакеты на «побудку» рассылаются обычно по портам 7 или 9. Прокидываем их через маршрутизатор на IP сервера. Далее проще всего воспользоваться сетевым ресурсом wakeonlan.ru: забиваем свой реальный адрес IP и MAC адрес сетевой платы сервера. Жмем кнопочку «Включить компьютер!». После пары отправок система вполне может и написать о неудаче включения — сервер-то все же за NAT'ом, а отклик на пингование маршрутизатора разумнее выключить в настройках маршрутизатора. Такой способ включения удобен, правда придется выучить наизусть IP и MAC. Но у нас же память хорошая — мы же задаем и помним правильные пароли составом не менее 14 символов?) Зато теперь сервер можно включить с сотового телефона (при наличии в нем браузера и GPRS доступа).

Интересная так же штука вышла с маршрутизатором. Дело в том, что пока сервер включен маршрутизатор точно знает к какому его порту этот сервер подключен. Но как только сервер выключаем маршрутизатор, через некоторое время, начисто забывает этот факт. Заставить делать широковещательную рассылку «магического» пакета по всем портам я не сумел его заставить. Пришлось на разбирательство потратить приличное время. В результате на маршрутизатор установил прошивку от DD-WRT (на базе линукса). Прошивка по сравнению с штатными прошивками от производителей просто блещет функционалом. Он явно избыточен) Однако и она забывала порт, хотя широковещательно пакеты рассылать уже могла (только комп почему-то не включался). Если был бы вместо маршрутизатора коммутатор-комп на линукс, то можно было бы просто подредактировать таблицу маршрутизации и делов-то… Аналогично и тут — нужно внести изменения в таблицу ARP маршрутизатора. В данной прошивке есть некая консоль и можно при загрузке маршрутизатора добавить скрипт запуска. Что и делаем, скрип таков:ip neigh change 10.0.0.10 lladdr 00:10:20:1F:C4:57 nud permanent dev br0ip neigh add 10.0.0.10 lladdr 00:10:20:1F:C4:57 nud permanent dev br0

Подразумевается, что на физическом аппаратном уровне порты маршрутизатора и платы друг друга «узнают» по своим MAC-адресам (они же с собой постоянно общаются при наличии питания) и маршрутизатор «догадается» что вышеуказанный IPшник будет принадлежать именно этому адресату (пока комп не включен это знание маршрутизатору недосутпно ибо еще нет никакого интерфейса сетевого уровня — однако эта знание мы и заложили при загрузке в ARP) после включения.

Ну вот — на этом и закончивается мое первое знакомство с линуксом. Если кому-то это помогло — всегда пожалуйста.

Источник: http://habrahabr.ru/blogs/debian/126944/

lin.in.ua

Linux Debian: несколько команд для новичка

матёрому «виндузятнику», привыкшему к готовности ос выполнить любую прихоть в удобоваримом виде, довольно трудно привыкнуть к консоли линукса. и хорошо, если пользователю окон пришлось в своё время поработать хотя бы в досе.

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

создание файла

мне импонирует такая команда:

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

записать строку в файл

echo "test string" >> /home/testfile.txt

в файл будет будет добавлена строка test string + символ перевода на новую строку.

а следующая команда, помимо вывода строки в файл, этот самый файл и создаст:

echo "test string 2" >> /home/testfile2.txt

обнуление содержимого файла

или так (кстати, этот вариант работает и с командой sudo):

cp /dev/null /home/testfile.txt

передать вывод первой команды на вход второй

echo user:pass | chpasswd

изменяет старый пароль пользователя user на новый pass.

обнуление содержимого нескольких файлов

find /home/*.txt | xargs -n1 cp /dev/null

первая команда — find — ищет все *.txt-файлы в папке /home, и передаёт найденные имена (команда «|») следующей команде — xargs — которая, в свою очередь, передаёт по 1 имени (параметр «-n1») команде обнуления файлов, рассмотренной выше.

последовательное выполнение нескольких команд

cd /home && tar czf /home/alltxt.tar.gz *.txt

изменяет текущую директорию на /home, упаковывает все *.txt-файлы в данном каталоге в архив alltxt.tar.gz (архив также размещается в папке /home).

установка программ

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

видно, что часть команд (даже при использовании графической оболочки), требуют больше времени на выполнение. а некоторые (например, обнуление содержимого группы файлов) вообще не имеют «интерфейсных» аналогов.

если же вы решили приобщиться к миру никсов, очень рекомендую почитать какую-нибудь информацию по командам оболочки. оттолкнуться можно, например, отсюда.

Автор публикации

1 892

не в сети 2 дня

x64 (aka andi)

Комментарии: 2760Публикации: 385Регистрация: 02-04-2009 Загрузка...

a-panov.ru