Сценарии preexec и postexec

We use cookies. Read the Privacy and Cookie Policy

Сценарии preexec и postexec

Samba поддерживает параметры preexec и postexec, которые позволяют выполнять некоторые команды при регистрации пользователя и завершении его работы с разделяемым объектом. В качестве значения параметра preexec задаются команды, которые должны быть выполнены при регистрации пользователя, соответственно команда, указанная как значение postexec, выполняется при завершении работы пользователя с объектом. Например, если вы хотите, чтобы при обращении к разделяемому объекту сервер Samba передавал почтовое сообщение по адресу billy@harding.threeroomco.com, вы должны включить в определение этого объекта следующее выражение:

preexec = mail -s "Share being used"

 billy@harding.threeroomco.com

Если пользователь зарегистрируется для работы с объектом, Samba пошлет от его имени сообщение по адресу billy@harding.threeroomco.com. В поле Subject сообщения будет включена строка "Share being used", а по адресу отправителя получатель сможет выяснить, кто из пользователей работал с объектом.

Аналогично действует параметр postexec, но команда, заданная в качестве его значения, выполняется после окончания работы с объектом. Зная особенности работы Windows-клиентов с разделяемыми объектами SMB/CIFS, можно сделать вывод, что команда не будет выполнена сразу же после того, как пользователь закроет окно, открытое с помощью Network Neighborhood или My Network Places, но через некоторое время это обязательно произойдет.

Разновидностями параметров preexec и postexec являются параметры root preexec и root postexec. Отличаются они лишь тем, что команды, заданные в качестве значений root preexec и root postexec, выполняются от имени пользователя root. Таким образом, можно задавать команды, для выполнения которых требуются специальные привилегии. Используя эти параметры, следует соблюдать осторожность. Если вы допустите ошибку, у вас могут возникнуть проблемы, связанные с безопасностью системы.

При выполнении сценариев сервер Samba может обрабатывать переменные, перечисленные в табл. 7.1. Эти переменные позволяют настроить сценарии preexec и postexec для работы с конкретными пользователями, клиентами, операционными системами, установленными на клиентских компьютерах, и т.д. (Некоторые из переменных, представленных в табл. 7.1, специально предназначены для использования в разделяемых объектах принтеров.)

Таблица 7.1. Переменные, доступные в системе Samba

Переменная Назначение %a Операционная система на клиентском компьютере. Возможные значения: OS2 (OS/2), Samba, UNKNOWN, WfWg (DOS или Windows for Workgroups), Win2K, Win95 (Windows 95 или 98) и WinNT %d Идентификатор процесса сервера %g Основная группа, к которой относится пользователь, указанный в переменной %u %G Основная группа, к которой относится пользователь, указанный в переменной %U %h Доменное имя сервера (в домене TCP/IP) %H Рабочий каталог пользователя, информация о котором содержится в переменной %u %I IP-адрес клиента %j Номер задания на печать %L NetBIOS-имя сервера %m NetBIOS-имя клиента %M Доменное имя клиента (в домене TCP/IP) %N Сервер NIS %p Путь к каталогу, связанному с разделяемым объектом, используемый при автомонтировании %P Путь к каталогу, связанному с разделяемым объектом %R Уровень протокола SMB/CIFS. Возможные значения: CORE, COREPLUS, LANMAN1, LANMAN2 и NT1 %s Имя файла, переданного разделяемому объекту принтера %S Имя разделяемого объекта %T Текущая дата и время %u Эффективное имя пользователя UNIX %U Имя пользователя, зарегистрированного в системе UNIX (может не совпадать с именем, хранящимся в переменной %u) %v Номер версии Samba

Параметры preexec и postexec в основном предназначены для того, чтобы задавать команды, подготавливающие разделяемые объекты к использованию. Так, например, если есть опасность, что пользователь, работающий в системе Windows, по ошибке удалит конфигурационный файл Linux, сценарий preexec можно использовать для создания резервной копии этого файла. Кроме того, параметры preexec и postexec применяются для решения самых разнообразных задач; некоторые из них описаны ниже.

• С помощью сценариев preexec и postexec можно создавать и удалять символьные ссылки между совместно используемыми каталогами и рабочим каталогом пользователя. (По умолчанию Samba следует символьным ссылкам, но поведение системы можно изменить, установив параметр follow symlinks = No.)

• С помощью параметра preexec можно монтировать заменяемые носители в устройствах, соответственно сценарии postexec могут быть использованы для их размонтирования. Такая возможность очень полезна при работе с гибкими дисками, устройствами чтения компакт-дисков и другим оборудованием.

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

• При необходимости вы можете сформировать разделяемый объект и создать сценарии, которые будут преобразовывать графические файлы, находящиеся в соответствующем каталоге, в другие форматы и передавать преобразованные файлы другим объектам.

• Разделяемые объекты с ограниченным доступом можно использовать при выполнении задач администрирования. Возможна конфигурация, при которой этот объект содержит копии файлов из каталога /etc, а сценарий, заданный с помощью параметр postexec, просматривает копии файлов и в случае обнаружения изменений копирует их в каталог /etc и перезапускает компьютер.

• Чтобы уменьшить риск потери информации, необходимо периодически создавать резервные копии данных. Разделяемый объект можно использовать для создания процедуры копирования, запускаемой по инициативе пользователя. Для этого надо создать Windows-сценарий, который открывал бы разделяемый объект Samba, копировал все файлы с компьютера в этот объект и закрывал его. Для решения данной задачи следует также построить сценарий разделяемого объекта, осуществляющий копирование данных на резервный носитель. При наличии такого объекта и сценариев пользователю остается установить носитель на устройство, запустить сценарий Windows и ожидать завершения копирования данных.

Некоторые из описанных примеров реализуются чаще других. Ряд задач (например, задачи администрирования) создают потенциальную угрозу безопасности системы, поэтому соответствующие сценарии находят лишь ограниченное применение. Поэтому приведенные выше примеры — это не описания задач, которые должны быть решены с помощью сценариев preexec и postexec, а лишь демонстрация возможностей этих сценариев.

На заметку

Несмотря на то что вы можете задавать необходимые команды непосредственно в составе параметров preexec и postexec, гораздо удобнее оформлять команды в виде сценария оболочки и задавать сценарий в качестве значения соответствующего параметра. Это позволит вам выполнять в ответ на действия пользователей сколь угодно сложные операции.

В некоторых случаях возникает необходимость ограничить число пользователей, которые могут одновременно обращаться к разделяемому объекту. Это можно сделать с помощью параметра max connections. Чтобы полностью исключить одновременные действия пользователей, надо задать параметр max connections = 1. Однако такая конфигурация иногда создает нежелательные побочные эффекты, так как при обращении к разделяемым объектам с помощью Network Neighborhood и My Network Places соединения с разделяемыми объектами закрываются с некоторым опозданием.