Аппаратные средства и архитектура


TDB-файлы, используемые в Samba



Скачать 10.18 Mb.
Pdf просмотр
страница51/68
Дата22.11.2016
Размер10.18 Mb.
Просмотров7408
Скачиваний0
1   ...   47   48   49   50   51   52   53   54   ...   68
TDB-файлы, используемые в Samba
Samba хранит свои TDB-файлы в нескольких местах. Самый простой способ найти эти файлы – просмотреть вывод команды smbd -b, представленный в листинге 1.
Листинг 1. Вывод информации о сборке smbd
# smbd -b
Paths:
SBINDIR: /usr/sbin
BINDIR: /usr/bin
SWATDIR: /usr/share/swat
CONFIGFILE: /etc/samba/smb.conf
LOGFILEBASE: /var/log/samba
LMHOSTSFILE: /etc/samba/lmhosts
LIBDIR: /usr/lib
MODULESDIR: /usr/lib/samba
SHLIBE1T: so
LOCKDIR: /var/lib/samba
STATEDIR: /var/lib/samba
CACHEDIR: /var/lib/samba
PIDDIR: /var/run
SMB_PASSWD_FILE: /var/lib/samba/private/smbpasswd
PRIVATE_DIR: /var/lib/samba/private

На местоположения, в которых могут храниться TDB-файлы, указывают несколько путей в листинге 1. К счастью, многие из них одинаковы, поэтому количество вариантов сокращается. Например, переменные
LOCKDIR, STATEDIR и CACHEDIR указывают на директорию /var/lib/samba, а переменная
PRIVATE_DIR является поддиректорией с именем
private. Вы можете самостоятельно зайти в эти директории и поискать в них TDB-файлы.
TDB-файлы можно разделить на две основные группы: постоянные и временные. В таблице
1 перечислены имена и описания постоянных файлов.
Таблица 1. Постоянные TDB-файлы
Имя файла
Назначение
account_policy.
tdb
Хранит политики учетных записей, такие как пороговые значения блокировок и длина паролей.
group_mapping
.tdb
Хранит информацию о сопоставлениях между идентификаторами пользователей Windows NT (SID) и UNIX®.
ntdrivers.tdb
Хранит информацию о драйверах принтеров.
ntforms.tdb
Хранит информацию о формах очереди печати, например, размеры бумаги. ntprinters.tdb
Хранит информацию о параметрах инициализации принтеров.
passdb.tdb
Используется в некоторых режимах безопасности для хранения учетных данных аутентификации.
registry.tdb
Базовый реестр, к которому можно получить доступ с других
Windows-компьютеров.
secrets.tdb
Хранит локальные секретные значения (например, ключи machine key компьютеров) и учетные данные (например, пароли LDAP).
share_info.tdb
Хранит списки контроля доступов (ACL) для каждого локального общего ресурса.
winbindd_idma p.tdb
Хранит информацию о сопоставлениях между идентификаторами пользователей Windows NT (SID) и динамически создаваемыми пользователями при использовании winbind.
Для всех TDB-файлов, перечисленных в таблице 1, следует создавать резервные копии. Эта процедура будет описана далее в этой статье.
Помимо постоянных файлов в Samba используется множество временных TDB-файлов, в которых хранится информация о состоянии и кэшированные данные. Эти файлы не нужно резервировать, поскольку они заново создаются при каждом запуске Samba.
Использование TDB-файлов
Управление TDB-файлами в Samba осуществляется с помощью трех инструментов:

tdbdump: позволяет выводить содержимое TDB-файлов.

tdbbackup: позволяет создавать и проверять резервные копии TDB-файлов.

tdbtool: позволяет создавать, просматривать и редактировать TDB-файлы.
Просмотр содержимого TDB-файла
Самый быстрый способ заглянуть в TDB-файл – это сделать его дамп с помощью команды tdbdump. В листинге 2 показан дамп файла ntprinters.tdb.
Листинг 2. Использование команды tdbdump
[root@bob
]# tdbdump /var/lib/samba/ntprinters.tdb
{
key(21) = "GLOBALS/c_setprinter\00"
data(4) = "\00\00\00\00"
}

