1 авг. 2008 г.

Samba: приступаем к настройке

Для начала определимся со структурой каталогов на разделе /FileServer - для примера рассмотрим такой вариант:
/FileServer/etc Папка будет содержать файлы конфигурации Samba
/FileServer/netlogon Папка для скриптов входа в домен
/FileServer/otdel_1 Папка 1 отдела
/FileServer/otdel_N Папка N отдела
/FileServer/Public Общий для всех отделов ресурс
Соответственно, в основном файле конфигурации /etc/samba/smb.conf прописываем:
include=/FileServer/etc/smb.global
include=/FileServer/etc/%U.conf
- то есть мы будет управлять каждым пользователем отдельно. Такое управление выбрано как более гибкое, нежели управление группами пользователей, потому что оно позволяет более жестко контролировать отдельных пользователей в случае необходимости в таком контроле. В обычный ситуации я создаю один конфигурационный файл для всей группы, а для отдельных пользователей делаю на него symlink ("мягкую" ссылку на файл) по имени пользователя.
При этом не забываем следить, чтобы все указанные в конфигурационных файлах каталоги и файлы существовали и имели правильные права. То есть после создания папок на разделе файл-сервера нужно установить на них атрибуты доступа для пользователей:
# chmod 777 /FileServer/otdel*
# chmod 777 /FileServer/Public*
Теперь сформируем файл /FileServer/etc/smb.global:
[global]
null passwords = false
workgroup=MY_DOMAIN
netbios name=MyServ
server string=File Server
character set=KOI8-R
client code page=866
unix password sync = yes
passwd chat = *new*password* %n\n *new*password*
%n\n *success*
passwd program = /usr/bin/passwd %u
interfaces=eth0
bind interfaces only=True
hosts deny=ALL
hosts allow=192.168.0.0/255.255.0.0 127.0.0.1
protocol=NT1
security=domain
encrypt passwords=yes
lm interval=0
oplocks=False
level2 oplocks=No

syslog=1
wins support=Yes
domain master=Yes
local master=Yes
preferred master=Yes
os level=255
log level=0
log file=/dev/null
domain logons=yes
logon script=%U.bat
create mask=0666
directory mask=0777
security mask=0777
force create mode=0777
nt acl support =yes
socket options =SO_KEEPALIVE SO_BROADCAST
                                  TCP_NODELAY
SO_RCVBUF=4096 SO_SNDBUF=4096
domain admin group = root
add user script = /usr/sbin/useradd -d
                                 /dev/null -g
machines -s /bin/false -M %u
logon path = \%L\Profiles\%U

[Profiles]
path = /var/lib/samba/profiles
browseable = no
read only = no
create mask = 0600
directory mask = 0700
Проведем анализ - что же мы тут написали. Как видим, у нас есть два раздела: [global] и [Profiles] - первый отвечает за информацию непосредственно о сервере и общих настройках, а второй описывает каталог, в котором будут храниться профили пользователей на сервере. Соответственно, каталог /var/lib/samba/profiles должен существовать - и при этом права доступа должны разрешать писать туда всем (# chmod 777 /var/lib/samba/profiles).
Раздел [global] - главные моменты:
workgroup Название домена, в котором участвует сервер
netbios name Как будет откликаться сервер по NetBIOS-протоколу. Не делайте его таким же, как и имя рабочей группы!
hosts allow Список сетей, которым разрешен доступ к серверу
interfaces Список сетевых интерфейсов, которым разрешен доступ к серверу
security Говорит, какой будет аутентификация
encrypt passwords Разрешаем шифрованные пароли
local master Samba сразу берет на себя роль мастер-браузера
preferred master При запуске устраивает перевыборы с наибольшим шансом для себя
wins support Запускаем wins-сервер
os level Уровень ОС. Чем выше номер, тем выше вероятность стать главным браузером сети
domain logons Разрешаем подсоединения в режиме домена
logon script Скрипт, который выполнится при входе в домен
domain admin group Какой пользователь может добавлять машины и пользователей в домен
add user script Позволяет samba работать как PDC Windows, то есть добавляет имя машины в список зарегистрированных в домене
Более подробную информацию по командам конфигурации samba можно получить с помощью # man smb.conf.
Следующим этапом мы создадим файл smb.netlogon со таким содержимым:
[netlogon]
path=/FileServer/netlogon
writeable=no
guest ok=no
browsable=no
available=yes
Здесь описывается "шара" (сетевой ресурс) для возможности выполнения скрипта при входе в домен.
И последний штрих - пример файла конфигурации для пользователя user, принадлежащего к отделу № 1, файл user.conf:
include=/FileServer/etc/smb.global
include=/FileServer/etc/smb.netlogon

[Otdel]
path=/FileServer/otdel_1
comment=Информация отдела
browsable=yes
available=yes
writeable=yes
recycle bin=/FileServer/otdel_1/.recycled
mangled names=no
directory mask=0777
create mask=0666
fstype=NTFS

[Public]
path=/FileServer/Public
comment=Общая информация
browsable=yes
available=yes
writeable=yes
mangled names=no
directory mask=0777
create mask=0666
fstype=NTFS

[Inst_Prog]
path=/install
comment=Инсталяционное ПО
browsable=yes
available=yes
writeable=no
mangled names=no
fstype=NTFS

[HP_5000]
printer=lp
comment = Queue for HP LaserJet 5000
browseable = yes
printable = yes
public = yes
writable = no
create mode = 0700
Проанализируем, что получилось. Итак, у нас есть четыре сетевых ресурса, три из них - это дисковые пространства, а последний - очередь на сетевой принтер. Параметр printer=lp дает нам ссылку на имя очереди принтера, который предварительно был установлен в системе и получил имя lp. Менеджер управления принтерами вызывается с помощью команды:
# /usr/bin/redhat-config-printer
Ресурс [Inst_Prog] предоставляет пользователям возможность получить доступ к инсталляционным пакетам программ и драйверам в режиме "только чтение".
Ресурс [Otdel] - это папка отдела, к которому принадлежит пользователь; при описании этого ресурса была использована команда для организации на этом ресурсе "сетевой корзины" (recycle bin=/FileServer/otdel_1/.recycled). Как видно из синтаксиса команды, мы можем указать в качестве корзины как полный путь, так и относительный (например: recycle bin=.recycled). При использовании относительного пути в качестве базы для имени будет использован путь к сетевому ресурсу, в котором и описано правило по использованию "сетевой корзины".
Следующим шагом будет написание файла скрипта, который будет выполняться при входе в домен,- обычно в этом файле производят подключение сетевых ресурсов и синхронизацию времени, хотя можно выполнять и другие задачи (например, запуск на рабочей станции программы удаленного администрирования - Remote Admin).
Скрипт /FileServer/netlogon/user.bat:
@echo off
net use h: \MyServ\Otdel
net use i: \MyServ\Public
net use k: \MyServ\Inst_Prog
net time \MyServ /SET /YES
Здесь следует обратить внимание на одну деталь, связанную с кодовыми таблицами Windows и Linux: созданный в Linux файл для операционной системы выглядит как одна строка и, соответственно, написанные нами команды выполняться не будут. Чтобы обойти эту проблему, воспользуемся программой конвертации файлов из кодовой системы Linux/Unix в DOS/Windows:
# unix2dos /FileServer/netlogon/user.bat
На выходе получим файл в кодировке DOS, который ОС Windows сможет правильно интерпретировать.
Нам осталось сделать еще одну маленькую операцию - и можно будет переходить к тестированию наших настроек.
В процессе эксплуатации "сетевая корзина" будет заполняться данными, и нам нужно предусмотреть вариант переполнения корзины и - как следствие - исчерпание дискового пространства, предоставленного пользователю на сетевом ресурсе.
Для решения этой задачи создадим скрипт clear_recycled, который поместим в каталог /etc/cron.daily. Это позволит выполнять скрипту каждую ночь и выполнять запланированные нами действия над "сетевой корзиной". В тело скрипта поместим следующие строки:
#del after 1 day recycled file
find /FileServer/otdel*/.recycled -type f -atime +1
-exec rm {} \; >& /dev/null
Приведенный скрипт просматривает во всех папках отделов "сетевую корзину" - и файлы, которые были помещены туда более одного дня назад, будут удалены. Параметр, отвечающий за данную опцию,- -atime +1. Здесь вы можете указать любое нужное количество дней. (Более подробно о возможностях команды find смотрите: man find.)

Комментариев нет: