Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  frox
  SARG
  samba & ClamAV
  named
  proftpd
  cacti
  SAMBA+AD+NT ACL
  MySQL
  hylafax
  DDNS+DHCP
  cvsupd
  Samba как PDC
  Основы LDAP
  LDAP+SSL
  LDAP auth
  knockd
  rsync
  MRTG
  Rejik
  Jabber - OpenFire
  Samba(PDC) + Ldap
  squid+AD
  ATSlog
  vsftpd
  LDAP: samba, dns, dhcp
  Free-SA
  cups-samba на samba+AD
  irc + services
  Nagios - мониторинг сети
  TeamSpeak
  icecast2
  verlihub (p2p)
  Icecast2 + Darkice
  OOPS
  vsftpd + mysql
  Amanda
  HAVP
  Рыбалка на FreeBSD
  DNS сервер NSD
  DNS сервер Unbound
  mpd5, msmtp, dynamic ip
  ProFTPd + LDAP
  OpenVPN + LDAP
  Samba (PDC+BDC)
  BIND & AD
  POWERDNS
  3proxy
  eGroupWare
  GLPI
  SugarForge CRM
  Bacula
  Mysql - базовое описание
  Asterisk IP PBX
  Samba & CUPS & AD & ACL
  SMSTools 3
  Samba+ NT ACL
  phpmyadmin
  1С:Предприятие 8.1
  PurefFTPd
  qemu network
  AimSniff
  comms/scmxx
  Zoneminder
  Openfire Jabber Server
  Zoneminder 2
  Принт-Сервер Samba+LPD & AD
  Кластер OpenLDAP 2.4
  Lightsquid
  Установка Zabbix-1.6
  Установка net2ftp
  VSFTPD + AD && MySQL
  Network UPS Tools
  mpd5 L2TP client
  Apache 2.2 as a proxy
  ejabberd+mysql+icq
  HotSpot
  Установка и использование Zenoss на FreeBSD 7.2
  mysql-proxy
  DNS zones
  squid+sams+sqstat
  transmission-daemon
  Squid+AD (group access)
  SysAid Server
  MySQL Master+Master
  proftpd file auth&quota
  usb_modeswitch
  NSDadmin
  iperf Тест скорости между хостами
  Простой факс-сервер mgetty+sendfax
  SQUID-MultiCpuSystem
  vsftpd + system users
  Syslog server
  Температура в серверной
  Nagios+Digitemp
  Avast! FreeBSD
  Настройка git+gitosis
  Firefox SyncServer
  Scan+Print server FreeBSD 9
  proftpd,pgsql,web
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> программы —> Основы LDAP

Основы работы с LDAP.

Автор: fr33man.


Установку и настройку ldap-сервера я буду производить на freebsd:

spider# uname -a
FreeBSD shield 6.1-RELEASE-p6 FreeBSD 6.1-RELEASE-p6 #0: Sun Sep 
10 14:42:40 MSD 2006 root@spider:/usr/obj/usr/src/sys/SPIDER i386
spider#

Немного теории.

Cлужба каталогов LDAP (Light Weight Directory Access Protocol), является упрощенным вариантом DAP X.500, разработанного еще в 1988 году для нужд телекоммуникаций. В основе модели директории LDAP лежит идея размещения объектов в вершинах древовидной структуры. Группировка же объектов происходит по принципу размещения их в вершине одного поддерева, причем группироваться могут совершенно разные объекты. Для поиска некоторого объекта необходимо указать идентификатор корня соответствующего поддерева. Данные размещаются в директории в виде объектов. Каждый объект имеет несколько атрибутов, последний в свою очередь имеет название и значение фиксированного в LDAP типа. Тип определяет формат значения, вид его представления, способы сопоставления и упорядочивания.
Объекту присваивается класс (или классы) к которому он принадлежит с помощью обязательного аттрибута objectClass, значением которого является имя класса.  Классы объектов объявлены в схеме директории (directory schema), где задаются имя класса, атрибуты, тип атрибутов а также указывается их обязательность или опциональность. Также могут быть указаны и родительские классы, определения которых будут наследоваться. Естественно, атрибут, который упоминался в родительском классе, как обязательный, для дочернего класса также будет обязательным. Аналогично и с опциональными атрибутами. На этой радостной ноте, предлагаю перейти к практике.

