
Итак, я должен начать с того, что я успешно сделал это менее недели назад, и у меня не возникло никаких проблем, но с тех пор я переформатировал и перенастроил свой сервер, и теперь мне очень трудно вспомнить, как я это сделал.
Вот что у меня было раньше и что я пытаюсь сделать снова. У меня был публичный ресурс 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 User
B и 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:
Добавьте
guest account = <owner-of-your-shares>
в[global]
раздел. Важно, чтобы у учетной записи владельца ваших акций был доступ к ним. Если вы этого не сделаете, Samba будет считать, что гостевая учетная запись — этоnobody
пользователь, который вряд ли имеет доступ к данным в вашей акции.Либо вы можете указать это
force user = <owner-of-your-share>
под своим[shareXYZ]
блоком.Убедитесь, что у вас
[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