avatar Ubuntu Настройка файлового сервера SAMBA в Ubuntu 10.04

Файловый сервер сильно упрощает жизнь с обменом документов между сотрудниками внутри локальной сети компании.
Как поднять его и рассказывается в данном руководстве.


Все проделывается на Ubuntu 10.04

Для начала установим необходимые пакеты:

sudo apt-get install samba samba-common libcups2


Редактируем файл smb.conf

sudo nano /etc/samba/smb.conf

находим строку #security = user снимаем с нее комментарий, чтобы она выглядела

security = user

Данный параметр отвечает за доступ пользователей системы к файловому серверу.

Также в секцию [global]
Добавим параметр:

netbios name = Ubuntu


Если файловый сервер предполагается использовать в сети совместно с Windows машинами, а ради этого все и задумывалось, то наш файловый сервер будет виден под именем Ubuntu и к нему можно будет подключиться напрямую, набрав \\ubuntu
(естественно имя можно выбрать по своему усмотрению)

Если файловый сервер планируется использовать в сети совместно с Active Directory, то рекомендуется добавить следующие строки в конфиг.
Они необходимы для того, чтобы samba не пыталась становиться обозревателем домена.

local master = no
domain master = no
preferred master = no


Чтобы повысить скорость соединений с сервером добавим в конфиг:
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192


Перезагрузим самбу
sudo /etc/init.d/smbd restart


Добавляем директории для нашего файлового сервера.

sudo mkdir -p /home/samba/public
sudo chown -R root:users /home/samba/public
sudo chmod -R ug+rwx,o+rx-w /home/samba/public


Снова беремся за smb.conf

sudo nano /etc/samba/smb.conf


добавим туда следующие строки

[Public]
  comment = All Users
  path = /home/samba/public
  valid users = @users
  force group = users
  create mask = 0660
  directory mask = 0771
  writable = yes


Далее находим секцию [homes]
И закомментируем все что в ней есть, обозначенное (; ) их заменяем на #
И вместо, всего что там есть, вставляем следующее.

[homes]
   comment = Home Directories
   browseable = no
   valid users = %S
   writable = yes
   create mask = 0700
   directory mask = 0700


Сохраняем все изменения и выходим.

Перезагружаем файловый сервер
sudo /etc/init.d/smbd restart


Теперь добавим нового пользователя в систему с именем test входящего в группу users
(таких пользователей можно создать столько, сколько необходимо)

sudo useradd test -m -G users

Создадим ему пароль (пароль нужно создать позаковыристее, после чего, этот пароль мы можем благополучно забыть-больше он нам не понадобится).

sudo passwd test


Теперь добавим это пользователя в базу Samba
( и придумать ему пароль КОТОРЫЙ ОТЛИЧАЕТСЯ ОТ ПАРОЛЯ ДЛЯ ВХОДА В СИСТЕМУ ПОЛЬЗОВАТЕЛЯ Linux который мы указали до этого, сделано это для того чтобы пользователь файл-сервера SAMBA не мог зайти в систему и получить доступ к шеллу, например через SSH)

sudo smbpasswd -a test


Заключение.
После всей проделанной работы, у нас получился файл-сервер, к которому могут подключиться только авторизированные пользователи, набрав \\ubuntu или \\ip-адрес-сервера, после ввода правильного имени пользователя и пароля, у каждого пользователя будет доступ к ТОЛЬКО к двум папкам 1)Public-которую видят все и к папке соответствующей имени пользователя.
Данную систему можно дополнить, например использоанием дисковых квот, также можно настроить антивирусную проверку файлов загружаемых на сервер, для этого обязательно посмотрите статью- Защита файлового сервера SAMBA антивирусом ClamAV

39 комментариев

avatar
Спасибо! Реальная статья по настройке!
avatar
Я рад, что статья оказалась полезной.
avatar
Artful, я зарегистрировался чтобы сказать спасибо за такую подборку статей и инструкций. Буду вашим читателем и почитателем тоже )
avatar
Спасибо Artful, в сети так мало полезных сайтов как ваш
avatar
Пожалуйста, ради этого он, собственно, и делался…
avatar
Подскажите, а если у меня в smb.conf вообще отсутствует раздел [Public]. версия samba 3.6.7.
И как добавить другие директории в конфигуратор
avatar
Так Public вы туда сами добавляете, вот как написано так и переносите 1 в 1.
Public это только имя «шары», можете назвать ее по своему усмотрению…
avatar
Подскажите пожалуйста, а как можно настроить доступ к директории для анонимных пользователей без авторизации?
avatar
Владейте ;)

[Example]
  comment = for test
  path = /home/samba/example
  create mask = 0775
  directory mask = 0775
  writable = yes
  guest ok = yes
  guest account = nobody