Установка LDAP-сервера.

Главный сервер slapd входит в состав пакета openldap(www.openldap.org). Ставить будем из портов:

spider# make search name='openldap-server'
Port:   openldap-server-2.2.30
Path:   /usr/ports/net/openldap22-server
Info:   Open source LDAP server implementation
Maint:  delphij@FreeBSD.org
B-deps: db42-4.2.52_4 openldap-client-2.2.30
R-deps: db42-4.2.52_4 openldap-client-2.2.30
WWW:    http://www.OpenLDAP.org/

Port:   openldap-server-2.3.25
Path:   /usr/ports/net/openldap23-server
Info:   Open source LDAP server implementation
Maint:  delphij@FreeBSD.org
B-deps: db43-4.3.29 libltdl-1.5.22 libtool-1.5.22_2 openldap-client-2.3.25
R-deps: db43-4.3.29 libltdl-1.5.22 openldap-client-2.3.25
WWW:    http://www.OpenLDAP.org/

Port:   openldap-server-2.4.2.a_1
Path:   /usr/ports/net/openldap24-server
Info:   Open source LDAP server implementation
Maint:  delphij@FreeBSD.org
B-deps: db43-4.3.29 libltdl-1.5.22 libtool-1.5.22_2 openldap-client-2.4.2.a
R-deps: db43-4.3.29 libltdl-1.5.22 openldap-client-2.4.2.a
WWW:    http://www.OpenLDAP.org/

spider#

Я решил установить openldap-2.3.25, так как openldap-server-2.2.30 устаревшая версия, а  openldap-server-2.4.2.a_1 только alpha.

Сначала ставим openldap-client:

spider# cd /usr/ports/net/openldap23-client/
spider# make install clean
spider# rehash

Теперь сервер:
spider# cd /usr/ports/net/openldap23-server
spider# make config

---------------------------------------------------------------------¬
¦                Options for openldap-server 2.3.25                  ¦
¦ -----------------------------------------------------------------¬ ¦
¦ ¦ [ ] SASL              With (Cyrus) SASL2 support               ¦ ¦
¦ ¦ [ ] PERL              With Perl backend                        ¦ ¦
¦ ¦ [ ] SHELL             With Shell backend (disables threading)  ¦ ¦
¦ ¦ [ ] ODBC              With SQL backend                         ¦ ¦
¦ ¦ [ ] SLP               With SLPv2 (RFC 2608) support            ¦ ¦
¦ ¦ [ ] SLAPI             With Netscape SLAPI plugin API           ¦ ¦
¦ ¦ [X] TCP_WRAPPERS      With tcp wrapper support                 ¦ ¦
¦ ¦ [X] BDB               With BerkeleyDB support                  ¦ ¦
¦ ¦ [ ] ACCESSLOG         With In-Directory Access Logging overlay ¦ ¦
¦ ¦ [ ] AUDITLOG          With Audit Logging overlay               ¦ ¦
¦ ¦ [ ] DENYOP            With Deny Operation overlay              ¦ ¦
¦ ¦ [ ] DYNGROUP          With Dynamic Group overlay               ¦ ¦
¦ ¦ [ ] DYNLIST           With Dynamic List overlay                ¦ ¦
¦ ¦ [ ] LASTMOD           With Last Modification overlay           ¦ ¦
¦ ¦ [ ] PPOLICY           With Password Policy overlay             ¦ ¦
¦ ¦ [ ] PROXYCACHE        With Proxy Cache overlay                 ¦ ¦
¦ ¦ [ ] REFINT            With Referential Integrity overlay       ¦ ¦
¦ ¦ [ ] RETCODE           With Return Code testing overlay         ¦ ¦
¦ ¦ [ ] RWM               With Rewrite/Remap overlay               ¦ ¦
¦ ¦ [ ] SYNCPROV          With Syncrepl Provider overlay           ¦ ¦
¦ ¦ [ ] TRANSLUCENT       With Translucent Proxy overlay           ¦ ¦
¦ ¦ [ ] UNIQUE            With attribute Uniqueness overlay        ¦ ¦
¦ ¦ [ ] VALSORT           With Value Sorting overlay               ¦ ¦
¦ ¦ [ ] ACI               With per-object ACIs (experimental)      ¦ ¦
¦ ¦ [X] DYNAMIC_BACKENDS  Build dynamic backends                   ¦ ¦
¦ ¦ [X] SLURPD            Build slurpd replication daemon          ¦ ¦
+-L-----v(+)---------------------------------------------------------+
¦                       [  OK  ]       Cancel                        ¦
L---------------------------------------------------------------------

