Сетевая файловая система Samba

From DD-WRT Wiki

Revision as of 10:59, 24 December 2019 by Atatob (Talk | contribs)
Jump to: navigation, search

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

Стандартная и более функциональные редакции DD-WRT содержат клиент Samba / CIFS. Mini и Micro версии DD-WRT не содержат Samba / CIFS. Смотрите вики-страницу What is DD-WRT?#File Versions (Что такое DD-WRT?).

Contents

Запуск клиента Samba в DD-WRT

  1. Создайте общий сетевой ресурс SMB на компьютере.
    • В Linux используйте Samba для создания общего сетевого ресурса SMB. HOWTO. Также вы можете найти инструкцию для файловой системы JFFS в Configure Samba in Linux.
    • В Windows это система используется по умолчанию. Просто щелкните правой кнопкой мыши по папке и выберите "Общий доступ и безопасность", чтобы настроить общий доступ.
    • В MacOS X перейдите к "Sharing" в "System Preferences" и включите "Windows Sharing" для 10.4 или в 10.5 “Share files and folders using SMB.” из "File Sharing options".
  2. Используйте веб-интерфейс маршрутизатора и перейдите на вкладку Administration.
  3. Включите параметр Samba FS Automount (или CIFS Automount). Если новых опций не появилось, нажмите "Save Changes" и перезагрузите страницу.
  4. Введите местоположение общего ресурса в поле 'share', например: //192.168.1.160/myshare
  5. В поле 'user' и 'password' введите учетные данные пользователя, которому разрешен доступ к общему ресурсу.
  6. При желании вы можете ввести написать сценарий автозапуска. Например, если у вас есть скрипт в вашей папке \\lanserver\myshare\startup.sh, вы вводите startup.sh в поле 'Startscript'. Этот сценарий (/tmp/smbshare/startup.sh на маршрутизаторе) будет выполнен, когда маршрутизатор подключит (смонтирует) ваш общий ресурс при загрузке.

Вы можете увидеть пример сценария запуска на странице Jffs.

Монтирование вручную

Вы можете временно смонтировать общий ресурс вручную через сеанс Telnet / SSH:

Сначала подключите необходимый модуль ядра:

insmod /lib/modules/`uname -r`/smbfs.o

Затем введите эти команды для подключения (монтирования) общего ресурса:

mkdir /tmp/Path
smbmount //hostname/Share /tmp/Path/ -o username=<user>,password=<password_user>

Примечание. При использовании CIFS процедура немного отличается:

insmod cifs
nvram set samba_user="username"
nvram set samba_password="password"
mkdir /tmp/smbshare
mount.cifs //hostname/Share /tmp/smbshare -o username=$(nvram get samba_user),password=$(nvram get samba_password)
  • /tmp/Path/ - это путь, который вы хотите смонтировать
  • Только /tmp/, /dev/ и /jffs/ доступны для записи!

Получение ошибок вроде следующих - это нормально:

 load_client_codepage: filename /usr/lib/codepages/codepage.850 does not exist.
 load_unicode_map: filename /usr/lib/codepages/unicode_map.850 does not exist.
 session request to 192.168.1.99 failed
 Can't get /etc/mtab~ lock filesmbmnt failed: 1

Чтобы отключить (размонтировать) общий ресурс, введите эту команду в командной строке:

 umount /tmp/Path/
 rmdir /tmp/Path/
 rmmod smbfs

Разрешение общего доступа для записи для пользователей Windows

23.04.09 пользователь locketine посоветовал: Вы должны смонтировать диски как rw для пользователя "nobody". По умолчанию диски монтируются только для чтения для всех пользователей, кроме root. Следующая ссылка рассказала мне то, что мне нужно было знать. Я думаю, что использование "-o user" является важной частью при подключении (монтировании).

http://www.linuxforums.org/forum/debian-linux-help/79749-mount-fat32-shared-partition-write-permission.html

Файловая система для использования, которая работает

Первоначально я отформатировал свой жесткий диск USB как Fat32, потому что я хотел иметь возможность использовать диск на любом компьютере. Я не смог запустить Slim_samba2. Вот ссылка на точно такую ​​же проблему, с которой я столкнулся.

/opt/etc/init.d/S80samba: line 18: /opt/sbin/smbd: not found

Некоторое время я возился с этим и решил пойти с тем, что было рекомендовано в инструкции по Slim_samba2, то есть etx3/swap/ext3, как указано здесь в статье Форматирование и разметка USB-накопителя. Это прекрасно работает.

Ericmagaha 15:12, 31 марта 2010 (CEST)

