понедельник, 14 февраля 2011 г.

Простая настройка файлового сервера Samba

Появилась необходимость установки файлового сервера на Debian 5 (которая Lenny). Сложностью конфигурация не отличается. Нужно чтобы было несколько папок доступных только для чтения (софт, антивирусные базы и т.п.), одна папка для полного доступа (так называемая файлопомойка), и две скрытые папки для избранных людей, доступ к которым будет осуществляться по имени пользователя и паролю. Из репозитариев была установлена Samba версии 3.2.5 командой:
apt-get install samba
Открываем файл конфигурации следующей командой:
nano /etc/samba/smb.conf
Он состоит из нескольких разделов. Название каждого раздела является именем ресурса, видимого в сети, кроме раздела [global], в котором задаются глобальные настройки для файлового сервера, если они не прописаны индивидуально для каждого ресурса. Далее приведена конфигурация с пояснением всех параметров:

[global]
#определяет секцию глобальных настроек
workgroup = Otdel_11
#задает рабочую группу в сети для сервера (то есть компьютер будет находиться в рабочей группе Otdel_11)
server string = %h fileshare
#описание комьютера в сети, где %h - имя компьютера. Так как компьютер именуется proxy, то его описание выглядит "Proxy fileshare" (имя компьютера задается в файле /etc/hostname)
security = share
#модель доступа к файловому серверу. SHARE определяет вход в систему без проверки имени пользователя и пароля. Кроме этой модели существует еще три способа аутентификации на сервере. Например при значении USER запрашивается имя пользователя и пароль
encrypt passwords = true
#шифрование пароля. В данном случае оно включено
printable = no
#запрет на печать через этот компьютер
log file = /media/disk/log/samba/log.%m
#место сохранения лог-файла
max log size = 1000
#максимальный размер лог-файла в килобайтах. При превышении этого размера к имени файла будет автоматически дописано .old
log level = 0
#детализация лог-файла (0 это минимальное значение)
show add printer wizard = no
#запрет на отображение иконки принтера в сети
load printers = no
#этот параметр определят, все ли принтеры будут загружены по умолчанию для просмотра. В данном случае нет
disable spoolss = yes
#отключает установку и загрузку принтеров с сервера Samba
acl compatibility = auto
#определяет совместимость списков доступа операционной системы. Обычно этот параметр изменять не требуется, поэтому оставляем значение по умолчанию
smb ports = 139
#порт, на котором будет работать файловый сервер (указан стандартный)

#Далее следуют секции расшаренных сетевых ресурсов и описание их параметров. Первой описана папка, доступ в которую разрешен для чтения и записи в нее файлов всем пользователям сети (файлопомойка):
[File]
#в квадратных скобках указано имя ресурса, которое будет отображаться у пользователей в сети
path = /media/disk/NetworkShare/file
#путь к этому ресурсу
comment = Папка для временного хранения файлов
#описание данного сетевого ресурса, видимое в сети
guest ok = yes
#доступ к ресурсу без запроса пароля
guest only = yes
#для подключения к ресурсу используются только гостевые соединения
browseable = yes
#этот параметр определяет, видна папка в сети или является скрытой. В данном случае видна
writable = yes
#разрешение на запись в этот каталог

#В следующих секциях описываются папки, которые доступны только для чтения. Это [Source], [Nod32_3_upd], [Nod32_2_upd] и [basesdw]. Все они настроены одинаково. Ниже приведены параметры, которые отличаются от предыдущих:
[Source]
#имя ресурса, видимое в сети (Source)
path = /media/disk/NetworkShare/Source
comment = Программное обеспечение
guest ok = yes
guest only = yes
browseable = yes
writable = no

#запрет на запись в эту папку

[Nod32_3_upd]
path = /media/disk/NetworkShare/nod4
comment = Антивирусная база для Nod32 3 и 4 версии
guest ok = yes
guest only = yes
browseable = yes
writable = no

[Nod32_2_upd]
path = /media/disk/NetworkShare/nod_upd
comment = Антивирусная база для NOD32 2 версии
guest ok = yes
guest only = yes
browseable = yes
writable = no

[basesdw]
path = /media/disk/NetworkShare/basesdw
comment = Антивирусная база для DrWeb 4 версии
guest ok = yes
guest only = yes
browseable = yes
writable = no


#Далее описываются секции [drweb], [Root] и [vit]. Доступ к следующим ресурсам имеет ограниченное число людей. В Windows соединение осуществляется посредством подключения сетевого диска с использованием "другого имени" (имени пользователя и пароля, которое задается командой smbpasswd, описанной подробнее ниже).

#Ресурс drweb был создан для того, чтобы некоторые пользователи (т.е. администраторы), могли распаковывать через windows антивирусные базы. Он дублирует папку /media/disk/NetworkShare/basesdw.

[drweb]
path = /media/disk/NetworkShare/basesdw
comment = Распаковка баз для DrWeb 4
guest ok = no

