Настройка Linux в окружении VirtualBox

August 3, 2010 Linux PuTTY Samba SSH Ubuntu VirtualBox

…Заканчиваю эпос в трех частях об настройке виртуального Linux-сервера под Windows.

Беспарольный sudo

Поскольку никто, кроме тебя, на виртуалку попасть не сможет, целесообразно убрать пароль с sudo. Так удобнее. Для этого в /etc/sudoers нужно дописать строку

%username% ALL=NOPASSWD: ALL

где %username%, конечно – логин твоего пользователя, %username%.

Настройка сети

Вышеупомянутые статические настройки. Возможно, придется поменять IP-адреса (я почти уверен, что не придется) – правильные можно подсмотреть в выдаче ifconfig.

# /etc/network/interfaces

# Loopback - не забудь его не убрать
auto lo
iface lo inet loopback

# NAT - служит выходом в Интернет, потому и gateway.
auto eth0
iface eth0 inet static
address 10.0.2.15
gateway 10.0.2.2
netmask 255.255.255.0
network 10.0.2.0
broadcast 10.0.2.255

# Host-only адаптер
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255

Остается настроить статический DNS. Проблема вот в чем: виртуальная машина получает свои DNS посредством DHCP у машины-хозяина, причем получает в момент загрузки. Предположим теперь, что я загрузил виртуалку дома, и она получила в качестве DNS мой роутер 192.168.1.1. Потом я пошел на работу, выключив (или усыпив) ноут – виртуалка при этом сохранила свое состояние, при чем для нее ничего не поменялось вообще. Она по-прежнему использует в качестве DNS роутер – уже недоступный – и поэтому теряет способность разрешать доменные имена. Довольно-таки неочевидный затык.

Чтобы избавиться от этого, в файл /etc/dhcp3/dhclient.conf добавляем строчку:

# Принудительно используем сервера OpenDNS (можешь указать любые другие)
supersede domain-name-servers 208.67.222.222,208.67.220.220;

По-моему это не идеальный конфиг, по уму надо все настройки перенести в dhclient.conf, но пока и так работает.

Настройка SSH

SSH-сервер по умолчанию в Убунте не стоит:

sudo apt-get install openssh-server

Предположим, ты используешь PuTTY. Тогда тебе остается сгенерировать им SSH-ключ – для удобства без ключевой фразы – и:

mkdir ~/.ssh
echo "public key copypasted from putty" >~/.ssh/authorized_keys

После чего используем сгенерированный ключ для беспарольного входа на виртуалку. А если средствами ярлыка или BAT-файла вызывать putty -load virtualbox_session_name – то даже без путтевского окна настроек.

Установка VirtualBox Guest Additions

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

sudo /media/cdrom/VBoxLinuxAdditions-x86.run

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

Настройка Samba

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

Устанавливаем самбу:

sudo apt-get install samba

и прописываем такой себе минимальный конфиг (/etc/samba/smb.conf):

[global]
workgroup = WORKGROUP
interfaces = lo eth1
bind interfaces only = yes

security = share
map to guest = bad user

usershare allow guests = yes
guest account = %username%

[home]
path = /home/%username%
guest ok = yes
guest only = yes
read only = no
directory mask = 0755
create mask = 0644

С таким конфигом можно заходить из Windows на \\192.168.56.101\home и смотреть домашнюю папку своего пользователя.

Хосты

Чтобы не прописывать виртуальные хосты по несколько раз (на самой виртуалке, на машине-хозяине, на других виртуалках), имеет смысл настроить легонький DNS-сервер dnsmasq. Я до этого пока не добрался, прописываю хосты ручками.

Резюмируя

Вот и все. Пожалуй, все.

Я понимаю, что пишу не в стиле руководства для новичков – увы, излагать в духе «запустите sudo nano… кстати, nano – это такой текстовый редактор… для начала найдите на клавиатуре буковку эс… эс как доллар» я терпеть не могу. Гугл с удовольствием поможет разобраться в мелких деталях.

Надеюсь, помогу кому-нибудь слезть с денвера или Ruby for Windows в адекватную для веб-разработки среду. Ну или бросить мытарства с гномами-кедами-компизами без всякого ущерба для работы.

Вопросы? Предложения?

Buy Me a Coffee at ko-fi.com