{
key(13) = "SECDESC/test\00"
data(140) = "\80\00\00\00\00\00\02\00\80\00\00\00\01\00\04\80\14\00\00\00$\00\00
\00\00\00\00\004\00\00\00\01\02\00\00\00\00\00\05 \00\00\00 \02\00\00\01\02\00\00
\00 \02\00\00\00\02\18\00\0C\00\0F\10\01\02\00\00\00\00\00\05 \00\00\00 \
02\00\00"
}
{
key(17) = "SECDESC/cups-pdf\00"
data(140) = "\80\00\00\00\00\00\02\00\80\00\00\00\01\00\04\80\14\00\00\00$\00\00
\00\00\00\00\004\00\00\00\01\02\00\00\00\00\00\05 \00\00\00 \02\00\00\01\02\00\00
\00 \02\00\00\00\02\18\00\0C\00\0F\10\01\02\00\00\00\00\00\05 \00\00\00 \
02\00\00"
}
Из листинга 2 видно, что база данных содержит три ключа. Первый ключ длиной в 21 байт
(длина указывается в скобках) называется
GLOBALS/c_setprinter и содержит в конце имени NULL-символ (ноль в кодировке ASCII). Непечатные символы отображаются в шестнадцатеричном формате (символ обратной косой черты, после которой следуют две шестнадцатеричные цифры). Значение первого ключа длиной в 4 байта состоит только из
NULL-символов.
Следующие два ключа называются
SECDESC/test и SECDESC/cups-pdf, и оба заканчиваются NULL-символом. Значения ключей хранятся в нечитаемом двоичном формате, поэтому они отображаются в виде шестнадцатеричных непечатных символов.
Создание резервных копий и восстановление TDB-файлов
В таблице 1
были перечислены несколько постоянных TDB-файлов, которые должны оставаться в системе после перезагрузки и для которых нужно создавать резервные копии.
Как и в большинстве баз данных, нельзя просто скопировать файл, поскольку его копия может оказаться поврежденной. Это может случиться в тех случаях, если в файл, который вы копируете, записываются какие-либо данные; это приводит к несогласованному состоянию резервной копии. Другой способ создания резервных копий заключается в остановке демона
Samba и последующем копировании файлов.
Самый простой способ создания резервных копий TDB-файлов – это использование утилиты tdbbackup из пакета Samba. Эта утилита может безопасно создавать копию TDB-файла, даже если в него записываются данные. Утилита tdbbackup также может проверять целостность TDB-файлов и автоматически восстанавливать их из резервных копий в случае обнаружения ошибок. В листинге 3 приведен пример создания резервной копии TDB-файла.
Листинг 3. Создание резервной копии TDB-файла
[root@bob samba]# ls -l account_policy.*
-rw------- 1 root root 8192 Apr 7 2008 account_policy.tdb
[root@bob samba]# tdbbackup account_policy.tdb
[root@bob samba]# ls -l account_policy.*
-rw------- 1 root root 8192 Apr 7 2008 account_policy.tdb
-rw------- 1 root root 36864 Dec 8 21:42 account_policy.tdb.bak
[root@bob samba]# tdbdump account_policy.tdb | md5sum
53ea608f0d93061480549c511756b778 -
[root@bob samba]# tdbdump account_policy.tdb.bak | md5sum
53ea608f0d93061480549c511756b778 -

