Вот пример вывода sql запроса к базе данных:
mysql> SELECT date,time FROM table;
+------------+---------+
| date | time |
+------------+---------+
| 2010-12-07 | 70000 |
| 0000-00-00 | 0 |
+------------+---------+
Вставляем функции date_format и time_format и получаем человеческий ответ =)
mysql> SELECT DATE_FORMAT(date,'%d.%m.%Y') AS date,TIME_FORMAT(time,'%T') AS time FROM table;
+------------+----------+
| date | time |
+------------+----------+
| 07.12.2010 | 07:00:00 |
| 00.00.0000 | 00:00:00 |
+------------+----------+
вторник, 7 декабря 2010 г.
четверг, 2 декабря 2010 г.
Apache и авторизация в LDAP
В общем openldap уже установлен, не настроены резервные копии, синхронизации, защита доступ =), но для тестовых целей вполне себе работоспособный. При установке apache обратите внимание на наличие USE-флагa ldap (напоминаю: речь идет о Gentoo) и APACHE2_MODULES="auth_basic", остальное по вкусу.
После установки apache необходимо подключить модули ldap через конфигурацию стартового скрипта. В файле /etc/conf.d/apache2 необходимо домбавить к ключам запуска APACHE2_OPTS следующие параметры -D AUTHNZ_LDAP -D LDAP.
Настройку самого apache я опускаю, т.к. это не принципиально. Ключевым в авторизации являются параметры для ldap модулей. Это можно делать в основых файлах конфигурации и/или в файле .htaccess. Для настройки я создал каталог в корне сайта и в нем создал файл .htaccess. Таким образом доступ к содержимому этого каталога и его подкаталогов будет возможно только при успешной базовой автризации.
Для тестов у меня уже создан пользователь U1 входящий в группу G1 в подразделении O1 дерева ldap site.local.
Для базовой авторизации создал файл .htaccess:
# .htaccess
# Это сообщение будет появляться в окне базовой авторизации для ввода имени и пароля
AuthName "restricted"
# Тип авторизации базовый
AuthType Basic
# Авторизация будетп производится через ldap
AuthBasicProvider ldap
# Ветка каталога ldap для поиска и авторизации пользователей
AuthLDAPURL "ldap://localhost/ou=Users,ou=OWN,dc=site,dc=local"
# Имя пользователя и пароль с которым apache будет обращаться к ldap
# для работы
AuthLDAPBindDN cn=glav,dc=site,dc=local
AuthLDAPBindPassword пароль
Теперь можно проверять и искать ошибки =). Описанная конфигурация проверят наличие пользователя в ветке каталога ldap и его пароль.
Дальше будет чуть чуть интереснее . Надо убедиться, что пользоатель не просто находится в каталоге ldap и пароль верен, но состоит в нужной группе. Для этого добавляем к нашему .htaccess еще несколько строк:
# Атрибут группы в которой надо проверять наличие пользователя
AuthLDAPGroupAttribute uniqueMember
# Указываем, что пользователи в группе записаны с полным именем dn
AuthLDAPGroupAttributeIsDN on
# Требуем обязательно проверки по группе g1
Require ldap-group cn=o1,ou=o1,dc=site,dc=local
После этого я наступил на шикарные грабли. Так как apache выполняет поиск в ldap-каталоге, необходимо соответствующие поля поиска проиндексировать. В нашем случае проиндексированными должны быть: cn, uid, uniqueMember. Для этого добавляем в файл конфигурации openldap /etc/openldap/slapd.conf следующие параметры:
index uid eq
index cn eq
index uniqueMember eq
Далее останавливаем сервер ldap и индексируем базы:
#/etc/init.d/slapd stop
#slapindex -f /etc/openldap/slapd.conf
После индексации (Важно!) не забудьте установить права для ldap на все файлы базы:
#chown ldap:ldap /var/lib/openldap-data/*
Запустите заново openldap и проверяйте как все это хозяйство работает.
После установки apache необходимо подключить модули ldap через конфигурацию стартового скрипта. В файле /etc/conf.d/apache2 необходимо домбавить к ключам запуска APACHE2_OPTS следующие параметры -D AUTHNZ_LDAP -D LDAP.
Настройку самого apache я опускаю, т.к. это не принципиально. Ключевым в авторизации являются параметры для ldap модулей. Это можно делать в основых файлах конфигурации и/или в файле .htaccess. Для настройки я создал каталог в корне сайта и в нем создал файл .htaccess. Таким образом доступ к содержимому этого каталога и его подкаталогов будет возможно только при успешной базовой автризации.
Для тестов у меня уже создан пользователь U1 входящий в группу G1 в подразделении O1 дерева ldap site.local.
Для базовой авторизации создал файл .htaccess:
# .htaccess
# Это сообщение будет появляться в окне базовой авторизации для ввода имени и пароля
AuthName "restricted"
# Тип авторизации базовый
AuthType Basic
# Авторизация будетп производится через ldap
AuthBasicProvider ldap
# Ветка каталога ldap для поиска и авторизации пользователей
AuthLDAPURL "ldap://localhost/ou=Users,ou=OWN,dc=site,dc=local"
# Имя пользователя и пароль с которым apache будет обращаться к ldap
# для работы
AuthLDAPBindDN cn=glav,dc=site,dc=local
AuthLDAPBindPassword пароль
Теперь можно проверять и искать ошибки =). Описанная конфигурация проверят наличие пользователя в ветке каталога ldap и его пароль.
Дальше будет чуть чуть интереснее . Надо убедиться, что пользоатель не просто находится в каталоге ldap и пароль верен, но состоит в нужной группе. Для этого добавляем к нашему .htaccess еще несколько строк:
# Атрибут группы в которой надо проверять наличие пользователя
AuthLDAPGroupAttribute uniqueMember
# Указываем, что пользователи в группе записаны с полным именем dn
AuthLDAPGroupAttributeIsDN on
# Требуем обязательно проверки по группе g1
Require ldap-group cn=o1,ou=o1,dc=site,dc=local
После этого я наступил на шикарные грабли. Так как apache выполняет поиск в ldap-каталоге, необходимо соответствующие поля поиска проиндексировать. В нашем случае проиндексированными должны быть: cn, uid, uniqueMember. Для этого добавляем в файл конфигурации openldap /etc/openldap/slapd.conf следующие параметры:
index uid eq
index cn eq
index uniqueMember eq
Далее останавливаем сервер ldap и индексируем базы:
#/etc/init.d/slapd stop
#slapindex -f /etc/openldap/slapd.conf
После индексации (Важно!) не забудьте установить права для ldap на все файлы базы:
#chown ldap:ldap /var/lib/openldap-data/*
Запустите заново openldap и проверяйте как все это хозяйство работает.
среда, 1 декабря 2010 г.
LDAP для apache с авторизацией.
Не могу претендовать на how to, но по крайней мере есть нюансы, которые отмечу. В общем потребовался мне apache с авторизацией в LDAP и с этого все началось.
Установка LDAP стандартная, интересное начинается с его настройки. Речь тут идет об OpenLDAP и дистрибутиве Gentoo. Основной файл настроек находится в каталоге /etc/openldap/ и называется slapd.conf. Для работы необходимо настроить минимум:
#/etc/openldap/slapd.conf
#
# Подключаем базовые схемы
#
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
#
# Это права доступа по умолчанию, надо потом исправить, т.к.
# т.к. любой может исправить любую запись. Так что после первичной
# настройке не забудьте исправить.
#
access to dn.base="" by * read
access to dn.base="cn=Subschema" by * read
access to *
by self write
by users read
by anonymous auth
#######################################################################
# BDB database definitions - Дальше описание базы.
#######################################################################
#
# формат файла базы
database hdb
# Это указание корня ldap каталога в базе
suffix "dc=site,dc=local"
#
checkpoint 32 30
# имя пользователя который будет управлять корнем
rootdn "cn=glav,dc=site,dc=local"
# Пароль от rootdn в зашифрованном виде
rootpw {SSHA}ххххххххххххххххххххх
# Каталог, в котором будет размещена база ldap
directory /var/lib/openldap-data
# индексы
index objectClass eq
Шифрованный пароль для rootdn можно получить сразу, выполнив команду slappasswd -h {MD5}.
При старте ldap у меня сразу не создалась БД и /etc/init.d/slapd start валился с ошибкой. Я скопировал /var/lib/openldap-data/DB_CONFIG из файла DB_CONFIG.example и все запустилось.
После этого через ldif файлы я заполнил необходимой информацией каталог. В общем все просто, но даже по прочтении кучи документации я не возьмусь кому нибудь, кроме себя, объяснять как все это работает и что я для этого сделал =). Основная проблема в том, что для использования ldap нужно понимать что из себя представляет ldap!
Для тестовых целей создадин OU (Organization Unit) добавим пользователя, группу и поместим пользователя в эту группу. В дальнейшем на этом примере напишу конфигурацию в apache.
Для добавления записей в ldap каталог, используется утилита ldapadd на вход которой передаем ldif файлы с необходимыми данными. LDIF - формат представления записей службы каталогов или их изменений в текстовой форме.
Для начала добавим OU для пользователей и групп, OU будет называться O1:
#ou.ldif
dn: ou=O1,dc=site,dc=local
objectclass: organizationalUnit
objectclass: top
ou: O1
Командой ldapadd ou.ldif данные заносятся к каталог. Аналогичным образом создаем пользователя U1:
#u1.ldif
dn: uid=pet,ou=O1,dc=site,dc=local
cn: Victor Veseli
objectclass: inetOrgPerson
objectclass: simpleSecurityObject
objectclass: top
sn: Veseli
uid: g1
userpassword: {MD5}ХХХХХХХХХХХХ
Теперь добавляем группу G1 и заносим в нее пользователя U1:
#g1.ldif
dn: cn=G1,ou=O1,dc=site,dc=local
cn: G1
objectclass: groupOfUniqueNames
objectclass: top
uniquemember: uid=pet,ou=O1,dc=site,dc=local
В итоге имеем в ldap каталоге одного пользователя u1 входящего в группу g1 в подразделении o1.
Установка LDAP стандартная, интересное начинается с его настройки. Речь тут идет об OpenLDAP и дистрибутиве Gentoo. Основной файл настроек находится в каталоге /etc/openldap/ и называется slapd.conf. Для работы необходимо настроить минимум:
#/etc/openldap/slapd.conf
#
# Подключаем базовые схемы
#
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
#
# Это права доступа по умолчанию, надо потом исправить, т.к.
# т.к. любой может исправить любую запись. Так что после первичной
# настройке не забудьте исправить.
#
access to dn.base="" by * read
access to dn.base="cn=Subschema" by * read
access to *
by self write
by users read
by anonymous auth
#######################################################################
# BDB database definitions - Дальше описание базы.
#######################################################################
#
# формат файла базы
database hdb
# Это указание корня ldap каталога в базе
suffix "dc=site,dc=local"
#
checkpoint 32 30
# имя пользователя который будет управлять корнем
rootdn "cn=glav,dc=site,dc=local"
# Пароль от rootdn в зашифрованном виде
rootpw {SSHA}ххххххххххххххххххххх
# Каталог, в котором будет размещена база ldap
directory /var/lib/openldap-data
# индексы
index objectClass eq
Шифрованный пароль для rootdn можно получить сразу, выполнив команду slappasswd -h {MD5}.
При старте ldap у меня сразу не создалась БД и /etc/init.d/slapd start валился с ошибкой. Я скопировал /var/lib/openldap-data/DB_CONFIG из файла DB_CONFIG.example и все запустилось.
После этого через ldif файлы я заполнил необходимой информацией каталог. В общем все просто, но даже по прочтении кучи документации я не возьмусь кому нибудь, кроме себя, объяснять как все это работает и что я для этого сделал =). Основная проблема в том, что для использования ldap нужно понимать что из себя представляет ldap!
Для тестовых целей создадин OU (Organization Unit) добавим пользователя, группу и поместим пользователя в эту группу. В дальнейшем на этом примере напишу конфигурацию в apache.
Для добавления записей в ldap каталог, используется утилита ldapadd на вход которой передаем ldif файлы с необходимыми данными. LDIF - формат представления записей службы каталогов или их изменений в текстовой форме.
Для начала добавим OU для пользователей и групп, OU будет называться O1:
#ou.ldif
dn: ou=O1,dc=site,dc=local
objectclass: organizationalUnit
objectclass: top
ou: O1
Командой ldapadd ou.ldif данные заносятся к каталог. Аналогичным образом создаем пользователя U1:
#u1.ldif
dn: uid=pet,ou=O1,dc=site,dc=local
cn: Victor Veseli
objectclass: inetOrgPerson
objectclass: simpleSecurityObject
objectclass: top
sn: Veseli
uid: g1
userpassword: {MD5}ХХХХХХХХХХХХ
Теперь добавляем группу G1 и заносим в нее пользователя U1:
#g1.ldif
dn: cn=G1,ou=O1,dc=site,dc=local
cn: G1
objectclass: groupOfUniqueNames
objectclass: top
uniquemember: uid=pet,ou=O1,dc=site,dc=local
В итоге имеем в ldap каталоге одного пользователя u1 входящего в группу g1 в подразделении o1.
Подписаться на:
Сообщения (Atom)