четверг, 23 октября 2008 г.
VirtualBox
Идем Меню-Система-Администрирование-Пользователи и группы. Давим кнопочку Управление группами и открываем свойства группы 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.
Настройка выделенного сервера, или рабочих станций, на работу в домене 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