Первая команда в листинге 3 просто выводит список всех файлов, начинающихся с account_policy, с целью показать, что они существуют в единственном экземпляре.
Затем с помощью команды tdbbackup account_policy.tdb создается резервная копия базы политик учетных записей. Третья команда снова выводит список всех файлов, начинающихся с account_policy, с целью показать, что был создан новый файл с расширением .bak. Размер резервной копии отличается от размера оригинала, но если сделать дампы каждого файла и посчитать их MD5-хэши, то можно убедиться в том, что их контрольные суммы совпадают. Больший размер файла не является проблемой, поскольку содержимое каждой пары "ключ-значение" идентично.
Если по какой-либо причине исходный файл account_policy.tdb будет поврежден (например, при аварийной перезагрузке компьютера), можно восстановить его из резервной копии. Эта процедура показана в листинге 4.
Листинг 4. Проверка и восстановление TDB-файла
[root@bob samba]# ls -l account_policy.tdb
-rw------- 1 root root 1213 Dec 8 21:49 account_policy.tdb
[root@bob samba]# tdbbackup -v account_policy.tdb tdb_oob len 1256 beyond eof at 1213
restoring account_policy.tdb
[root@bob samba]# ls -l account_policy.tdb*
-rw------- 1 root root 36864 Dec 8 21:49 account_policy.tdb
-rw------- 1 root root 36864 Dec 8 21:42 account_policy.tdb.bak
[root@bob samba]# tdbbackup -v account_policy.tdb account_policy.tdb : 17 records
[root@bob samba]# tdbdump account_policy.tdb | md5sum
53ea608f0d93061480549c511756b778 -
Первая команда в листинге 4 показывает, что файл сильно уменьшился в размере. Затем снова запускается команда tdbbackup с флагом –v для проверки целостности TDB-файла.
Если файл окажется поврежденным, то вы увидите список ошибок с последующим сообщением о том, что данный файл был восстановлен. Сравнив размеры файлов с помощью команды ls, можно увидеть, что текущая база данных была замещена своей резервной копией.
Команду tdbbackup можно безбоязненно запускать несколько раз. Если эта команда работает с неповрежденным файлом базы данных (например, предпоследняя команда в листинге 4), то она просто выводит количество строк в файле. Команда MD5 также показывает нам ту контрольную сумму, которую мы видели до того, как файл был поврежден.
Примечание. Команда tdbbackup поддерживает использование групповых символов, поэтому вы можете резервировать или восстанавливать несколько файлов одновременно.
Изменение TDB-файлов
Утилита tdbtool позволяет изменять данные внутри TDB-файлов, а также смотреть отдельные ключи и значения прямо в файле, избавляя от необходимости делать его дамп и сортировать вывод.
Предупреждение
При работе с Samba редко возникает необходимость изменения данных внутри TDB-файла, поскольку либо файлы содержат структуры внутренних данных, либо для этого существуют более удобные инструменты. Тем не менее, рассмотрение этой темы входит в цель экзамена,
поэтому необходимо рассказать о ней.
Команда tdbtool может принимать команды из командной строки или работать в интерактивном режиме. Чтобы выполнить все необходимые действия в командной строке, запустите команду tdbtool example.tdb команда опции, где example.tdb – это имя вашего файла, а команда – команда, после которой идут все необходимые опции. Для использования оболочки tdb просто запустите команду tdbtool, по желанию указав в командной строке имя файла.
Для создания базы данных просто запустите tdbtool, а затем введите команду create test.tdb. В результате на жестком диске будет создана база данных test.tdb, открытая для записи в рамках текущего сеанса работы. Если у вас уже имеется TDB-файл, можно указать в командной строке его имя или использовать команду open. Интересно, что единственный способ создания TDB-файла непосредственно из командной строки требует указать имя дважды, например, tdbtool test.tdb create test.tdb, в результате чего выдается ошибка, но база данных успешно создается.
После создания новой базы данных или открытия существующей доступны следующие опции:

dump: полностью показывает содержимое базы данных, как это делает tdbdump.

keys: показывает только ключи в кодировке ASCII или (вместе с командой hexkeys) в шестнадцатеричном формате.

erase: полностью удаляет содержимое базы данных без подтверждения.

info: показывает общее количество ключей и байтов в базе данных.

check: проверяет целостность базы данных.

speed: оценивает быстродействие операций чтения и записи в базу данных.

show key: выводит значения указанного ключа.

delete key: удаляет ключ вместе с его значением.
Для добавления и управления данными используются команды insert и store. Каждая из этих команд принимает параметры для ключа и значения (параметры для значения являются необязательными). Если не указывать значение ключа, то оно будет содержать нулевой байт данных.
Вставка записи (операция insert) означает создание новой записи, тогда как при сохранении
записи (операция store) ее старое значение замещается новым. Отличия этих команд продемонстрированы в листинге 5.
Листинг 5. Вставка и сохранение записей
tdb> insert mykey myvalue tdb> insert mykey newvalue insert failed tdb> store mykey newvalue
Storing key:
key 5 bytes mykey data 8 bytes
[000] 6E 65 77 76 61 6C 75 65 newvalue tdb> store newkey someothervalue
Storing key:
key 6 bytes newkey data 14 bytes
[000] 73 6F 6D 65 6F 74 68 65 72 76 61 6C 75 65 someothe rvalue

