мысли

 Жалко, но я не могу вспомнить кто говорил, что народу надо давать спускать пар. Ведь все знают, что если перекрыть клапан на глухо, у котла сносит крышу.

Почему власти не стравили пар? Ведь всего делов то — устроить пару показательных расследований с деятельностью избирательных комиссий. Согласиться стем, что вон они гады все накрутили! Но мы с этим боремся! Ну потеряют при этом пару процентов, но ведь в результате у них все равно будет большинство (ЕР+Жирик+Справороссы) и народ поутихнет.

Не понимаю, зачем было доводить до кипения? Зачем быковать? Причем заранее зная, что редиски забугорные спят и видят как бы у нас протащить цветную революцию.

Теперь власти придется натравливать ОМОН на свой же народ и репутация подмочена. Вон даже Путин говорит, я к Едру имею так себе отношение — вот народный фронт!!!

Апдейт:
О, власти таки послушали умных людей 🙂 Не можешь запретить, возглавь 🙂 Счаз потихоньку весь накал на тормозах спустят и не будет ни какой революции и мордобоя. Позитивно.
http://www.lenta.ru/news/2011/12/08/freedom/

cyrus-imap ipurge

После какого-то обновления (честно говоря не уследил какого), cyrus-imap перестал нормально отрабатывать скрипты в разделе EVENTS.

Например, у пользователей чистятся папки с карантином. Раньше работало вот так:
purgespam cmd=»ipurge -f -d 5 user.*.quarantine» at=0100
Но теперь программа стала «выборочно» очищать папки, некоторые просто игнорирует.

Есть подозрение, что изменили таймаут, по которому прекращается выполнение ipurge.
Пока не разобрался в причине, пришлось выкручиваться вот таким смешным образом:

purgespam cmd=»ipurge -f -d 5 user.a*.quarantine» at=0100
purgespam cmd=»ipurge -f -d 5 user.b*.quarantine» at=0110

и так далее, по всему алфавиту 🙂

Несколько админов в openldap, или каждому своя ветка

Как при большом количестве контейнеров в openldap разрешить конкретным пользователям работать с конкретными контейнерами?

Исходные данные:
корень зла: dc=test,dc=com
организация раз: o=org1,dc=test,dc=com
организация два: o=org2,dc=test,dc=com

Необходимо пользователю uid=admin1,o=org1,dc=test,dc=com дать возможность управлять (добавлять, удалять, редактировать) записи в org1. Пользователю uid=admin2,o=org2,dc=test,dc=com, аналогичные права на org1 и org2.

Мы не будем жестко прописывать в acl пользователей. Каждый раз менять sldap.conf или динамический cn=config при изменении администратора контейнера не очень удобно. Для разгарничения доступа будем использовать objectclass: groupOfNames. По сути своей — это группа, которую, в отличии от posixGroup, openldap умеет использовать в acl.

Создадим две группы: cn=admins1,dc=test,dc=com и cn=admins2,dc=test,dc=com. В первую будем добавлять пользователей, которые будут рулить org1, во вторую, пользователей управляющих org2. Обратите внимание на то, что эти группы в иерархии находятся на одном уровне с org1 и org2, это сделано для того, чтобы добавлять/удалять пользователей в эти группы мог только суперадмин.

Создать группы можно при помощи ldif файла, пример которого показан ниже. Или при помощи любого клиента ldap, например phpLDAPadmin
dn: cn=admins1,dc=test,dc=com
cn: admins1
member: uid=admin1,o=org1,dc=test,dc=com
member: uid=admin2,o=org2,dc=test,dc=com
objectclass: groupOfNames
objectclass: top

dn: cn=admins2,dc=test,dc=com
cn: admins2
member: uid=admin2,o=org2,dc=test,dc=com
objectclass: groupOfNames
objectclass: top

Теперь займемся sldap.conf. За основу был взят файл из пакета в OpenSuSE. От оригинала остались только первые два правила.

access to attrs=userPassword,userPKCS12
        by self write
        by * auth
access to attrs=shadowLastChange
        by self write
        by * read
#=====================================
access to dn.subtree=»o=org1,dc=test,dc=com»
        by self write
        by group.exact=»cn=admins1,dc=test,dc=com» write
        by anonymous auth
        by * read
#======================================
access to dn.subtree=»o=org2,dc=test,dc=com»
        by self write
        by group.exact=»cn=admins2,dc=test,dc=com» write
        by anonymous auth
        by * read
#=======================================
access to dn.base=»dc=test,dc=com»
        by * read
access to dn.one=»dc=test,dc=com»
        by * read
access to dn.base=»»
        by * read
access to dn.base=»cn=Subschema»
        by * read
access to *
        by * none

Рассмотрим подробнее этот файл. Как я уже говорил, первые два правила отсались от оригинала.
Правило доступа к контейнеру o=org1,dc=test,dc=com