Разрешение на запись для любой ОС, например Mac OSX, Windows

Я использовал Slim_samba2 и отформатировал свой диск как ext3/swap/ext3 для пакетов Optware / файла подкачки / данных, как описано в статье Форматирование и разметка USB-накопителя. Первоначально у меня был доступ только для чтения к диску из Windows и Mac. Пришлось изменить права доступа к разделу данных, т.е. /mnt/data. По умолчанию это 700, т.е. rwx------. Я использовал chmod и изменил его на 777, т.е. rwxrwxrwx. После этого я смог выполнить запись в раздел данных из Windows (Проводник Windows) и Mac (Finder).

Ericmagaha 15:12, 31 марта 2010 (CEST)

Примечание для Windows XP

В Windows XP по умолчанию включен параметр "Использовать простой общий доступ к файлам". Это принудительно устанавливает гостевой доступ к общим ресурсам и не разрешает устанавливать разрешения (на чтение, запись и т.д.) на основе определенных учетных записей пользователей. Если вы столкнулись с проблемами при работе CIFS, рассмотрите возможность отключения этого параметра.

Чтобы отключить его, перейдите к: Мой компьютер → Инструменты → Параметры папки → Вид В разделе "Дополнительные настройки" снимите флажок "Использовать простой общий доступ к файлам".

При желании запустите мастер настройки сети в панели управления Windows, чтобы настроить свои общие ресурсы.

Примечание о пароле. Убедитесь, что для учетной записи пользователя, с использованием которой вы хотите получить доступ к общему ресурсу, установлен пароль. Windows XP будет отклонять любые подключения по сети для учетных записей, у которых не задан пароль.

Примечание для Windows Server 2003 / Vista / 7

Особенно для Windows Server 2003 убедитесь, что ваша система поддерживает NTLM v1.

  1. Откройте окно Пуск → Выполнить.
  2. Введите "gpedit.msc" и нажмите Enter.
  3. Перейдите в раздел Конфигурация компьютера / Конфигурация Windows / Параметры безопасности / Локальные политики / Параметры безопасности.
  4. Убедитесь, что параметр "Сетевая безопасность: уровень проверки подлинности LAN Manager" НЕ установлен в значение "Отправлять только NTLMv2-ответ \ отказаться от LM & NTLM" (в Vista Home Premium установите параметр реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\LmCompatibilityLevel в значение 1, поскольку gpedit.msc отсутствует).

ПРИМЕЧАНИЕ. Для Windows Vista и Windows 7 (в основном) вы должны использовать версию Samba 3.4 или выше!

Если у вас есть USB-совместимый маршрутизатор с поддержкой установки пакетов Optware, the Right Way, это будет для вас очень просто. Для тех, кому доступно только пространство JFFS2, ваши возможности очень ограничены!

Чтобы без особых усилий заставить работать последнюю версию Samba (Samba 3.5.4 от 13.08.2010) с Optware, вы должны сделать следующее:

Сначала сделайте резервную копию вашей текущей Samba, на случай, если что-то случится:

Для пользователей текстового редактора vi:

  cp /opt/etc/samba/smb.conf /opt/etc/samba/smb.conf.copy
  cp /opt/etc/init.d/S80samba /opt/etc/init.d/S80samba.copy

Для пользователей, которые хотят редактировать эти файлы на своих компьютерах:

  cp /opt/etc/samba/smb.conf /mnt/smb.conf.copy
  cp /opt/etc/init.d/S80samba /mnt/S80samba.copy 


Теперь сделайте следующее:

service samba stop
service samba off

затем

ipkg-opt remove samba2 
ipkg-opt install samba35


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

В командной строке терминала (обязательно используйте Putty, а не Telnet при редактировании файлов с помощью Vi!), Выполните следующие действия:

rm -r /opt/etc/samba/smb.conf

Также вам нужно будет удалить файл в /opt/etc/init.d, который создал Samba35. Он называется S08samba

rm -r /opt/etc/init.d/S08samba

Теперь создайте новый файл smb.conf:

vi /opt/etc/samba/smb.conf

После открытия редактора новый файл должен называться smb.conf, нажмите клавишу Insert на клавиатуре и вставьте в новый файл следующее (большое спасибо okki, который обнаружил проблему с интерфейсом!):

[global]
 interfaces = 192.168.1.1/255.255.255.0
 security = SHARE
 # don't ask for a password

[Optware]
 path = /opt
 force user = root
 read only = No
 guest ok = Yes

[Public]
 path = /mnt
 force user = root
 read only = No
 guest ok = Yes

