Настройка анонимного публичного ресурса Samba для доступа через Windows 7 и XBMC

Настройка анонимного публичного ресурса Samba для доступа через Windows 7 и XBMC

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

Вот что у меня было раньше и что я пытаюсь сделать снова. У меня был публичный ресурс Samba на сервере Ubuntu. Любой в моей сети мог получить доступ к ресурсу и его содержимому, просто набрав \Hostname. Пароль не нужен. Пользователи, которые не были в рабочей группе ресурса, имели доступ на чтение, но пользователи, которые были в рабочей группе, имели доступ на чтение/запись. (Windows 7)

Теперь, если я попытаюсь подключиться к \Hostname, мне будет предложено ввести имя пользователя и пароль. Если я введу un pw, я получу полный доступ, хотя мне это и не нужно; мои текущие настройки...

security = user
map to guest = bad user

[Shares]
path = /home/shares
available = yes
read only = no
browsable = yes
public = yes
writable = yes
guest ok = yes

Я рву на себе волосы из-за этого. Есть предложения?

РЕДАКТИРОВАТЬ:

Уф, это так меня огорчает. Я так близко.

Вот что у меня есть.

Я могу получить доступ к ресурсу из Windows 7, нажав «Пуск» и введя \Hostname\Sharename, но мне предлагается ввести имя пользователя и пароль. Я не могу просто оставить поле пустым, потому что в качестве домена будет использоваться моя рабочая группа; поэтому я ввожу \ вместо имени пользователя, чтобы очистить его, и вхожу с пустым именем пользователя и паролем. Отлично, теперь я могу получить доступ к файлам в ресурсе.

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

Проблема в том, что он вообще не должен запрашивать пароль. Он должен быть полностью публичным для всех в сети. Я пытаюсь поделиться им с XBMC, но он даже не отображается в smb в файловом менеджере. Я также не могу получить к нему доступ вручную из XBMC. Я получаю ошибку «подключение отклонено».

До сих пор рву волосы из-за этого. Хуже всего то, что когда я сделал это в первый раз, около недели назад, я потратил на это около 30 минут, и это сработало идеально. Теперь я потратил, наверное, не менее 4 часов, и это все еще не работает.

Testparm:

Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Shares]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        workgroup = FELLOWSHIP
        server string = %h server (Samba, Ubuntu)
        map to guest = Bad User
        obey pam restrictions = Yes
        pam password change = Yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        unix password sync = Yes
        syslog = 0
        log file = /var/log/samba/log.%m
        max log size = 1000
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        dns proxy = No
        wins support = Yes
        usershare allow guests = Yes
        panic action = /usr/share/samba/panic-action %d
        idmap config * : backend = tdb

[printers]
        comment = All Printers
        path = /var/spool/samba
        create mask = 0700
        printable = Yes
        print ok = Yes
        browseable = No

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/printers

[Shares]
        path = /home/shares
        read only = No
        guest ok = Yes

ОБНОВЛЕНИЕ: Итак, общий ресурс теперь доступен в моей сети независимо от рабочей группы. Любой пользователь Windows, который подключается к моей сети, может видеть NAS в разделе Netowork и получать к нему доступ. Ключевым моментом была настройка security на security = share. Я знаю, это устарело, но это работает, а security = user и map to user = bad user у меня не работали.

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

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

решение1

Случайно наткнулся наэта тема на форумах Ubuntu, и подумал, что это может помочь. Он объясняет шаги, которые происходят за кулисами:

В Windows имя пользователя и пароль клиента автоматически отправляются, когда он просматривает общие ресурсы - это делается без ведома пользователя. Это заставляет Samba иметь дело с отправленными учетными данными, даже если это гостевой общий ресурс, не требующий аутентификации.

При передаче этого имени пользователя Samba выполнит поиск этого пользователя в своей базе данных паролей:

  • Если совпадений с именем пользователя не обнаружено, клиентский пользователь помечается как «Плохой пользователь» и преобразуется (сопоставляется) в гостевую учетную запись, которая по умолчанию имеет значение «никто».

  • Если он находит совпадение с именем пользователя и есть пароль Samba, соответствующий отправленному клиентом Windows, то пользователь Windows автоматически получает доступ, хотя и не как анонимный пользователь, поэтому вам нужно было добавить «force user = nobody» в определение вашего общего ресурса.

  • Если он найдет совпадение с именем пользователя, но пароль Samba не будет полностью соответствовать паролю, автоматически отправленному клиентом Windows, то вам будет предложено ввести пароль — даже для гостевого общего ресурса.

Попробуйте добавить force user = nobodyопределение общего ресурса и посмотрите, поможет ли это.

Редактировать 20.02.2013:

Возвращает ли testparmкод выхода что-то, отличное от нуля? Тем не менее, я бы пошел дальше и внимательно посмотрел на эту область конфигурации. Кроме того, я не уверен, насколько чувствителен к регистру smb.conf, но в каждом примере, который я вижу (например), map to guest = Bad UserB и U заглавные. ПроверьтеСтраницы Samba manдля опций, которые вы используете, и еще раз все проверьте.

решение2

Вот как настроен OpenElec. Должно сделать то, о чем вы просите. (даже если это произойдет через год... может быть, это поможет в следующем году) Просто подправьте настройки общего доступа по мере необходимости.

[global]
  server string = YOURSERVERNAME
  workgroup = WORKGROUP
  netbios name = %h
  security = share
  guest account = root
  socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
  smb ports = 445
  max protocol = SMB2
  min receivefile size = 16384
  deadtime = 30
  os level = 20
  mangled names = no
  syslog only = yes
  syslog = 2
  name resolve order = lmhosts wins bcast host
  preferred master = auto
  domain master = auto
  local master = yes
  printcap name = /dev/null
  load printers = no
  browseable = yes
  writeable = yes
  printable = no
  encrypt passwords = true
  enable core files = no
  passdb backend = smbpasswd
  smb encrypt = disabled
  use sendfile = yes

[share]
comment = Share
path = /share
available = yes
browsable = yes
writable = yes
public = yes

решение3

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

Ниже приведены условия, необходимые для того, чтобы клиенты SMB не запрашивали имя пользователя и пароль при доступе к вашему серверу Samba:

  1. Добавьте guest account = <owner-of-your-shares>в [global]раздел. Важно, чтобы у учетной записи владельца ваших акций был доступ к ним. Если вы этого не сделаете, Samba будет считать, что гостевая учетная запись — это nobodyпользователь, который вряд ли имеет доступ к данным в вашей акции.

    Либо вы можете указать это force user = <owner-of-your-share>под своим [shareXYZ]блоком.

  2. Убедитесь, что у вас [shareXYZ]есть guest ok = yes.

    Устанавливается browsable = yes, но обычно наследуется от [global]и устанавливается yesпо умолчанию.

Тогда, вероятно, security = userтакже следует установить (это значение по умолчанию, если в вашей среде не установлен Active Directory). Хотя я не уверен, является ли этот флаг обязательным, поскольку в моей среде нет AD.

Конечно, если вы хотите, nobodyчтобы пользователь работал, то вы можете просто chown -Rh 65534:65534 /yourshare, после этого вам будет достаточно одной настройки guest ok = yesв вашем [shareXYZ].

Обратите внимание, что установка rwxна others( chmod o+rwx /yourshare) не позволила Samba с ее nobodyпользователем войти в общий ресурс. Я проверил это с помощью strace -f -e chdir,geteuid,getegid -p <pid-of-the-parent-smbd-process>. Возможно, Samba просто игнорирует разрешения, установленные для others? Не уверен.

решение4

Это, вероятно, не будет решением для всех с такой проблемой, но моя проблема была связана с разрешениями родительского каталога, в котором находился общий каталог. Как только я включил "Чтение другими", я смог анонимно получить доступ к общему ресурсу. Это застало меня врасплох, так как на серверах Windows разрешения родительского каталога не имеют значения для общего каталога.

Итак, мой путь выглядит так:

/data1/Downloads 

Мне пришлось включить «чтение другими» для data1каталога.

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

[Downloads]
path = /data1/Downloads
browseable = yes
read only = yes
guest ok = yes
public = yes

Связанный контент