В данном случае я собирал со следующими опциями:

- С поддержкой tcp wrappers
- С поддержкой Berkeley DB
- С поддержкой динамических бэкендов(ldbm и тд.)
- С поддержкой демона репликаций slurpd <br>

Теперь собираем и устанавливаем:

spider# make install clean

... skipped ...

spider# rehash
spider#

Установка сервера закончена, теперь переходим к его настройке.

Настройка slapd.


Главный конфигурационный файл сервера slapd находится по адресу: /usr/local/etc/openldap/slapd.conf. Его и будем редактировать:


/usr/local/etc/openldap/slapd.conf:


# Подключаем схемы, основная схема -- core.schema, она обязательна!!
include         /usr/local/etc/openldap/schema/core.schema

include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema
include         /usr/local/etc/openldap/schema/misc.schema
include         /usr/local/etc/openldap/schema/nis.schema
include         /usr/local/etc/openldap/schema/openldap.schema

# Pid-файл
pidfile         /var/run/openldap/slapd.pid

# Файл с аргумнтами, которые были переданы slapd
argsfile        /var/run/openldap/slapd.args

# Путь к модулям
modulepath      /usr/local/libexec/openldap

# подгружаем модуль ldbm
moduleload      back_ldbm

# описываем доступ к информации
# указываем, что к аттрибуту userPassword 
# себе(под кем Вы находитесь в системе)
# разрешена запись, анонимам предлагается 
# зарегистрироваться, остальным пройти идти лесом. ))

access to attrs=userPassword
        by self write
        by anonymous auth
        by * none

# Доступ к остальной информации: себе -- писать, анонимам читать, остальным ничего.
access to *
        by self write
        by anonymous read
        by * none

# Примечание: пользователю cn=root,dc=l1523,dc=ru разрешена запись и чтение всего!

# Тип базы
database        ldbm

# Корень базы
suffix          "dc=l1523,dc=ru"

# dn администратора ldap
rootdn          "cn=root,dc=l1523,dc=ru"

# пароль администратора
# генерируется командой slappasswd
rootpw          {SSHA}6yoQWo9e0HkAkdRGovvSff3/Kh0uzj90

# директория, где будут храниться базы
directory       /var/db/openldap-data

# уровень отладки
loglevel        256

# Индексы, для ускорения поиска по базе
index   objectClass     eq
index   cn              eq

Добавляем в rc.conf строки, для запуска slapd и собственно запускаем:

spider# echo slapd_enable=\"YES\" >> /etc/rc.conf
spider# echo slapd_flags=\'-h \"ldapi://%2fvar%2frun%2fopenldap%2fldapi/ \
? ldap://172.16.0.1/\"\' >> /etc/rc.conf
spider# echo slapd_sockets=\"/var/run/openldap/ldapi\" >> /etc/rc.conf
spider# mv /usr/local/etc/rc.d/slapd /usr/local/etc/rc.d/slapd.sh
spider# /usr/local/etc/rc.d/slapd.sh start
Starting slapd.
spider#

Добавление, удаление, редактирование и посик объектов.

Теперь нужно создать корневой объект нашего дерева. Создадим файл base.ldif с таким содержанием:

spider# cat base.ldif

dn: dc=l1523,dc=ru
objectClass: dcObject
objectClass: organization
objectClass: top
dc:l1523
o:l1523

