Официальная возможность получить лицензионный софт бесплатно.
Giveaway of the Day
Это не реклама!

Щелкните для получения прогноза по Биробиджану


Показаны сообщения с ярлыком active directory. Показать все сообщения
Показаны сообщения с ярлыком active directory. Показать все сообщения

пятница, 28 июня 2013 г.

Переименование пользователя в AD для Samba

Наткнулся и уже давно на такую граблю.

Есть пользователь domain\vasya. Но теперь надо, чтобы он стал domain\vasily - чтобы не править многочисленные списки доступа и группы.
Решение очевидно: в соответствующей оснастке или из командной строки меняем его logon name и готово! Теперь Вася логинится как vasily. Вот только после первого же логина он жалуется, что не подключились его сетевые диски, которые прекрасно подключались для имени vasya.

Выясняется, что самба видит его как-то очень странно. Вот реальный пример:

id eao\\radionova_ov
uid=10096(EAO\prog1) gid=10008(EAO\domain users) группы=10008(EAO\domain users),10056(EAO\пользователи тс 1с-упп),10098(BUILTIN\users)


Пользовательница изначально была под именем prog1, стала radionova_ov. По имени "лукап" проходит нормально, но вот ID выдает неверное имя - старое. На что, собственно, и ругается самба.

До недавнего времени мне приходилось удалять пользователя и пересоздавать его - пользователи были обычными, не входящими в какие-то важные группы и т.п. Но Радионова - "младший админ", член группы "account operators" и рулит всевозможными подсистемами, поэтому ее ACL весьма велик и переносить его на свежесозданный аккаунт, не говоря уже о проблемах с переназначением прав в файловой системе на ее рабочем месте - полная жопа.

Опытно-гуглевым подходом выяснил, что старое имя хранится в кэше winbind-a, но для этого понадобилось перелопатить пару сотен ссылок.

/var/cache/samba# ls -la
-rw-------  1 root root   73728 июня  28 12:50 netsamlogon_cache.tdb
-rw-------  1 root root  315392 июня  28 11:53 netsamlogon_cache.tdb-
-rw-------  1 root root 1462272 июня  28 12:50 winbindd_cache.tdb
-rw-------  1 root root 1462272 июня  28 11:53 winbindd_cache.tdb-


(листинг частичный, там есть и другие файлы)

Отключение кэша самого winbind-a не помогло - после переименования winbindd_cache.tdb в winbindd_cache.tdb- создался новый winbindd_cache.tdb, с содержимым идентичным "закомментированному". Вылечилось только после "закомментирования" и netsamlogon_cache.tdb:

id eao\\radionova_ov
uid=10096(EAO\radionova_ov) gid=10008(EAO\domain users) группы=10008(EAO\domain users),10013(EAO\allowed rodc password replication group),10058(EAO\пользователи тс 1с-уат),10056(EAO\пользователи тс 1с-упп),10064(EAO\сит),10059(EAO\пользователи тс асу сп),10057(EAO\пользователи тс 1с-зуп),10101(EAO\пользователи 1с-до),10098(BUILTIN\users)


Если кто-то знает более оптимальный способ, прошу в комменты.

вторник, 4 июня 2013 г.

Авторизация на прокси Squid 3 через ADDS

Возникла такая задача, особенно с тех пор, как районы отгородились маршрутизаторами и авторизация по MAC-адресам стала невозможна.

Задача не новая, но решать надо "как в первый раз", тем более, что это и есть первый раз, когда я такое проделал. Два месяца назад я забил сюда как в закладки ссылку на блог Лиссяры. Всё бы ничего, но он описывает работу с FreeBSD, а у меня таки "неправославная" ОС в его понимании. Ага, всё та же убунта-сервер (10.04.4, Lucid) с третьим сквидом. Кроме того, статье на данный момент около 6 лет, а за это время космические корабли избороздили еще кусок вселенной... В общем, мысленно поблагодарив Лиссяру за наводку, я отправился дальше.

Куда более подходящую статью я нашел у Макродмина. Статье нет еще и года, поэтому информация актуальна.

1. sudo apt-get install ntp
настраиваем синхронизацию времени со своим контроллером, вписывая его в нужное место в /etc/ntp.conf:

