我想访问linux(虚拟盒子中的fedora 25),有两个问题:
配置匿名访问,但是windows通过samba访问linux仍然需要账号和密码。
配置帐户访问,windows提示帐户或密码不正确,但通过smbclient验证实际上是正确的。
配置匿名访问。
[global]
workgroup = WORKGROUP
security = user
map to guest = Bad User
guest account = guest
passdb backend = tdbsam
cups options = raw
interfaces = enp0s3
bind interfaces only = true
[myshare]
comment = fedora samba
path = /home/myshare/
writable = yes
browsable = yes
read only = no
public = yes
available = yes
guest ok = yes
valid users = root yangli guest
read list = root yangli guest
write list = root yangli guest
create mode = 0755
directory mode = 0755
allow hosts = 192.168.56.1/24
only guest = yes
是什么原因?
答案1
对于 Fedora 25,我不熟悉 fedora 版本号,但我使用 RHEL/Centos 7.x 如果您默认启用了 selinux,您可以尝试以 root 身份setenforce 0
暂时将 selinux 置于宽松模式,直到下次重新启动,看看这是否允许 samba 访问工作。如果是这样,那么这是一个 selinux 问题,并且在 RHEL/Centos 中,etc/samba/smb.conf.example
它解释了允许 samba 共享与设置为强制执行的 selinux 一起工作所需的 samba 相关 selinux 命令。
对于您的 Fedora 版本,我将关闭/etc/samba/smb.conf.example
.
作为参考,这里是我smb.conf
从旧版本的 samba 中进行的工作,显示了我认为使其正常工作所需的最低限度。如果您对设置过于严格,则可能会阻止成功连接,因此有时最好不要指定通常意味着允许所有连接。
在你的[myshare]
取出allow hosts
和valid users
.一旦桑巴舞正常运行,就可以考虑在必要时添加此类限制措施。
[global]
# min protocol = SMB1 needed for winxp
min protocol = SMB1
# max protocol SMB2 needed to work with win10, unspecified for this older version of samba is smb1.
max protocol = SMB2
security = user
passdb backend = tdbsam
# map to guest = never prevents popup option, bad user allows popup in windows
map to guest = Bad User
[data]
path = /data
read only = No
# guest ok = no
# create mask = 660
# directory mask = 770
guest ok = no,并映射到 guest bad 用户,将允许在 Windows 中弹出窗口,让任何人都有机会输入正确的 linux 用户名和密码。映射到来宾永远不会阻止弹出窗口,这意味着 Windows 用户的用户名必须与 Linux 中的有效本地用户相同(根据 security=user)。你可能不需要min/max protocol
指定,我在 samba 3.6 版本中需要指定。我不知道您在 fedora 25 中使用的 samba 版本是什么,如果是 samba 3.x,请尝试指定最小/最大协议。
不要忘记smbpasswd -a <username
在你的linux系统上做。
答案2
我有一个系统,允许WinXP和Win7以访客身份访问samba。一些可能有帮助的条目是:
[global]
security = user
null passwords = yes
map to guest = Bad Password
guest ok = Yes
我在受信任的局域网上使用开放共享。