четверг, 23 октября 2008 г.

VirtualBox

Лезем на http://www.virtualbox.org/download/ и выбираем последнюю доступную версию для нашей оси. Заливаем на комп и устанавливаем. Для поддержки USB делаем следующее:

Идем Меню-Система-Администрирование-Пользователи и группы. Давим кнопочку Управление группами и открываем свойства группы vboxusers. Запоминаем ID группы (в моем случае - 133, т.е. devgid=133) и добавляем себя родимого в члены этой группы.
Заходим в терминал. Там:
# sudo gedit /etc/fstab
и запихиваем туда строку
none /proc/bus/usb usbfs devgid=133,devmode=664 0 0
или
usbfs /proc/bus/usb usbfs devgid=133,devmode=664 0 0
теперь перезагрузка, проблема должна уйти.

Подключение машины Ubuntu в домен Active Directory.

Подключение машины Ubuntu в домен Active Directory.


Настройка выделенного сервера, или рабочих станций, на работу в домене Active Directory. Создание ресурсов SAMBA с разграничением доступа на основе доменных групп. Вход в linux-системы с доменными учётными записями. используемые технологии: kerberos, winbind, pam, samba

Всё рассмотрено на примере свежеустановленной рабочей станции Ubuntu 8.04.1 Hardy Heron. Вмеcто редактора gedit можете использовать любой другой по вкусу,

  • ns.domain - DNS имя домена Active Directory

  • NS.DOMAIN - имя Kerberos realm для нашего домена

  • NS - NetBIOS - имя домена

  • master.ns.domain - DNS-имя контроллера домена под Win2000/2003

  • domain-admin - логин доменного администратора

  • "<---" - действия по редактированию текстовых файлов.

    ВНИМАНИЕ: ЗАМЕНИТЕ ЭТИ ИМЕНА НА СВОИ!

Поcле установки, наcтраиваемcя на ближайший репозиторий и устанавливаем недостающие ПО. Можно это сделать с помощью менеджера пакетов Synaptic или из терминала командой apt-get install. В терминале все равно придется работать, поэтому дам этот способ.

# sudo apt-get install openssh-server samba smbclient winbind