server имя_или_IP_контроллера_домена

Макродмин советует ставить туда IP, у меня нормально работает и с FQDN, тем более, что в примерах внутри самого этого файла указан ntp.ubuntu.com, а не его IP.

2. В /etc/resolv.conf у меня уже были прописаны нужный домен и в правильном порядке серверы DNS - первым сервером стоял адрес контроллера. Порядок здесь имеет значение - если на первом откликнувшемся сервере нет нужных SRV и т.п. записей, то не удастся ввести прокси в домен - будет тупо не находить контроллер.

3. Поскольку на этой "машине" (сервер крутится в виртуалке) отродясь не было ни самбы, ни злой собаки-цербера, то согласился с Макродмином и тупо установил рекомендованное:

sudo apt-get install samba winbind krb5-admin-server krb5-clients krb5-config krb5-doc krb5-kdc krb5-user

 При установке пакетов вылезали различные интересные параметры конфигурации, которые я установил в соответствии с подобными им, которые уже сделаны у меня на двух самбовских файл-серверах.

4. В этом месте у Макродмина опечатка, которая стоила мне нескольких седых волос. Вот мой рабочий конфиг самбы:

# cat smb.conf
[global]
workgroup = MYDOMAIN
realm = MYDOMAIN.FQDN.RU
netbios name = VMPROXY
server string =_
security = ADS
encrypt passwords = true
password server = pdc.mydomain.fqdn.ru
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
winbind uid = 10000-20000
winbind gid = 10000-20000
wins server = xxx.yyy.zzz.ttt

В качестве wins-сервера указан именно IP  моего PDC, остальное самоочевидно.
Оранжевый прямоугольник обозначает то же самое, что и у Макродмина - после знака равенства ставим пробел, чтобы самба не формировала серверную строку типа "samba server (ubuntu чего-то там)".
А вот подчеркнутое жирное "yes" - это как раз то место с опечаткой: в оригинале написано "yse", и я долго не мог понять, на что же самба ругается разными нехорошими словами вроде "lp_bool(yse): value is not boolean!". То, что это следствие опечатки, заметил совершенно случайно.

5. Править файл /etc/krb5.conf сильно не пришлось: как я уже сказал, при установке пакетов мне было задано много вопросов, ответы на которые были автоматически вписаны в нужные конфиги. Часок работы напильником и всё готово. (из текста конфига я удалил оригинальные комментарии)

# cat krb5.conf
[libdefaults]
    default_realm = MYDOMAIN.FQDN.RU

    krb4_config = /etc/krb.conf
    krb4_realms = /etc/krb.realms
    kdc_timesync = 1
    ccache_type = 4
    forwardable = true
    proxiable = true

    v4_instance_resolve = false
    v4_name_convert = {
        host = {
            rcmd = host
            ftp = ftp
        }
        plain = {
            something = something-else
        }
    }
    fcc-mit-ticketflags = true

[realms]
    MYDOMAIN.FQDN.RU = {
        kdc = pdc.mydomain.fqdn.ru
        kdc = bdc.mydomain.fqdn.ru
        kdc = 3rddc.mydomain.fqdn.ru
        admin_server = pdc.mydomain.fqdn.ru
        default_domain = MYDOMAIN.FQDN.RU    }


[domain_realm]
    .mydomain.fqdn.ru = MYDOMAIN.FQDN.RU
     mydomain.fqdn.ru = MYDOMAIN.FQDN.RU

[login]
    krb4_convert = true
    krb4_get_tickets = false

Обращаем внимание на регистр букв!!!

6. После внесения правок просим билетик у кербероса:

kinit administrator

где administrator - логин администратора домена.
Если не последовало ругани и klist выдал что-то осмысленное, то вводим прокси в домен:

net ads join -U admin

Как сообщают разные источники и мой личный опыт, может вылезти невразумительная ошибка насчет сервера DNS (у меня в этот раз не вылезла, но с прежними самбами бывало), ее можно смело игнорировать.

7. Сквид у меня уже был настроен, поэтому не заморачиваюсь общими вопросами, а сразу лезем править конфиги. Для большей гибкости, конфиг сквида у меня разбит на три файла - основной конфиг (squid3.conf), файл "учёток" (squid3.acl.conf) и файл ограничений (squid3.restrictions.conf), причем два последних подключаются директивой include к первому.

