<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF104%3AHardcore_Linux</id>
		<title>LXF104:Hardcore Linux - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF104%3AHardcore_Linux"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF104:Hardcore_Linux&amp;action=history"/>
		<updated>2026-05-13T00:23:41Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF104:Hardcore_Linux&amp;diff=7481&amp;oldid=prev</id>
		<title>Kipruss: /* Станция «Рабочая» */</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF104:Hardcore_Linux&amp;diff=7481&amp;oldid=prev"/>
				<updated>2009-03-30T21:37:36Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Станция «Рабочая»&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 21:37, 30 марта 2009&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 177:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 177:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;uid: cbrown&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;uid: cbrown&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Изображение:LXF104_75_1.png|thumb|304px|Рис. 3. Просмотр справочника LDAP с помощью LAT. Снимок экрана показывает запись, добавленную нами для пользователя cbrown.]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Изображение:LXF104_75_2.png|thumb|304px|Рис. 4. Выполнение поиска в LDAP при помощи LAT.]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Теперь давайте вникать:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Теперь давайте вникать:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 198:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 201:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Рассмотрим строки 2 и 4. В строке 2 задан конкретный узел дерева справочника, откуда начнется поиск, а в строке 4 мы говорим LDAP не распространять поиск за пределы этого узла, а изучать только записи, заданные в строке 2. Фильтр поиска здесь фактически и не фильтр: он гласит «любая запись с атрибутом '''objectClass''', независимо от значения», а это вообще все записи. Итак, этот поиск выводит на дисплей содержимое определенного узла дерева.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Рассмотрим строки 2 и 4. В строке 2 задан конкретный узел дерева справочника, откуда начнется поиск, а в строке 4 мы говорим LDAP не распространять поиск за пределы этого узла, а изучать только записи, заданные в строке 2. Фильтр поиска здесь фактически и не фильтр: он гласит «любая запись с атрибутом '''objectClass''', независимо от значения», а это вообще все записи. Итак, этот поиск выводит на дисплей содержимое определенного узла дерева.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Изображение:LXF104_75_1.png|thumb|Рис. 3. Просмотр справочника LDAP с помощью LAT. Снимок экрана показывает запись, добавленную нами для пользователя cbrown.]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Изображение:LXF104_75_2.png|thumb|Рис. 4. Выполнение поиска в LDAP при помощи LAT.]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Если вы предпочли бы использовать графические инструменты для поиска в вашем справочнике LDAP или добавления учетной записи пользователя, обратите внимание на Lat (''LDAP Administration Tool''). Это одно из новоиспеченных приложений, написанное на C# с использованием Mono и ''GTK#'', поэтому вам понадобятся установленные библиотеки Mono для его использования, но на моем клиенте с Ubuntu он установился и работал без каких-либо проблем. Рисунок 3 показывает этот инструмент в работе при обозревании иерархии LDAP, а на рисунке 4 показан пример поиска по UID 555.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Если вы предпочли бы использовать графические инструменты для поиска в вашем справочнике LDAP или добавления учетной записи пользователя, обратите внимание на Lat (''LDAP Administration Tool''). Это одно из новоиспеченных приложений, написанное на C# с использованием Mono и ''GTK#'', поэтому вам понадобятся установленные библиотеки Mono для его использования, но на моем клиенте с Ubuntu он установился и работал без каких-либо проблем. Рисунок 3 показывает этот инструмент в работе при обозревании иерархии LDAP, а на рисунке 4 показан пример поиска по UID 555.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kipruss</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF104:Hardcore_Linux&amp;diff=7480&amp;oldid=prev</id>
		<title>Kipruss в 21:32, 30 марта 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF104:Hardcore_Linux&amp;diff=7480&amp;oldid=prev"/>
				<updated>2009-03-30T21:32:41Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 21:32, 30 марта 2009&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 199:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 199:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Рассмотрим строки 2 и 4. В строке 2 задан конкретный узел дерева справочника, откуда начнется поиск, а в строке 4 мы говорим LDAP не распространять поиск за пределы этого узла, а изучать только записи, заданные в строке 2. Фильтр поиска здесь фактически и не фильтр: он гласит «любая запись с атрибутом '''objectClass''', независимо от значения», а это вообще все записи. Итак, этот поиск выводит на дисплей содержимое определенного узла дерева.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Рассмотрим строки 2 и 4. В строке 2 задан конкретный узел дерева справочника, откуда начнется поиск, а в строке 4 мы говорим LDAP не распространять поиск за пределы этого узла, а изучать только записи, заданные в строке 2. Фильтр поиска здесь фактически и не фильтр: он гласит «любая запись с атрибутом '''objectClass''', независимо от значения», а это вообще все записи. Итак, этот поиск выводит на дисплей содержимое определенного узла дерева.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Изображение:LXF104_75_1.png|&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Thumb&lt;/del&gt;|Рис. 3. Просмотр справочника LDAP с помощью LAT. Снимок экрана показывает запись, добавленную нами для пользователя cbrown.]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Изображение:LXF104_75_1.png|&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;thumb&lt;/ins&gt;|Рис. 3. Просмотр справочника LDAP с помощью LAT. Снимок экрана показывает запись, добавленную нами для пользователя cbrown.]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Изображение:LXF104_75_2.png|&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Thumb&lt;/del&gt;|Рис. 4. Выполнение поиска в LDAP при помощи LAT.]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Изображение:LXF104_75_2.png|&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;thumb&lt;/ins&gt;|Рис. 4. Выполнение поиска в LDAP при помощи LAT.]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Если вы предпочли бы использовать графические инструменты для поиска в вашем справочнике LDAP или добавления учетной записи пользователя, обратите внимание на Lat (''LDAP Administration Tool''). Это одно из новоиспеченных приложений, написанное на C# с использованием Mono и ''GTK#'', поэтому вам понадобятся установленные библиотеки Mono для его использования, но на моем клиенте с Ubuntu он установился и работал без каких-либо проблем. Рисунок 3 показывает этот инструмент в работе при обозревании иерархии LDAP, а на рисунке 4 показан пример поиска по UID 555.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Если вы предпочли бы использовать графические инструменты для поиска в вашем справочнике LDAP или добавления учетной записи пользователя, обратите внимание на Lat (''LDAP Administration Tool''). Это одно из новоиспеченных приложений, написанное на C# с использованием Mono и ''GTK#'', поэтому вам понадобятся установленные библиотеки Mono для его использования, но на моем клиенте с Ubuntu он установился и работал без каких-либо проблем. Рисунок 3 показывает этот инструмент в работе при обозревании иерархии LDAP, а на рисунке 4 показан пример поиска по UID 555.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kipruss</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF104:Hardcore_Linux&amp;diff=7479&amp;oldid=prev</id>
		<title>Kipruss в 21:31, 30 марта 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF104:Hardcore_Linux&amp;diff=7479&amp;oldid=prev"/>
				<updated>2009-03-30T21:31:59Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 21:31, 30 марта 2009&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 199:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 199:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Рассмотрим строки 2 и 4. В строке 2 задан конкретный узел дерева справочника, откуда начнется поиск, а в строке 4 мы говорим LDAP не распространять поиск за пределы этого узла, а изучать только записи, заданные в строке 2. Фильтр поиска здесь фактически и не фильтр: он гласит «любая запись с атрибутом '''objectClass''', независимо от значения», а это вообще все записи. Итак, этот поиск выводит на дисплей содержимое определенного узла дерева.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Рассмотрим строки 2 и 4. В строке 2 задан конкретный узел дерева справочника, откуда начнется поиск, а в строке 4 мы говорим LDAP не распространять поиск за пределы этого узла, а изучать только записи, заданные в строке 2. Фильтр поиска здесь фактически и не фильтр: он гласит «любая запись с атрибутом '''objectClass''', независимо от значения», а это вообще все записи. Итак, этот поиск выводит на дисплей содержимое определенного узла дерева.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Изображение:LXF104_75_1.png|Рис. 3. Просмотр справочника LDAP с помощью LAT. Снимок экрана показывает запись, добавленную нами для пользователя cbrown.]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Изображение:LXF104_75_1.png&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|Thumb&lt;/ins&gt;|Рис. 3. Просмотр справочника LDAP с помощью LAT. Снимок экрана показывает запись, добавленную нами для пользователя cbrown.]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Изображение:LXF104_75_2.png|Рис. 4. Выполнение поиска в LDAP при помощи LAT.]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Изображение:LXF104_75_2.png&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|Thumb&lt;/ins&gt;|Рис. 4. Выполнение поиска в LDAP при помощи LAT.]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Если вы предпочли бы использовать графические инструменты для поиска в вашем справочнике LDAP или добавления учетной записи пользователя, обратите внимание на Lat (''LDAP Administration Tool''). Это одно из новоиспеченных приложений, написанное на C# с использованием Mono и ''GTK#'', поэтому вам понадобятся установленные библиотеки Mono для его использования, но на моем клиенте с Ubuntu он установился и работал без каких-либо проблем. Рисунок 3 показывает этот инструмент в работе при обозревании иерархии LDAP, а на рисунке 4 показан пример поиска по UID 555.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Если вы предпочли бы использовать графические инструменты для поиска в вашем справочнике LDAP или добавления учетной записи пользователя, обратите внимание на Lat (''LDAP Administration Tool''). Это одно из новоиспеченных приложений, написанное на C# с использованием Mono и ''GTK#'', поэтому вам понадобятся установленные библиотеки Mono для его использования, но на моем клиенте с Ubuntu он установился и работал без каких-либо проблем. Рисунок 3 показывает этот инструмент в работе при обозревании иерархии LDAP, а на рисунке 4 показан пример поиска по UID 555.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kipruss</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF104:Hardcore_Linux&amp;diff=7478&amp;oldid=prev</id>
		<title>Kipruss: викификация</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF104:Hardcore_Linux&amp;diff=7478&amp;oldid=prev"/>
				<updated>2009-03-30T21:28:40Z</updated>
		
		<summary type="html">&lt;p&gt;викификация&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==LDAP: Защитим вход в Dovecot==&lt;br /&gt;
&lt;br /&gt;
Позволять кому попало использовать наш почтовый сервер без аутентификации пользователя – сущее безумие. '''Д-р Крис Браун''' наведет порядок с помощью LDAP…&lt;br /&gt;
&lt;br /&gt;
Сегодняшнее утреннее чтение начнем с Книги Тукса, главы пятой, с самого первого стиха.&lt;br /&gt;
&lt;br /&gt;
# В начале был файл с паролями, и файл с паролями был Unix. Через него все пользователи могли получить доступ; и без него никто из входящих не мог пройти. И сисадмины сказали, что это хорошо.&lt;br /&gt;
# Но вот настала Великая Сеть, и возроптали сисадмины, говоря: «Файл с паролями свое отслужил, требует он дублирования данных и затрудняет масштабирование на большую сеть». Тогда Sun сказал: «Не бойтесь, ибо мы принесли вам Желтые Страницы, которые централизуют данные пользователей».&lt;br /&gt;
# Но затем явились четыре мудреца из Beetea и сказали: «Не смеете вы взять имя Желтые Страницы, оно наша собственность и наша торговая марка». И ответил им Sun: «Пускай то, что раньше звалось Желтыми Страницами, отныне зовется NIS». И сисадмины сказали, что это хорошо.&lt;br /&gt;
# Но прошло время, и снова разочаровались сисадмины, и возроптали они во второй раз: «Истинно, NIS имеет плоское пространство имен и не имеет контроля доступа».&lt;br /&gt;
# И снова сказал Sun: «Не бойтесь, ибо мы принесли вам NIS+, иерархическое пространство имен в нем и контроль доступа в избытке». Но сисадмины возроптали в третий раз, по своему неразумию.&lt;br /&gt;
# И создан был консорциум, и родил он спецификацию X500. И X500 родил DAP, DAP родил DIXIE, а DIXIE родил LDAP. И увидели сисадмины, что это хорошо. И это конец нашего утреннего чтения.&lt;br /&gt;
&lt;br /&gt;
Истинно говорю вам, в этот день, на этом уроке мы создадим службу каталогов LDAP и используем ее для аутентификации в агенте доступа к почте POP/IMAP ''Dovecot''.&lt;br /&gt;
&lt;br /&gt;
===Азбука LDAP===&lt;br /&gt;
&lt;br /&gt;
LDAP (облегченный протокол доступа к каталогам) – это служба каталогов, которую в принципе можно использовать для хранения любых данных, хотя на практике она чаще используется для хранения информации о пользователях, в частности, аутентификационных данных. Благодаря наличию открытой реализации (OpenLDAP) LDAP стал популярен в мире Linux как замена служб типа NIS или NIS+; в мире Windows она тоже хорошо известна – как основа ''Microsoft Active Directory''.&lt;br /&gt;
&lt;br /&gt;
Служба каталогов немного похожа на базу данных: обе могут хранить большие объемы информации и эффективно выполнять в ней поиск. Однако, служба каталогов оптимизирована для чтения (поиска); отношение времени записи к времени чтения обычно велико, и это не годится для ситуаций, когда требуется частое обновление данных. Для справочника естественно, что чтение выполняется в 10000 раз чаще, чем запись. Реляционные базы данных более симметричны по скорости чтения и записи. Кроме того, каталоги обычно не поддерживают транзакции, откаты и реляционные операции, типа &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;join&amp;lt;/font&amp;gt;, которые имеют важное значение для реляционных баз данных.&lt;br /&gt;
&lt;br /&gt;
Если вы представите себе печатный телефонный справочник, асимметрия между чтением и записью станет очевидной. Номера телефонов ищутся в телефонном справочнике тысячи раз на дню. Обновление справочника приводит к печати, например, 100000 новых экземпляров и распространению их между абонентами. Обычно телефонные компании делают это раз в год.&lt;br /&gt;
&lt;br /&gt;
Вы можете использовать LDAP в разных целях: например, для аутентификации постоянных пользователей Linux; или для реализации отображений ''Postfix'', таких как виртуальный почтовый ящик, рассмотренный на уроке прошлого месяца. На данном уроке мы используем LDAP для простой аутентификации пользователей в ''Dovecot''.&lt;br /&gt;
&lt;br /&gt;
Отдать должное мощи и гибкости LDAP в ограниченном пространстве статьи – примерно то же, что пытаться открыть мир классической музыки инопланетянину, промычав ему первые четыре ноты Пятой симфонии Бетховена; но мы постараемся.&lt;br /&gt;
&lt;br /&gt;
===Что в имени тебе моем?===&lt;br /&gt;
&lt;br /&gt;
Каталоги LDAP состоят из набора записей, упорядоченных в виде древовидной структуры. Каждая позиция в дереве идентифицируется так называемым «различимым именем» (distinguished name, dn). Например, dn может быть вида &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;cn=cbrown,ou=users,dc=example,dc=com&amp;lt;/font&amp;gt;. Сравним его с другими видами синтаксиса: как имя файла в Linux, оно бы записалось в виде '''/com/example/users/cbrown''', а «полное доменное имя» в DNS выглядело бы '''cbrown.users.example.com'''.&lt;br /&gt;
&lt;br /&gt;
Каждая запись в справочнике содержит информацию в виде набора пар «атрибут:значение». Какие именно атрибуты присутствуют, определяется так называемым классом объекта записи. Например, наша запись &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;cn=cbrown,ou=users,dc=example,dc=com&amp;lt;/font&amp;gt; является объектом класса &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;posixAccount&amp;lt;/font&amp;gt;. Описание, какой атрибут ассоциируется с каким классом, называется схемой, и она задается в файлах схем. Например, здесь описание класса &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;posixAccount&amp;lt;/font&amp;gt; берется из файла '''/etc/openldap/schema/nis.schema''':&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 objectclass ( 1.3.6.1.1.1.2.0 NAME ‘posixAccount’&lt;br /&gt;
 DESC ‘Abstraction of an account with POSIX attributes’&lt;br /&gt;
 SUP top AUXILIARY&lt;br /&gt;
 MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )&lt;br /&gt;
 MAY ( userPassword $ loginShell $ gecos $ description ) )&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь важно отметить имя класса, список требуемых атрибутов (условие &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;MUST&amp;lt;/font&amp;gt;) и список необязательных атрибутов (условие &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;MAY&amp;lt;/font&amp;gt;). Если вы знакомы с файлом паролей Linux, вы заметите сходство атрибутов в объекте &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;posixAccount&amp;lt;/font&amp;gt; и полях в '''/etc/passwd'''. (Учтите, однако, что атрибут LDAP &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;uid&amp;lt;/font&amp;gt; – это то, что мы назвали бы именем учетной записи, а атрибут &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;uidNumber&amp;lt;/font&amp;gt; – как раз то, что мы называем UID!) В терминах объектно-ориентированного программирования вы можете представить запись в файле схемы как описание класса, а запись в каталоге – как экземпляр класса. Также возможно наследование класса от «вышестоящего» класса (в объектно-ориентированном программировании он называется родительским или базовым). Строка &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;SUP&amp;lt;/font&amp;gt; top &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;AUXILIARY&amp;lt;/font&amp;gt; в предыдущем примере говорит нам, что вышестоящий класс, находящийся на вершине иерархии классов – это сам &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;posixAccount&amp;lt;/font&amp;gt;, который не наследуется ни от чего. Но зайти дальше в аналогиях с ООП не получится: записи LDAP содержат только данные. Никакого запускаемого кода (который ОО-программисты назвали бы методом) с объектом не ассоциируется.&lt;br /&gt;
&lt;br /&gt;
{{Врезка&lt;br /&gt;
    |Заголовок=LDAP как он есть&lt;br /&gt;
    |Содержание=На стороне сервера услуги предоставляет демон ''slapd''. В качестве своей базы данных он использует ''BDB'' (встраиваемая библиотека базы данных, первоначально разработанная UC Berkeley), а прелестно названный ''slurpd'' распространяет изменения на все копии справочника LDAP. На стороне клиента OpenLDAP предоставляет различные инструменты командной строки для манипулирования записями каталога, включающие ''ldapadd'', добавляющий информацию в каталог, и ''ldapsearch'', используемый для (угадали!) поиска по каталогу.&lt;br /&gt;
    |Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
Для просмотра человеком записи каталога LDAP отображаются в текстовом формате, называемом LDIF (формат обмена данными LDAP). Это формально заданный синтаксис, в соответствии с которым записи каталога представляются «вне» LDAP. Например, LDIF используется для предварительного создания записи при вводе ее в каталог, переноса данных из одного справочника в другой или просмотра содержимого справочника. В развитие нашего примера, LDIF-представление пользователя &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;cn=cbrown,ou=users,dc=example,dc=com&amp;lt;/font&amp;gt; будет выглядеть так:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 dn: cn=cbrown,ou=users,dc=example,dc=com&lt;br /&gt;
 objectclass: posixAccount&lt;br /&gt;
 objectclass: Account&lt;br /&gt;
 cn: cbrown&lt;br /&gt;
 uid: cbrown&lt;br /&gt;
 uidNumber: 555&lt;br /&gt;
 gidNumber: 555&lt;br /&gt;
 homeDirectory: /home/cbrown&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Мы сфокусировали здесь внимание на типе объекта '''posixAccount''', потому что он необходим нам для поддержки аутентификации.&lt;br /&gt;
&lt;br /&gt;
===Станция «Рабочая»===&lt;br /&gt;
&lt;br /&gt;
Хватит теории! Давайте же установим и сконфигурируем LDAP. Я использую сервер CentOS, как на прошлом уроке (CentOS – это эквивалент RHEL5), но все, что будет показано далее, легко применимо для других дистрибутивов RedHat или Fedora.&lt;br /&gt;
&lt;br /&gt;
Мы будем использовать LDAP, который создан в Мичиганском университете (см. &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;'''&amp;lt;nowiki&amp;gt;www.openldap.org&amp;lt;/nowiki&amp;gt;'''&amp;lt;/font&amp;gt;). Установка его в CentOS проста:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 # yum install openldap-clients openldap-servers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF104_73_1.png|thumb|300px|Рис. 1. Компоненты OpenLDAP.]]&lt;br /&gt;
&lt;br /&gt;
Рисунок 1 показывает основные компоненты OpenLDAP. Остальные компоненты клиента – модуль PAM LDAP ('''/lib/security/pam_ldap.so''') и библиотека разрешения LDAP ('''/lib/libnss_ldap.so'''), поддерживающая хранение стандартных учетных записей Linux в LDAP; мы займемся ими в следующем месяце.&lt;br /&gt;
&lt;br /&gt;
Для запуска службы LDAP необходимо кое-что изменить в файле конфигурации slapd ('''/etc/openldap/slapd.conf'''). Вот строки, которые я поменял:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  suffix = “dc=example,dc=com”&lt;br /&gt;
  rootdn = “cn=admin,dc=example,dc=com”&lt;br /&gt;
  rootpw = {SSHA}JM2o2+Z07QJ9CZxqD6CIL3aEe/zSzMmW&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первая задает «именованный контекст» нашей службы LDAP, то есть dn ее верхней записи. Здесь можно использовать все что угодно, но я основывался на доменном имени DNS (&amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;'''&amp;lt;nowiki&amp;gt;example.com&amp;lt;/nowiki&amp;gt;'''&amp;lt;/font&amp;gt;) настраиваемой машины: это стандартное решение. Вторая строка задает dn для учетной записи администратора сервера LDAP (он имеет полный контроль над содержимым каталога – это аналог root для Linux), а третья строка задает хэшированный пароль для этой учетной записи. Хэшированный пароль я сгенерировал с помощью '''slappasswd''':&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 # slappasswd&lt;br /&gt;
 New password:&lt;br /&gt;
 Re-enter new password:&lt;br /&gt;
 {SSHA}JM2o2+Z07QJ9CZxqD6CIL3aEe/zSzMmW&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
а затем вырезал и вставил результат в файл. После этого я запустил службу:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 # service ldap start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF104_74_1.png|thumb|300px|Рис. 2. Простая структура каталога LDAP для поддержки аутентификации.]]&lt;br /&gt;
&lt;br /&gt;
Далее нам надо заселить наш каталог записями, которые пригодятся для аутентификации. Чтобы сообразить, куда мы движемся, посмотрите на рисунок 2, там показана структура, которую нам надо создать.&lt;br /&gt;
&lt;br /&gt;
Сперва нужно построить и добавить в справочник узлы верхнего уровня. Я решил создать учетные записи пользователей в узле &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;ou=users,dc=example,dc=com&amp;lt;/font&amp;gt;. Слово ‘&amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;users&amp;lt;/font&amp;gt;’ не является ключевым, просто я взял такое имя. Я начал с создания файла LDIF, названного '''root.ldif''':&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 # Build the root node&lt;br /&gt;
 dn: dc=example,dc=com&lt;br /&gt;
 dc: example&lt;br /&gt;
 objectClass: dcObject&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
 ou: example dot com&lt;br /&gt;
 # Build the users ou&lt;br /&gt;
 dn: ou=users,dc=example,dc=com&lt;br /&gt;
 ou: users&lt;br /&gt;
 objectClass:&lt;br /&gt;
 organizationalUnit&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем я добавил этот узел в каталог с помощью команды:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 # ldapadd -D “cn=admin,dc=example,dc=com” -x -W -f root.ldif&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь добавим учетную запись пользователя. Выполняется это сходным образом: создается файл LDIF, а затем используется ''ldapadd'' для его добавления. Вот файл ('''newuser.ldif'''), который я создал:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 dn: cn=cbrown,ou=users,dc=&lt;br /&gt;
 example,dc=com&lt;br /&gt;
 objectclass: posixAccount&lt;br /&gt;
 objectclass: Account&lt;br /&gt;
 cn: cbrown&lt;br /&gt;
 uid: cbrown&lt;br /&gt;
 uidNumber: 555&lt;br /&gt;
 gidNumber: 555&lt;br /&gt;
 homeDirectory: /home/cbrown&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем я добавил этот узел в каталог:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  # ldapadd -D “cn=admin,dc=example,dc=com” -x -W -f newuser.ldif&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как записи LDAP нам понадобятся для аутентификации входа на сервер ''Dovecot'', я должен задать еще и пароль для пользователя, как показано здесь:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  # ldappasswd -x -D “cn=admin,dc=example,dc=com” -W -S “cn=cbrown,ou=users,dc=example,dc=com”&lt;br /&gt;
  New password:&lt;br /&gt;
  Re-enter new password:&lt;br /&gt;
  Enter LDAP Password:&lt;br /&gt;
  Result: Success (0)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь не мешает проверить, что пользователь был добавлен в каталог; давайте выполним поиск записи. Для этого можно употребить ''ldapsearch'':&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 # ldapsearch -x -b “ou=users,dc=example,dc=com” ‘(cn=cbrown)’&lt;br /&gt;
 # cbrown, users, example.com&lt;br /&gt;
 dn: cn=cbrown,ou=users,dc=example,dc=com&lt;br /&gt;
 objectClass: posixAccount&lt;br /&gt;
 objectClass: account&lt;br /&gt;
 cn: cbrown&lt;br /&gt;
 uid: cbrown&lt;br /&gt;
 uidNumber: 555&lt;br /&gt;
 gidNumber: 555&lt;br /&gt;
 homeDirectory: /home/cbrown&lt;br /&gt;
 userPassword:: e1NTSEF9cCt2Sml1enpCSTdOZjJUSU1ZcEp0c&lt;br /&gt;
 U5LTnQzVHhjZzg=&lt;br /&gt;
 # search result&lt;br /&gt;
 search: 2&lt;br /&gt;
 result: 0 Success&lt;br /&gt;
 # numResponses: 2&lt;br /&gt;
 # numEntries: 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это упражнение следует проделать для других пользователей, но если у вас их много, есть смысл автоматизировать процесс с помощью скрипта.&lt;br /&gt;
&lt;br /&gt;
Справочники создаются именно для поиска в них, поэтому стоит разобрать поиск LDAP более подробно. Команда ldapsearch немного похожа на SQL-запрос к реляционной базе данных. Попробуем обойтись без формального описания синтаксиса. Я придумал хороший пример: разбил команду на несколько строк и для удобства ссылок пронумеровал их. Первые шесть строк из представленных ниже – на самом деле одна команда (обратные слэши у них на конце указывают, что команда продолжается на следующей строке). Для запуска этой команды в терминале просто удалите номера и, естественно, слэши, набрав весь код в одну строку.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS&amp;quot;&amp;gt;&lt;br /&gt;
# ldapsearch -h mail.example.com \&lt;br /&gt;
-x -LLL -b “dc=example,dc=com” \&lt;br /&gt;
-D cn=admin,dc=example,dc=com -W&lt;br /&gt;
-s sub \&lt;br /&gt;
‘(|(uid=*brown)(gidNumber&amp;lt;=100))’ \&lt;br /&gt;
uid&lt;br /&gt;
Enter LDAP Password:&lt;br /&gt;
dn: cn=cbrown,ou=users,dc=example,dc=com&lt;br /&gt;
uid: cbrown&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь давайте вникать:&lt;br /&gt;
# Флаг &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;-h&amp;lt;/font&amp;gt; используется для указания хоста, где запущен сервер LDAP. По умолчанию считается, что это localhost.&lt;br /&gt;
# Аргумент &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;-x&amp;lt;/font&amp;gt; велит команде использовать простой метод аутентификации (не SASL), &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;-LLL&amp;lt;/font&amp;gt; снижает число комментариев и прочих лишних слов в выводе, а флаг &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;-b&amp;lt;/font&amp;gt; определяет, где мы хотим начать поиск в дереве справочника. В нашем случае мы начинаем с вершины дерева.&lt;br /&gt;
# Флаг &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;-D&amp;lt;/font&amp;gt; задает dn пользователя, под которым мы хотим зайти (это пользователь, определенный параметром &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;rootdn&amp;lt;/font&amp;gt; в '''slapd.conf'''), а &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;-W&amp;lt;/font&amp;gt; велит команде запрашивать пароль.&lt;br /&gt;
# Здесь говорится, что поиск должен захватывать все ветви указанной базы, так что в данном случае мы запускаем поиск по всему справочнику.&lt;br /&gt;
# Пример фильтра поиска. Он говорит «покажите мне записи, где имя пользователя заканчивается на ‘brown’ или ID группы меньше или равно 100». Фильтры поиска – самая трудная часть синтаксиса для правильного написания, но (в определенном смысле) и самая важная.&lt;br /&gt;
# Эта строка содержит список имен атрибутов, которые мы хотим отобразить (в нашем случае просто имя пользователя). Если список пуст, ''ldapsearch'' покажет все атрибуты.&lt;br /&gt;
# Далее мы запрашиваем пароль для входа LDAP.&lt;br /&gt;
&lt;br /&gt;
Наконец, строки 8 и 9 показывают вывод поиска.&lt;br /&gt;
&lt;br /&gt;
Осилим еще один пример?&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS&amp;quot;&amp;gt;&lt;br /&gt;
# ldapsearch -x \&lt;br /&gt;
-b “ou=users,dc=example,dc=com” \&lt;br /&gt;
-D cn=admin,dc=example,dc=com -W \&lt;br /&gt;
-s base ‘(objectClass=*)’&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Рассмотрим строки 2 и 4. В строке 2 задан конкретный узел дерева справочника, откуда начнется поиск, а в строке 4 мы говорим LDAP не распространять поиск за пределы этого узла, а изучать только записи, заданные в строке 2. Фильтр поиска здесь фактически и не фильтр: он гласит «любая запись с атрибутом '''objectClass''', независимо от значения», а это вообще все записи. Итак, этот поиск выводит на дисплей содержимое определенного узла дерева.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF104_75_1.png|Рис. 3. Просмотр справочника LDAP с помощью LAT. Снимок экрана показывает запись, добавленную нами для пользователя cbrown.]]&lt;br /&gt;
[[Изображение:LXF104_75_2.png|Рис. 4. Выполнение поиска в LDAP при помощи LAT.]]&lt;br /&gt;
&lt;br /&gt;
Если вы предпочли бы использовать графические инструменты для поиска в вашем справочнике LDAP или добавления учетной записи пользователя, обратите внимание на Lat (''LDAP Administration Tool''). Это одно из новоиспеченных приложений, написанное на C# с использованием Mono и ''GTK#'', поэтому вам понадобятся установленные библиотеки Mono для его использования, но на моем клиенте с Ubuntu он установился и работал без каких-либо проблем. Рисунок 3 показывает этот инструмент в работе при обозревании иерархии LDAP, а на рисунке 4 показан пример поиска по UID 555.&lt;br /&gt;
&lt;br /&gt;
===Аутентификация Dovecot===&lt;br /&gt;
&lt;br /&gt;
Давайте закруглимся, применив каталог LDAP к полезному делу. Читатели предыдущего номера могут помнить, что мы оставили нашего героя (почтовый сервер ''Dovecot'') нуждающимся в аутентификации учетных записей POP3 базы данных пользователей, независимых от учетных записей пользователей в Linux.&lt;br /&gt;
&lt;br /&gt;
Оказывается, ''Dovecot'' может использовать LDAP для аутентификации двумя способами: он может войти в LDAP с именем пользователя ‘rootdn’ и паролем ‘rootpw’, затем посмотреть имя пользователя и хэшированный пароль пользователя, который пытается аутентифицироваться, а может просто попробовать подключиться к серверу LDAP с именем и паролем того пользователя, кто пытается войти, и посмотреть, успешна ли попытка. Вход в LDAP известен как ‘связывание’, и эта техника называется аутентификационной связью. Этот метод мы и будем использовать.&lt;br /&gt;
&lt;br /&gt;
Настройка ''Dovecot'' на использование LDAP для аутентификационной связи требует изменений в файле '''/etc/Dovecot.conf'''. Вот строки, которые я менял:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 auth_verbose = yes&lt;br /&gt;
 auth_debug = yes&lt;br /&gt;
 passdb ldap {&lt;br /&gt;
 args = /etc/dovecot-ldap.conf&lt;br /&gt;
 }&lt;br /&gt;
 userdb ldap {&lt;br /&gt;
 args = /etc/dovecot-ldap.conf&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первые две строки включают вывод отладочных сообщений. На рабочем сервере они вам не понадобятся, но мне файл журнала ('''/var/log/maillog''') очень помог при отладке конфигурации ''Dovecot''. Две остальные строфы файла указывают, что мы будем использовать LDAP и как базу данных паролей, и как базу данных пользователей, и задают место размещения файла конфигурации LDAP для ''Dovecot''.&lt;br /&gt;
&lt;br /&gt;
Дико извиняюсь, но есть еще один файл конфигурации! Для его создания я начал с копирования примера конфигурации LDAP из дистрибутива ''Dovecot'' на место:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  # cp /usr/share/doc/dovecot-1.0/examples/dovecot-ldap.conf /etc&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем я сделал следующие изменения в '''/etc/Dovecot-ldap.conf''' (номера строк опять-таки нужны только для ссылок на них в тексте):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS&amp;quot;&amp;gt;&lt;br /&gt;
hosts = localhost&lt;br /&gt;
dn = cn=admin,dc=example,dc=com&lt;br /&gt;
dnpass = adminpw&lt;br /&gt;
auth_bind = yes&lt;br /&gt;
auth_bind_userdn = cn=%u,ou=users,dc=example,dc=com&lt;br /&gt;
base = ou=users,dc=example,dc=com&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Строка 1 задает имя сервера, на котором запущен LDAP. Строка 2 определяет dn учетной записи, которое ''Dovecot'' будет использовать для входа в LDAP, а строка 3 задает пароль для этой учетной записи. (Вообще-то было бы лучше не использовать для этого учетную запись с полными правами rootdn, а создать особую учетную запись для ''Dovecot''). Строка 4 говорит, что будет использоваться аутентификационная связь, а строка 5 задает dn пользователя, которого мы пробуем аутентифицировать как такового (над этим мне пришлось поломать голову!). В файле конфигурации ''Dovecot'', &amp;lt;font color=&amp;quot;darkred&amp;quot;&amp;gt;%u&amp;lt;/font&amp;gt; ссылается на имя пользователя, которое использует MUA (почтовый агент) пользователя, чтобы войти. Строка 6 определяет узел в дереве справочника LDAP, под которым находятся учетные записи пользователей.&lt;br /&gt;
&lt;br /&gt;
Угнездив на месте эти строки, я смог подсоединиться к службе POP3 ''Dovecot'' с учетной записью cbrown и забрать почту.&lt;br /&gt;
&lt;br /&gt;
Если у вас что-то не заработало, загляните в файл журнала, обычно '''/var/log/maillog'''. Сообщения, оставляемые ''Dovecot'', очень подробны и говорят сами за себя. '''LXF'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Что еще почитать? (врезка)===&lt;br /&gt;
&lt;br /&gt;
# По LDAP существует множество книг. Самыми полезными мне показались две: ''LDAP System Administration by Gerald Carter'' (O’Reilly, 1-56592-491-6), и ''Understanding and Deploying LDAP Directory Services by Howes, Smith and Good'' (Addison Wesley, 0672323168). Последняя более академическая (и тяжелая!)&lt;br /&gt;
# Официальная документация ''Dovecot'' доступна по адресу http://wiki.dovecot.org. В частности, статья http://wiki.dovecot.org/AuthDatabase/LDAP показывает, как сделать аутентификацию LDAP в ''Dovecot''. Кроме того, '''slapd.conf''', '''ldap.conf''' и все инструменты командной строки имеют прекрасные man-страницы.&lt;br /&gt;
# Основную информацию по сборке почтового сервера можно найти по адресам http://freshrpms.net/docs/mail-server и http://wanderingbarque.com/howtos/mailserver/mailserver.html. (Это очень подробное пошаговое руководство, написанное Питером Лэйси [Peter Lacey]; оно охватывает интеграцию ''Postfix'', ''Dovecot'', OpenLDAP, Jamm, ''Cyrus-SASL'' и ''SquirrelMail'', и основано на RHEL 3).&lt;br /&gt;
&lt;br /&gt;
[[Категория:Учебники]]&lt;br /&gt;
[[Категория:Hardcore Linux]]&lt;br /&gt;
[[Категория:Крис Браун]]&lt;/div&gt;</summary>
		<author><name>Kipruss</name></author>	</entry>

	</feed>