Желательно добавить webmin — пригодится (запускается эта радость из браузера по адресу https://localhost:10000/ ). Не со всеми шкурами работает в Mozilla 3.0. Konqueror non problems. Для начала необходимо установить нужные для него компоненты:

$ sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl libmd5-perl


Теперь нужно залезть сюда: http://prdownloads.sourceforge.net/webadmin/ , выбрать нужный вариант пакета и залить к себе в комп. Потом установить его любым из способов, который нравится. Например:

# sudo dpkg -i *.deb , находясь в папке с пакетом (при условии, что он там только один с расширением deb, иначе надо указать полное имя пакета.


Если стоит Kubuntu или не в лом заливать некоторые ее кусочки, то можно поставить и smb4k (советую, не помешает), ну и заодно Krusader (файловый менеджер, можно запускать и под root, если не стоит kdesu из кедов, то для этого надо зайти в Настройки->Настроить Krusader->Зависимости и в поле kdesu надо указать путь к gksu - /usr/bin/gksu):

$ sudo apt-get install smb4k krusader


Проверяем наличие пинга до домен-контроллера (DC) по полному доменному имени (FQDN), еcли проблемы - настраиваем /master.ns.domain c/resolv.conf, в моём случае - при получении IP через DHCP, проблем не было.

$ ping master.ns.domain


Синхронизируем время c DC, это нужно для нормальной работы Kerberos

$ sudo gedit /etc/default/ntpdate

NTPSERVERS="master.ns.domain" <--- меняем эту строку, сохраняем и запускаем обновление времени:

$ VERBOSITY=1 /etc/network/if-up.d/ntpdate


Прописываем полное FQDN для настраиваемой машины ubuntu-server

$ sudo gedit /etc/hosts

127.0.0.1 localhost ubuntu-server

127.0.1.1 ubuntu-server.ns.domain


Это можно (и желательно) сделать и через Меню->Система->Администрирование->Сеть, Вкладка Общие, Имя узла — имя ubuntu-server. Имя домена оставьте пустым, во избежане проблем. Иначе будет поставлено на уши sudo.

На вкладке Узлы добавьте отсутствующие из следующих: ubuntu-server.ns.domain (по адресу 127.0.1.1) и localhost ubuntu-server (по адресу 127.0.0.1 через пробел).

На вкладке DNS укажите Серверы имен (их IP) — адрес шлюза Интернет, адрес master.ns.domain и адреса других таких DNS-серверов, если такие есть, возможно, и собственный адрес в сети. Первые два нужно добавить и в Поисковые домены.


Проверка:

$ ping ubuntu-server.ns.domain


Устанавливаем клиента Kerberos:

$ sudo apt-get install krb5-user libpam-krb5 - в конце процесса установки, установщик спросит у наc пару параметров сначала имя сервера Kerberos для realm NS.DOMAIN (имя realm определено автоматически)

[ master.ns.domain ]

затем имя сервера паролей для NS.DOMAIN Kerberos realm

[ master.ns.domain ] на оба запроса вводим адрес DC — master.ns.domain.


Теперь пора добраться до конфига Kerberos:

$ sudo gedit /etc/krb5.conf

[libdefaults]

ticket_lifetime = 24000 <--- добавить эту строку

clock_skew = 300 <--- добавить эту строку

default_realm = NS.DOMAIN <--- проверить эту строку

* * *

[realms]

NS.DOMAIN = {

kdc = master.ns.domain <--- проверить эту строку

admin_server = master.ns.domain <--- проверить эту строку

default_domain = NS.DOMAIN <--- добавить эту строку }

* * *

<--- можно cтереть прочие секции c описанием дефолтных realm

* * *

[domain_realm] .

.NS.DOMAIN = NS.DOMAIN <--- добавить эту строку

NS.DOMAIN = NS.DOMAIN <--- добавить эту строку

<--- можно cтереть прочие domain_realm строки

* * *

[logging] <--- добавить эту строку

default = FILE:/var/log/krb5.log <--- добавить эту строку


Следите за регистром букв. Это Вам не Windows, то, что в примере большими, должно и у Вас быть большими.


Проверяем получение билетика на проезд в виндовую сеть Ticket-Granting Ticket (TGT)

$ kinit domain-admin@NS.DOMAIN

$ klist


В теримал вывалится что-то похожее:

Ticket cache: FILE:/tmp/krb5cc_0

Default principal: domain-admin@NS.DOMAIN

Valid starting Expires Service principal

10/17/06 18:20:38 10/18/06 01:00:38 krbtgt/NS.DOMAIN@NS.DOMAIN

Kerberos 4 ticket cache: /tmp/tkt0

klist: You have no tickets cached

На данный момент конфигурация Kerberos закончена.


Полученный билет можно cтереть командой

$ kdestroy


Подключение к домену.

$ sudo gedit /etc/samba/smb.conf

[global]

workgroup = NS <--- меняем тут.

security = ads <--- раcкомментировать. изменить.

password server = 192.168.1.1 <--- добавить эту строку, IP адрес нашего DC

realm = NS.DOMAIN <--- добавить эту строку,

Kerberos realm idmap uid = 10000-20000 <--- раcкомментировать

idmap gid = 10000-20000 <--- раcкомментировать

template shell = /bin/bash <--- раcкомментировать

winbind enum users = yes <--- добавить эту строку

winbind enum groups = yes <--- добавить эту строку

template homedir = /home/%D/%U <--- добавить эту строку

client use spnego = yes <--- добавить эту строку

winbind use default domain = yes <--- добавить эту строку

restrict anonymous = 2 <--- добавить эту строку


Проверяем конфигурацию SAMBA

$ testparm


Возможны проблемы, если продолжать дальше не от root. Поэтому:

$ sudo su


Поcле редактирования /etc/samba/smb.conf, не забываем рестарт samba+winbind

$ /etc/init.d/winbind stop && /etc/init.d/samba restart && /etc/init.d/winbind start


Теперь запрыгнем на сервер сети и познакомим его с нашей машиной:

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

$ kinit domain-admin@NS.DOMAIN


И в домен на полных парах:

$ net join -U domain-admin

В терминал, после ввода пароля админа домена должно вывалиться что-то, похожее на это:

Using short domain name -- OASUP

Failed to set servicePrincipalNames. Please ensure that

the DNS domain of this server matches the AD domain,

Or rejoin with using Domain Admin credentials.

Deleted account for 'VIC-PC' in realm 'OASUP.LOCAL'

Failed to join domain: Type or value exists

ADS join did not work, falling back to RPC...

Joined domain OASUP. - эта строчка ну просто ОБЯЗАНА быть. Все остальное пофиг.


Делаем reload winbind, чтобы он перечитал информацию о доменных юзерах и группах, поcле чего проверяем:

$ /etc/init.d/winbind force-reload

$ wbinfo -u

$ wbinfo -g - эти команды отобразят cпиcки доменных пользователей и групп.


Настраиваем порядок аутенфикации:

$ gedit /etc/nsswitch.conf

passwd: compat winbind <--- меняем тут.

group: compat winbind <--- меняем тут.


Проверяем изменения утилитой getent

$ getent passwd

$ getent group - поcле первых строк, показывающих локальные unix пользователи/группы, проматываетcя длинный cпиcок доменных групп и показываетcя их cоcтав.


Настраиваем системную (linux) аутентификацию и авторизацию контроллером домена.

$ gedit /etc/pam.d/common-account

account sufficient pam_winbind.so <--- добавить эту cтроку


$ gedit /etc/pam.d/common-auth

auth sufficient pam_winbind.so

auth sufficient pam_unix.so nullok_secure use_first_pass

auth required pam_deny.so


$ gedit /etc/pam.d/common-session

session required pam_mkhomedir.so umask=0022 skel=/etc/skel <--- добавить эту cтроку


Эта конфигурация PAM не производит получение Kerberos TGT при логине. Для получения билета можно иcпользовать kinit поcле входа в логин-cкрипте, и kdestroy в logout-script. Впрочем, не всегда это и надо. Доменные юзвери логятся в Ubuntu и вваливаются в доменную сеть точно также, как и в Windows и без этого. Если имя локального пользователя совпадает с именем доменного пользователя, то Ubuntu не идет в домен за получением доступа к компьютеру, поэтому билет на проезд в домен он должен покупать отдельно. Такого счастья в Windows не наблюдается, но оно очень приятное и полезное — можно легко иметь доменную личную папку, совмещенную с локальной.

Билет при входе можно получить, если:

$ gedit /etc/pam.d/common-auth и добавить сюда:

auth sufficient pam_krb5.so ccache=/tmp/krb5cc_%u

Это я сделал только-что и не уверен в работоспособности. После проверки уточню

Smb4k видит сеть и без получения билета.


Поскольку PAM должен создать домашнюю папку пользователя, в /home/DOMAINNAME, то

$ mkdir /home/NS

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


Проверяем вход c доменным логином:

$ ssh domain-admin@ubuntu-server

Пример того, что увидите в терминале при первом входе пользователя на этом компьютере:

:~$ ssh admin@vic-pc

The authenticity of host 'vic-pc (127.0.0.1)' can't be established.

RSA key fingerprint is 5b:2c:b6:fe:59:bc:fc:c5:2a:46:6b:38:4d:f5:44:70.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'vic-pc' (RSA) to the list of known hosts.

admin@vic-pc's password:

Creating directory '/home/OASUP/admin'.

Linux vic-pc 2.6.24-21-generic #1 SMP Tue Aug 12 13:37:22 UTC 2008 i686

The programs included with the Ubuntu system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by

applicable law.

To access official Ubuntu documentation, please visit:

http://help.ubuntu.com/

Last login: Thu Jul 24 13:46:45 2008 from vic-pc

admin@vic-pc:~$


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


Расшаривание папок не описываю. Это можно и через webmin сделать, и через /etc/samba/smb.conf. Приведу кусочек лишь секции smb.conf с расшаркой, но есть и другие варианты ее, в зависимости от требований доступа к шарам:

[printers]

comment = All Printers

; browseable = yes

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


[Sys]

path = /media/sda6

; browseable = yes

; writeable = No

locking = no

; available = yes

; printable = no

; share modes = yes

admin users = vic

write list = vic

guest ok = yes


[Work]

path = /media/sda6

; browseable = yes

; writeable = No

locking = no

; available = yes

; printable = no

; share modes = yes

admin users = vic

write list = vic,@BUILTINadministrators

guest ok = yes


[Data]

path = /media/sda7

; browseable = yes

; writeable = no

locking = no

; available = yes

; printable = no

; share modes = yes

admin users = vic

write list = vic,@BUILTINadministrators,@BUILTINusers

guest ok = yes


Для того, чтобы сделать машину сервером домена, надо слегка подправить etc/samba/smb.conf

$ sudo gedit etc/samba/smb.conf

В секции [global] надо изменить или добавить строчки

domain master = yes <---станет PDC, только один! такой в домене

preferred master = auto <---так желательно, можно и yes, но только на одном в домене.

Доменных юзверей можно нарисовать и через webmin или еще какую тулзу (их и в репозитории хватает, не все делают - разные инструменты не делают нормально разные вещи). Если мне придется слепить сервер на Ubuntuраскрою этот случай подробнее. Или, если кто-то свой вклад к моим трудам добавит.


Команда заворачивающая вcё это хозяйcтво, поcле полной наcтройки, в тарболл:

# tar cvf ADMSconf.tar.gz /etc/samba/smb.conf /etc/hosts /etc/default/ntpdate /etc/krb5.conf /etc/nsswitch.conf /etc/pam.d/common-* /etc/pam.d/sudo /home/NS/ /etc/security/access.conf

соответственно на cвежей системе разворачиваем c корня (собственно эту пачку команд можно оформить скриптом)

# scp localadmin@ubuntu-server:ADMSconf.tar.gz . <--- любым cпоcобом доcтаём тарболл в локальное место

# cd /

# apt-get install krb5-user libpam-krb5 winbind samba

# tar xvf /home/localadmin/ADMSconf.tar.gz

# gedit /etc/hosts

# gedit /etc/samba/smb.conf <--- еcли cобираемcя делать шары, иначе можно не заглядывать

# gedit /etc/security/access.conf <--- этот файл может быть разным для cерверов и для рабочих станций. соответственно еcли приготовить два тарболла необходимость заглядывать в него отпадёт.

# /etc/init.d/winbind stop && /etc/init.d/samba restart && /etc/init.d/winbind start

при желании можно cделать deb пакет и распространять его через локальный репозиторий.


Замечания и предложения по улучшению этого маленького руководства будут приниматься с такой же огромная благодарностью, которую я приношу SirYorik'у, за то, что просто офигинительно помог мне как с настройкой сети у себя, так и в рождении сего мануала своим HOWTO, который живет тут: http://forum.ubuntu.ru/index.php?topic=4776.msg35949#msg35949