access to dn.subtree=»o=org1,dc=test,dc=com»
        by self write
        by group.exact=»cn=admins1,dc=test,dc=com» write
        by anonymous auth
        by * read
  • dn.subtree — доступ ко всем объектам контейнера, включая все дочерние контейнеры.
  • by self write — любой пользователь должен иметь возможность изменять свои данные.
  • by group.exact=»cn=admins1,dc=test,dc=com» write — а вот собственно и группа админов, членам которой можно изменять все.
  • by anonymous auth — открываем возможность аутентификации пользователям.
  • by * read — тут вопрос спорный — выдавать информацию о записях или нет всем остальным? В принципе я бы поставил none, или более подробно расписал какие атрибуты можно или нельзя читать. В конце концов, что разрешать остальным — решать вам 🙂

Аналогично описан доступ ко второму контейнеру.

access to dn.base=»dc=test,dc=com»
        by * read
access to dn.one=»dc=test,dc=com»
        by * read
access to dn.base=»»
        by * read
Эти правила добавил для того, чтобы программы типа phpLDAPadmin могли отображать информацию о корневых контейнерах.

access to dn.base=»cn=Subschema»
        by * read
Это запись для удобства. В phpLDAPadmin можно смотреть схемы, описания атрибутов, при условии, что ldap сервер такую информацию отдаёт.

access to *
        by * none

Традиционное правило по умолчанию.

Вот пожалуй и все. В результате, если поменялся администратор контейнера не надо рестартовать сервер (в случае статической конфигурации) или возится с ldif файлами (в случае динамической конфигурации). В любом клиенте ldap заходим суперадмином и меняем членов групп admins1 и admins2.

phpLDAPadmin не работает шаблон PosixGroup

Решил обновить свои познания в openLDAP. В процессе подготовки столкнулся с небольшой проблемкой в phpLDAPadmin: если ставить по умолчанию openldap, в phpLDAPadmin перестаёт работать шаблон по созданию PosixGroup.
При первом входе в phpLDAPadmin выводятся предупреждения типа таких:
Posix Group: cn removed from template as it is not defined by an ObjectClass
И в дальнейшем шаблон добавления группы не работает 🙁

Лечится это просто, в sldap.conf необходимо заменить схему rfc2307bis.schema на nis.schema. Перезапустить ldap сервер. В интерфейсе phpLDAPadmin-на очистить кеш (там есть соответствующая ссылочка). После этого шаблон создания группы будет доступен.

SLES 11

Жизнь заставила вернуться к SLES.
Заказчик попросил  прикрутить к kerberos аутентификацию по карточкам. Задача вообщем не сложная, но как оказалось на на SLES+SLED. Модуль pkinit в krb5 не хочет настраиваться.
Решил посмотреть подробные логи модуля, но для этого необходимо пересобрать его исходники (во как!). Опять же не сложно, но не в SLES 🙂 У этих гадов по умолчанию на диске не поставляются -devel пакеты! Они доступны только из сетевого репозитория, который, в свою очередь, доступен только после регистрации продукта 🙂
Пришлось демо ключик брать. Сижу, качаю апдейты, день пропал 🙁

Вышла новая версия alfresco

Вышла новая версия alfresco. Только мне кажется, что ребята занимаются какими то фантиками-бантиками, вместо нормального допиливания продукта до кондиции?
http://www.opennet.ru/opennews/art.shtml?num=31996
Новый сервис для публикации контента и обновления статуса в социальных сетях и на сайтах, таких как YouTube, Facebook, LinkedIn, Twitter, Flickr и SlideShare. Сервис публикации в социальных сетях теперь является частью рабочего процесса управления контентом предприятия. Для контроля публикации на внешних ресурсах предусмотрена специальная система рецензирования материалов перед их публикацией;

Купил вот пианино…

С детства мечтал научиться играть на пианино. Но, то денег на муз школу в семье не было, то студентом был, то работал как вол. И вот все обстоятельства сошлись в кучку 🙂 и время появилось и желание и пенёнзы.
Прикупил пианину Casio Privia PX-330. Вчерась вот привезли. Распаковал, проверил нажатие всех клавиш, расписался в получении. Как и положено, пошел гаммы шпарить, И вот тут то Casio проявило себя. При сильном нажатии и удержании соль второй октавы, при нажатии на клавиши рядом перестает работать контроль силы нажатия, и ноты играются в максимальной громкости и в другой тональности. Стоит соль отпустить и все играет как нужно.
Так обидно блин. Причем видно, что проблема на уровне программы, а не механики. Ну я тут же облазил весь инет по поводу перепрошивки девайса и ничего по этому поводу не нашел 🙁 В casio предложили везти пианину в сервисный центр.
У меня сложилось ощущение, что какую бы сложную технику я ни купил, обязательно будут подляны с поездкой в сервисные центры (сейчас у меня моноблок HP ждет, когда мне надоест бороться с его DVD приводом 🙂 ). 
Но тут меня удивили в интерент магазине, где я покупал пианину. Предложили сами отвезти его в сервис и после перепрошивки завести его обратно, причем бесплатно. Вау! Бывают же чудеса. Сегодня заедут забирать. Ну и ладно, все равно моя учитель музыки пока в отпуске. Надеюсь, что к ее приезду у пианины мозги поправят.