Содержание
- Подключение к домену Windows с компьютера под управлением Linux
- Как Линукс подключить к удаленному рабочему столу win2003
- Re: Как Линукс подключить к удаленному рабочему столу win2003
- Re: Как Линукс подключить к удаленному рабочему столу win2003
- Re: Как Линукс подключить к удаленному рабочему столу win2003
- Re: Как Линукс подключить к удаленному рабочему столу win2003
- Re: Как Линукс подключить к удаленному рабочему столу win2003
- Re: Как Линукс подключить к удаленному рабочему столу win2003
- Re: Как Линукс подключить к удаленному рабочему столу win2003
- Astra Linux 1.7 и Windows Server 2003 — доступ к шаре.
- max51_fkp
- max51_fkp
- Linux в домене Active Directory
- Содержание
- Общая информация
- Проверка требований
- Установка Samba
- Настройка Samba
- Проверка работы и отладка
- Дополнительная настройка
- Доступ к Samba из Windows 7 и 2008 r2
- Работа над ошибками
- Winbind не запускается
- Ошибка получения билета Kerberos
Большинству пользователей Linux и в голову не приходит, что они могут подключаться со своих компьютеров к домену Microsoft Windows. До сих пор это было невозможно. Приносить на работу ноутбуки под управлением Linux не запрещалось, но работать на них в домене было нельзя. Однако теперь, после очередного обновления целого ряда дистрибутивов Linux, такая возможность появилась, причем подключиться к домену Windows оказывается не так уж сложно — придется только немного отредактировать конфигурационные файлы.
В этой статье я расскажу, как подключиться к домену Windows с компьютера под управлением Linux при помощи утилиты Likewise-Open .
Скачать Likewise-Open можно с официального сайта . Выберите версию, подходящую для вашего дистрибутива. Если вы предпочитаете работать с графическим интерфейсом — выбирайте GUI-вариант.
Утилита распространяется в виде скомпилированного исполняемого двоичного файла. Чтобы ее установить, откройте окно терминала, перейдите в каталог, где хранится скачанный файл Likewise-Open и выполните следующую команду:
Затем выполните еще одну команду с правами администратора (используйте su или sudo).
Для GUI-приложения команда выглядит иначе:
XXX здесь — номер версии, YYY — архитектура вашего компьютера, а ZZZ — тип скачанного файла. Если вы выбрали GUI-приложение, завершить процесс установки вам поможет простой мастер.
Для использования этой утилиты на компьютере должен быть установлен компонент winbind. Если его нет, установите его с помощью Менеджера программ или командой sudo apt-get install winbind.
Редактирование файла «/etc/hosts»
Теперь нужно добавить данные контроллера домена в конфигурационный файл «/etc/hosts» в формате «IP_ADDRESS FDQN» (без кавычек), где «IP_ADDRESS» — это реальный IP-адрес контроллера домена, а «FDQN» — полностью определенное имя домена.
Это самый сложный момент: нужно настроить KRB5 и добавить в конфигурационный файл правильные сведения об области в следующем формате:
В этот раздел нужно добавить адрес своего контроллера домена. Учтите, что заглавные буквы используются здесь не случайно — без них конфигурация работать не будет.
После этого нужно отредактировать еще пару разделов. Во-первых, небольшой раздел над указателем [realms]. Если в файле «krb5.conf» раздела [libdefaults] нет, добавьте его:
Во-вторых, раздел [domain_realm]. Добавьте в него следующий текст:
На этом настройка KRB5 закончена.
Откройте файл «/etc/nsswitch» и добавьте в него следующие строки:
Возможно, сами строки в файле уже есть, но без «lsass». Если так — просто допишите «lsass» (без кавычек) в каждую строку.
Подключение к домену
Прежде чем запускать GUI-утилиту Likewise-Open для подключения к домену, необходимо установить сертификат на своем хост-компьютере. Для этого выполните следующую команду:
где ADMIN_ACCOUNT — имя учетной записи администратора на контроллере домена, а DOMAIN.INTERNAL — домен, к которому вы хотите подключиться. Для выполнения команды нужно ввести пароль от административной учетной записи. Чтобы убедиться, что сертификат установлен, выполните команду klist.
После этого можно запускать утилиту для подключения к домену. Для этого выполните команду sudo domainjoin-gui.
Указав необходимые регистрационные данные, нажмите кнопку «Подключиться к домену» (Join Domain). После успешного подключения выйдите и снова войдите в систему. Учтите, что имя пользователя в домене будет иметь формат «DOMAINusername», и не забывайте, что имя пользователя в домене — это не то же самое, что имя пользователя на локальном компьютере.
Со времени своего возникновения Linux прошел большой путь, и возможность подключения к доменам Windows недвусмысленно свидетельствует о зрелости платформы. И хотя на первый взгляд, процедура выглядит довольно утомительно, подключаться посредством Samba еще труднее.
Автор: Jack Wallen
Перевод SVET
Оцените статью: Голосов
Источник
Как Линукс подключить к удаленному рабочему столу win2003
Хочу вот что сделать! В офисе поднять сервак с win2003, на рабочие компы поставить Линукс и работать на сервере через удаленый рабочий стол! Вопрос в том вобще ктонибудь пробовал это делать и как это вобще нормально работает! И еще вопрос как сделать так чтобы при загрузке линукса он сразу же подключался к удаленному столу? Кто что посоветует буду рад! Зарание спосибо!
Re: Как Линукс подключить к удаленному рабочему столу win2003
Я сделал VNC с ssh форвардингом, хотя наверное можно и проще. Пароль сохраняется v
/.vnc/passwd, а чтобы сразу подключался — прописать его в local.start
Re: Как Линукс подключить к удаленному рабочему столу win2003
Так круто! А теперь можно для начинающих(ТОЕСТЬ ПОЧТИ ДЛЯ ТУПЫХ) сли можно по подробней!
Re: Как Линукс подключить к удаленному рабочему столу win2003
Хотя, если в офисе, ssh не нужен. ставь просто VNC Server на win и VNC Viewer на LIN и сделай доступ только из локалки
Re: Как Линукс подключить к удаленному рабочему столу win2003
Чё совсем с ума посходили?:)
И как вы себе это представляете? Как например 15 пользователей будут одновременно бюзать один рабочий стол и одну мышку/клавиатуру?
На линуксе ставишь rdesktop и (опционально) tsclient.
У rdesktop команда подключения к терминальному сервису будет выглядеть примерно так:
rdesktop -T192.168.0.1 -uusername -g1280x960 -rsound:off -k en-us 192.168.0.1
Re: Как Линукс подключить к удаленному рабочему столу win2003
Правильно глаголишь, а лучше все-таки на win2003 поднять ssh-сервер и коннектиться к нему, а rdesktop пустить по форвардингу портов. Так не надо будет открывать кучу портов на хосте (если тебе понадобится еще что-нибудь помимо удаленного рабочего стола). Ну и на win2003 сервер терминалов ессесно.
Re: Как Линукс подключить к удаленному рабочему столу win2003
> Так круто! А теперь можно для начинающих(ТОЕСТЬ ПОЧТИ ДЛЯ ТУПЫХ) сли можно по подробней!
Для начинающих есть документация и google.ru 🙂
Re: Как Линукс подключить к удаленному рабочему столу win2003
Источник
Astra Linux 1.7 и Windows Server 2003 — доступ к шаре.
max51_fkp
New member
Ситуация такая. Есть АРМ с AL 1.7 в Windows домене (DC 2012) и есть файл-сервер на Windows Server 2003 в том же домене. При попытке открыть расшаренную папку, которая расположена на 2003, комп с астрой показывает белый экран. При открытии таких же папок находящихся на 2008 R2 и 2012 всё работает корректно.
Подскажите, как сделать так, чтобы всё нормально открывалось и в случае с 2003? Спасибо.
P.S.
Я так понимаю, что в астре должна быть включена поддержка smb v1
New member
max51_fkp
New member
Огромное спасибо за комментарий! Я рассматриваю возможность переезда Win2003 на чтот другое, например, Win2012, но это займет некоторое время, т.к.:
а) это железка подключенная по фибре через brocade к сановской полке;
б) на нём 100500 хаотичных шар, которые растут, как грибы;
в) все папки каждого отдела организации лежат там и монтируются через GPO;
г) на нём все рабочие столы сотрудников, которые работают на RDS + всякие папки типа «мои документы» и т.д. и т.п.
Это в общих чертах. Так что буду копать в сторону второго варианта:
«поставить на Win2003 реализацию FTP/NFS/иного сервиса разделяемого файлового обмена и через него научить юзеров взаимодействовать с ресурсами из-под ALSE 1.7.»
Ну или подключать один из гипервизоров к полке и поднимать на нём виртуалку с тем же Win2012, но тут проблема в отсутствии FC-сетевух))
Источник
Linux в домене Active Directory
Содержание
Общая информация
Если вам нужно просто предоставить сетевой доступ к ресурсам Linux компьютера, то смотрите статью Samba.
В этой статье мы опишем как подключить Linux компьютер к домену под управлением Microsoft Active Directory и сделать из него файловый сервер.
После выполнения этой инструкции мы будем иметь в сети файловый сервер под управлением ОС Линукс, входящий в домен Windows 2003 и ничем не отличающийся от файлового сервера под Windows. Пользователи домена смогут обращаться к его ресурсам под своими учётными записями. Доступ регулируется группами домена AD.
По этой инструкции настраивались Debian (4, 5), Ubuntu 9.10, создавалась она на основе официальной документации и многих рекомендаций и инструкций из Интернета. Остальные Linux’ы настраиваются сходным образом.
Проверка требований
- Проверяем что Samba собрана с поддержкой Kerberos:
- Также проверим что поддерживается LDAP
- Для корректной работы Samba в домене Windows 2003 нужны версии MIT Kerberos version >=1.3.1. Проверим:
- Для корректной работы с Windows 2008 серверами сама Samba должна быть достаточно свежая:
Установка Samba
- Устанавливаем сервер и клиент samba.
При настройке krb5-config лучше указывать IP адреса контроллеров домена, а не их DNS имена.
Настройка Samba
- Для подключения к домену Active Directory удобно использовать утилиту Likewise-Open.
- Для администрирования Samba удобно использовать SWAT или webmin, которые предоставляют веб интерфейс. Попасть на него можно по адресу http://server_address:901 и https://server_address:10000 соответственно, указав для соединения пользователя root. Но будьте осторожны — он полностью переписывает smb.conf и некоторые параметры может просто игнорировать. Лучше предварительно сделать резервную копию файла. Я сначала использовал SWAT, а затем дорабатывал конфигурационный файл /etc/samba/smb.conf руками. Вот, что осталось у меня не закоментированным (принтеры к этому серверу не подключены):
Мы описали два общих каталога:
- backup — доступ имеют только пользователи входящие в группу BackupGroup в Active Directory. Они могут создавать и удалять файлы/каталоги
- distrib — доступ имеют все пользователи входящие в группу DistribGroup в Active Directory
В приведённой конфигурации подразумевается, что eth0 — это сетевой интерфейс в локальную сеть, где домен имеет полное имя WORKGROUP.DOMAIN.LOCAL
- редактируем /etc/nsswitch:
- Проверим, что в /etc/hosts есть корректная запись для нашего сервера, также можно добавить записи для контроллеров доменов:
- Удаляем если есть (или переносим в резервные копии) файл /etc/samba/secrets.tdb и все файлы из /var/lib/samba/*.tdb
- Проверяем конфигурацию (не обязательно):
- testparm -s
В Ubunto testparm находится в пакете samba-common-bin
- Проверим как Samba-3 winbind общается с контроллером домена Active Directory посредством протокола Kerberos:
На рассхождение времени в секундах указывает строка «Server time offset: -5». Обратите внимание, что протокол Kerberos зависим от времени, и расхождение с часами контроллера домена допускается лишь незначительное, поэтому желательно настроить NTP клиент (см. статьи по настройке NTP). В Ubuntu это указывается в файле /etc/default/ntpdate:
- В Debian (и его сыновьях, таких как Ubuntu и внуках вроде Linux Mint) при установке пакета krb5-cofig сразу предлагается его настройка. Лучше всего попробовать работать с этими настройками, но если ничего предложено не было или мы хотим что-то изменить, то редактируем /etc/krb5.conf (я для более стабильной работы использовал ip адреса вместо имён серверов):
- Проверим работает ли Kerberos, постараемся получить билет и просмотреть его:
- Удалим полученный билет:
- Присоединяемся к домену:
Всё, компьютер включен в домен, что можно проверить на контроллере. Даже если после приведённых строк получили следующие:
Проверка работы и отладка
- Для удобства отладки сделаем ссылку на каталог журналов:
- Запускаем samba и winbind:
- Для проверки правильно ли подключение к домену можно посмотреть список пользователей и групп домена (не обязательно):
Если нас не понимают, то подсказываем пароль для wbinfo и смотрим: список доменов в сети, информацию о домене WORKGROUP, список пользователей и групп домена:
- Проверяем, как работает NSS. Команда getent показывает инфо о пользователе, который может быть как в домене, так и юниксовый:
- Теперь можно использовать ресурсы на линукс-сервере, на которые мы дали доступ, как обычные доменные ресурсы.
Дополнительная настройка
- Можно также сопоставить (но это не обязательно) локальные учётные данные и из домена Windows. Для сопоставления пользователей редактируем файл /etc/samba/smbusers.conf:
- для сопоставления (мапирования от англ. Map) групп домена и групп UNIX выполняем:
- После того как всё отлажено, можно понизить уровень записи в журнал до «1». В /etc/samba/smb.conf:
Доступ к Samba из Windows 7 и 2008 r2
Начиная с этих версий параметры авторизации у MS поменялись. Скорее всего Samba вскоре это учтёт, а пока подружить системы можно изменив на Win7 свойства сетевой безопасности:
Пуск — Панель управления — Администрирование — Локальная политика безопасности — Локальные политики — Параметры безопасности
- Сетевая безопасность: минимальная сеансовая безопасность для клиентов на базе NTLM SSP — убрать галочку с «Требовать 128-битное шифрование». Таких параметра два — выполнить для обоих
- Сетевая безопасность: уровень проверки подлинности LAN Manager — выбрать в списке пункт «Отправлять LM- и NTML-ответы»
Работа над ошибками
Winbind не запускается
При запуске Samba обнаруживаем, что winbind не запустился:
В журнале log.winbindd обнаруживаем запись:
Видим, что добавлен «встроенный домен» (BUILTIN) и домен «название компьютера» (STORAGE), подключиться к домену AD не удалось.
Решение: Переподключить компьютер в домен. Удалять придётся с самого контроллера, т.к. комадна net ads leave скорее всего не поможет.
Ошибка получения билета Kerberos
При попытке получить билет Kerberos получили:
Решение: указать имя домена в другом регистре. Скорее всего нужны все заглавные
Источник
Здравствуйте. Не знаю где создавать подобные темы и в тг не хотелось писать столь много всего. Никак не хотят дружить рабочая станция с сервером. Делал все шаги по документации Не знаю что делать уже. В логах (на сколько я их смог понять) идёт вот что при попытке подключения:
мая 13 16:43:13 mku2blinux1 systemd-sysv-generator[8692]: SysV service '/etc/rc.d/init.d/pppoe' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
мая 13 16:43:13 mku2blinux1 systemd-sysv-generator[8692]: SysV service '/etc/rc.d/init.d/rawdevices' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
мая 13 16:43:13 mku2blinux1 systemd-sysv-generator[8692]: SysV service '/etc/rc.d/init.d/openct' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
мая 13 16:43:13 mku2blinux1 systemd-sysv-generator[8692]: SysV service '/etc/rc.d/init.d/ethtool' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
мая 13 16:43:13 mku2blinux1 systemd-sysv-generator[8692]: SysV service '/etc/rc.d/init.d/openvpn' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
мая 13 16:43:13 mku2blinux1 systemd-sysv-generator[8692]: SysV service '/etc/rc.d/init.d/cryptdisks.functions' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
мая 13 16:43:13 mku2blinux1 systemd[1]: /lib/systemd/system/plymouth-start.service:14: Unit configured to use KillMode=none. This is unsafe, as it disables systemd's process lifecycle management for the service. Please update your service to use a safer KillMode=, such as 'mixed' or 'control-group'. Support for KillMode=none is deprecated and will eventually be removed.
мая 13 16:43:13 mku2blinux1 systemd[1]: /lib/systemd/system/pcscd.socket:5: ListenStream= references a path below legacy directory /var/run/, updating /var/run/pcscd/pcscd.comm → /run/pcscd/pcscd.comm; please update the unit file accordingly.
мая 13 16:43:13 mku2blinux1 systemd[1]: /lib/systemd/system/cups.socket:6: ListenStream= references a path below legacy directory /var/run/, updating /var/run/cups/cups.sock → /run/cups/cups.sock; please update the unit file accordingly.
мая 13 16:43:13 mku2blinux1 systemd[1]: /lib/systemd/system/sssd.service:15: PIDFile= references a path below legacy directory /var/run/, updating /var/run/sssd.pid → /run/sssd.pid; please update the unit file accordingly.
мая 13 16:43:13 mku2blinux1 systemd[1]: /lib/systemd/system/alteratord.socket:6: ListenStream= references a path below legacy directory /var/run/, updating /var/run/alteratord/.socket → /run/alteratord/.socket; please update the unit file accordingly.
мая 13 16:43:13 mku2blinux1 systemd[1]: /etc/systemd/system/anydesk.service:9: PIDFile= references a path below legacy directory /var/run/, updating /var/run/anydesk.pid → /run/anydesk.pid; please update the unit file accordingly.
« Последнее редактирование: 20.05.2022 06:36:24 от Skull »
Записан
Толпа также напоминает армию, как груда камней дом
при попытке подключения куда?
Записан
Подключаюсь к серверу Windows Server 2003.
Домен SBNEDU.LOCAL
Рабочая группа SBNEDU
Имя машины с linux mku2blinux1
Записан
Толпа также напоминает армию, как груда камней дом
Подключаюсь к серверу Windows Server 2003.
Домен SBNEDU.LOCAL
Рабочая группа SBNEDU
Имя машины с linux mku2blinux1
На Win XP и Server 2003 используется очень старая версия протокола SMB, которая из-за безопасности по умолчанию выключена.
Включить так: в файл /ext/samba/smb.conf добавить строчку:
client min protocol = NT1
« Последнее редактирование: 13.05.2022 18:07:00 от Александр Ерещенко »
Записан
Не нашёл папки ext, так полагаю у меня это etc. Добавил строку в конец /etc/samba/smb.conf
Перезагрузился и к сожалению всё равно при подключении ошибка выходит(
Файл smb при чём после попытки изменения вносит изменения такого характера, т.е. получается сервер то он видит но не хочет заводится.
#======================= Global Settings =====================================
[global]
security = ads
realm = SBNEDU.LOCAL
workgroup = SBNEDU
netbios name = MKU2BLINUX
template shell = /bin/bash
kerberos method = system keytab
wins support = no
winbind use default domain = yes
winbind enum users = no
winbind enum groups = no
template homedir = /home/SBNEDU.LOCAL/%U
idmap config * : range = 200000-2000200000
idmap config * : backend = sss
; encrypt passwords = true
; dns proxy = no
; socket options = TCP_NODELAY
; domain master = no
; local master = no
; preferred master = no
; os level = 0
; domain logons = no
; load printers = no
; show add printer wizard = no
; printcap name = /dev/null
; disable spoolss = yes
[homes]
« Последнее редактирование: 16.05.2022 15:38:12 от Лорд »
Записан
Толпа также напоминает армию, как груда камней дом
Добавил строку в конец /etc/samba/smb.conf
Ну, в листинге конфиге не видно, где у вас это добавлено.
Потом, в какой «конец» вы ее добавили? Добавлять надо в раздел
####### Authentication #######
Записан
Добавил строку в конец /etc/samba/smb.conf
Ну, в листинге конфиге не видно, где у вас это добавлено.
Потом, в какой «конец» вы ее добавили? Добавлять надо в раздел
####### Authentication #######
В этом файле вообще нет такого раздела..
добавлял в самый конец всего файла))
« Последнее редактирование: 16.05.2022 11:33:27 от Лорд »
Записан
Толпа также напоминает армию, как груда камней дом
Не нашёл папки ext, так полагаю у меня это etc. Добавил строку в конец /etc/samba/smb.conf
Да, это я опечатался.
Добавил строку в конец /etc/samba/smb.conf
Ну, в листинге конфиге не видно, где у вас это добавлено.
Потом, в какой «конец» вы ее добавили? Добавлять надо в раздел
####### Authentication #######В этом файле вообще нет такого раздела..
добавлял в самый конец всего файла))
Добавлять надо так, чтобы этот параметр оказался в секции [global], а в конце файла он может оказаться в совсем другой секции и просто проигнорируется.
ЗЫ. И перегружаться не обязательно, чтобы этот параметр для клиента стал действительным.
Записан
Вписываю его туда а как пытаюсь подключаться выходит ошибка и при просмотре smb.conf параметр стирается..
Он переместился в
# Un-comment the following and create the netlogon directory for Domain Logons
; [netlogon]
; comment = Network Logon Service
; path = /var/lib/samba/netlogon
; guest ok = yes
; writable = no
; share modes = no
; client min protocol = NT1
Но всё равно ошибка выходит(
« Последнее редактирование: 16.05.2022 15:38:21 от Лорд »
Записан
Толпа также напоминает армию, как груда камней дом
Вписываю его туда а как пытаюсь подключаться выходит ошибка и при просмотре smb.conf параметр стирается..
Он переместился в
# Un-comment the following and create the netlogon directory for Domain Logons
; [netlogon]
; comment = Network Logon Service
; path = /var/lib/samba/netlogon
; guest ok = yes
; writable = no
; share modes = no
; client min protocol = NT1
Но всё равно ошибка выходит(
Чем вы его туда вписываете?
Тут она вообще у вас закомментирована.
su —
mcedit /etc/samba/smb.conf
(вписываем строчку сразу после строки [global], сохраняем F2)
Записан
Вписываю его туда а как пытаюсь подключаться выходит ошибка и при просмотре smb.conf параметр стирается..
Он переместился в
# Un-comment the following and create the netlogon directory for Domain Logons
; [netlogon]
; comment = Network Logon Service
; path = /var/lib/samba/netlogon
; guest ok = yes
; writable = no
; share modes = no
; client min protocol = NT1
Но всё равно ошибка выходит(Чем вы его туда вписываете?
Тут она вообще у вас закомментирована.![]()
su —
mcedit /etc/samba/smb.conf
(вписываем строчку сразу после строки [global], сохраняем F2)
Я открывал комментарии и вносил изменения через pluma. К сожалению,после внесения изменений с помощью mcedit такая же байда выходит после попытки подключения к домену. Строка , которую я писал удаляется из global
Записан
Толпа также напоминает армию, как груда камней дом
Точку с запятой в начале строки не надо ставить (это и называется «закомментирована»)
Записан
Точку с запятой в начале строки не надо ставить (это и называется «закомментирована»)
Я так скинул просто показать куда вообще моя вводимая строка делась)) а вводил я в global её. Чудеса одним словом. пробовал кстати и тут снять комментарии, толку мало, в домен меня так и не пускает
Записан
Толпа также напоминает армию, как груда камней дом
Не выяснили, в какой момент изменяется файл?
Т.е. если ручками поправить файл правильным образом, сохранить и тут же посмотреть — уже изменился? Или позже после ещё какого действия? Дата-время правки?
Записан
После попытки входа в домен, а так всё корректно сохраняет
Записан
Толпа также напоминает армию, как груда камней дом
Содержание
- 1 Общая информация
- 2 Проверка требований
- 3 Установка Samba
- 4 Настройка Samba
- 5 Проверка работы и отладка
- 6 Дополнительная настройка
- 7 Доступ к Samba из Windows 7 и 2008 r2
- 8 Работа над ошибками
- 8.1 Winbind не запускается
- 8.2 Ошибка получения билета Kerberos
- 9 Полезные комманды
- 10 См. также
- 11 Cсылки
Общая информация
Если вам нужно просто предоставить сетевой доступ к ресурсам Linux компьютера, то смотрите статью Samba.
В этой статье мы опишем как подключить Linux компьютер к домену под управлением Microsoft Active Directory и сделать из него файловый сервер.
После выполнения этой инструкции мы будем иметь в сети файловый сервер под управлением ОС Линукс, входящий в домен Windows 2003 и ничем не отличающийся от файлового сервера под Windows. Пользователи домена смогут обращаться к его ресурсам под своими учётными записями. Доступ регулируется группами домена AD.
По этой инструкции настраивались Debian (4, 5), Ubuntu 9.10, создавалась она на основе официальной документации и многих рекомендаций и инструкций из Интернета. Остальные Linux’ы настраиваются сходным образом.
Для Alt Linux написана хорошая инструкция http://freesource.info/wiki/AltLinux/Dokumentacija/SambaInWin2kDomain?v=omo&
Проверка требований
- Проверяем что Samba собрана с поддержкой Kerberos:
# smbd -b | grep KRB HAVE_KRB5_H HAVE_ADDRTYPE_IN_KRB5_ADDRESS HAVE_DECODE_KRB5_AP_REQ HAVE_KRB5 HAVE_KRB5_AUTH_CON_SETUSERUSERKEY HAVE_KRB5_C_ENCTYPE_COMPARE HAVE_KRB5_C_VERIFY_CHECKSUM HAVE_KRB5_ENCRYPT_BLOCK HAVE_KRB5_ENCRYPT_DATA HAVE_KRB5_FREE_AP_REQ HAVE_KRB5_FREE_DATA_CONTENTS HAVE_KRB5_FREE_KEYTAB_ENTRY_CONTENTS HAVE_KRB5_FREE_KTYPES HAVE_KRB5_FREE_UNPARSED_NAME HAVE_KRB5_GET_PERMITTED_ENCTYPES HAVE_KRB5_GET_RENEWED_CREDS HAVE_KRB5_KEYBLOCK_IN_CREDS HAVE_KRB5_KEYTAB_ENTRY_KEY HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM HAVE_KRB5_KT_FREE_ENTRY HAVE_KRB5_LOCATE_KDC HAVE_KRB5_MK_REQ_EXTENDED HAVE_KRB5_PRINCIPAL2SALT HAVE_KRB5_PRINC_COMPONENT HAVE_KRB5_SET_DEFAULT_TGS_KTYPES HAVE_KRB5_SET_REAL_TIME HAVE_KRB5_STRING_TO_KEY HAVE_KRB5_TKT_ENC_PART2 HAVE_KRB5_USE_ENCTYPE HAVE_LIBGSSAPI_KRB5 HAVE_LIBKRB5 HAVE_MAGIC_IN_KRB5_ADDRESS HAVE_TICKET_POINTER_IN_KRB5_AP_REQ KRB5_VERIFY_CHECKSUM_ARGS
- Также проверим что поддерживается LDAP
# smbd -b | grep LDAP HAVE_LDAP_H HAVE_LDAP HAVE_LDAP_ADD_RESULT_ENTRY HAVE_LDAP_DN2AD_CANONICAL HAVE_LDAP_INIT HAVE_LDAP_INITIALIZE HAVE_LDAP_SET_REBIND_PROC HAVE_LIBLDAP LDAP_SET_REBIND_PROC_ARGS
- Для корректной работы Samba в домене Windows 2003 нужны версии MIT Kerberos version >=1.3.1. Проверим:
# dpkg -l | grep krb ii krb5-config 1.22 Configuration files for Kerberos Version 5 ii libkrb53 1.6.dfsg.4~beta1-5lenny1 MIT Kerberos runtime libraries
- Для корректной работы с Windows 2008 серверами сама Samba должна быть достаточно свежая:
# smbd -V Version 3.2.5
Установка Samba
- Устанавливаем сервер и клиент samba.
# apt-get install samba samba-client krb5-config
При настройке krb5-config лучше указывать IP адреса контроллеров домена, а не их DNS имена.
Настройка Samba
- Для подключения к домену Active Directory удобно использовать утилиту Likewise-Open.
- Для администрирования Samba удобно использовать SWAT или webmin, которые предоставляют веб интерфейс. Попасть на него можно по адресу http://server_address:901 и https://server_address:10000 соответственно, указав для соединения пользователя root. Но будьте осторожны — он полностью переписывает smb.conf и некоторые параметры может просто игнорировать. Лучше предварительно сделать резервную копию файла. Я сначала использовал SWAT, а затем дорабатывал конфигурационный файл /etc/samba/smb.conf руками. Вот, что осталось у меня не закоментированным (принтеры к этому серверу не подключены):
[global] unix charset = LOCALE realm = WORKGROUP.DOMAIN.LOCAL server string = Storage samba server interfaces = eth0 bind interfaces only = Yes security = ADS obey pam restrictions = Yes passdb backend = tdbsam passwd program = /usr/bin/passwd %u passwd chat = *EntersnewsUNIXspassword:* %nn *RetypesnewsUNIXspassword:* %nn *passwordsupdatedssuccessfully* . log level = 3 syslog = 0 log file = /var/log/samba/log.%m max log size = 100 name resolve order = lmhosts host wins bcast printcap name = CUPS local master = No domain master = No dns proxy = No ldap ssl = no panic action = /usr/share/samba/panic-action %d idmap uid = 10000-20000 idmap gid = 10000-20000 template shell = /bin/bash invalid users = root [print$] comment = Printer Drivers path = /var/lib/samba/printers [distrib] path = /data/distrib valid users = @WORKGROUPDistribGroup write list = @WORKGROUPDistribGroup read only = No create mask = 0777 directory mask = 0777 [backup] path = /data/backup valid users = @WORKGROUPBackupGroup write list = @WORKGROUPBackupGroup read only = No create mask = 0777 directory mask = 0777
Мы описали два общих каталога:
- backup — доступ имеют только пользователи входящие в группу BackupGroup в Active Directory. Они могут создавать и удалять файлы/каталоги
- distrib — доступ имеют все пользователи входящие в группу DistribGroup в Active Directory
В приведённой конфигурации подразумевается, что eth0 — это сетевой интерфейс в локальную сеть, где домен имеет полное имя WORKGROUP.DOMAIN.LOCAL
- редактируем /etc/nsswitch:
passwd: compat winbind group: compat winbind shadow: compat winbind hosts: files dns wins networks: files dns protocols: files services: files ethers: files rpc: files netgroup: files
- Проверим, что в /etc/hosts есть корректная запись для нашего сервера, также можно добавить записи для контроллеров доменов:
10.0.0.15 storage.domain.local storage 10.0.0.85 dcwg1.domain.local dcwg1 10.0.0.245 dcwg2.domain.local dcwg2
- Удаляем если есть (или переносим в резервные копии) файл /etc/samba/secrets.tdb и все файлы из /var/lib/samba/*.tdb
- Проверяем конфигурацию (не обязательно):
- testparm -s
В Ubunto testparm находится в пакете samba-common-bin
- Проверим как Samba-3 winbind общается с контроллером домена Active Directory посредством протокола Kerberos:
# net ads info LDAP server: 10.0.0.85 LDAP server name: dcwg1.workgroup.domain.local Realm: WORKGROUP.DOMAIN.LOCAL Bind Path: dc=WORKGROUP,dc=DOMAIN,dc=LOCAL LDAP port: 389 Server time: Срд, 03 Мар 2010 13:12:14 NOVT KDC server: 10.0.0.85 Server time offset: -5
На рассхождение времени в секундах указывает строка «Server time offset: -5». Обратите внимание, что протокол Kerberos зависим от времени, и расхождение с часами контроллера домена допускается лишь незначительное, поэтому желательно настроить NTP клиент (см. статьи по настройке NTP). В Ubuntu это указывается в файле /etc/default/ntpdate:
NTPSERVERS="10.0.0.85 10.0.0.245"
- В Debian (и его сыновьях, таких как Ubuntu и внуках вроде Linux Mint) при установке пакета krb5-cofig сразу предлагается его настройка. Лучше всего попробовать работать с этими настройками, но если ничего предложено не было или мы хотим что-то изменить, то редактируем /etc/krb5.conf (я для более стабильной работы использовал ip адреса вместо имён серверов):
[libdefaults] default_realm = WORKGROUP.DOMAIN.LOCAL # The following krb5.conf variables are only for MIT Kerberos. krb4_config = /etc/krb.conf krb4_realms = /etc/krb.realms kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true # #... # # The following libdefaults parameters are only for Heimdal Kerberos. v4_instance_resolve = false v4_name_convert = { host = { rcmd = host ftp = ftp } plain = { something = something-else } } fcc-mit-ticketflags = true [realms] WORKGROUP.DOMAIN.LOCAL = { kdc = 10.0.0.85 kdc = 10.0.0.245 admin_server = 10.0.0.85 } # #... # [login] krb4_convert = true krb4_get_tickets = false
- Проверим работает ли Kerberos, постараемся получить билет и просмотреть его:
# kinit administrator@WORKGROUP.DOMAIN.LOCAL Password for administrator@WORKGROUP.DOMAIN.LOCAL: # klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@WORKGROUP.DOMAIN.LOCAL Valid starting Expires Service principal 03/06/10 14:51:41 03/07/10 00:51:47 krbtgt/WORKGROUP.DOMAIN.LOCAL@WORKGROUP.DOMAIN.LOCAL renew until 03/07/10 14:51:41
- Удалим полученный билет:
# kdestroy
- Присоединяемся к домену:
# net ads join -UAdministrator Administrator's password: Using short domain name -- WORKGROUP Joined 'STORAGE' to realm 'WORKGROUP.DOMAIN.LOCAL'
Всё, компьютер включен в домен, что можно проверить на контроллере. Даже если после приведённых строк получили следующие:
[2010/03/06 15:04:00, 0] libads/kerberos.c:332(ads_kinit_password) kerberos_kinit_password STORAGE$@WORKGROUP.DOMAIN.LOCAL failed: Client not found in Kerberos database DNS update failed!
Проверка работы и отладка
- Для удобства отладки сделаем ссылку на каталог журналов:
# ln -s /var/log/samba /etc/samba/log
- Запускаем samba и winbind:
# /etc/init.d/samba start # /etc/init.d/winbind start
- Для проверки правильно ли подключение к домену можно посмотреть список пользователей и групп домена (не обязательно):
# wbinfo -u # wbinfo -g
Если нас не понимают, то подсказываем пароль для wbinfo и смотрим: список доменов в сети, информацию о домене WORKGROUP, список пользователей и групп домена:
# wbinfo --set-auth-user=root%root_password # wbinfo --all-domains # wbinfo -D WORKGROUP # wbinfo -t
- Проверяем, как работает NSS. Команда getent показывает инфо о пользователе, который может быть как в домене, так и юниксовый:
# getent passwd | grep pm pm:x:15000:15000::/home/WORKGROUP/pm:/bin/false # getent passwd | grep pavel pavel:x:500:500:Pavel Malahov:/home/pavel:/bin/bash
- Теперь можно использовать ресурсы на линукс-сервере, на которые мы дали доступ, как обычные доменные ресурсы.
Дополнительная настройка
- Можно также сопоставить (но это не обязательно) локальные учётные данные и из домена Windows. Для сопоставления пользователей редактируем файл /etc/samba/smbusers.conf:
root = admin administrator
- для сопоставления (мапирования от англ. Map) групп домена и групп UNIX выполняем:
# net groupmap modify ntgroup="Domain Admins" unixgroup=root # net groupmap modify ntgroup="Domain Users" unixgroup=users # net groupmap modify ntgroup="Domain Guests" unixgroup=nobody
- После того как всё отлажено, можно понизить уровень записи в журнал до «1». В /etc/samba/smb.conf:
log level = 1
Доступ к Samba из Windows 7 и 2008 r2
Начиная с этих версий параметры авторизации у MS поменялись. Скорее всего Samba вскоре это учтёт, а пока подружить системы можно изменив на Win7 свойства сетевой безопасности:
Пуск — Панель управления — Администрирование — Локальная политика безопасности — Локальные политики — Параметры безопасности
- Сетевая безопасность: минимальная сеансовая безопасность для клиентов на базе NTLM SSP — убрать галочку с «Требовать 128-битное шифрование». Таких параметра два — выполнить для обоих
- Сетевая безопасность: уровень проверки подлинности LAN Manager — выбрать в списке пункт «Отправлять LM- и NTML-ответы»
Работа над ошибками
Winbind не запускается
При запуске Samba обнаруживаем, что winbind не запустился:
# /etc/init.d/winbind status * winbind is not running
В журнале log.winbindd обнаруживаем запись:
[2010/03/06 13:54:34, 2] winbindd/winbindd_util.c:235(add_trusted_domain) Added domain BUILTIN S-1-5-32 [2010/03/06 13:54:34, 2] winbindd/winbindd_util.c:235(add_trusted_domain) Added domain STORAGE S-1-5-21-3963871611-1338977097-196861091 [2010/03/06 13:54:34, 0] winbindd/winbindd_util.c:782(init_domain_list) Could not fetch our SID - did we join? [2010/03/06 13:54:34, 0] winbindd/winbindd.c:1385(main) unable to initialize domain list
Видим, что добавлен «встроенный домен» (BUILTIN) и домен «название компьютера» (STORAGE), подключиться к домену AD не удалось.
Решение: Переподключить компьютер в домен. Удалять придётся с самого контроллера, т.к. комадна net ads leave скорее всего не поможет.
Ошибка получения билета Kerberos
При попытке получить билет Kerberos получили:
kinit: KDC reply did not match expectations while getting initial credentials
Решение: указать имя домена в другом регистре. Скорее всего нужны все заглавные
Полезная ссылка: http://subscribe.ru/archive/comp.soft.win.linuxsa/200510/19115643.html
Полезные комманды
$ smbclient -N -L 10.0.0.117 | показывает ресурсы компьютера с адресом 10.0.0.117 |
$ smbclient //10.0.0.117/common | Вход в расшаренную директорию. Пользователь unix от которого выполняется команда должен быть зарегистрирован в домене. |
# net ads join -U pavel -d 3 | Добавить в домен пользователя pavel |
# winbindd -d 3 -i | Режим отладки (-d), winbindd запускается не как демон (-i) |
# wbinfo -a mydomain\myuser%mypasswd | авторизируемся в домене (через winbindd, wbinfo входит в этот пакет) |
# ldapsearch | запросы к LDAP серверу, в нашем случае к MS Active Directory |
# tdbdump /etc/samba/secrets.tdb | просмотреть содержимое файла *.tdb |
См. также
- Статья Samba даёт краткий общий обзор пакета Samba утилит для него, а также описывает простой (без авторизации в домене) способ предоставления каталогов в общий доступ.
Cсылки
- http://linux.yaroslavl.ru//docs/serv/samba/samba-win2000.html — Samba и доменная аутентификация Windows2000
- http://us6.samba.org/samba/docs/man/Samba-Guide/unixclients.html#adssdm- Active Directory Domain with Samba Domain Member Server — подробная инструкция как подключить Linux сервер с помощью Samba 3 к домену под управлением AD Windows 2003.
- http://us6.samba.org/samba/docs/man/Samba-Guide/kerberos.html#id397375 — пример настройки доступа для пользователей Active Directory
- Samba-HOWTO-Collection.pdf, стр.54-57 (поставляется с исходниками) или
- http://jcifs.samba.org/ntstatus.txt — описание статусов
Рубрика: Администрирование / Администрирование |
Мой мир Вконтакте Одноклассники Google+ |
Мирослав Бусалов
Как подружить Linux с доменом Active Directory
Windows или Linux? Наверное, нет ни одного системного администратора, который не задумывался бы над этим вопросом. О плюсах и минусах операционных систем Open Source и продуктов Microsoft написаны гигабайты текстов, ожесточенные споры не утихают уже много лет. Наблюдая за этими баталиями, хочется лишь одного – гармонии.
Предположим следующую ситуацию. Часть сотрудников вашей компании выполняет только рутинные операции в одном-двух бизнес-приложениях, используя браузер. И операционная система для них значения не имеет. Исходя из экономической целесообразности, нет смысла ставить на такие рабочие станции Windows.
Или другой пример – есть отдел разработчиков под UNIX, которым удобнее и комфортнее использовать на рабочей станции Linux. Как можно заметить, причины внедрения Linux-десктопов в организации могут быть различные. При этом в вашей организации есть домен Active Directory, все пользователи имеют свои учетные записи, собственные папки на файловом сервере и разные права на свои рабочие станции. Подобные удобства всем хотелось бы сохранить и на рабочих станциях под Linux, особенно системному администратору, поскольку централизованная авторизация и хранение данных пользователей на сервере уменьшают его головную боль.
Статья представляет собой пошаговое руководство, как «подружить» рабочие станции Linux с доменом Active Directory.
Начальные условия
Домен Active Directory под управлением одного или более контроллеров домена на базе Windows Server 2003; в качестве Linux-десктопа используется Kubuntu 7.10
Цели
- Обеспечить единую аутентификацию пользователей.
- Обеспечить авторизацию пользователей в домене Active Directory.
- Обеспечить прозрачную и сквозную авторизацию на ресурсах сети (SSO – Single Sign-On).
- Обеспечить хранение пользовательских данных на сервере.
Про последний пункт хотелось бы сказать следующее: в данном примере в качестве файлового сервера используется Windows-сервер. Поэтому речь идет только о хранении данных пользователей. Сохранять профиль UNIX-пользователя на сервере не представляется возможным, так как в качестве Linux-десктопа используется Kubuntu 7.10 со встроенным экранным менеджером KDE. В процессе создания профиля пользователя KDE создает символьные ссылки (symlink), которые необходимы для корректной работы. Естественно, что создать symlink в файловой системе NTFS на Windows Server 2003 не получится.
Используемые обозначения
- domain.ru – полное имя домена Active Directory;
- dc.domain.ru – полное имя контроллера домена;
- fileserver.domain.ru – полное имя файлового сервера.
Условно всю работу можно разделить на следующие этапы:
- Модернизация схемы Active Directory.
- Настройка атрибутов будущих UNIX-пользователей и групп.
- Настройка рабочей станции с Kubuntu.
- Настройка ресурсов сети (веб-серверов, службы ssh и т. д.) для обеспечения прозрачной и сквозной авторизации пользователей.
Модернизация схемы Active Directory
В классической схеме AD невозможно хранить атрибуты UNIX-пользователей, такие как UID, GID, Login Shell, Home Directory. Поэтому схему необходимо расширить, добавив в нее возможность хранения нужных нам сведений. Для этого существует два варианта: первый – это бесплатный пакет Microsoft под названием Windows Services for UNIX 3.5 (SFU), второй – это использование последней версии семейства серверов 2003 – Windows Server 2003 R2. Мы будем использовать второй вариант. Если ваши контроллеры домена и файловые серверы уже работают под релизом R2, можно смело пропустить несколько абзацев, касающихся обновления стандартного Windows Server 2003 до R2.
Windows Server 2003 R2 – версия Windows Server 2003, имеющая встроенные компоненты Windows Services for UNIX (SFU), необходимые нам при создании гетерогенной среды для хранения атрибутов UNIX-пользователей в схеме Active Directory. Релиз R2 включает в себя два важных компонента:
- Subsystem for UNIX-based Applications (SUA);
- Identity Management for UNIX (IMU).
SUA помогает UNIX-приложениям работать под Windows так, как будто они работают в Linux или UNIX. Это выходит за рамки нашей статьи, поэтому мы сфокусируем внимание на компоненте IMU, которая содержит нужные в дальнейшем службы – Administration Components, Password Synchronization, Server for NIS, их установку мы сейчас и рассмотрим.
Необходимо отметить, что возможно два сценария обновления, в зависимости от того, установлен у вас пакет SFU или нет. Мы будем рассматривать вариант, при котором SFU не установлен. В противном случае рекомендую посетить англоязычный ресурс http://www.winlinanswers.com/book/resources.php?id=5, где вы найдете полное описание варианта обновления до R2 с установленным SFU.
Вставив CD#2 с дистрибутивом Windows Server 2003 R2 и согласившись на продолжение установки, вы увидите сообщение об ошибке с описанием, что установка не может быть продолжена, поскольку версия схемы данного домена не совместима с R2. Поэтому сначала необходимо выполнить следующую команду:
X:CMPNENTSR2ADPREPadprep.exe /forestprep
где X – буква, соответствующая CD с дистрибутивом. После чего можно начать установку компонентов R2, выполнив файл R2auto.exe из корневой директории CD.
После установки компонентов R2 нужно в панели управления в разделе установки и удаления программ выбрать пункт «Windows Components», затем найти строчку «Active Directory Services» и в детализации выбрать установку «Identity Management for UNIX».
После завершения установки необходимо будет перезагрузить сервер.
Настройка атрибутов будущих UNIX-пользователей и групп
Откройте оснастку Active Directory User and Computers и вызовите свойства любого пользователя. Появилась новая закладка UNIX Attributes, в которой возможно назначить свойства UNIX-пользователя (см. рисунок). Для начала нам нужно создать несколько UNIX-групп, которые пригодятся нам в дальнейшем.
Свойства UNIX-пользователя — UNIX attributes
Создайте группу UNIXusers – это будет группа по умолчанию для всех UNIX-пользователей. Для этого создайте обычным способом группу нужного вам вида (Domain Local или Global), затем откройте свойства данной группы и перейдите на вкладку «UNIX Attributes». В строке «NIS Domain» выберите ваш домен, после чего группе автоматически будет присвоен GID. Если он не устраивает вас по какой-то причине, можете прописать новый идентификатор вручную. При создании следующих групп GID будет автоматически увеличиваться на единицу.
Аналогичным способом создайте группу UNIXadmins, которая затем будет указана в настройках конфигурационного файла /etc/sudoers как группа, членам которой разрешено выполнять sudo на рабочих станциях с Kubuntu.
Создайте еще одну группу и назовите ее audio, присвоив ей вручную GID 29. Дело в том, что в Linux есть одна особенность – файлы аудиоустройств, как правило, имеют общую группу таким образом, что возможность работы с аудио доступна только владельцам файлов и членам этой группы. В эту группу потом добавим всех пользователей, чтобы у них была возможность использовать наушники и микрофон.
Теперь выберите одного из тех пользователей вашего домена, которому вы хотите присвоить UNIX-атрибуты. В свойствах откройте вкладку «UNIX Attributes», так же как и для группы, выберите имя вашего домена в строке «NIS Domain», и в строке «Primary group name/GID» выберите группу по умолчанию UNIXusers.
Если необходимо по каким-то причинам изменить параметры Login Shell и Home Directory, можно это сделать. UID присвоится автоматически, но при желании можно прописать его вручную.
После присвоения UNIX-атрибутов всем нуждающимся в них пользователям вернемся к группам. Открыв свойства группы UNIXusers, на вкладке «UNIX Attributes» нажмите кнопку «Add» и добавьте туда всех пользователей.
Аналогично поступим с группой audio, а в группу UNIXadmins внесем только тех пользователей, кому разрешено выполнение sudo на рабочих станциях.
Теперь остается только создать нового пользователя, например unixldap, и присвоить ему соответствующие атрибуты. Учетная запись этого пользователя будет использоваться при регистрации и поиске в LDAP с Linux-десктопа, поэтому её необходимо максимально ограничить в правах, допустим, явно запретив доступ ко всем ресурсам файлового сервера и т. д.
На этом работы с оснасткой «Active Directory User and Computers» закончены.
Немного о настройке файлового сервера для работы с UNIX-клиентами
В данном примере монтирование домашних каталогов пользователей осуществляется с использованием CIFS (Common Internet File System).
Если для каких-нибудь задач вам потребуется работа с NFS (Network File System), то для обеспечения доступа к файловым ресурсам вашего Windows-сервера с Linux-десктопов необходимо будет установить на сервер пакет Microsoft Services for NFS. Привожу краткое руководство, как это сделать.
Зайдите в панель управления, затем в разделе установки и удаления программ выберите пункт «Windows Components», там войдите в «Other Network File and Print Services» и в детализации выберите установку «Microsoft Services for NFS». Из данного пакета необязательными к установке являются два последние пункта: Server for NFS Authentication и User Name Mapping. После установки данных служб пользователи с рабочих станций под управлением Linux получат доступ к файловым ресурсам данного сервера, используя NFS.
Настройка рабочей станции с Kubuntu
Теперь приступим к самой большой части работы – настройке Kubuntu. Сначала выполните установку Kubuntu 7.10 на рабочую станцию, после чего установите все необходимые обновления, например, используя встроенный в KDE менеджер обновлений Adept Updater.
Также рекомендуется изменить параметры входа в систему для KDE (в других экранных менеджерах могут быть отличия) – открываем меню «System Settings», переходим на закладку «Advanced», там выбираем «Менеджер входа в систему», и, войдя в административный режим, отключаем опцию «Показывать список» на вкладке «Пользователи». Если этого не сделать, система при входе будет отображать всех UNIX-пользователей вашего домена, что совершенно ни к чему.
Для корректной работы протокола Kerberos, который будет использоваться для аутентификации в нашей гетерогенной среде, крайне важным моментом является синхронизация времени рабочей станции с контроллером домена.
Поэтому первым пунктом настроим синхронизацию времени. Для этого в файле /etc/default/ntpdate внесем следующие изменения:
NTPSERVERS=»dc.domain.ru»
При следующей перезагрузке ПК будет синхронизировать время с контроллером домена, а пока проведем синхронизацию вручную, выполнив следующую команду:
$sudo ntpdate -s dc.domain.ru
Указываем FQDN для настраиваемой рабочей станции в файле /etc/hosts:
127.0.0.1 workstation.domain.ru localhost workstation
Проверьте доступность машины по FQDN командой:
ping workstation.domain.ru –с 4
Теперь необходимо установить и настроить поддержку Kerberos. Устанавливаем нужные пакеты:
$sudo apt-get install krb5-user libpam-krb5 krb5-config libkrb53 krb5-doc
Если система выдала ошибку:
dpkg was interrupted, you must manually run dpkg –-configure –a to correct this problem
последуйте совету подсказки, наберите:
$sudo dpkg –-configure –a
В процессе вас попросят принять решение о замене файла /etc/qt3/qt_plugins_3.3rc – согласитесь с вариантом по умолчанию, оставьте текущую версию без изменений. Данная ошибка иногда проявляется в версии 7.10 после первой установки обновлений.
И приступаем к настройке – внесем изменения в файл /etc/krb5.conf:
[libdefaults]
default_realm = DOMAIN.RU
# DOMAIN.RU пишется обязательно ЗАГЛАВНЫМИ БУКВАМИ
ticket_lifetime = 24000
# The following krb5.conf variables are only for
# MIT Kerberos
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
[realms]
DOMAIN.RU = {
kdc = dc.domain.ru
# kdc – key distribution center – контроллер домена
admin_server = dc.domain.ru
default_domain = domain.ru
}
[domain_realm]
.domain.ru = DOMAIN.RU
domain.ru = DOMAIN.RU
[login]
krb4_convert = true
krb4_get_tickets = false
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
После настройки Kerberos мы можем проверить его работоспособность следующими командами:
$kinit user@DOMAIN.RU
Командой kinit мы осуществляем запрос на сервер kdc на получение билета. Если система в ответ не выдала ошибок, значит, все в порядке и можно просмотреть билет командой klist:
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: user@DOMAIN.RU
Valid starting Expires Service principal
03/15/08 15:15:55 03/15/08 21:55:55 krbtgt/ DOMAIN.RU@DOMAIN.RU
Удалить билет можно командой kdestroy.
Если при выполнении команды kinit система выдала ошибку, проверьте настройки DNS, большинство проблем возникает именно из-за некорректной работы данной службы.
Далее на очереди установка и настройка поддержки LDAP:
$sudo apt-get install libnss-ldap libpam-ldap
При установке этих модулей вам сразу будет предложено настроить параметры клиента ldap, проигнорируйте это предложение, т.к. этих настроек будет недостаточно для корректной работы и все конфигурационные файлы надо настраивать вручную.
Изменяем файл /etc/ldap.conf:
# LDAP Defaults
# See ldap.conf(5) for details
# This file should be world readable but not world writable
uri ldap://dc.domain.ru
base dc=domain,dc=ru
ldap_version 3
scope sub
# Следующие две строки содержат реквизиты учетной записи
# unixldap, необходимые для доступа к схеме AD
binddn cn=unixldap,cn=Users,dc=domain,dc=ru
bindpw password
bind_timelimit 2
bind_policy soft
# bind_policy soft указывает, что при неудачном подключении
# к LDAP не пытаться переподключиться при отсутствии
# данной строки система не сможет загрузиться
idle_timelimit 2
# PAM options with group-based access configuration:
pam_filter objectClass=posixAccount
pam_login_attribute uid
# nsswitch.conf options:
nss_base_password cn=Users,dc=domain,dc=ru?sub
nss_base_group cn=Users,dc=domain,dc=ru?sub
# Далее прописываем mapping POSIX атрибутов,
# т.к. в схему AD они не добавляются
nss_map_objectclass posixAccount User
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_attribute gecos cn
nss_map_objectclass posixGroup Group
ssl no
# sudo options:
sudoers_base cn=UNIXadmins,cn=Users,dc=domain,dc=ru
# debug 257
Опцию debug можно будет включить на время отладки, если будут проблемы.
Также необходимо внести изменения в файл /etc/ldap/ldap.conf, который требуется для работы некоторых утилит, например ldapsearch. Это файл может состоять всего из двух строк:
BASE dc=domain,dc=ru
URI ldap://dc.domain.ru
Пришла очередь установить компоненты, которые позволят монтировать личные папки пользователей, располагающиеся на сервере Windows. Это пакеты smbfs и pam_mount. Первый позволяет понимать windows share, а второй отвечает за автоматический mount/umount при процедурах login/logout. Устанавливаем:
$sudo apt-get install smbfs
А вот установка pam_mount не отличается простотой. Дело в том, что при установке с помощью команды «apt-get install» по умолчанию установится версия 0.18, которая не отличается дружелюбием по отношению к файловой системе cifs (хотя заявлено, что поддерживает), поэтому нам нужно установить более новую версию, например 0.32, а для этого придется обновить много библиотек и установить несколько пакетов. Итак, приступим. Скачайте следующие установочные файлы и установите их именно в такой последовательности:
- tzdata_2008a-0ubuntu0.7.10_all.deb
- libc6_2.7-6_i386.deb
- libhx10_1.10.2-2_i386.deb
- libssl0.9.8_0.9.8g-4ubuntu1_i386.deb
Теперь привычным способом установим пакет libxml-writer-perl:
$sudo apt-get install libxml-writer-perl
И только после всех описанных манипуляций скачиваем и устанавливаем пакет libpam-mount_0.32-4_i386.deb.
Конфигурационный файл модуля pam_mount называется pam_mount.conf.xml и находится в каталоге /etc/security. Я приведу здесь только измененные части файла, т.к. целиком его приводить смысла не имеет.
Для начала включим отладку:
<debug enable=»1″ />
Ниже перед закомментированным абзацем с описанием mntoptions вставим строчку:
<mntoptions allow=»*» />
И наконец после строки:
<pmvarrun>pmvarrun -u %(USER) -o %(OPERATION)</pmvarrun>
вставляем свои строки с указанием следующих опций монтирования:
<volume
user=»*»
invert=»1″
fstype=»cifs»
server=»fileserver.domain.ru»
path=»share/%(USER)»
options=»iocharset=utf8,dir_mode=0700,file_mode=0600″
mountpoint=»/home/%(USER)/data»
/>
Получается, что при входе в систему в домашнем каталоге пользователя будет создаваться папка /data, куда будет монтироваться его сетевая папка с сервера (\fileserver.domain.rushareusername).
Следующим шагом позаботимся о корректной работе sudo для соответствующих пользователей. Для этого внесем следующие изменения в файл /etc/sudoers:
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
%UNIXadmins ALL=(ALL) ALL
И еще изменим файл /etc/pam.d/sudo для корректной работы kdesu (запуск административных приложений в KDE):
#%PAM-1.0
auth sufficient pam_krb5.so
auth sufficient pam_ldap.so use_first_pass
auth sufficient pam_unix.so use_first_pass
auth required pam_deny.so
#@include common-auth
#@include common-account
Теперь нам предстоит настроить модули PAM (Pluggable Authentication Modules) – подключаемые модули аутентификации. Описание принципов работы и синтаксис оставим за рамками нашей статьи, все интересующиеся без труда найдут его в сети. Изменениям подвергнутся несколько конфигурационных файлов, располагающихся в каталоге /etc/pam.d. Начнем с файла /etc/pam.d/common-account:
#account required pam_login_access.so
account required pam_ldap.so ignore_authinfo_unavail ignore_unknown_user
account required pam_unix.so
Теперь редактируем файл /etc/pam.d/common-auth:
auth optional pam_mount.so
auth sufficient pam_krb5.so use_first_pass
auth sufficient pam_ldap.so ignore_authinfo_unavail ignore_unknown_user use_first_pass
auth required pam_unix.so nullok_secure
auth required pam_deny.so
Следом вносим изменения в файл /etc/pam.d/common-password, который начнет работать только при смене пароля (по истечении срока или при запуске утилиты passwd):
password sufficient pam_unix.so obscure md5
password sufficient pam_ldap.so
Переходим к файлу /etc/pam.d/common-session:
session optional pam_mount.so
session required pam_unix.so
session optional pam_foreground.so
Необходимо отметить, что во всех модулях, использующих библиотеку pam_mount, строчка с описанием ее использования должна быть на первом месте, к сожалению, pam_mount не умеет принимать пароль через опции use_first_pass или try_first_pass, поэтому строка просто не отработает, как следствие, сетевая папка не будет смонтирована.
Необходимо отметить, что указанные конфигурационные файлы работоспособны при осуществлении входа в систему через интерфейс KDE. Для использования консольного входа в систему (а также удаленного входа по ssh) нужно внести некоторые изменения, о которых подробно будет рассказано в описании настроек сетевых сервисов для сквозной авторизации.
На этом настройка модулей PAM завершена. Осталось внести изменения в последний, очень важный конфигурационный файл: /etc/nsswitch.conf:
group: files ldap
hosts: files dns
networks: files
passwd: files ldap
shells: files
sudoers: files ldap
Теперь остается только завершить сеанс и войти в систему под доменным UNIX-пользователем. При неудачной попытке ищите ошибки в log-файлах.
Настройка сетевых сервисов и служб для прозрачной и сквозной авторизации будет рассмотрена в следующий раз.
Мой мир
Вконтакте
Одноклассники
Google+
I’ve written a little reminder for myself about installing sshd on Cygwin.
Please see Cygwin install and sshd install.
First install cygwin.
See cygwin.com. Follow the installation instructions. I recommend the following options:
Install from Internet
All Users
Use IE5 Settings
Select a mirror near you (if you can find out where they are!)
Make sure to Select Packages below (among others) besides the Base packages:
cygrunsrv
openssh
You can export the Windows user list to Cygwin.
$ cp /etc/passwd /etc/passwd.old # backup for safety
$ mkpasswd > /etc/passwd
Start sshd
Next, start the Secure Shell Daemon (sshd) service on Windows
This will allow users on remote computers to log in to your box, get an interactive shell and do whatever they want. Or rather whatever you allow them to do. Remember?
There is a nice guide with a lot of troubleshooting info here.
In a nutshell. Start a Cygwin Shell window.
$ ssh-host-config -y
When prompted for “CYGWIN=”, type “tty ntsec”.
I do not allow login by password, only the public-key method. See below. So change the related line in /etc/sshd_config
like this:
PubkeyAuthentication yes
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
Finally start the service:
$ cygrunsrv --start sshd
Administering users with public-key authentication
foo
wants to log in remotely to your box’s bar
account.
He sends you his public RSA key id_rsa.pub
in any way, email, pen-drive, whatever YOU trust.
If you find foo
worthy, you authorize his key, and from then he will be able to log in to your bar
account via ssh without typing bar
’s password:
$ cat id_rsa.pub >> /home/bar/.ssh/authorized_keys
I’ve written a little reminder for myself about installing sshd on Cygwin.
Please see Cygwin install and sshd install.
First install cygwin.
See cygwin.com. Follow the installation instructions. I recommend the following options:
Install from Internet
All Users
Use IE5 Settings
Select a mirror near you (if you can find out where they are!)
Make sure to Select Packages below (among others) besides the Base packages:
cygrunsrv
openssh
You can export the Windows user list to Cygwin.
$ cp /etc/passwd /etc/passwd.old # backup for safety
$ mkpasswd > /etc/passwd
Start sshd
Next, start the Secure Shell Daemon (sshd) service on Windows
This will allow users on remote computers to log in to your box, get an interactive shell and do whatever they want. Or rather whatever you allow them to do. Remember?
There is a nice guide with a lot of troubleshooting info here.
In a nutshell. Start a Cygwin Shell window.
$ ssh-host-config -y
When prompted for “CYGWIN=”, type “tty ntsec”.
I do not allow login by password, only the public-key method. See below. So change the related line in /etc/sshd_config
like this:
PubkeyAuthentication yes
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
Finally start the service:
$ cygrunsrv --start sshd
Administering users with public-key authentication
foo
wants to log in remotely to your box’s bar
account.
He sends you his public RSA key id_rsa.pub
in any way, email, pen-drive, whatever YOU trust.
If you find foo
worthy, you authorize his key, and from then he will be able to log in to your bar
account via ssh without typing bar
’s password:
$ cat id_rsa.pub >> /home/bar/.ssh/authorized_keys