Geo*_*ake 9 server windows-7 samba xbmc
所以我应该首先说我在不到一周前成功地做到了这一点,我没有遇到任何问题,但我已经重新格式化并重新配置了我的服务器,现在我最难记住我是如何做到的。
这就是我之前所拥有的,以及我试图再次完成的。我在 Ubuntu 服务器上有一个公共 samba 共享。我网络上的任何人都可以通过键入 \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
Run Code Online (Sandbox Code Playgroud)
我正在把我的头发拉到这个上面。有什么建议?
编辑:
呃,这让我很难受。我离得那么近
这就是我所拥有的。
我可以通过开始并键入 \Hostname\Sharename 从 Windows 7 访问共享,但系统会提示我输入用户名和密码。我不能把它留空,因为它会使用我的工作组作为域;所以我输入 \ 作为用户名将其清除并使用空白用户名和密码登录。太好了,现在我可以访问共享中的文件了。
一旦我进入,工作组配置工作正常。如果我在使用默认工作组的计算机上,我可以读取和执行;我的家庭工作组中的计算机可以读写和执行。所以这是有效的。
问题是,它根本不应该要求输入密码。它应该对网络上的任何人完全公开。我正在尝试与 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
Run Code Online (Sandbox Code Playgroud)
更新:因此,无论工作组如何,共享现在都可以在我的网络中使用。任何连接到我的网络的 Windows 用户都可以在网络下看到 NAS 并访问它。关键是将安全设置为安全 = 共享。我知道,它已被弃用,但它有效并且安全 = 用户和映射到用户 = 坏用户对我不起作用。
无论如何,现在似乎连接到共享的任何人都可以获得该目录的 unix 全局权限,这是可管理的,但我希望加入 smb.conf 中指定的工作组的用户获得 unix 组权限。
这样,我可以将目录设置为 775 并且我将能够写入,因为我加入了工作组但其他用户只能读取和执行。
Aar*_*ron 10
偶然在 Ubuntu 论坛上偶然发现了这个线程,并认为它可能会有所帮助。它解释了幕后发生的步骤:
在 Windows 中,客户端的用户名和密码在浏览共享时会自动发送 - 这是在用户不知情的情况下完成的。这会强制 Samba 处理发送的凭据,即使它是不需要身份验证的来宾共享。
当该用户名被传递时,Samba 将搜索该用户的密码数据库:
如果与用户名不匹配,则客户端用户将被标记为“坏用户”并转换(映射)为默认情况下为“nobody”的访客帐户。
如果找到与用户名匹配的 samba 密码,并且有一个与 Windows 客户端发送的密码匹配的 samba 密码,则 Windows 用户会自动获得访问权限,尽管不是匿名用户,这就是您需要添加“强制用户 = 无人”的原因您的共享定义。
如果它找到与用户名匹配但 samba 密码与 Windows 客户端自动发送的密码不完全匹配的密码,则系统将提示您输入密码 - 即使是来宾共享也是如此。
尝试添加force user = nobody到您的共享定义中,看看是否可以。
2013 年 2 月 20 日编辑:
是否testparm返回除零以外的退出代码?尽管如此,我还是会继续给配置的那个区域一个良好的、严格的外观。另外,我不确定 smb.conf 是如何区分大小写的,但是我看到的每个示例(例如)map to guest = Bad User都将 B 和 U 大写。查看您正在使用的选项的Samba 手册页,并仔细检查所有内容。
小智 8
这就是 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
Run Code Online (Sandbox Code Playgroud)
小智 7
由于谷歌搜索将我们带到这里并且没有明确的答案,所以我总结了一下。
以下是确保 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>。others也许 Samba 只是忽略了为?设置的权限。没有把握。