Я использую сервер Ubuntu 10.04.
[Edit] С тех пор я протестировал этот полный выпуск Сервер Ubuntu 10.04 (21 мая 2010 г.).
Я настроил свой Сервер Ubuntu 10.04 LTS находясь в сети Windows, для аутентификации логинов с использованием активного каталога, затем смонтируйте общий ресурс Windows, который будет служить там домашним каталогом.
Вот что я сделал, начиная с начальной установки Ubuntu.
Получать обновления
# sudo apt-get update && sudo apt-get upgrade
Установите SSH-сервер (sshd
)
# sudo apt-get install openssh-server
Некоторые утверждают, что вам следует «заблокировать sshd», отключив вход в систему с правами root. Я полагаю, если вы достаточно умны, чтобы взломать сеанс ssh для пароля root, вам, вероятно, не помешает добавление PermitRootLogin no
в /etc/ssh/sshd_config
файл. Если ваш параноик или нет, просто не убежден, отредактируйте файл или попробуйте следующее:
# (grep PermitRootLogin /etc/ssh/sshd_config && sudo sed -ri 's/PermitRootLogin ).+/\1no/' /etc/ssh/sshd_conifg) || echo "PermitRootLogin not found. Add it manually."
Установите необходимые пакеты
# sudo apt-get install winbind samba smbfs smbclient ntp krb5-user
Выполните базовую очистку сети в рамках подготовки к будущим конфигурациям пакетов.
Определите свое доменное имя Windows, имя DNS-сервера и IP-адрес для активного сервера каталогов (для самбы). Для удобства я установил переменные среды для домена Windows и DNS-сервера. Для меня это было (мой IP-адрес AD был 192.168.20.11):
# WINDOMAIN=mydomain.local && WINDNS=srv1.$WINDOMAIN && WINDNS_IP=192.168.20.11
Если вы хотите выяснить, какой у вас домен и DNS-сервер (я был подрядчиком и не знал сети), ознакомьтесь с этим полезным ссылка.
Нам нужно окрестить ящик Linux в новой сети, это делается путем редактирования файла хоста (замените DNS на полное доменное имя Windows DNS):
# sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts
Мы также должны сообщить будущим установленным службам, где они могут найти своего лидера: в некоторых сетях будут службы поиска имен netbios, но на всякий случай добавьте явную запись в свой /etc/hosts
файл, в моей конфигурации я добавил запись в третьей (3) строке:
# sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts
Процессы аутентификации и обмена файлами для компьютеров с Windows и Linux должны согласовываться с часами. Сделайте это с помощью службы NTP, а в серверной версии Ubuntu служба NTP устанавливается и настраивается с помощью один (1) NTP sever. Добавьте свой перед Ubuntu (или замените его полностью). В сети, к которой я присоединился, был DNS-сервер, обслуживающий службу NTP.
# sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
Перезапустите демон NTP:
# sudo /etc/init.d/ntp restart
Конфигурация Kerberos.
Следующие ниже инструкции не следует воспринимать буквально: значения для MYDOMAIN.LOCAL
и srv1.mydomain.local
необходимо заменить на то, что подходит для вашей сети, когда вы редактируете файлы, но обратите внимание, что там, где используется ПРОПИСНЫЙ РЕГИСТР, необходим ПРОПИСНЫЙ регистр.
Если во время apt-get install
Kerberos вы смогли правильно ответить на вопрос о "домене по умолчанию", тогда хорошо, иначе вам придется сделать следующее.
Отредактируйте (ранее установленный выше) /etc/krb5.conf
файл.
Найти [libdefaults]
раздел и измените пару ключ-значение:
[libdefaults]
default_realm = MYDOMAIN.LOCAL
Добавьте следующее в [realms]
раздел файла:
MYDOMAIN.LOCAL = {
kdc = srv1.mydomain.local
admin_server = srv1.mydomain.local
default_domain = MYDOMAIN.LOCAL
}
Добавьте следующее в [domain_realm]
раздел файла:
.mydomain.local = MYDOMAIN.LOCAL
mydomain.local = MYDOMAIN.LOCAL
Хороший тест на этом этапе - увидеть, выдаст ли ваш контроллер AD вам билет Kerberos. Это не обязательно, но у некоторых из вас может закружиться голова:
# kinit <some_windows_domain_user>
Затем, чтобы увидеть билет:
# klist
Вы увидите информацию о кеше билетов, истечении срока действия и продлении. Как только головокружение утихнет, вы можете выпустить / уничтожить билет:
# kdestroy
Настроить самбу.
Согласно следующему: Бывают случаи, когда CIFS не может использоваться или лучше выбрать другую сетевую файловую систему. Если для дополнительной безопасности требуется поддержка аутентификации Kerberos (krb5 / SPNEGO), то вместо cifs необходимо использовать smbclient или smbfs Samba.
Увы, cifs
Поддержка в ядре для ubuntu 10.04 (на основе версии ядра 2.6.32.9) находится в версии 1.61, и, согласно документации ядра, экспериментальная реализация Kerberos существует с версии 1.54.
Итак, вот вы где. Я понятия не имею, если cifs
будет работать, поэтому я даю вам конфигурацию самбы:
Заменить /etc/samba/smb.conf
(помните, я работал с чистым дистрибутивом Ubuntu, поэтому я не беспокоился о том, чтобы что-нибудь сломать):
[global]
security = ads
realm = MYDOMAIN.LOCAL
password server = 192.168.20.11
workgroup = MYDOMAIN
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/%U
template shell = /bin/bash
client use spnego = yes
client ntlmv2 auth = yes
encrypt passwords = yes
winbind use default domain = yes
restrict anonymous = 2
Запускать и останавливать различные службы.
# sudo /etc/init.d/winbind stop
# sudo service smbd restart
# sudo /etc/init.d/winbind start
Настройте аутентификацию.
Отредактируйте /etc/nsswitch.conf
. Мне удалось запустить следующую команду, чтобы получить то, что мне нужно:
# sed -ri 's/(compat)/\1 winbind/' /etc/nsswitch.conf
Вот содержание моего /etc/nsswitch.conf
файл:
passwd: compat winbind
group: compat winbind
shadow: compat winbind
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
Запускать и останавливать различные службы.
# sudo /etc/init.d/winbind stop
# sudo service smbd restart
# sudo /etc/init.d/winbind start
Присоединяем компьютер к домену. Я не уверен, что это необходимо; особенно из-за опции безопасности в smb.conf
файл (security = ads
). Возможно, кто-то сможет это взвесить ...
# sudo net ads join -U any_domain_user_account
Вы можете получить ошибку DNS update failed!
, но вы будете присоединены к домену. Если вы получаете сообщение об ошибке, что не можете найти сервер, ваши записи DNS необходимо изменить. Во время установки Ubuntu сервер имен часто указывает на ваш шлюз: большинство маршрутизаторов выполняют службу DNS. Лучшая практика для администрирования сервера Windows заключается в том, что ADC также должен запускать DNS. В моем случае мой /etc/resolve.conf
выглядит так:
nameserver 192.168.20.11
nameserver 8.8.8.8
В 8.8.8.8
это Google DNS, довольно надежная резервная копия на случай, если Windows выйдет из строя.
На этом этапе я мог войти в систему (возможно, после перезагрузки), домашних каталогов не существовало, но я мог войти.
Установка CIFS при входе в систему
Этот следующий шаг стал для меня изюминкой; Я не хотел брать на себя ответственность за резервное копирование всех рабочих каталогов, а система, на которой должна была работать Ubuntu, вызывала подозрения с точки зрения надежности. Выполнив следующие действия, пользователи могут войти в систему и увидеть свой каталог пользователей Windows автоматически.
Загрузите pam_mount
модуль:
# sudo apt-get install libpam-mount
Я хотел, чтобы точка монтирования была в традиционном /home/<user>
расположение: эта часть настраивается /etc/samba/smb.conf
файл (template homedir = /home/%U
). Но мне это нужно, чтобы детализировать общий ресурс и указать на их собственный каталог Windows. Это достигается путем редактирования /etc/security/pam_mount.conf.xml
файл (который, несмотря на намерение, XML не человек читаемый):
Добавьте следующее в /etc/security/pam_mount.conf.xml
и изменить по своему усмотрению:
<volume
user="*"
server="srv1.mydomain.local"
path="UserShares"
mountpoint="home"
fstype="cifs"
/>
<cifsmount>mount -t cifs //%(SERVER)/%(VOLUME)/%(USER) %(MNTPT)/%(USER) -o "user=%(USER),uid=%(USERUID),gid=%(USERGID)%(before=\",\" OPTIONS)"</cifsmount>
Из-за моей глупой точки монтирования мне также пришлось добавить эту строку:
<umount>umount %(MNTPT)/%(USER)</umount>
И чтобы каталоги пользователей (для точки монтирования) создавались автоматически, найдите строку и сделайте так:
<mkmountpoint enable="1" remove="false" />
В remove="false"
bit очень важен: если он установлен в true, pam_mount.so
пытается удалить точку монтирования каталога, что невозможно, если пользователь входил в систему несколько раз. В этом случае вы получите множество случайных монтировок в вашей системе.
pam_mount.so
по-прежнему не выполняет обещанного. В нынешнем виде крепления продолжают накапливаться, а домашние каталоги не создаются. Где-то между этим и предыдущим выпуском Beta 2 сервера 10.04 он работал. Однако я не могу воссоздать это.
А пока при создании каталога я полагаюсь на pam_mkhomedir.so
, и вставил линию непосредственно перед pam_mount.so
линия для размещения.
Так и не решил проблему множественного монтажа. Но пока pam_mount.so
исправлено, вот что у меня в /etc/pam.d/common-session
файл:
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session required pam_unix.so
session optional pam_winbind.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
session optional pam_mount.so
Это оно. У меня это сработало, и я надеюсь, что вы сочтете это полезным.
Были рассмотрены многочисленные ресурсы, чтобы я мог это понять. Вот краткий список (некоторые из этих ссылок указывают на мои собственные вопросы по теме):