avatar
Не получается зайти с Win7 на сервер, говорит:
avatar
Пароль и пользователь введены верно, проверял несколько раз
avatar
Значит вы что-то упустили, данная наработка используется мной уже более 3х лет.
avatar
а не может это как-то быть связано с win7? Т.е. семерка сама каким-то чудесным образом блочит мой выход на фтп?
avatar
И да, я проделывал все на Ubuntu 12.04
avatar
Причем тут FTP?! Все это работает по протоколу SMB! Винда ничего но блокирует, вы что-то пропустили в настройках т.к. на 12.04 я эту схему также внедрял.
avatar
выбери «Другая учетная запись» и введи там логин и пароль
avatar
Буду знать, спасибо. Попробую еще разок с нуля поднять.
avatar
Проделал все еще раз, результат тот же. НО! Заметил, что, если ввести пароль наверный, то винда пишет: «Вход в систему не произведен: имя пользователя или пароль не опознаны.» А если ввести верный пароль (тот, который указывался при занесении нового пользователя в базу самбы), то винда говорит: «Отказано в доступе». Помогите, пожалуйста.
avatar
Что в логах SAMBA?
avatar
Смотрите внимательнее все что вводили руками, если не копипастили прямо отсюда. Сам 2 дня мучился — после подключения к самбе у пользователя появляются 2 папки, но в Public он писАть может, а в свою папку не может. Оказывается, дело было всего в одной букве — вместо writable = yes, было указано writables = yes, и данный параметр игнорировался и устанавливалось значение по умолчанию — writable = no.
avatar
Лично я когда приходится ставить самбу, делаю простой копипаст отсюда и все работает.
Все статьи, которые я написал, были проверены на себе.
avatar
Я ничего против копипаста не имею, просто я все вводил руками и допустил опечатку. Сам же за это и расплатился 2 рабочими днями :(
avatar
бывает :)
avatar
Два дня уже мучаюсь — ничего не выходит:(
Усложнил задачу — нескольких пользователей добавил в доп группу 1С. В smb.conf дополнительно прописываю еще одну шару:
[1C]
comment = For Buhgalters
path = /home/samba/1С_базы
#write list = @1c
valid users = @1c
force group = 1c
create mask 0770
directory mask = 0770
writable = yes
#browseable = yes

Перезапускаю samba.
При подключении с win машины — у пользователя появляется 3 папки: Public, «хомячок» и 1С. Здесь все нормаль, как и должно быть. Проблема в следующем: при запуске 1Ски одновременно с базой может работать только один пользователь. Кто первый подключился — тот и работает. Остальным выдает ошибку:
Ошибка при выполнении операции с информационной базой
Ошибка открытия файла блокировок '\\srv-samba\1C\бла-бла-бла/1Cv8.1CD'
по причине:
Ошибка открытия файла блокировок '\\srv-samba\1C\бла-бла-бла/1Cv8.1CD'

Если базы положить в папку Public — такого не происходит.
Где накосячил — не пойму.
avatar
тут явная проблема с совместным использованием файла, у меня в одной конторе, базы 1c лежат в папке Public, а на папку Бухгалтерии уже расставлены права, на уровне файловой системы и другие пользователи туда попасть не могут.
avatar
Странности какие-то.
Я вообще хочу сделать так, чтобы папки видно не было. Попасть в папку — только если явно путь указать.
Попробую утром тоже на уровне файловой системы права раздать.
avatar
Проблему локализовал. Файлы блокировки создаются от имени первого подключившегося к базе пользователя. Группа — того же пользователя. Т.е. при открытии базы пользователем user1 владельцем файла становится user1:user1. А так как в группу user1 никто больше не входит — то и прав на данный файл никто больше не имеет.
Сейчас буду разбираться. Надо поиграться с force user, force group.
avatar
тут вижу 2 решения:
1) пользователи подключаются к шаре с одним аккаунтом. (у меня так работает 3 бухгалтера, 2 года, полет нормальный)
2) Добавить нужных пользователей в группу user1
avatar
Ну, добавить пользователей в user1 совсем не вариант. Если базу откроет user2 то права на файл становятся user2:user2.
Все заработало с таким конфигом:
[1C]
comment = For Buhgalters
path = /home/samba/1C/1С_базы
valid users = @buhgalters
force group = buhgalters
force user = andrew
create mask = 0777
directory mask = 0777
writable = yes
#browseable = yes

Здесь из-за valid users данная папка доступна только пользователям, которые состоят в группе buhgalters. И только им даны права 777 на файлы. Меня устраивает.
avatar
Здравствуйте. Очень огромное спасибо за статью. Просто и по делу. Все получилось.

Правда возникла проблемка. Создаю или копирую в паблик, для примера, текстовый файл. Скопирован. Но при открытии файла, папки для просмотра, експлорер, текстовый редактор, ворд (ну в общем та программа чем открываем файл) подвисает. Не закрывая подвисшее приложение перезагружаю самбу и файл/папка без проблем открывается, редактируется и сохраняется. Но при повторном открытии файла или входа во вложенную в паблик папку история повторяется.
ОС Убунту 10.04.4 Сервер. Гостевая ОС Вин 7.
avatar
Честно говоря я даже и не сталкивался с такой проблемой.
Посмотрите в syslog, samba не падает на сервере?
avatar
также-если есть возможность, попробуйте открыть файл с другого ПК, возможно дело в рабочей станции.
avatar
Проверил параллельно на другом компе с дикой сборкой ХР. Все хорошо. На вин 7 оригинальной проблема. Естественно когда вин 7 пытается открыть файл и подвисает, с ХР в этот файл тоже нельзя попасть. А так параллельно можно работать. То есть самба не зависает.
avatar
И, кстати, когда подвисает приложение прибить его не возможно даже через диспетчер задач. Помогает только перезапуск самба.
avatar
а антивирус случайно на клиенте (вин 7) не чудит? случайно не MSE стоит на нем?
avatar
Огромное спасибо за статью! Всё просто и понятно, заработало с первого раза, учитывая что я не копипастил.
Возник вопрос, а как сделать чтобы папки пользователей были видны всем пользователям, но редактировать они могли только свою?
avatar
Элементарно.
chmod 755
Владелец имеет доступ RWX, группа R-X, остальные R-X.
Есть что добавить? Регистрируйся и оставляй комментарии!