设置要通过Windows 7和XBMC访问的匿名公共Samba共享


9

因此,我首先要说的是,我不到一个星期前成功完成了此操作,并且我没有遇到任何麻烦,但是自那时以来,我已经重新格式化并重新配置了服务器,现在,我最难忘的是我是如何做到的。

这是我以前的经历,也是我想要再次实现的目标。我在Ubuntu服务器上有一个公共的samba共享。我网络上的任何人都可以通过键入\ Hostname来访问共享及其内容。无需密码。不在共享工作组中的用户具有读访问权,但在工作组中的用户具有读/写访问权。(Windows 7的)

现在,如果我尝试连接到\ Hostname,则会提示我输入用户名和密码。如果我输入联合国密码,则可以完全访问,但我不必这样做;我目前的设定是...

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

我正在把头发拉过来。有什么建议么?

编辑:

gh,这让我很难受。我好亲近

这就是我所拥有的。

通过启动并键入\ Hostname \ Sharename,可以从Windows 7进入共享,但是系统提示我输入用户名和密码。我不能将其保留为空白,因为它将使用我的工作组作为域。因此我输入\作为用户名将其清除并使用空白的用户名和密码登录。很好,现在我可以访问共享中的文件了。

进入后,工作组配置即可正常工作。如果我使用默认的WORKGROUP,则可以读取并执行;我的Home工作组中的计算机可以读写并执行。这样就可以了。

问题是,它根本不需要输入密码。它应该对网络上的任何人完全公开。我正在尝试与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用户都可以在Netowork下看到NAS并访问它。关键是将安全性设置为安全性=共享。我知道,它已被弃用,但它可以正常工作,并且安全性=用户并映射到用户=坏用户对我不起作用。

无论如何,现在看来,连接到共享的任何人都可以获取该目录的unix全局权限,这是可管理的,但是我希望加入smb.conf中指定的工作组的用户获得unix组权限。

这样,我可以将目录设置为775,并且可以写入,因为我已加入工作组,但其他用户只能读取和执行。


您应该能够使用用户名映射文件来映射工作组用户以获取特定权限:samba.org/samba/docs/man/manpages-3/smb.conf.5.html#USERNAMEMAP
Aaron

Answers:


8

碰巧在Ubuntu论坛上偶然发现了这个线程,并认为这可能会有所帮助。它解释了幕后发生的步骤:

在Windows中,客户端的用户名和密码在浏览共享时会自动发送-这是在用户不知情的情况下完成的。这迫使Samba处理发送的凭据,即使它是不需要身份验证的来宾共享也是如此。

传递该用户名后,Samba将在该用户的密码数据库中进行搜索:

  • 如果与用户名不匹配,则将客户端用户标记为“不良用户”,并将其转换(映射到)来宾帐户(默认情况下为“ nobody”)。

  • 如果找到与用户名匹配的密码,并且有与Windows客户端发送的密码匹配的samba密码,则Windows用户将自动获得访问权限,尽管不是匿名用户,这就是为什么您需要向其中添加“强制用户=没有人”您的股份定义。

  • 如果找到与用户名匹配的名称,但samba密码与Windows客户端自动发送的密码不完全匹配,则系统将提示您输入密码-即使是来宾共享。

尝试添加force user = nobody到您的共享定义,然后查看是否可以执行。

编辑2013年2月20日:

testparm返回的零以外的东西的退出代码?一样,我会继续给配置的那个区域一个好的,硬的外观。另外,我不确定smb.conf是否区分大小写,但是我看到的每个示例(例如)map to guest = Bad User的B和U都大写。在Samba手册页中查看所使用的选项,然后仔细检查所有内容。


嘿布莱斯,谢谢回答。自从我提出最初的问题以来,我已经取得了一些进展,但是本质上我仍然遇到同样的问题。我已经成功配置了我的共享(我称为共享),以便在smb.conf的全局填充中定义的工作组中的任何人都可以使用它-无需密码。继续在下
一条

这是共享的设置:[Shares] path = /home/shares browsable = yes available = yes read only = no public = yes writable = yes guest ok = yes 如果添加共享,force user = nobody它将中断并且根本无法访问共享。这是奇怪的地方。当我运行testparm时,它会转储[Shares] path = /home/shares read only = no guest ok = yes因此,由于某种原因,好像没有看到公共的,可写的,可用的和可浏览的定义。这是否可以指示问题出在哪里。
George Spake

@GeorgeSpake编辑做了...
亚伦

1
我认为testparm只是以这种方式吐出东西。conf文件中的所有内容均为小写。我还发现并且需要验证这一点,即testparm仅转储非默认定义,这将解释为什么省略某些结果的原因。
George Spake

最近4.3.11+dfsg-0ubuntu0.14.04.3在Ubuntu 14.04上进行的samba更新打破了我的公开范围,force user = nobody这只是我需要重新获得公开范围所需的修复程序
Antony 2016年

7

这就是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

感谢您的添加!我一直在努力争取与Windows 8.1一起使用的公开共享,而这些设置确实可以解决问题。
davidmdem 2014年

13
啊!“来宾帐户=根”。这意味着来宾帐户已映射到根用户,即具有无限制的执行任何操作的权限。要特别小心!未来的龙!
DanielSmedegaardBuus

0

由于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 /yourshareguest ok = yes之下使用一个设置就可以了[shareXYZ]

请注意,设置rwxotherschmod o+rwx /yourshare)不会让Samba及其nobody用户进入共享。我已经通过进行了检查strace -f -e chdir,geteuid,getegid -p <pid-of-the-parent-smbd-process>。Samba可能只是忽略为others?设置的权限。不确定。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.