#guest ok = yes:
#guest user 'nobody' is allowed and has access as 'valid users' is not specified (so all users are allowed).

После правильной вставки нажмите клавишу ESCAPE и введите :wq и Enter

Все, что осталось сделать, это перезагрузить маршрутизатор (хотя на самом деле не обязательно), а затем снова войти в систему и набрать:

service samba on
service samba start

Теперь вы сможете просматривать свои общие ресурсы и получать к ним доступ в своей сети в Windows 7!

ПРИМЕЧАНИЕ. Я еще не тестировал Samba35 S.W.A.T, но это должно быть так же просто, как выдать следующее:

ipkg-opt install samba35-swat


Надеюсь это поможет!


Наконец, для тех, кто не хочет устанавливать Samba 35 или ищет еще более новую версию, выполните следующее:

ipkg-opt upgrade
ipkg-opt update

Затем

ipkg-opt list | grep samba

Запуск сервера Samba на DD-WRT

Если у вас есть мощный маршрутизатор, такой как Asus WL-500gP (remium), вы можете использовать порты USB 2.0 для общего доступа с клиентами Windows.

Сервер Samba - вариант 1

Способ по умолчанию - использование пакетов OpenWRT

a) установите USB-устройство в соответствии с инструкцией Хранилище USB
b) включите JFFS
c) обновите систему ipkg с помощью следующей команды
ipkg update
d) установите Samba с помощью следующей команды
ipkg install samba2

Samba2 не является актуальным пакетом.

Для установки Samba требуется версия libgcc, которую нетривиально найти.

Сервер Samba - вариант 2

Способ optware - использование пакетов Optware

Хороший инструкция находится здесь Optware
Вы должны действительно попробовать этот способ, потому что он работает :)

Сервер Samba - вариант 3: простой способ

См. Slim Samba2 - урезанную версию Optware Samba2 для использования на USB-накопителях, просто распакуйте файл .tar.gz, отрегулируйте несколько настроек в веб-интерфейсе, и все готово.

См. HDsamba2 - полностью автоматизированный скрипт установки и загрузки для установки Optware Samba2 с SWAT и многое другое... на диск USB. Отформатируйте диск, настройте несколько параметров в веб-интерфейсе, запустите скрипт установки, и все готово.

Сервер Samba - вариант 4: Samba3

Т.к. samba2 имеет проблемы с файлами размером > 2 ГБ и < 4 ГБ и не поддерживает юникод, вы можете использовать samba3.

Устранение неполадок

Если у вас возникли проблемы с подключением (монтированием) общего сетевого ресурса, надеюсь, вам поможет следующее сообщение на форуме:
Problems mounting with cifs

Также обратите внимание, что ошибка "Error 22: invalid argument" является очень вводящей в заблуждение ошибкой общего характера; очень часто ваши аргументы верны, а ошибка на самом деле на стороне сервера - например, такие вещи, как неправильные разрешения, могут быть причиной этого. Существует довольно много вариаций протокола SMB и аутентификации. Теоретически, CIFS и сервер должны иметь возможность определять это автоматически, но это не всегда работает надежно. Эти вариации включают в себя:

Протокол: Netbios через TCP (порт 139) или SMB через TCP (порт 445)

Аутентификация: простой текстовый пароль, аутентификация Lanman (устарела), аутентификация NTLM (наиболее распространенная) или аутентификация NTLM2.

Это лишь некоторые из наиболее распространенных параметров.

Начните с попытки смонтировать общий ресурс на несуществующий IP-адрес. Это должно занять некоторое время, прежде чем вы получите ошибку тайм-аута. Это говорит о том, что аргументы, переданные вами в mount.cifs, заданы правильно.

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

mount.cifs //192.168.0.15/myshare /tmp/sambashares -v -o user=xxxx,pass=xxxx

На стороне сервера посмотрите, можете ли вы включить гостевой доступ (на сервере Samba установите параметр guest OK = yes в файле конфигурации smb.conf). Если это помогло, значит проблема заключается в разрешении имен пользователей или паролей.

Если у вас проблемы с доступом к Windows 7, попробуйте добавить 'host msdf = no' в глобальную область вашего конфигурационного файла Samba. Я не уверен, что именно происходит, но Windows 7, кажется, иногда заставляет Samba считать хост распределенной файловой системой и поэтому отказывается предоставлять доступ к файлам, если вы не подключили общий ресурс как сетевой диск. Благодаря этому теперь мне стало ясно и это отлично работает, получая доступ с Windows 7.