При правке возникли некоторые вопросы, ответы на которые я нашел на вики сквида: авторизация ntlm и авторизация ntlm с использованием групп. Существенная грабля: нельзя тупо копипастить! Я сидел и тихо сходил с ума, пытаясь понять, почему же сквид жалуется "хелпер слишком часто падает и я отключаюсь". У меня сквид третьей версии и установлен в squid3. Но в абсолютном большинстве примеров речь о второй версии, установленной в просто squid. И естественно, что хелпер вылетал - трудно запустить что-то вроде /usr/lib/squid/program, если на самом деле оно находится в /usr/lib/squid3/program.

В домене я создал отдельную ОЕ: domain/groups/ACL/Internet. В ней находятся группы разрешения и запрета доступа - по одной группе на каждую службу. Все эти группы в зависимости от того, что они делают, входят в супергруппы inet_allow или inet_deny, живущие уровнем выше в domain/groups/ACL.

8.Итак, конфиги сквида (частичные):

SQUID3.CONF
#http://wiki.squid-cache.org/ConfigExamples/Authenticate/Ntlm
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 30

auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 15
auth_param basic realm Proxy Autentification Required
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

SQUID3.ACL.CONF
#Проверка работы через AD
    acl    nt_group    proxy_auth    REQUIRED
    external_acl_type    nt_group %LOGIN /usr/lib/squid3/wbinfo_group.pl
    acl    dom-white-list    external    nt_group    inet_allow
    acl    dom-black-list    external    nt_group    inet_deny

SQUID3.RESTRICTIONS.CONF
#Через домен
    http_access    allow    dom-white-list
    http_access    deny    dom-black-list


Как раз из-за последнего "/usr/lib/squid3/wbinfo_group.pl" у меня и вылезали ошибки, о которых я говорил - в примерах везде было "squid", а не "squid3".

9. Ну и финальный штрих. Winbind при запуске создает каталог /var/run/samba/winbindd_privileged, на который дает права группе winbindd_priv. Сквид в нее не входит и сильно расстраивается из-за невозможности проверить права доступа. Фигня. Просто добавляем его в эту группу. У меня сквид работает от имени пользователя proxy:

gpasswd -a proxy winbindd_priv

Перезапускаем самбовские службы и сквид.

В некоторых источниках предлагают изменить стартовый скрипт самого winbind-a, но это неправильно, я считаю.

10. Осталось внести нужных пользователей в соответствующие группы, а дальше уже раздавать полномочия по мере необходимости... После внесения пользователя в группу разрешения/запрета не помешает сделать

sudo service squid3 force-reload

чтобы не ждать, пока сквид повторно обратится к AD за проверкой разрешений. Поскольку доступ в домен мне нужен только для проверки, входит ли указанный пользователь в указанную группу, то я не настраивал nsswitch и т.п. дела.

Для проверки работы хелпера можно воспользоваться командой:

# ntlm_auth --username=логин
password:
NT_STATUS_OK: Success (0x0)

Где вместо "логин" подставляем имя пользователя из домена.

вторник, 9 апреля 2013 г.

Samba: одинаковые UID/GID для доменных пользователей на разных серверах

Информация про одинаковые UID/GID на разных серверах Samba.
Смотрим по слову idmap_rid.

Копия на всякий случай под катом:

суббота, 6 апреля 2013 г.

SQUID: авторизация через AD

Явно предстоит этим заниматься, поэтому поискал информацию. Весьма поучительный материал в старых записях Лисяры. Надо будет поэкспериментировать, скорее всего, эту схему и использую.

среда, 27 февраля 2013 г.

Инструменты миграции профилей и т.п.

 С давних времен в комплект виндов входит т.н. "Мастер переноса файлов и параметров". Удобная, надо заметить, штука, позволяющая перенести как файлы пользователя (не только "документы" и "рабочий стол"), так и сделанные им настройки - от персонализации всё того же рабочего стола до настроек отдельных программ. Угу, в никсах это делается проще - копируем ~/ на другой комп и радуемся жизни (возможно, придется изменить имя хоста в отдельных конфигах), но большинство пользователей у меня под виндами и надо от этого отталкиваться.

Сейчас продолжаем переводить пользователей в домен и проблема переноса встала в полный рост. При всех достоинствах вышеупомянутого "мастера" есть у него и недостаток: то, что он делает, избыточно при переносе в пределах одного компьютера. Например, есть пользователь локально\вася. Мы создали для него учетку в домене - доменно\вася. Но если зайти доменным васей на его же комп, то будет создан новый профиль, а не использован старый, и это логично.
Но вася-то хочет (и имеет полное право) работать в привычном окружении, которое он настроил под себя и по своему вкусу, и я не вижу никаких причин запрещать ему это. Не, можно, конечно, покласть с пробором на его пожелания и навязать ему свое видение оптимального рабочего места, однако...

В общем, надо старые васины данные перетащить в его новый доменный профиль. Теперь посчитаем. Допустим, вася держит в своем профиле 100500 музыкальных и видеофайлов. Имеет право - политика компании не запрещает. "Мастер" создаст по дефолту архив, куда будут включены и эти файлы. Из-за их плохой сжимаемости архив получится размером в офигиллион мегабайт. Потом этот же "мастер" распакует этот же архив на этот же компьютер, но в другой каталог, для чего потребуется еще офигиллион мегабайт. В итоге будет занята куча места с КПД близким к 1/3 (1/3 - старый профиль, 1/3 - архив и 1/3 новый профиль). Но чем отличаются старый и новый профиль? По сути ничем, разве что ACL. Но, в отличие от никсов, подобно Netware винда позволяет навешивать на объект множественные разрешения, а значит надо сделать:
  1. сказать, что профиль доменного васи должен находиться там, где сейчас находится профиль васи локального
  2. дать доменному васе соответствующие права на файлы локального васи
  3. добавить доменного васю в некоторые локальные группы, куда входил вася локальный

Со всем этим отлично справляется инструмент User Profile Wizard от ForensIT. Вводим компьютер в домен, загружаемся под доменным админом, запускаем UPW, говорим ему, какой доменный профиль на какой локальный надо навесить и всё! При входе вася доменный попадает туда, куда он последний раз заглядывал васей локальным. Остается перенастроить почтового клиента и некоторые мелочи.

Кроме UPW на ForensIT есть и немало других удобных и бесплатных утилит. Сайт на английском, но оно того стоит - неброский, даже строгий дизайн, легко читаемые цвета и тексты. Рекомендую.

понедельник, 29 октября 2012 г.

CSVDE: экспорт и импорт структуры OU

Рецептов по части экспорта/импорта пользователей в интернете полно. Например, здесь. Но вот вразумительного описания экспорта/импорта структуры я не нашел.

Задача: есть такая структура дерева:


Надо ее, начиная с OU=RDE, перенести в другое дерево, в домен с таким же именем. Например, с тестовой площадки, где развернут пробный домен, на свежеустановленный боевой DC.

Перепробовал разные варианты экспорта и импорта посредством CSVDE, пока не получил приемлемый результат.

Экспорт:

csvde -f export-rde-ou.csv -d "ou=rde,dc=my,dc=domain,dc=ru"  -r "(objectclass=organizationalunit)" -p subtree -l objectclass,dn,objectcategory

Получили вполне приемлемый CSV-файл. Однако, при его импорте командой

csvde -i -f export-rde-ou.csv -k -j . -v

вылезают совершенно невразумительные ошибки о невозможности создания объектов, о несуществующих объектах и т.п.

Единственный выход из положения, который я нашел, это вручную перетасовать CSV так, чтобы чем выше элемент в дереве, тем раньше он встречается в файле, поскольку CSVDE прекращает импорт при первой же ошибке.

Например, в экспортированном мной файле OU шли в такой последовательности

RDE
RDE/users/Черноморская
...
RDE/users.

И импорт прекращался на второй строчке. После того, как я отредактировал файл, поставив объемлющие OU выше объемлемых, всё встало на свои места - CSVDE не умеет создавать промежуточные OU, например, не смогла создать объемлющую OU=users для объемлемой OU=Черноморская.

