Linux - статьи

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


Для начала определимся со структурой каталогов на разделе /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.)


Содержание раздела