Samba-сервер на Android

kaztost
Сообщения: 223
Зарегистрирован: 17 июл 2017, 00:29

Сообщение kaztost » 01 авг 2017, 03:18

Памятка установки и настройки Samba-сервера из Entware-ng/Entware-3x на Андроид-устройствах.

1. Устанавливаем Samba-сервер. На arm-устройстве c установленным Entware-ng:

Код: Выделить всё

# opkg install http://pkg.entware.net/binaries/armv7/experimental/samba36-server_3.6.25-50_armv7soft.ipk

В случае с Entware-3x достаточно

Код: Выделить всё

# opkg install samba36-server


2. Создаем пользователя с uid 1023 и задаем ему Samba-пароль

Код: Выделить всё

# adduser -DHu 1023 media_rw
# smbpasswd -a media_rw
New SMB password:
Retype SMB password:

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

3. Создаем и правим конфиг /opt/etc/samba/smb.conf. У меня он такой

Код: Выделить всё

[global]
        netbios name = Android
        display charset = UTF-8
        interfaces = wlan0
        server string = Android
        unix charset = UTF-8
        workgroup = WORKGROUP
        browseable = yes
        deadtime = 30
        domain master = yes
        encrypt passwords = true
        enable core files = no
        guest account = media_rw
        guest ok = yes
        local master = yes
        load printers = no
        map to guest = Bad User
        max protocol = SMB2
        min protocol = NT1
        min receivefile size = 16384
        null passwords = yes
        obey pam restrictions = yes
        os level = 20
        passdb backend = smbpasswd
        preferred master = yes
        printable = no
        security = user
        smb encrypt = disabled
        smb passwd file = /opt/etc/samba/smbpasswd
        socket options = TCP_NODELAY IPTOS_LOWDELAY
        syslog = 2
        use sendfile = yes
        writeable = yes

[Download]
        path = /data/media/0/Download
        read only = yes
        guest ok = yes
        create mask = 0666
        directory mask = 0777

[Internal Storage]
        path = /data/media/0
        read only = no
        guest ok = no
        create mask = 0666
        directory mask = 0777
        valid users = media_rw

[External SdCard]
        path = /mnt/media_rw/sdcard1
        read only = no
        guest ok = no
        create mask = 0666
        directory mask = 0777
        valid users = media_rw


В шарах важно указать правильные пути к первичным источникам андроидных "внутренней" и "внешней" памяти. Это не должны быть эмулированные пути (типа /storage/emulated/0 или, как в моем случае, /storage/sdcard1). Шара Download предназначена для гостевого read-only доступа. Доступ к Internal Storage и External SdCard осуществляется по логину media_rw и определенного ранее паролю. Опция "min protocol" может быть в целях безопасности выставлена в SMB2, но не все андроид-клиенты работают с SMB2.

4. Запускаем сервер через /opt/etc/init.d/S08samba start. На виндовых машинах в той же сети расшаренные папки будут доступны по пути //ANDROID или //[ip-адрес].

P.S. Вот честное слово, ненавижу самбу из-за постоянных проблем в настройках. Если конфиг неправильный, то винда попытавшесь неудачно залезть на эту самба-шару, пароль и настройки куда-то кэширует. А потом как самбу не перенастраивай, то результат будет виден только после перезагрузки винды. И это на Windows 7! С последними виндами результат может оказаться еще хуже. Еще пример: у меня работала Ubuntu-виртуалка, раздающая через samba скрытый от винды ext4-раздел винчестера. Работала она какое-то время, но вдруг отчего-то перестала, и так до сих пор и не работает. С андроидов доступ есть, а из винды - нет. Что случилось - детективная история. После долгих мучений решил доунгрейдить samba до 3-й версии, а чтобы не рушить зависимости в Ubuntu (ну и для эксперимента, конечно же) поставил туда samba из Entware-3x с тем же почти конфигом, что и выше. Понятно, что менее безопасно стало, но зато работает.

P.P.S. Если кто-то хорошо знает самбу, то пожалуйста сообщите, если что-то не так, конфиг поправлю.

kaztost
Сообщения: 223
Зарегистрирован: 17 июл 2017, 00:29

Сообщение kaztost » 01 авг 2017, 04:08

У меня вопрос по smclient. Если ставить на сервере "min protocol = SMB2", то непонятно, как бороться с

Код: Выделить всё

~ # smbclient //127.0.0.1/Download -U media_rw
WARNING: The "null passwords" option is deprecated
Enter media_rw's password:
protocol negotiation failed: NT code 0xc00000c3
1|~ #

То есть энтварный smbclient SMB2 не поддерживает?

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1912
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 01 авг 2017, 08:34

kaztost писал(а):Источник цитаты То есть энтварный smbclient SMB2 не поддерживает?

smbclient это часть собираемой самбы, просто вынесен в отдельный пакет. Об этой ошибке много в google - хотя решение сходу не находится. Может smb.conf нужно допилить.

kaztost
Сообщения: 223
Зарегистрирован: 17 июл 2017, 00:29

Сообщение kaztost » 01 авг 2017, 13:57

Похоже все-таки на проблему клиента. Как здесь, например. Из Windows 7 и убунтушного smbclient на энтварный сервер c "min protocol = SMB2" заходит успешно. В smbclient надо поставить опцию -m SMB2

Код: Выделить всё

root@ubuntu:~# smbclient //10.17.1.55/Download
WARNING: The "syslog" option is deprecated
Enter root's password:
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE
root@ubuntu:~# smbclient -m SMB2 //10.17.1.55/Download
WARNING: The "syslog" option is deprecated
Enter root's password:
Anonymous login successful
smb: \>

А вот энтварный клиент похоже не понимает этой опции

Код: Выделить всё

~ # smbclient //10.17.1.55/Download
WARNING: The "null passwords" option is deprecated
Enter root's password:
protocol negotiation failed: NT code 0xc00000c3
1|~ # smbclient -m SMB2 //10.17.1.55/Download
Unrecognised protocol level SMB2
WARNING: The "null passwords" option is deprecated
Enter root's password:
protocol negotiation failed: NT code 0xc00000c3

В общем, проблема в андроиде найти способ связаться с энтварным SMB2-сервером. Проги ES Explorer и AndSMB, в которых заявлена поддержка SMB2, тоже не работают.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1912
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 01 авг 2017, 15:01

Код: Выделить всё

root@QNAP231 ~# smbclient //10.0.0.155/Photo -W POLES -U guest -N
Domain=[BIGCOMP7] OS=[Windows 7 Professional 7601 Service Pack 1] Server=[Windows 7 Professional 6.1]
smb: \> ls
  .                                   D        0  Sun Jul 16 23:54:18 2017
  ..                                  D        0  Sun Jul 16 23:54:18 2017
  2000 LENA                          DA        0  Mon Aug 25 21:23:31 2008
  ....

smbclient из entware на armv7 устройстве (не Android) к Win7 подключился, к Win10 не удалось.

kaztost
Сообщения: 223
Зарегистрирован: 17 июл 2017, 00:29

Сообщение kaztost » 01 авг 2017, 16:00

Возможно в Win10 протоколы старее SMB2 выключены либо по дефолту, либо в результате патчей безопасности из-за Wanna Cry. А в Win7 работает старый протокол NT1, что, вообще говоря, представляет некоторую угрозу (для параноиков). А smbclient энтвари работает только максимум c NT1.


Вернуться в «Entware на Android»

Кто сейчас на конференции

Всего 2 посетителя :: 0 зарегистрированных, 0 скрытых и 2 гостя (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (162) здесь было 16 ноя 2019, 18:33

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя