В системах Windows NT/2000/XP используется более сложная модель защиты, чем в Windows 9x/Me. В Windows NT/2000/XP поддерживаются ACL (Access Control Lists — списки контроля доступа), которые позволяют непосредственно определить уровень доступа конкретного пользователя к файлу. Samba поддерживает отображение прав доступа для владельца, группы и всех пользователей Linux в Windows ACL. Это позволяет хранить на сервере Samba информацию о правах, установленных в системе Windows NT/2000/XP. Поддержка ACL задается с помощью параметра
nt acl support
; по умолчанию принимается значение
Yes
. Если вы не хотите поддерживать соответствие между правами в Windows NT/2000/XP и Linux, задайте для данного параметра значение
No
.
На заметку
В
файловых системах DOS и Windows 9x/Me существует признак, который разрешает или запрещает запись в файл. Этот признак воздействует на права владельца, группы и пользователя, поэтому для его поддержки необходимо соответствующим образом изменить значения параметра
create mask
или
directory mask
. ACL обеспечивают полный контроль доступа к файлам, в частности, позволяют разрешить или запретить запись в файл.
Ограничение доступа к разделяемым объектам
Samba использует различные средства контроля доступа к серверу. В качестве примера можно привести уже упоминавшиеся параметры
hosts allow
и
hosts deny
и, конечно же, модель аутентификации, согласно которой пользователь должен указывать имя и пароль. Samba также предоставляет средства контроля доступа к отдельным разделяемым объектам. Наиболее важными средствами управления доступом являются параметры
valid users
и
invalid users
. В качестве значений этих параметров задаются списки пользователей, которым соответственно разрешено или запрещено обращаться к разделяемому объекту. Если вы используете параметр
valid users
, задайте перечень имен пользователей, разделенных пробелами. Эти пользователи получат право доступа к объекту, а для остальных доступ будет запрещен. Аналогично, параметр
invalid users
используется для создания "черного списка". Даже если пользователи, указанные в нем, имеют право обращаться ко всем остальным объектам, доступ к данному объекту для них будет закрыт.
Помимо
valid users
и
invalid users
, для контроля доступа могут также быть использованы параметры
write list
и
read list
. Эти параметры позволяют переопределять для отдельных пользователей установки, разрешающие чтение и запись или только чтение. Предположим, что вы создали разделяемый объект и поместили в него программные файлы. Очевидно, что подавляющее большинство пользователей не должны вносить изменения в содержимое этого объекта, поэтому данный разделяемый объект целесообразно определить как предназначенный только для чтения. Однако некоторые пользователи будут заниматься обновлением программ, поэтому им надо предоставить право записи. Этих пользователей можно определить с помощью параметра
write list
.
В качестве примера применения описанных выше параметров рассмотрим следующий фрагмент конфигурационного файла:
[control]
path = /home/samba/control
read only = Yes
invalid users = thomas susan
write list = gertrude henry
Для большинства пользователей данный объект допускает только чтение. Двум пользователям (
thomas
и
susan
) доступ к объекту полностью запрещен, а пользователи
gertrude
и
henry
имеют право не только читать данные, но и записывать их.
Организация сервера печати с помощью Samba
Разделяемые объекты, представляющие принтеры, используются по такому же принципу, как и объекты, предназначенные для организации совместного доступа к файлам. Для того чтобы вывести данные на печать, клиент передает файл разделяемому объекту принтера. Сервер обрабатывает этот файл и выводит его содержимое на устройство печати. Многие из параметров, которые используются при описании разделяемых объектов файлов, применимы и для объектов принтеров. Так, например, в описания разделяемых объектов принтеров можно включать параметры, управляющие доступом пользователей. С другой стороны, в определении
таких объектов неуместны параметры, которые управляют использованием в именах файлов символов верхнего и нижнего регистра.
Трудности, возникающие при поддержке разделяемых принтеров, в основном связаны с обработкой заданий на печать, передаваемых Windows-клиентами. В зависимости от типа очереди Linux, такие задания должны либо модифицироваться, либо оставаться неизменными. В некоторых случаях приходится создавать различные конфигурации для PostScript-принтеров и принтеров, в которых отсутствует поддержка данного языка.
На заметку
При рассмотрении вопросов взаимодействия с устройством печати предполагается, что принтер уже подключен к компьютеру и может выводить данные, которые передаются ему в системе Linux. (Для некоторых принтеров отсутствуют драйверы Ghostscript, но эти принтеры могут успешно использоваться посредством Samba.)
Создание разделяемого объекта принтера
Основное различие между разделяемыми объектами файлов и принтеров состоит в том, что в описании последнего присутствует параметр
printable = Yes
или
print ok = Yes
(эти параметры являются синонимами). Каталог, указанный в определении объекта, представляет собой временный каталог спулинга (он не должен совпадать с каталогом спулинга системы Linux, в качестве которого обычно используется
/var/spool/lpd
). По умолчанию принимается каталог
/tmp
, но в некоторых дистрибутивных пакетах Linux для этой цели создается каталог
/var/pool/samba
. При определении прав доступа для этого каталога должен быть установлен бит, запрещающий пользователям удалять из каталога файлы, которые были созданы другими пользователями. Как правило, к каталогу спулинга применяется команда
chmod 1777 /каталог
или
chmod o+t /каталог
. (Значение 1777 позволяет всем пользователям записывать данные в каталог. Такие права доступа рекомендованы для каталогов, используемых для поддержки спулинга.) Один и тот же каталог может применяться для организации нескольких очередей к принтерам. Ниже приведен пример разделяемого объекта принтера.
[laser]
comment = Laser printer in Room 7
path = /var/spool/samba
printable = Yes
Параметр comment задает комментарии для разделяемого объекта
LASER
. (Этот параметр также может быть использован в разделяемых объектах файлов.) Данное описание можно применять только в том случае, если в системе имеется локальная очередь печати с именем
laser
. Если имя очереди отличается от имени разделяемого объекта, то надо указать его с помощью параметра name. Так, например, параметр
name = lр
сообщает системе о том, что необходимо использовать локальную очередь с именем
lр
.
В различных дистрибутивных пакетах Linux используются разные системы печати. В настоящее время чаще всего применяется система BSD, но системы LPRng и CUPS (Common Unix Printing System — общая система печати UNIX) также приобретают популярность. Разные системы печати отличаются друг от друга синтаксическими правилами, что необходимо учитывать при настройке Samba. Для этой цели предусмотрен параметр
printing
, который позволяет задавать систему печати вашего компьютера. Этот параметр чаще всего принимает значения BSD, LPRng или CUPS (другие значения в системе Linux задаются крайне редко). Если пакет Samba входит в состав дистрибутивного пакета Linux, то, вероятнее всего, он уже сконфигурирован для работы с соответствующей системой печати. Если в вашей версии Linux используется устаревшая система печати, вы можете применить параметр
print command
, который позволяет согласовать команды печати, используемые Samba с вашей системой. При этом переменной
%s
присваивается имя файла, указанное в задании на печать. После передачи файла системе печати его следует удалить. Параметр
print command
обеспечивает дополнительную степень гибкости и позволяет использовать Samba для решения специфических задач.