spider#

Теперь добавим эту запись в ldap:

spider# ldapadd -x -D "cn=root,dc=unix" -W -f base.ldif
Enter LDAP Password:
adding new entry "dc=l1523,dc=ru"

spider#

Все прошло без ошибок, значит у нас есть корневой объект. Давайте создадим контейнер test:

spider# cat test.ldif
dn: ou=test,dc=l1523,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: test

spider# ldapadd -x -D "cn=root,dc=l1523,dc=ru" -W -f test.ldif
Enter LDAP Password:
adding new entry "ou=test,dc=l1523,dc=ru"

spider#

Давайте добавим пользователя lucky:

spider# cat lucky.ldif
dn: cn=lucky,ou=test,dc=l1523,dc=ru
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
cn: lucky
sn: lucky's sername
uid: lucky
userpassword:{SSHA} *
uidNumber: 0
gidNumber: 0
gecos: Lucky User
homeDirectory: /home/lucky

spider# ldapadd -x -D "cn=root,dc=l1523,dc=ru" -W -f lucky.ldif
Enter LDAP Password:
adding new entry "cn=lucky,ou=test,dc=l1523,dc=ru"

spider#

Параметры запуска:

-x : не использовать sasl
-D "dn" : под каким пользователем подключаться
-W : запросить ввод пароля
-f file : имя файла из которого брать информацию о добовляемом объекте.<br><br>

Добавили. Теперь давайте поищем информацию:
spider# ldapsearch -x -LLL -b 'dc=l1523,dc=ru' 'uid=lucky'
dn: cn=lucky,ou=test,dc=l1523,dc=ru
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
cn: lucky
sn: lucky's sername
uid: lucky
uidNumber: 0
gidNumber: 0
gecos: Lucky User
homeDirectory: /home/lucky

spider# ldapsearch -x -LLL -b 'dc=l1523,dc=ru' '(&(uid=lucky)(uidNumber=0))'
dn: cn=lucky,ou=test,dc=l1523,dc=ru
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
cn: lucky
sn: lucky's sername
uid: lucky
uidNumber: 0
gidNumber: 0
gecos: Lucky User
homeDirectory: /home/lucky

spider#

Используемые параметры:

-x : не импользовать sasl
-LLL : уменьшить кол-во выводимой информации, может быть -L или -LL
-b 'dn' : искать, начиная с конкретного объекта dn
'filter' : последний параметр указывает фильтр для поиска, в филтре могут использовать шаблоны и логические выражения.

Теперь можно попробовать отредактировать нашего пользователя, например изменив ему homeDirectory, uidNumber и добавив loginShell, а так же удалив gecos. Создаем файл modify.ldif и изменяем информацию в ldap дереве.

spider# cat modify.ldif
dn: cn=lucky,ou=test,dc=l1523,dc=ru
changetype: modify
replace: homeDirectory
homeDirectory: /dev/null
-
replace: uidNumber
uidNumber: 100
-
add: loginShell
loginShell: /dev/null
-
delete: gecos
-

spider# ldapmodify -x -D "cn=root,dc=l1523,dc=ru" -W -f modify.ldif
Enter LDAP Password:
modifying entry "cn=lucky,ou=test,dc=l1523,dc=ru"

spider#

Теперь посмотрим на изменения:

spider# ldapsearch -x -LLL -b 'dc=l1523,dc=ru' 'uid=lucky'
dn: cn=lucky,ou=test,dc=l1523,dc=ru
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
cn: lucky
sn: lucky's sername
uid: lucky
gidNumber: 0
homeDirectory: /dev/null
uidNumber: 100
loginShell: /dev/null

spider#

Как видите, все успешно изменилось.

Если Вы хотите удалить объект, то нужно воспользоваться утилитой ldapdelete:


spider# ldapdelete -x -D "cn=root,dc=l1523,dc=ru" \
? -W 'cn=lucky,ou=test,dc=l1523,dc=ru'
Enter LDAP Password:
spider# ldapsearch -x -LLL -b 'dc=l1523,dc=ru' 'uid=lucky'
spider#

Последний параметр - dn имя объекта, который Вы хотите удалить.

Заключение.

Очень важно понять основы работы ldap, иначе в будущем Вы не сможете грамотно управлять им.



размещено: 2006-11-08,
последнее обновление: 2006-11-14,
автор: fr33man

оценить статью:

rav, 2006-12-16 в 9:12:36

ldapadd -x -D "cn=root,dc=unix" -W -f base.ldif

правильно будет:
ldapadd -x -D "cn=root,dc=l1523,dc=ru" -W -f base.ldif

0m3r, 2007-02-28 в 10:40:30

также мну приходтса юзать опц. -h && -H
без них
ldap_bind: Can't contact LDAP server (-1)

KaMa-CyTpA, 2007-06-04 в 16:59:18

А чтобы он брал с АД все эти "навороты" - можно так сделать? ну то есть типа получится копии LDAP сервера на 2003 с АД

akvazar, 2007-10-12 в 12:41:29

Статье не повредит маленькая доводка и исправление ачепяток, а так, в общем, гуд. От себя хочу добавить маленькую ссылочку на програмулю для ковыряния OpenLdap-а из гуи интерфейса, под виндами(для тех кому сложно сходу после виндузовой актив-директори делать руками). Фриварь :)
LdapAdmin

dikens3, 2008-02-08 в 17:29:28

У меня slapd долго запускался/перезапускался. Опытным путём выяснил, что это влияет запись в /etc/nssswitch.conf
group: files ldap
А точнее поиск группы в ldap. Решение получилось такое:

nss_ldap.conf
host ldap://127.0.0.1

т.е. host исправляем.

Marina, 2008-07-12 в 11:48:07

В добавление к предыдущей утилите могу сказать, что существует плагин для эклипса - Apache Directory Studio.
Если использовать эклипс с поддержкой C/C++, то работать с LDAP  будет ещё приятнее.

P.S. Огромное спасибо Автору за эту статью, прочитала её и наконец-то поняла, как примерно устроен LDAP :)

Constantine, 2008-07-13 в 14:39:03

to Dikens3
огромное тебе спасибо за замечание про исправление "host", всю голову сломал себе почему не работает!!!

Потемкин, 2008-07-31 в 12:54:45

В openldap-2.3.42 немного изменили core.schema, поэтому не выйдет добавить пользователя согласно приведенному в статье lucky.ldif. objectClass должны распологаться по-другому(в другой последовательности)
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
objectClass: top
Так работает.
Либо, если принципиально, внести соотвествующие изменения в core.shema, там всё прописано, только раскоментировать.
Ну и правильное замечание про ключ -h ко всем командам.. в моем случае все записи в rc.conf были добавлены как рекомендовано по умолчанию, то есть для хоста 0.0.0.0, поэтому отрабатывала команда ldapadd -h 0.0.0.0 дальше как в статье. Иначе Can't conect to LDAP Server (-1).
И ОЧЕНЬ важное замечание о котором не подумал автор, логи смотреть в /var/log/debug.log не зря ведь loglevel 256 ставили =)
Не совсем понятно зачем было ставить BDB и SLURPD.. В общем статья на 4 с минусом, но определенную пользу для новичков несет, хоть и вместе с гемороем))

turbo, 2008-08-04 в 17:23:08

а может быть, автор попробует на чистой системе поставить ldap и подкорректирует статейку с учетом коментов и форума? :)

Sergey, 2008-08-13 в 13:41:06

Дополняю ответы по граблям для поднятия версии:
openldap-2.4.11

cp /usr/local/etc/openldap/DB_CONFIG.example /var/db/openldap-data
/DB_CONFIG
slapd.conf - подправить теми же данными что и ldap.conf

Лучая админка http://www.ldapadministrator.com

Пользователей вводил для попробовать так:

dn: cn=lucky,ou=test,dc=l1523,dc=ru
objectClass: top
objectClass: person
sn: lucky

Sergey, 2008-08-15 в 12:29:45

Ещё добавочка. Если нужно настроить 2 зеркальных сервера собирайте со строчкой:
[X] SYNCPROV          With Syncrepl Provider overlay

