Как установить Samba сервер в Ubuntu
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 как дома так и в малом офисе.