#Доступ к ресурсу с запросом пароля
guest only = no
#Запрет гостевых подключений
browseable = no
#Отключает видимость папки в сети
writable = yes
read only = no

#Запрещает пользователю создавать или изменять файлы в данной директории. В этом случае отключено
invalid users = guest
#Пользователи, доступ которым запрещен к этому ресурсу.
write list = @sysadmin, @vit
#Пользователи, которые имеют полный доступ к данной папке. Группа пользователей задается так - @group (перед названием группы нужно поставить собаку), а пользователь - user. Группы пользователей и пользователи указываются так, как они называются в системе
inherit acls = yes
inherit owner = yes
inherit permissions = yes
map acl inherit = yes

#Эти четыре параметра были указаны для наследования прав доступа родительского каталога для вновь созданных файлом папок. Так как сюда подключается не один пользователь, то эти параметры должны быть все включены.

[Root]
path = /media/disk/Sysadmin
comment = Root Debian
guest ok = no
guest only = no
browseable = no
writable = yes
read only = no
invalid users = guest
write list = @sysadmin, @vit
inherit acls = yes
inherit owner = yes
inherit permissions = yes
map acl inherit = yes

[vit]
path = /home/vit
comment = Домашняя папка
guest ok = no
guest only = no
browseable = no
writable = yes
read only = no
invalid users = guest, user1, user2, practic
write list = vit, @vit
inherit acls = yes
inherit owner = yes
inherit permissions = yes
map acl inherit = yes

[global]
workgroup = Otdel_11
server string = %h fileshare
security = share
encrypt passwords = true
printable = no
log file = /media/disk/log/samba/log.%m
max log size = 1000
log level = 0
show add printer wizard = no
load printers = no
disable spoolss = yes
acl compatibility = auto
smb ports = 139

[File]
path = /media/disk/NetworkShare/file
comment = Папка для временного хранения файлов
guest ok = yes
guest only = yes
browseable = yes
writable = yes

[Source]
path = /media/disk/NetworkShare/Source
comment = Программное обеспечение
guest ok = yes
guest only = yes
browseable = yes
writable = no

[Nod32_3_upd]
path = /media/disk/NetworkShare/nod4
comment = Антивирусная база для Nod32 3 и 4 версии
guest ok = yes
guest only = yes
browseable = yes
writable = no

[Nod32_2_upd]
path = /media/disk/NetworkShare/nod_upd
comment = Антивирусная база для NOD32 2 версии
guest ok = yes
guest only = yes
browseable = yes
writable = no

[basesdw]
path = /media/disk/NetworkShare/basesdw
comment = Антивирусная база для DrWeb 4 версии
guest ok = yes
guest only = yes
browseable = yes
writable = no

[drweb]
path = /media/disk/NetworkShare/basesdw
comment = Распаковка баз для DrWeb 4
guest ok = no
guest only = no
browseable = no
writable = yes
read only = no
invalid users = guest
write list = @sysadmin, @vit
inherit acls = yes
inherit owner = yes
inherit permissions = yes
map acl inherit = yes

[Root]
path = /media/disk/Sysadmin
comment = Root Debian
guest ok = no
guest only = no
browseable = no
writable = yes
read only = no
invalid users = guest
write list = @sysadmin, @vit
inherit acls = yes
inherit owner = yes
inherit permissions = yes
map acl inherit = yes

[vit]
path = /home/vit
comment = Домашняя папка
guest ok = no
guest only = no
browseable = no
writable = yes
read only = no
invalid users = guest, user1, user2, practic
write list = vit, @vit
inherit acls = yes
inherit owner = yes
inherit permissions = yes
map acl inherit = yes

Сохраняем сделанные изменения и выходим из текстового редактора nano клавишами Ctrl+X. Клавишей Y подтверждаем наш выбор. Затем перезагружаем файловый сервер для применения изменений командой:
/etc/init.d/samba restart
Вместо /etc/init.d/samba restart можно прописать
/etc/init.d/samba stop
/etc/init.d/samba start
Первая команда остановит самбу, а вторая ее снова запустит.

Для доступа к скрытым ресурсам добавляем пользователей сначала в систему, а потом уже в файловый сервер samba. Про добавление пользователей и групп пользователей в систему показано здесь. В samba пользователь user добавляется следующей командой:
smbpasswd -a user
Параметр -a обозначает, что пользователя нужно создать. Имя должно совпадать с именем пользователя, указанным в системе. Команда попросит ввести пароль пользователя дважды. Эта команда с параметром -e включит пользователя user:
smbpasswd -е user
Параметр -d в данной команде отключит пользователя user в самбе:
smbpasswd -d user
Параметр -x удалит пользователя user из системы:
smbpasswd -x user
Также можно упомянуть о команде smbstatus, которая отображает используемые на сервере в данный момент общие ресурсы.
Не стоит забывать о правах доступа к папкам на самом сервере. Очень часто из-за этого бывают проблемы с записью или чтением содержимого общих ресурсов.
Теперь можно наслаждаться проделанной работой!

2 комментария: