Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Файловая система —> mount_smbfs

mount_smbfs - монтирование форточных шар.

Автор: lissyara.


    Жила себе сетка из виндовых машин - 2 сервака, три десятка узеров. Всё по уму - контроллер домена одна машина (Win2003), сервер БД и документов - другая (Win2000). Доки узеров и отделов на одном сервере, стриммер на другой. По ночам запускалось задание из планировщика, и на стриммер архивировались документы и БД. Через полгода илдиллия закончилась - пользовательские документы распухли до неприличных размеров, и за ночь всё записаться не успевало - в 9 утра народ на работе а залогиниться не может - контроллер домена слишком занят архивацией, чтобы отвлекаться на пользователей :)
   Выбил денег на отдельный сервер - под архивацию. Купили - AMD64 3200+, гектар ОЗУ, 2 винта 40Gb и 300Gb. Ну, разумеется ставим FreeBSD :) Ввиду того, что моей любимой 4.11 в 64-х разрядном исполнении нету, а перекомпилить вообще всё не было желания - решил поставить глюкавенькую FreeBSD6.0 - ибо машина будет внутри локалки, нестрашно.
   Короче. :) Смысл всего - в примонтировании виндового раздела на FreeBSD. Для начала, как обычно, попробовал врезать поддержку SMB в ядро - попытался пересобрать со следующими опциями ядро:
option    NETSMB        # SMB/CIFS requester
option    SMBFS         # SMB/CIFS filesystem

Непрокатило. Сборка вылетала на ошибках. Пришлось загрузить модулем, добавив такую строку в /boot/loader.conf
smbfs_load="YES"

Чтобы не перезагружаться можно подгрузить модуль `руками`:
/usr/home/lissyara/>su
Password:
/usr/home/lissyara/>kldload smbfs
/usr/home/lissyara/>

Всё. Команда mount_smbfs должна работать. Проверяем:
/usr/home/lissyara/>df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a    496M    122M    334M    27%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ad0s1d    4.8G     42K    4.5G     0%    /tmp
/dev/ad0s1e     24G    3.4G     19G    15%    /usr
/dev/ad1s1d    271G    185G     64G    74%    /usr/local/backup
/dev/ad0s1f    4.6G    1.1G    3.1G    27%    /var
/usr/home/lissyara/>
/usr/home/lissyara/>mount_smbfs -E koi8-r:cp866 -W name_of_my_domain \
? //liss@server1/out /mnt
Password:
/usr/home/lissyara/>df -h
Filesystem                Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a               496M    122M    334M    27%    /
devfs                     1.0K    1.0K      0B   100%    /dev
/dev/ad0s1d               4.8G     42K    4.5G     0%    /tmp
/dev/ad0s1e                24G    3.4G     19G    15%    /usr
/dev/ad1s1d               271G    185G     64G    74%    /usr/local/backup
/dev/ad0s1f               4.6G    1.1G    3.1G    27%    /var
//LISS@SERVER1/OUT        112G     89G     23G    80%    /mnt
/usr/home/lissyara/>cd /mnt
/mnt/>ls
1C                  сканирование0003.jpg
24-01-2006.zip      тмп
алена1.tif          усилитель
пробный.jpg         фото.ppt
коннект.txt         футбол 16.09.05
/mnt/>

Пароль вводил доменный. Всё подмонтировалось. Параметр -E koi8-r:cp866 означает, что будет использоваться перекодировка, для имён файлов, из cp866 в koi8-r (ведь Вы уже русифицировали консоль, верно? :)). Надо заметить, что удалённая кодировка может быть и cp1251... Пару раз сталкивался - было вперемешку - часть файлов cp1251, а часть cp866 - встревон. Полный список кодировок поддерживаемых вашей машиной можно получить из вывода команды locale:
/usr/home/lissyara/>locale -m
ARMSCII-8
Big5
Big5HKSCS
CP1131
CP1251
CP866
CP949
GB18030
GB2312
GBK
ISCII-DEV
ISO8859-1
ISO8859-13
ISO8859-15
ISO8859-2
ISO8859-4
ISO8859-5
ISO8859-7
ISO8859-9
KOI8-R
KOI8-U
PT154
SJIS
US-ASCII
UTF-8
eucCN
eucJP
eucKR
/usr/home/lissyara/>

Также можно коннектится гостем:
/usr/home/lissyara/>mount_smbfs -E koi8-r:cp866 -W тут_что_угодно \
? //guest@server1/distrib /mnt
Password:
/usr/home/lissyara/>df -h
Filesystem                Size   Used  Avail Capacity  Mounted on
/dev/ad0s1a               126M    44M    72M    38%    /
/dev/ad0s1e               504M   7.4M   456M     2%    /tmp
/dev/ad0s1f                24G    15G   7.4G    66%    /usr
/dev/ad0s1g                12G   1.2G   9.5G    11%    /var
procfs                    4.0K   4.0K     0B   100%    /proc
/dev/ad2s1e               110G    35G    67G    34%    /var/db/mysql
//GUEST@SERVER1/DISTRIB   112G    89G    23G    80%    /mnt
/usr/home/lissyara/>

На запросе пароля я просто нажал "Enter". Кстати, операции эти надо делать от рута - от простого пользователя получите ошибку:
/usr/home/lissyara/>mount_smbfs -E koi8-r:cp866 -W name_of_my_domain \
? //liss@server1/distrib /mnt
Warning: no cfg file(s) found.
mount_smbfs: can not setup kernel iconv table (koi8-r:tolower):
syserr = Operation not permitted
/usr/home/lissyara/>

Всё это конечно хорошо - но монтированием, копированием и архивацией должен был заниматься скрипт. А он пароль ввести не мог :) Надо было чё-то думать. Kурение манов дало ключевое слово - nsmb.conf. Вот тут-то и была главная засада. Я полдня убил на этот файл - не хотел коннектится с его помошью и всё тут. пароль неверный... Сидел смотрел tcpdump`ом - думал может не понимает какой домен... Всё оказалось гораздо проще - я вводил названия серверов, домена, и имя пользователя маленькими буквами... А надо было большими... Итого у меня получилось:
[default]
workgroup=NAME_OF_MY_DOMAIN

[SERVER2]
addr=192.168.20.2

[SERVER2:BACKUP]
# чарсет - но с ним косяки - под фрёй всё пучком, всё видно,
# всё читается, но в архивах, если их открывать из-под форточек,
# русские имена слетают... Как вариант, если надо открывать под
# окошками - поставить cp866:cp1251 (именно так! :))
charsets=koi8-r:cp866
password=password_usera_backup

После чего всё прекрасно монтируется такой командой:
/usr/home/lissyara/>mount_smbfs -N //BACKUP@SERVER2/Bases /mnt
/usr/home/lissyara/>df -h
Filesystem                Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a               496M    122M    334M    27%    /
devfs                     1.0K    1.0K      0B   100%    /dev
/dev/ad0s1d               4.8G     42K    4.5G     0%    /tmp
/dev/ad0s1e                24G    3.4G     19G    15%    /usr
/dev/ad1s1d               271G    210G     39G    84%    /usr/local/backup
/dev/ad0s1f               4.6G    1.1G    3.1G    27%    /var
//BACKUP@SERVER2/BASES     92G     78G     14G    85%    /mnt
/usr/home/lissyara/>

Всё пожалуй. Если кому-то нужны будуть подробности - man :)



размещено: 2006-02-10,
последнее обновление: 2006-02-10,
автор: lissyara


Oleg, 2006-04-12 в 12:26:57

Позновательно, жалко что это оказался последний сайт и к этому времени я уже настроил вышеописаное  :) Сам промучался с регистрами в ~/.nsmbrc

M@rs, 2006-05-10 в 16:06:38

Большое спасибо автору!Парился долго, пока не набрёл на эту страницу.

Yanis, 2006-06-16 в 12:41:06

1.
Чтобы не писать
mount_smbfs -N //BACKUP@SERVER2/Bases /mnt
, можно добавить в /etc/fstab строку вида
//BACKUP@SERVER2/BASES    /mnt    smbfs    rw,noauto    0    0

2.
Чтобы в ~/.nsmbrc не писать пароль в открытом виде, можно воспользоваться командой
smbutil crypt password_usera_backup
и в ~/.nsmbrc записать полученное значение
password=$$178465324253e0c07dcf8fbd8d2aa8eb18588171717

deux, 2006-08-18 в 17:13:40

Аффтару памятник при жизни надо! пропарился час с проблемой, чтобы не вводить пароль, эта статья выручила!

Blondinka, 2006-10-30 в 12:23:28

Товарищщи! Это поля для ввода комментариев к статье, а не для вопросов. Сюда пишите найденные баги, или какие-то фичи :)
Для вопросов есть форум!

Blondinka, 2006-10-30 в 12:24:07

Ой! Я не хотела, а хотела ответить спасибо автору!

Jaba, 2007-01-14 в 20:53:16

Не забывайте указывать host.  парметр -I  и дальше ай-пи
и -N чтоб пароля не спрашивало
к примеру
mount_smbfs -I 10.16.80.12 -N //guest@jaba/e /mnt

это важно ! иначе будет писать
mount_smbfs: unable to open connection: syserr = Network is unreachable

SniZ, 2007-08-29 в 0:33:49

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

mentat, 2007-09-27 в 12:31:48

найденая бага:
сделал все как написано, подмонтировалась шара, все отлично, но!
на шаре папки названы русскими буквами, например "Отдел логистики" и внутри папки "заказы" например. так вот. если я ломплюсь в эту папку по сети smb://Documents/Отдел логистики... то все работает как надо.

а если же я после монтирования захожу в /mnt/docs , то вижу только папки первого уровня и зайти внутрь не могу - показывает пустоту внутри.

методом тыка выяснилось. что если папки названы латиницей то все работает.

SMF, 2007-12-14 в 7:03:11

Чтобы получилось это:
option    NETSMB        # SMB/CIFS requester
option    SMBFS         # SMB/CIFS filesystem

Нужно ещё вот это:
options LIBMCHAIN
options LIBICONV

И тогда ядро собирается))))

Дмитрий, 2008-04-16 в 7:03:19

Все получилось, только вот скрытые ппаки не показывает!

imicopycat, 2010-01-12 в 12:04:59

Есть фичя на которую нуна обратить внимание в  nsmb.conf:

[SERVER2]
addr=192.168.20.2

[SERVER2:BACKUP]

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

imicopycat, 2010-01-27 в 16:55:43

и ещё один важный момент !

Если будете прописывать автомаунт в fstab не забудте поставить флаг late

igor, 2011-08-22 в 4:37:36

да работает все нормально , кроме если есть в названии каталога или файла есть символ № , тогда отображаются кракозябры . кто это смог победить ?

Zerglyn, 2012-05-25 в 12:17:33

Автору - РЕСПЕКТ и УВАЖУХА))) Ваш сайт спасает не первый (и, боюсь, не последний - я начинающий FreeBSD-ец) раз.

Aleks, 2013-07-21 в 8:36:51

 option    NETSMB        # SMB/CIFS requester
option    SMBFS         # SMB/CIFS filesystem
options LIBMCHAIN
options LIBICONV

mount_smbfs -E koi8-r:cp1251 -I 192.168.0.100 -N //guest@efir/OnAir /efir/efir


класно но папки виндовие абра кадабра

Алекс, 2013-07-21 в 8:59:00

Еще есть параметр -E locale1:locale2
locale1 - локаль во freebsd
locale2 - локаль в windows

mount_smbfs -I 10.0.0.1 //user@server/temp /mnt
10.0.0.1 - адрес сервера
user - от какого пользователя винды подключаемся
server - имя компа (10.0.0.1 - его адрес)
/temp - имя шары
/mnt - куда монтируем во freebsd
Еще оно может спросить пароль от пользователя windows. Если идем из под гостя, вместо user пошем guest. Пароль в таком случае пустой
Еще есть параметр -E locale1:locale2
locale1 - локаль во freebsd
locale2 - локаль в windows
Это если будут во фре русские символы криво отображаться

Алеск, 2013-07-21 в 9:05:49

может иза етого


/efir/>locale
LANG=
LC_CTYPE="C"
LC_COLLATE="C"
LC_TIME="C"
LC_NUMERIC="C"
LC_MONETARY="C"
LC_MESSAGES="C"

Алекс, 2013-07-21 в 9:20:05

пересобираем ядро:
 options NETSMB          #SMB/CIFS requester
 options NETSMBCRYPTO  #encrypted password support for SMB
 options LIBMCHAIN     #mbuf management library
 options LIBICONV
 options SMBFS
Коннектимся к удаленному SMB серверу:
  smbutil login //jwarner@smbserver1
Монтируем русурс:
  mount_smbfs -N //jwarner@smbserver1/sharename /backup
Отсоединяемся от SMB сервера:
  smbutil logout //jwarner@smbserver1!

Anton, 2013-12-30 в 12:06:20

У кого вылезает ошибка авторизации:
mount_smbfs: unable to open connection: syserr = Authentication error
Попробуйте указать имя домена без точки, т.е. домен firma.local, а например в nsmb.conf, прописываем firma

Arina, 2014-04-16 в 8:40:58

А после такого монтирования шары как добавить ее в веб-интерфейсе freeNAS? ошибка "The path must reside within a volume mount point"

kotte33, 2014-08-07 в 8:45:48

Большое спасибо за информацию, очень сэкономил себе полдня жизни, а может и больше в попытках монтирования самбы с паролем.

Василий Родин, 2016-06-04 в 19:02:47

Ребята! Есть ли жазнь на Марсе? Вопрос такой же вечный, как и обсуждаемая тема!

Прочитал тут, как люди мучались с регистрами названий ресурсов и станций. У самого, кстати, ресурсы и станции отлично монтировались всегда и в нижнем регистре. Но вот где не ожидал засады, так и это в названиях кодировок в аргументе -E команды mount_smbfs.

Испокон веков всё всегда монтировалось нормально в нижем регистре: -E koi8-r:cp866

Но вот наступил 10-й год после написания этой статьи (FreeBSD 10.3-RELEASE) и ресурсы перестали монтироваться. Причём молчком - команда mount_smbfs отрабатывает быстро, но ничего не монтирует.

Каким-то непостижимым образом, перебирая всё немыслимое, написал названия кодировок в верхнем регистре -E KOI8-R:CP866 и, о, чудо!, всё нормально замонтировалось!

Кто бы мог подумать! А печаль была ещё и в том, что нигде (ни в syslog, ни в терминале) отказ от монтирования никаким способом не сообщается...

Ну, думаю, что кому-то поможет мой совет и очередные лет 10 будем монтировать ресурсы опять без проблем. :-)))



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.26 секунд
Из них PHP: 63%; SQL: 37%; Число SQL-запросов: 77 шт.
Исходный размер: 42638; Сжатая: 10935