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

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


пятница, 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)


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

среда, 12 июня 2013 г.

How do I configure lightdm to work with XDMCP?



To enable the XDMCP server in LightDM edit /etc/lightdm/lightdm.conf and add the following section:
[XDMCPServer]
enabled=true
Then restart LightDM with sudo restart lightdm from a text console (logout from any graphical sessions first).
You can set the XDM-AUTHENTICATION-1 key by setting key=value (value is in the same format as is used in the X -cookie option). If the key is not set then no authentication is used.
You can change the UDP/IP port by setting port=1234.
All the available LightDM settings are shown in the example configuration in/usr/share/doc/lightdm/lightdm.conf.
---
I have been trying to enable XDMCP on GDM without much success. Following some instructions I have edited /etc/gdm/custom.conf and added:
[daemon]
RemoteGreeter=/usr/lib/gdm/gdm-xdmcp-chooser-slave
[xdmcp]
Enable=true
Then restarted gdm and tried to connect both locally and from a remote system with:
Xnest :1 -query localhost
Xnest :1 -query remote_system_hostname
I just get a black screen instead of the GDM window as expected. I am missing something ?

воскресенье, 9 июня 2013 г.

ASUS P8H67-M PRO и сенсоры в Linux

Была у меня плата iD865PERL, все ее сенсоры нормально ловились стандартной libsensors и я четко знал, с какой скоростью крутятся вентиляторы, каковы напряжения и всё такое. После прошлогоднего апгрейда на P8H67-M PRO мне остались доступны только температура ЦПУ (общая и по конкретным ядрам) и температуры жестких дисков. Меня это, понятно, ну никак не устраивало.

вторник, 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)

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