Если бы импорт не прекращался, то после нескольких прогонов импорта были бы последовательно созданы OU всё более и более низкого уровней по мере того, как создавались бы их объемлющие OU. Однако, из-за остановки импорта на первом же затыке пришлось сортировать файл вручную. Блин!

воскресенье, 12 февраля 2012 г.

Курсы в СофтЛайне

С 6 по 10 февраля был на учёбе в Хабаровске, курс MS 6425 "Конфигурирование службы каталогов Windows Server 2008 Active Directory (R2)".
Сначала об организации процесса.
Было нас 7 человек - я, хабаровчанин Александр Караваев (крайний слева, мой братишка его знает), приморец Роман Храмов (сидит второй справа), из Благовещенска - Владимир Бычков (первый справа вверху) и Сергей Кайков (стоит на переднем плане), Алексей Гражданцев из Алдана (сидит первый справа) и Павел Шапрынский (по центру в синей рубашке).

Класс небольшой, довольно уютный. Приятной неожиданностью стало "продовольственное обеспечение" - может потому, что я не видел лучшего, но лично мне понравилось, что прямо в классе стоит кулер для воды, а рядом с ним на столике - одноразовые кружки, несколько сортов чая, кофе, прикуска к чаю. В любой момент подошёл, налил себе, сел на место и работаешь дальше. По форме одежды тоже никто не церемонился. Сергей на второй день притащил из гостиницы одноразовые белые тапочки, чтобы переобуться, в среду его примеру последовал Паша, ну а я брал у родителей пластиковые шлёпки (специально на первом фото сел так, чтобы их было видно).
"Тренер", Алексей Конченков, явно из действующих айтишников, поэтому приводимые им примеры и манера объяснения были "близки нам по духу": уместное использование арго всегда идет на пользу дела. (на фото он получился слишком суровым, но это просто случайность)

Каждому выдали по три кило учебников этого курса, стало не страшно ходить по улицам - засвети таким "кирпичиком" в морду хулигану, и надолго отобьёшь у него охоту лезть к людям.

Работали, как и предписано указаниями к курсу, в куче виртуальных машин с установленными в них W2008Sr2 и Win7. Удобно. Но раздражало, что после выполнения почти каждой практической работы машины надо было сбрасывать в исходное состояние, после чего некоторые из них ну очень уж долго запускались: applying computer settings висит на экране, и хоть застрелись!

Чисто субъективно, 5 дней на этот курс маловато, пробежались по нему буквально галопом, часть практических из-за вышеупомянутых тормозов я просто не успел сделать. Пока не могу сказать, что из начитанного/рассказанного я запомнил прочно, а что - не очень или не запомнил вообще. На пресс-конференции к звёздам, как говорится, надо приходить подготовленным. И если Гражданцев уже давно и плотно работает с AD, то у него были предметные вопросы по непонятным лично ему моментам, а вот у меня опыта нет, поэтому бОльшая часть информации, особенно обилие акронимов, была в новинку. Помогало, конечно, что есть опыт подобных дел в Netware и Lotus Domino, но не так сильно, как хотелось бы.
Впрочем, в учебниках достаточно много справочно-информационного материала, поэтому кое-что будет легко освежить в памяти. Грустно, однако, что так до сих пор и неизвестно, когда и в каком виде будем внедрять AD, и какие (наверняка - идиотские) рамки и ограничения нам выставит ФСК.

Не учёбой единой жив человек. Я почти не принимал участия в вечерних гулянках, ибо от пива клонит в сон, но ребятки отрывались от души.  Не забывая, однако и о культурной программе. В воскресенье, 5.02, сходили с амурцами в краеведческий музей. Жаль, не сразу увидели афишку и просто по времени не успели в художественный, на выставку Дали. Потом парни ходили на хоккей и даже в театр. "Даже" - потому как лично я театр недолюбливаю, но это мои личные заморочки.
В центральном книжном, что на пл. Ленина, мне очень хотелось, но так и не удалось найти что-то вроде "Бухучет для полных дебилов" или "Лоботомия своими руками для `чайников`", просто чтобы посмотреть цену и сравнить ее с ценами на аналогичную литературу по ИТ. Всегда не понимал, почему наша литература стоит, порой, на порядок дороже, чем для других областей.

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

Ну и еще несколько снимков напоследок.