В листинге 5 выполняется следующая последовательность действий:
1. Вставка нового ключа с именем mykey и значением myvalue. Эта операция выполнена успешно.
2. Вставка ключа с тем же именем, но с другим значением. Эта операция завершилась с ошибкой, поскольку ключ с таким именем уже существует.
3. Вместо вставки ключа используется операция сохранения. Эта операция выполнена успешно с более подробным выводом.
4. Сохранение нового ключа с новым значением. Эта операция выполнена успешно, даже не смотря на то, что ключа с таким именем не существует.
В командной оболочке tdb можно использовать транзакции, позволяющие выполнять последовательность команд и применять либо отклонять их как единую группу. В листинге 6 приведен пример выполнения двух транзакций.
Листинг 6. Использование транзакций
tdb> transaction_start tdb> insert somekey somevalue tdb> show somekey key 7 bytes somekey data 9 bytes
[000] 73 6F 6D 65 76 61 6C 75 65 somevalu e tdb> transaction_cancel tdb> show somekey fetch failed tdb> transaction_start tdb> insert somekey somevalue tdb> transaction_commit tdb> show somekey key 7 bytes somekey data 9 bytes
[000] 73 6F 6D 65 76 61 6C 75 65 somevalu e
Начало транзакции в листинге 6 определяется командой transaction_start. Затем выполняется вставка нового ключа. Если бы другой процесс в это время считывал данные из
БД, то он не увидел бы этот ключ, поскольку транзакция еще не подтверждена (процесс с открытой транзакцией также не видит новый ключ). Затем транзакция отменяется командой transaction_cancel. Мы видим, что ключ отсутствует в базе данных.
После этого выполняется та же последовательность действий, но транзакция не отменяется, а подтверждается командой transaction_commit. Теперь ключ существует в базе данных, и его видят все пользователи.
Если база данных находится в режиме транзакции, доступ для других пользователей может блокироваться; это означает, что они будут ждать окончания транзакции. В связи с этим будьте аккуратны при использовании транзакций в рабочей базе данных! Несмотря на то, что транзакции являются мощным средством защиты данных, их чрезмерное использование потенциально может влиять на быстродействие.

