Настройка рабочей станции на основе Ubuntu 7.10 для домена Windows от Исаева Романа А.
Прошу при перепечатке данного руководства указывать мое авторство.
Цели:
1. Обеспечить авторизацию пользователя в домене Active Directory
2. Обеспечить прозрачную и сквозную авторизацию на ресурсах сети
3. Закрыть для пользователя использование внешних носителей таких как Flash, CD, Floppy.
4. Обеспечить хранение пользовательских данных на сервере.
Для тех кому 4 пункт бесполезен я сделал пометки.
для тех кого задалбливает набирать перед каждой командой sudo
сделайте sudo -i и все следующие команды до закрытия терминала будут от рута идти.
Все команды в этом руководстве требуют прав root так, что я обычно пользуюсь sudo -i
Все конфигурационные составлены мной и используются в действующей сети.
Для получения большей информации смотрите оригинальные файлы конфигурации.
DOMAIN ваш домен. dc это сокращение от domain controller
редактируйте чем хотите. Я это делаею либо через mcedit либо через vim
1. Редактируем часовой пояс gksudo gedit /etc/default/rcS
cтавим UTC=no
2. Настраиваем сеть.
Проверяем наличие пинга до домен-контроллера(DC) по полному доменному имени (FQDN), еcли проблемы - настраиваем /etc/resolv.conf, в моём cлучае - при получении IP через DHCP, проблем не было.
# ping dc.domain.ru
mcedit /etc/default/ntpdate
NTPSERVERS="dc.domain.ru" <--- меняем эту cтроку указывая домен контроллер
в домене с несколькими домен контроллерами главным сервером времени является эмулятор PDC. остальные dc берут время у него.
даем команду на синхронизацию
/etc/network/if-up.d/ntpdate
Пропиcываем полное FQDN для настраиваемой машины workstation
# mcedit /etc/hosts
127.0.0.1 workstation.domain.ru localhost workstation
проверка
# ping workstation.domain.ru
3. Начнем ставить пакеты для работы в домене:
sudo apt-get install samba smbfs winbind libpam-mount
smbfs нужен для монтирование сетевых папок. Он делает два файла в /sbin/(u)mount.cifs
Дополнительно кому нужен ssh доступ к рабочей станции и наличие редакторов, файл менеджеров:
sudo apt-get install mc gnome-commander openssh-server
А теперь конфигурируем SAMBA для работы в домене
создадим папку для пользователей домена mkdir /home/DOMAIN
Правим конфиг
# mcedit /etc/samba/
smb.conf[global]
unix charset = UTF-8
dos charset = CP866
display charset = UTF-8
workgroup = DOMAIN
server string = %h server (Samba, Ubuntu)
; У кого есть wins можете включить wins support = no
; и прописать wins сервер
; wins server = 192.168…
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
# вот тут мы показываем, что используем AD
security = ads
# если стоит * то samba сама будет искать домен контроллер через dc, или же можно перечислить их IP адреса через пробел в явном виде. Или указать один #IP для того dc на котором хотите авторизоваться. Для отказоустойчивости лучше указать несколько dc или *
password server = *
realm = DOMAIN.RU #Внимание realm пишется большими буквами !!!
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
invalid users = root
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword :* %n\n *passwd:*password\supdated\ssuccessfully* .
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
winbind enum groups = yes
winbind enum users = yes
#домашняя папку у пользователя будет в папке с именем домена. Лучше ее создать заранее вручную.
template homedir = /home/%D/%U
client use spnego = yes
winbind use default domain = yes
winbind refresh tickets = yes
restrict anonymous = 2
# строки ниже, чтобы рабочая станция не пыталась стать обозревателем в сети.
domain master = no
local master = no
preferred master = no
os level = 0
Проверяем конфигурацию SAMBA командой
testparm4. Даем команду чтобы демоны перечитали конфигурацию:
/etc/init.d/winbind stop && /etc/init.d/samba restart && /etc/init.d/winbind start
5. Подключаем машину в домен
net ads join –U administrator
Далее будет запрос пароля доменного админа. Вместо доменного админа можно указать любую пользовательскую учетку. Да, у пользователя есть право ввести ПК в домен, но ограниченное кол-вот раз .
В случае успеха видим:
Using short domain name – DOMAIN
Joined ‘namepc' to realm ‘DOMAIN.RU'
Если такая машина уже существует увидим
Failed to set password for machine account (NT_STATUS_ACCESS_DENIED)
Failed to join domain !
Если будет такая ошибка содержащая что то про principal name, а в AD появится учетка, но со знаком красного крестика значит смотри и проверяй /etc/hosts
При рассинхронизации времени с DC возможно появление ошибки из-за несовпдаения времени на DC и на workstation
Перегрузитесь для синхронизации времени с DC и повторно попытайтесь ввести в домен Ubuntu 7.10
ВСЕ ! ПК в домене.
Дальше
настраиваем PAM . PAM это подключаемые модули авторизации.
То есть любое приложение которое принимает пароль дальше передает его системе PAM на проверку, а та выдает только ответ пустить или нет. Привожу рабочий текст.
1. Текст /etc/pam.d/
common-auth# /etc/pam.d/
common-auth - authentication settings common to all services
auth required pam_mount.so
auth optional pam_group.so
auth sufficient pam_unix.so nullok_secure use_first_pass
auth sufficient pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE
debugauth required pam_deny.so
Опция
debug нужна для отладки. Сыплет лишними данными в /var/log/auth.log
Полезно при проблемах, а так можно ее не ставить.
Первая строка "auth required pam_mount.so" принимает пароль.
Опция required указывает на обязательность этого модуля.
Если он будет провален по каким то причинам PAM даст ответ "не пускать"
Дальше идет модуль pam_group.so то что он optional указывает на неважность выполнения этого модуля для общего ответа. То есть будет ли выполнен pam_group корректно или нет - неважно.
Дальше идут модули авторизации для локальных учеток pam_unix.so и для доменных pam_winbind.so
В моем конфиге пароль принимет pam_mount поэтому в модулях, которые принимают пароль указана опция use_first_pass, если ее не указать, то пароль придется вводить вручную несколько раз. Опция sufficient работает так, что положительный ответ любого из модулей авторизует пользователя, а отрицательный ответ одного из них не играет роли. Зато отрицательный ответ обоих будет обломом.
Например входит локальный пользователь модуль unix даст ответ ДА, winbind не найдет в домене такой учетки и даст ответ НЕТ (или найдет учетку, но пароли не совпадут). Здесь надо предупредить, что неверные попытки авторизоваться по существующей учетке в домене приведут к ее блокировке. Мое мнениие, что стоит избегать совпадения имен учеток на самом ПК и в домене.
Последний модуль обязателен и в ЛЮБОМ случае отказывает во входе. Если дело дошло до него значит все плохо и никто из модулей не сказал ДА.
Pam_group нужен для вытягивания из домена групп в которые он входит.
Так же в моей конфигурации winbind авторизуется по Kerberos посему никакие kerberos пакеты мы не ставили. Билет пользователь получает при входе автоматически и билет кербероса кешируется в файлике.
2. /etc/pam.d/
common-accountaccount sufficient pam_winbind.so
account required pam_unix.so
3. /etc/pam.d/
common-passwordpassword sufficient pam_unix.so nullok obscure md5
password sufficient pam_winbind.so
файл common-password начинает работать когда приходит время менять пароль (принудительная смена пароля по истечению срока) или когда запускается утилита для смены пароля passwd, например.
4. /etc/pam.d/
common-sessionsession required pam_winbind.so
session required pam_unix.so
#session required pam_mkhomedir.so umask=0022 skel=/etc/skel
session optional pam_foreground.so
ВНИМАНИЕ ! здесь я закомментировал модуль для создания домашнего каталога пользователя по той причине, что домашняя папка может создана быть на сетевом ресурсе (у меня это так), а pam_mount еще не выполнен.
Если у вас локально лежат профиля пользователей. На том же ПК где и логин раскомментируйте строку.
5. etc/pam.d/
sudo #Надо чтобы работало нормально gksu
#%PAM-1.0
auth sufficient pam_winbind.so
auth sufficient pam_unix.so use_first_pass
auth required pam_deny.so
@include common-account
Файл sudo работает при запуске утилиты sudo или при попытке запустить любое из административных приложений в GNOME (KDE не испытывал).
Обеспечивает нормальную работу Synaptic и прочих подобных приложений выдающих табличку на пароль для административных действий.
6. /etc/pam.d/
gdm#%PAM-1.0
auth requisite pam_nologin.so
auth required pam_env.so
@include common-auth
@include common-account
session required pam_limits.so
@include common-session
#session required pam_mount.so use_first_pass
@include common-pammount
#строка нужна для создания
#домашней папки после монтирования шары !!! создать папку в сетевой шаре до монтирования #не выйдет будет ошибка.
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
@include common-password
А вот файл указующий в каком порядке вызывать авторизационные скрипты и авторизовывать пользователя входящего через графический GDM интрефейс. Как видите тут строка создания домашней папки идет после common-pammount то есть после монтирования сетевого ресурса с файл сервера w2k3
Тем у кого профиль лежит на рабочей станции эта строку рекомендуется поместить в
/etc/pam.d/common-sessionСтроки для keyring я убрал ибо не пользуюсь им.
7. А теперь вернемся к модулю перечисления групп pam_group из файла etc/pam.d/common-auth
У нас есть возможность включить доменного пользователя в те или иные ЛОКАЛЬНЫЕ группы ubuntu станции. Таким образом мы можем управлять правами пользователя домена на локальные ресурсы. Подключение флешек, аудио устройства, сканеры и т.д.
И у модуля есть файл конфигурации. Я привожу его в сокращенном виде. Рекомендую поглядеть оригинал там много образцов и показаны интересные вещи.
mcedit /etc/security/
group.conf# the syntax of the lines is as follows:
#
# services;ttys;users;times;groups
#для пользователей.
*;*;*;Wk0900-2200;adm,audio,scanner,lpadmin
#для админов.
*;*;usysop;Al0000-2400;adm,audio,scanner,cdrom,floppy,plugdev,admin,dip,video,netdev,lpadmin,powerdev
*;*;admin-domena;Al0000-2400;adm,audio,scanner,cdrom,floppy,plugdev,admin,dip,video,netdev,lpadmin,powerdev
Первый параметр сервис, для нас это любой будет, второй терминал (консоль или терминал),
Третий это имя пользователя домена!, четвертый это разрешенное время входа для этого пользователя. Пятый параметр это локальные группы. Членство в группе admin дает право на sudo
В данном случае пользователи имеют право ставить принтера, и пользоваться локальными ресурсами ПК на полную катушку.
У меня есть подозрение, что из-за того что модуль pam_group грузится с опцией
optional ограничение по времени работать не станет, тогда для ограничения входа по времени модулую скорее всего нужно будет поставить вместо
optional required в
common-auth8. Добавить в файл след строку, если нужно монтировать сетевые ресурсы /etc/security/pam_mount.conf
## СТрока монтирования сетевой папки USERS с win2k3 сервера win2003
volume * cifs win2003 users /home/DOMAIN id=&,iocharset=utf8,codepage=cp866,dmask=0700,fmask=0700 - -
Эта строка нужна тем кто хранит профиль пользователя на сервере или может служить примером монтирования сетевых ресурсов.
те кто хранит файл профили локально могут пункт 8 опустить. В этом файле есть опция
debug она помогает выяснить проблемы с монтированием папок.
информация сыпется в /var/log/auth.log
9. Файл очень важен /etc/
nsswitch.confpasswd: compat winbind
group: compat winbind
shadow: compat
hosts: files dns
networks: files dns
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: files winbind
10. К сожалению в 7.10 появилась неприятная вещь. Вход в домен работает только через пять минут после появления графического приглашения.
Скорее всего это связано с тем, что winbind стартует до поднятия сетевого интерфейса и не может получить полноценную информацию о домене. Симптомы: Рабочая станция либо просто тупо не пускает хотя имя и пароль верные или еще при этом пишет что то типа NO_LOGON_SERVERS
Лекарство - создаем скрипт перестартующий winbind после поднятия сети.
Делаем файл
/etc/network/if-up.d/winbr
#!/bin/sh
/etc/init.d/winbind restart
И присваиваем ему права запуска.
chmod +x /etc/network/if-up.d/winbr
11. Удаление ненужных пакетов. Эти сервисы глючат при сетевом монтировании домашней папки, оставляя к моменту размонтирования открытыми файлы из-за чего размонтирование либо не проходит либо некорректно проходит.
sudo apt-get -y remove compiz-core tracker
после удаления Кампиза пропадает заголовок у окон. Лечится запуском
"Система – параметры Внешний Вид" и попыткой перестановки на вкладке Визуальные эффекты на
Обычные эффекты. После чего система выдаст сообщение об ошибке и восстановит нормальный вид окон.
12. Проблемы с административными права на рабочих станциях у доменных учеток.
Несмотря на то что по команде id видно что доменная учетка состоит в группе admin
Команда sudo проходит с ошибкой
Проблема появилась только в 7.10
Лечится редактированием /etc/sudoers
Туда надо добавить либо пользователя домена либо группу домена
Например так
# User privilege specification
root ALL=(ALL) ALL
domain-user ALL=(ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
%support ALL=(ALL) ALL
Здесь support и domain-user доменная группа и пользователь.
sudoers редактируется через visudo
настройка окончена ! У меня все это чудо упаковано в файл и развертывание получается быстрым. Однако сначала я специально ставил все машины вручную, чтобы лучше понять взаимодействие и саму ubuntu. Надеюсь мое руководство сэкономит вам время и силы. Добавления и исправления приветствуются.
для проверки работы winbind есть утилита wbinfo
ПРимеры ключей для проверки работы winbind с доменом
# wbinfo -u
# wbinfo -g
#wbinfo -t
Кто желает может использовать для получения билетов Кербероса пакеты krb5-user libpam-krb5 см. первую страницу. Я лично отказался от них в пользцу простоты.
При обновлении Ubuntu могут сыпаться ошибки вроде того что "не могу обновить fonts кеш" это следствие неверной установки времени. Гррафическая установка ubuntu сдвигает время при установке системы и время создания файлов получается будущее, потому утилита обновления и ругается. исправляется временным переводом часов вперед.
Удачи Вам! Исаев Р.А.
Копия руководства.
http://rapidshare.com/files/75596453/Ubuntu710andAD.pdfБлагодарности выражаю MBear, и другим участникам помогавшим мне в этом трудном деле