Sergey, 2008-08-15 в 12:33:53

Строчку через пост выше
> slapd.conf - подправить теми же данными что и ldap.conf
не читать, потому что запарился и написал чуш

Чукот, 2008-09-19 в 2:23:01

Вот - еще раз 3 дня мучений, пока не приходит счастливая мысль отключить ipv6 ( просто -4 не помогло). И openldap24 запустился.

Выдавал до этого упрямую ошибку bi_db_open_filed (-1)

я и с правами мутил, и в трассировщике отлаживал - нет результата - несно почему не может открыть базу данных bdb46... в логах - ничего путного...

После отключения ipv6 в Ядре - все поперло как надо. Сразу.

Чукот, 2008-09-19 в 2:27:33

Это все делалось в
7.1-PRERELEASE FreeBSD 7.1-PRERELEASE #0:

Kacnep, 2008-10-07 в 12:20:04

to dikens3
Спасибо большое !!!!

sEr..., 2008-12-20 в 4:32:57

Не знаю почему, но я не понял в какой директории нужно создать фаил base.ldif???

SaveMeGood, 2009-04-01 в 12:46:59

Потемкин: objectClass должны распологаться по-другому(в другой последовательности)
Какая разница как они расположены?

Alex, 2009-04-16 в 17:34:39

товарисчи, при добавлении записи base.ldif в ldap
не хавает пароль- говорит ldap_bind: Can't contact LDAP server (-1)
кто сталкивался ? че делать?

(первые два комента читал, пробовал - не помогает)[b]

Artem, 2009-08-12 в 23:34:45

to Alex: Скорее всего потому, что ты прописал пароль в slapd.conf, a slapd  читает конфигурацию не из  него, а из slapd.d/
Это его поведение  по-умолчанию

savio, 2010-01-14 в 16:49:38

я так и не понял в чем "фишка" этого ldap'а...

xanf, 2010-02-01 в 15:02:55

не смог найти ссылки на обсуждение, спрошу тут.
уже расшиб себе лоб, пробовал ставить на двух разных машинах (7.2 и 8.0), slapd просто отказывается стартовать, перерыл все, перепробовал все советы. дебаг поразительно немногословен -
Feb  1 11:43:14 www slapd[53705]: @(#) $OpenLDAP: slapd 2.4.21 (Feb  1 2010 11:14:57) $         root@www.main.aricol.com:/usr/ports/net/openldap24-server/work/openldap-2.4.21/servers/slapd
Feb  1 11:43:14 www slapd[53705]: slapd stopped.
Feb  1 11:43:14 www slapd[53705]: connections_destroy: nothing to destroy.

где могут быть грабли, подскажите ньюбу...

xanf, 2010-02-01 в 15:15:07

отзываю просьбу, сам дурак оказался. у меня в конфиге закралась лажа... оччень помогла команда
slaptest -u
сразу мне на эти грабли и показала, и все заработало :)
спасибо за статью :)

Ivan Mironov, 2010-03-07 в 10:15:11


# Доступ к остальной информации: себе — писать, анонимам читать, остальным ничего.
access to *
       by self write


С такой настройкой любой пользователь сможет сам себе выставить uidNumber == 0 и получить права root'а (если конечно системные пользователи берутся из LDAP'а) =).

Klop, 2010-12-06 в 3:31:51

# ldapadd -x -D "cn=root,dc=unix" -f base.ldif -w secret
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
# ldapadd -x -h 127.0.0.1 -D "cn=root,dc=unix" -f base.ldif -w\ secret
ldap_bind: Invalid credentials (49)
# ldapadd -x -h 127.0.0.1 -D "cn=root,dc=l1523,dc=ru" -f \base.ldif -w secret
adding new entry "dc=l1523,dc=ru"


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 2 чел.
За последние 30 мин было: 33 человек
За сегодня было
11389 показов,
1073 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0555 секунд
Из них PHP: 40%; SQL: 60%; Число SQL-запросов: 77 шт.
Исходный размер: 178935; Сжатая: 28861