Что можно использовать помимо TDB
В зависимости от конфигурации учетные записи пользователей могут храниться в различных местах. Существуют две утилиты, которые позволяют настраивать взаимодействие с хранилищами данных с помощью интерфейса командной строки. Например, при помощи одних и тех же команд можно обращаться к данным, хранящимся как в TDB-файлах, так и в каталоге LDAP.
Использование smbpasswd
Утилита smbpasswd позволяет добавлять и удалять учетные записи пользователей и компьютеров, а также изменять пароли. Наиболее часто она используется именно для смены пользователями своих паролей, либо для смены администраторами паролей других пользователей.
В следующих статьях вы более подробно узнаете о различных хранилищах паролей, но на высоком уровне пароли Samba могут храниться по-разному в зависимости от версии Samba и операционных систем, с которыми она интегрируется. И smbpasswd, и pdbedit
(описывается в следующем разделе) могут работать с любыми хранилищами, в том числе, отличными от TDB.
Клиенты Microsoft передают пароли по сети в виде собственных Microsoft-хэшей, а не в открытом виде или в виде UNIX-хэшей. Это означает, что невозможно взять Microsoft-хэш пароля и сопоставить его с паролем, хранящимся в базе данных паролей UNIX. Именно поэтому для хранения Microsoft-хэшей Samba должна использовать отдельную базу данных, которая называется хранилищем паролей.
Использование pdbedit
Утилита pdbedit управляет базой данных пользователей и политиками учетных записей
Samba. Она умеет выполнять все те же действия, что и smbpasswd, а также управлять политиками и переносить учетные данные между различными хранилищами.
Чтобы получить полный список пользователей, хранящийся в базе данных, запустите команду pdbedit -L. Указав флаг -v, вы получите еще более подробную информацию о пользователях, как показано в листинге 7.
Листинг 7. Подробная информация о пользователях
[root@bob tmp]# pdbedit -L -v
---------------
Unix username: sean
NT username:
Account Flags: [U ]
User SID: S-1-5-21-2287037134-1443008385-640796334-1001
Primary Group SID: S-1-5-21-2287037134-1443008385-640796334-513
Full Name: Sean
Home Directory: \\bob\sean
HomeDir Drive:
Logon Script:
Profile Path: \\bob\sean\profile
Domain: BOB
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: Mon, 24 May 2010 21:28:49 CDT
Password can change: Mon, 24 May 2010 21:28:49 CDT

Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Для работы с утилитой pdbedit необходимо обладать привилегиями пользователя root. С ее помощью можете изменять различные настройки пользователей (например, разрешенное время входа в систему), пароли и домашние директории, как если бы вы работали с утилитами Microsoft.
Для каждого параметра пользователя используются различные опции командной строки, поэтому для получения точной информации обратитесь к man-странице pdbedit(8).
Также важно упомянуть о том, что Samba воспринимает учетные записи пользователей и компьютеров одинаково. В листинге 8 показана база данных паролей сервера Samba, настроенного в качестве контроллера домена.
Листинг 8. База данных паролей, содержащая пароли компьютеров
[root@sergeant
]# pdbedit -L
root:0:root mythupstairs$:4294967295:MYTHUPSTAIRS
BOB$:1043:Machine sean:1002:Sean,,,
sergeant$:4294967295:Machine
Имена, оканчивающиеся знаком доллара (
$) – это учетные записи компьютеров, используемые для аутентификации компьютеров в домене. Соответствующий секретный ключ может храниться в файле secrets.tdb на удаленном сервере и в файле passdb.tdb на контроллере домена.
Что дальше
Эта статья завершает тему 310 "Архитектура, принципы и схема работы". Следующая статья открывает новую тему и содержит материалы цели 311.1 темы 311 ("Компиляция и установка
Samba"). В ней рассказывается, как загрузить исходный код Samba и скомпилировать его.
Ресурсы
Научиться

Оригинал статьи:
Learn Linux, 302 (Mixed environments): Trivial Database files
(EN).

Прочитайте о различных хранилищах паролей
(EN) и узнайте больше о том, как работают утилиты smbpasswd и pdbedit.

Изучите протокол
NT LAN Manager и узнайте, какие данные передаются по сети при аутентификации пользователей.

Глава 41
(EN) руководства Samba содержит подробную информацию о базах данных
TDB и о том, как устранять связанные с ними проблемы.

На Web-сайте программы сертификации LPIC
(EN) вы найдете подробные цели, списки задач и примерные вопросы всех трех уровней сертификации на администратора Linux-систем профессионального института Linux. В частности, на этом сайте представлены подробные цели экзамена LPI 302
(EN), а также примеры
заданий и вопросов
(EN).

Просмотрите всю серию статей для подготовки к экзаменам института LPI
(EN) на сайте developerWorks, основанных на предыдущих целях, определенных до апреля
2009 года, чтобы изучить основы администрирования Linux и подготовиться к экзаменам для получения сертификата администратора Linux.

В разделе Linux сайта developerWorks можно найти сотни пошаговых инструкций и руководств
, загрузить программные продукты, а также получить ссылки на форумы и многие другие ресурсы, ориентированные на разработчиков и администраторов Linux.

Смотрите демонстрационные материалы по запросу на сайте developerWorks
(EN), ориентированные как на новичков, так и на опытных разработчиков.
Получить продукты и технологии

Загрузите
Samba
(EN) и следите за последними новостями разработки проекта.

Загрузите исходный код TDB
(EN), если вы планируете использовать TDB в ваших проектах.

Если вам необходим графический интерфейс или более глубокая интеграция с различными средами, взгляните на инструменты для работы с учетными записями
(EN) для Samba.

Изучаем Linux, 302 (смешанные среды):
Конфигурирование и компиляция Samba из
исходного кода
Собираем Samba с чистого листа
Родерик Смит (Roderick Smith)
, автор и консультант, IBM
Описание: Как и большинство других программ для Linux, Samba является Open
Source-проектом, поэтому можно бесплатно загрузить файлы с исходным кодом и скомпилировать из них двоичный пакет для своей системы. В результате всегда можно получить более новые версии программного обеспечения, чем те, которые включены в дистрибутив, настраивать различные опции компиляции, настраивать компилятор на оптимальную производительность и даже изменять исходный код. О том, как это сделать, вы узнаете из этой статьи.
Больше статей из этой серии
Дата: 05.04.2012
Уровень сложности: сложный
Об этой серии
Эта серия статьей поможет вам освоить задачи администрирования операционной системы
Linux. Вы можете использовать материалы этих статей для подготовки к экзаменам программы LPIC третьего уровня (LPIC-3)
Чтобы посмотреть описания статей этой серии и получить ссылки на них, обратитесь к нашему перечню материалов для подготовки к экзаменам LPIC-3
. Этот перечень постоянно дополняется новыми статьями по мере их готовности и содержит текущие (по состоянию на
ноябрь 2010 года) цели экзаменов сертификации LPIC-3.
В этой статье рассматриваются следующие темы:

Идентификация важных пакетов Samba и их содержимого.

Поиск и установка приложений, от которых зависит Samba.

Описание структуры программного обеспечения Samba.

Определение важных параметров компиляции Samba.
Эта статья поможет вам подготовиться к сдаче экзамена LPI 302 (специализация "Смешанные среды") и содержит материалы цели 311.1 темы 311. Цель имеет вес 1.
Предварительные требования
Чтобы извлечь наибольшую пользу из наших статей, необходимо обладать продвинутыми знаниями о Linux и иметь работоспособный компьютер с Linux, на котором можно будет выполнять все встречающиеся команды. В частности, предполагается, что читатель умеет работать с командной строкой Linux и в общих чертах понимает структуру программного обеспечения (исходный и двоичный код) и процедуры компиляции. Для выполнения примеров этой статьи ваш компьютер должен быть подключен к Интернету и на нем должен быть проинсталлирован компилятор
C (например, GNU Compiler Collection [GCC]).

Получение исходного кода Samba
Исходный код Samba можно бесплатно загрузить с Web-сайта Samba (раздел
Ресурсы
). Если вы уже знаете, как скомпилировать и проинсталлировать программное обеспечение из исходного кода, то у вас не должно возникнуть проблем с Samba. Тем не менее, поскольку во многих случаях Samba очень важна для работы в сетевых сервисов, то необходимо убедиться в том, что вы загрузили именно то программное обеспечение, которое вам требуется. С этой целью разработчики Samba предоставляют ключи аутентификации, которые можно использовать для проверки загруженного дистрибутива.
Загрузка исходного tarball-файла
Исходный код Samba можно бесплатно загрузить с Web-сайта Samba. Ссылка на последнюю стабильную версию (на момент написания статьи это версия 3.5.6) расположена на его главной странице. Щелкните по ссылке, чтобы получить эту версию дистрибутива Samba; tarball-файл будет помещен в директорию загрузок вашего браузера. Ссылка на загрузку
Samba следующей, четвертой версии, также расположена на главной странице Web-сайта, однако учтите, что эта версия находится в стадии альфа-тестирования уже много лет, поэтому используйте ее, только если вам необходимы ее возможности или если вы хотите участвовать в разработке Samba.
На странице загрузки Samba также имеются ссылки на архивы старых версий Samba, ссылки на инструкции по загрузке ПО с помощью Git, Control Version System и других инструментов, ссылки на различные вспомогательные утилиты, например, менеджеры GUI, пакеты
SMB/CIFS для других платформ и т. д. В частности, там есть одна особенно важная ссылка на ключ GnuPG (GPG) для пакета Samba. Если вы хотите проверить подлинность пакета
Samba, как это будет описано в следующем разделе, необходимо скачать этот файл
(samba-pubkey.asc).



Поделитесь с Вашими друзьями:
1   ...   47   48   49   50   51   52   53   54   ...   68


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал