upd[18.02.08] Статья на переделке. Появилась новавя информация. Просьба к новичкам, во избежание проблем, пользоваться пока минимальным конфигом.

Дома у меня два ноубука и домашний сервер. На одном из ноутбуков стоит двойная загрузка, в виду нашей проф.деятельности. Часто приходится перекидывать данные между рабочими станциями, поэтому давно хотел организовать на сервере smb-ресурс с котором одинаково хорошо работал бы и linux, и windows.

Самое главное, что я хотел, это простую настройку, без всяких заумных конфигов. Все же сервер всего на два-три компьютера, поэтому безопасностью можно поступиться. Как оказалось Samba довольно проста в настройке и очень гибкая (даже не знаю, что лучше NFS или SMB).

Еще мне хотелось, поэксперементировать потому, что в скором у меня на работе будет переезд большей части рабочих мест на linux, а доступ к сетевым ресурсам надо обеспечить всем, вне зависимости от платформы. Поэтому начинать надо заранее и с простых вещей.

Начну повествование с серверной части, а потом перейдем к win- и linux- клиентам, где я расскажу о настигнувших меня проблемах.

Сервер

Установка тривиальна, даже не стоит о ней говорить. Выбирите в Вашем пакетном менеджере пакет samba и установите его, как умеете.

Настройка тоже не особо сложна. Но была затянута тем фактом, что первым проверялась работа на виндовс клиенте, а он все никак не хотел работать. Оказалось беда в самом Win.

Такой у меня рабочий конфиг:

# cat /etc/samba/smb.conf  

[Global]
workgroup=TUXNET
netbios name=main
interfaces=eth1
security = share  



socket options = TCP_NODELAY IPTOS_LOWDELAY
read raw = yes
write raw = yes
oplocks = yes
max xmit = 65535
dead time = 15
getwd cache = yes

guest ok = Yes

[share]
path=/home/share/
comment=dir for sharing

browsable=yes
available=yes
writeable=yes
directory mask=0777
create mask=0666

public = yes
only guest = yes
Вот такой конфиг. Половину параметров я выдрал откуда то из других источников, когда пытался открыть расшаренные каталоги в виндовс, ну а как заработало, выкидывать не было желания.

Точно знаю, что в секции [Global] первый абзац настроек минимально необходим, для случая подобного моему. Пояснять каждую запись конфига нет смысла, т.к. подобного хватает на просторах интернета, стоит только поискать, да и пройдясь по ссылкам в подборке, Вы сможете узнать много нового.

Ну а минимально необходимый-рабочий конфиг может быть таким:

[global]
workgroup=TUXNET
netbios name=main
security = share  

[share]
path = /disk/share
public = yes

Я его не проверял, но думаю в простейших случаях следует начинать именно с него.

Windows — клиент

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

По началу думалось мне, что порты закрыты и поэтому ничего не идет. Но на локальную сеть у меня открыто все, поэтому этот вариант отпадает. Но если вам интересно какие порты надо открыть для Samba, можете подглядеть тут готовый сценарий для iptables: Samba and Firewall Software.

После этого выяснилось что нужно пошаманить в сетевых настройках windows. Оказывается, если появляется сообщение вида «Network name not found» / «Сетевое имя не найдено», то это проблемы настройки NetBIOS на стороне клиента. Решается просто, добавлением IP-адреса samba сервера в настройки WINS-адресов:

  • Выберте настройки локального подключения
  • Протокол интернета (TCP/IP) -> Свойства -> Дополнительно
  • Щекните на вкладке WINS и там добавте IP-адрес samba сервера.

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

Хотя может быть и наоборот, все зависит от Ваших способностей, познаний и расположения планет сегодня ночью.

Linux — клиент

С linux-клиентом все было немного проще, хотя с первого раза тоже не задалось. Саму samb’у ставить не было желания, мне ведь только и надо что поработать с одним общим каталогом, а это можно и простым mount организовать.

Сказано, сделано. Но для начало проверим ядро:

# grep CIFS /usr/src/linux-2.6.18-gentoo-r6/.config
CONFIG_CIFS=y

или

# zcat /proc/config.gz | grep CIFS
CONFIG_CIFS=y

т.е. нам надо чтобы в ядре была поддержка CIFS (Common Internet File System — единая файловая система для Internet, так сказать продолжение протокола SMB), модулем или монолитно.

После создаем каталог для новых ресурсов и монтируем «шару» туда:

# mkdir /disk/share
# mount //192.168.0.1/share /disk/share -t cifs

Получаем, что ничего не работает. Пишет ошибку про суперблок какую то и просит поглядеть в лог. А в логах вот что:

CIFS VFS: cifs_mount failed w/return code = -22

Забавно. Пришлось поискать и поэксперементировать, в итоге спасло ситуацию вот что:

# mount //192.168.0.1/share /disk/share -t cifs -o user=loki,workgroup=tuxnet,iocharset=utf8

user=loki,workgroup=tuxnet — обязательные опции, без них не пускают на сервер и выдают ошибку -22. В моем случае, user может быть любым.
iocharset=utf8 — указывает на кодировку сервера, для правильной работы с русскими именами файлов.

В итоге в каталог /disk/share у меня подмонтирован сетевой ресурс, а работать с ним можно как с локальным.

Дабы после перезагрузки данный каталог был доступен на локальной машине, следует внести кое какие поправки в файл /etc/fstab:

//192.168.0.1/share /disk/share cifs user=loki,workgroup=tuxnet,iocharset=utf8

Впечатления и итог

Что тут скажешь, работать стало намного удобней. Теперь осталось прикупить туда хороший и большой жесткий диск и перекинуть туда всю домашнюю музыкальную колекцию. Amarok (да и Spider Player в win) без лишних проблем проигрывает музыку с расшаренного каталога, теперь любимая музыка у меня дома играет вне зависимости от того, чем занят мой ноут и какие на нем ставятся эксперименты.

Копирование из windows занимает много больше времени, нежели в linux. Странность какая, но я еще не разобрался. Просто подвисает на 3-5 секунд и после продолжает копировать.

А вот копирование в konqueror завершается с такой вот ошибкой: «Не удаётся изменить права доступа для /disk/share/file.txt». Будет время, надо подумать, ну пока все работает как хотелось, что очень хорошо.

Вот такая тривиальная задача была решена, но при этом всплыло несколько довольно неординарных ошибок, поэтому надеюсь что статья поможет кому то в быстром развертываниии простейшего Samba-сервера. А может кого и сподвигнет на свершения, например достать с полки запылившийся Pentium MMX и организовать из него хотя бы домашний файл сервер, дешево и сердито ;).

Литература по вопросу:

Quick HOWTO : Ch12 : Samba Security and Troubleshooting — Добротно написанный материал о настройке Samba (и не только!). На английском.

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

Простейшая настройка Samba — Заметка от коллеги блогера. Так сказать, готовый рецепт работы.

Как я настраивал Самбу, Настройка Samba в Fedora/RedHat — Очень подробное и качественное описание настройки. Если чего то не вышло, читайте этот пост очень внимательно.

HOWTO Setup Samba — Статья на Gentoo Wiki.

Ох, я и не заметил как пропустил несколько воскресных выпусков. Чтож, надо исправляться. Но вот мне редко приходят интересные идеи для еже-воскрестных заметок, может Вы — мои читали — подскажете, что бы Вам было интересно почитать на страницах моего блога в воскресный день?