Как установить Samba сервер в Ubuntu

3.6 (72.73%) 11 votes

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

Никогда не используйте SAMBA для сети в которой только Linux-машины, ибо это просто извращенство последней стадии мозга. Для организации сети Linux — Linux используйте NFS серверы. Так как NFS проще в настройке, скорость передачи данных в разы больше, не тупит при общении между машинами «Linux — Linux», безопаснее, удобнее, гибче и прочее. Samba создана для унылых Windows сетей и по этому использование оной в Линукс сети просто не природно.

Установка SAMBA сервера

Первым делом необходимо установить SAMBA-сервер и необходимые утилиты себе на компьютер.

sudo aptitude install samba samba-client samba-common system-config-samba smbfs

С установкой покончено. Теперь давайте сконфигурируем сервер и создадим шары. Но начнем с простых примеров.

Некоторые примеры

Анонимный сервер с правами только на чтение

Цель данного типа сервера, предоставить любому пользователю доступ к любому файлу или директории находящемуся в расширенной папке с правами только на чтение. Открываем для редактирования файл /etc/samba/smb.conf и вписываем туда следующие строки:

[global]
workgroup = OFFICE
netbios name = MyComputer
security = share
 
[data]
comment = Data files
path = /home/user/data
read only = Yes
guest ok = Yes
browseable = Yes

Здесь всё просто, файл smb.conf делиться на блоки, главный или общий блок [global], настройки которого применимы ко всему файлу и всем остальным подблокам, если в них (в подблоках) не указаны конкретные директивы.

В принципе это всё. Но так же правильным будет добавить пользователя, который будет являться владельцем расшаренной директории.

Создаем пользователя:

sudo useradd -c "Test User" -m -g users -p test mike

Создаем директорию:

mkdir /home/user/data

Назначаем права:

sudo chmod u+rwx,g+rx,o+rx /home/user/data
sudo chown mike.users /home/user/data

Рестартуем демон:

sudo service smbd restart

Сервер готов

Анонимный сервер с правами на чтение и запись

Цель данного типа сервера, предоставить любому пользователю доступ к любому файлу или директории находящемуся в расшаренной папке с правами на чтение\запись.

Здесь всё аналогично предыдущему примеру, за исключением параметра read only.

[global]
workgroup = OFFICE
netbios name = MyComputer
security = share
 
[data]
comment = Data files
path = /home/user/data
read only = No
guest ok = Yes
browseable = Yes
writeable = yes

Здесь параметру read only передается значение No, что разрешит нам писать в директории /home/user/data. Для примера я добавил директиву writeable со значением yes. Вы можете выбрать тот параметр, который вам больше нравиться.

Рестартуем демон:

sudo service smbd restart

Сервер готов

Защищенный сервер

Защищенный сервер с авторизацией пользователя

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

  • /home/user/public — файлы доступные только для чтения любому пользователю.
  • /home/user/secret — файлы доступные только определенным пользователям.
  • /home/user/trashfiles — файлы доступные любому пользователю, права на чтение и запись.

Настроить всё это добро необходимо всё в том же: /etc/samba/smb.conf

Создаем папки:

mkdir /home/user/{secret,public,trashfiles}

Открываем файл /etc/samba/smb.conf для редактирования:

sudo nano /etc/samba/smb.conf

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

#
# Sample configuration file for the Samba suite for Debian GNU/Linux.
#
#======================= Global Settings =======================
 
[global]
 
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
netbios name = miniCompLinux
security = share
browseable = yes
 
[public]
path = /home/user/public
comment = PublicFiles
read only = Yes
guest ok = yes
browseable = yes
security = share
 
[trashfiles]
path = /home/user/trashfiles
comment = readAndwrite
read only = No
guest ok = yes
browseable = yes
security = share
writeable = yes
 
[secret]
path = /home/user/secret
comment = secretFiles
read only = yes
browseable = yes
writeable = no
security = USER
valid users = booch
 
#force user = booch
#force group = users

Заметьте, что в блоке [global] указан параметр security = share, т.е. доступ к ресурсам свободный для каждого пользователя. Но в блоке [secret] параметр security = USER, т.е. именно для доступа к этой папке система запросит у вас логин и пароль пользователя который был указан в параметре valid users = booch.

Вы можете указать там сколько захотите пользователей, просто перечисляйте их имена без запятой, valid users = booch mark john

Теперь когда файл сконфигурирован, необходимо добавить пользователя которому будет предоставлен доступ к папке /home/user/secret

Создаем пользователя

sudo useradd -c "Test User" -m -g users -p 12345 booch

Возможно Вы не собираетесь использовать данного пользователя локально, т.е. он не будет локально работать на сервере, тем не менее лучше всего будет назначить ему пароль в системе:

sudo passwd booch

Инициализируем Microsoft Windows пароль, для авторизации по сети:

sudo smbpasswd -a booch

Отдаем папки secret, trashfiles, public в пользование пользователю booch:

sudo chown booch.users /home/user/public
sudo chmod u=rwx,g=rwx,o-rwx /home/user/public
 
sudo chown booch.users home/user/trashfiles
sudo chmod u=rwx,g=rwx,o-rwx home/user/trashfiles
 
sudo chown booch.users /home/user/secret
sudo chmod u=rwx,g=rwx,o-rwx home/user/secret

Рестартуем демон:

sudo service smbd restart
Тестируем

Убедитесь, что товарищ добавился в систему:

cat /etc/passwd
booch:x:501:501::/home/booch:/bin/bash

Также убедитесь, что создан домашний каталог пользователя booch:

s -l /home | grep booch
drwx------ 11 booch booch  4096 2010-08-09 20:02 booch

Просмотреть дамп файла smb.conf и убедиться, что в нем нет ошибок, можно так:

testparm

Убедиться, что шары были успешно созданы и существуют можно так:

sudo smbclient -L localhost -U%

Послесловие

Директивы
  • # create mask — маска прав для файлов в текущей директории
  • # comment — описание
  • # directory mask — маска прав для самой директории, которая может определять такой параметр, как разрешение на создание каталога в текущем каталоге для удаленного пользователя или отсутствия такого.
  • # workgroup — это имя вашей сети, должно быть одинаковым для всех компьютеров, как рабочая группа в Windows
  • # netbios name — имя вашего компьютера в сети, сделайте всем машинам уникальное, как имя компьютера в Windows
  • # server string — описание компьютера, аналог подобного значения в Windows.
  • # security — определяет доступ к расшариваемым каталогам.
  • # browseable — хотите ли Вы сделать доступными все подкаталоги расшариваемого каталога. Этот параметр также можно использовать отдельно для каждого расшариваемого каталога.
  • # path — путь до расшариваемой папки. В данном конкретном примере будут расшарены домашняя папка пользователя shara и домашняя папка пользователя video
  • # comment — комментарий
  • # readonly — только для чтения
  • # hosts allow = — дать доступ только определенным хостам
  • # writeable = — аналогично read only, Вы можете запретить запись или разрешить
  • # valid users = — этот параметр определяет пользователей которые будут иметь доступ к серверу или папке
  • # force user = — это аналогичная команда
  • # force group = — аналогично для группы
Права

Обратите внимание, что Samba может ограничить права пользователя, но не может расширить права, заданные системой. То есть, если на расшариваемом каталоге не стоят права на запись для всех в самой системе, Samba не сможет разрешить запись в него сторонним пользователям. Однако если на каталоге стоят права 777, то задав параметр readonly = Yes Вы сможете ограничить доступ на запись для пользователей, подключающихся из сети.

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

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *