我想要一些桑巴舞股。其中一些应该对每个人都可用(这已经有效),其中一些应该使用密码(和用户名)进行保护。对于受密码保护的文件夹,我创建了一个新用户,给了他一个 samba 密码,并将他的名字写在我的共享中的 valid users = 下。这些是命令:
useradd joe
passwd joe
smbpasswd -a joe
valid users = vivek raj joe
我遵循了这个小指南:Samba 添加用户。但看起来不行,Windows 7总是告诉我密码错误。
这是我的 samba 配置文件:
[global]
server string = bananapi
workgroup = WORKGROUP
netbios name = %h
security = user
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
# Using the following configurations as a template allows you to add
# writable shares of disks and paths under /storage
[Share]
path = /storage/share
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/share
[username]
path = /storage/username
available = yes
browsable = yes
public = no
writable = yes
valid users = joe
root preexec = mkdir -p /storage/username
答案1
https://www.samba.org/samba/docs/using_samba/ch09.html
您可以使用配置共享guest ok = yes
来允许来宾用户访问。
仅当使用共享级安全性时才有效
当需要某些信息时,请考虑访问源代码而不是其他网站,以下是 samba 的目录: https://www.samba.org/samba/docs/using_samba/toc.html
您正在使用
[GLOBAL]
security = user
这是最严格的,对于 Microsoft Windows 系统中的任何人来说,甚至要从 Linux 系统访问任何 samba 共享,他们都需要拥有或知道该 Linux 系统上的帐户,然后知道密码。
我的 smb.conf 的一部分是这样的
[global]
workgroup = WORKGROUP
passdb backend = tdbsam
security=user
map to guest = Bad User
# map to guest = nobody
usershare allow guests = No
server signing = auto
与您的类似,上面的内容将导致 Windows 系统上没有 Linux 系统帐户的任何人绝不连接,microsoft windows 将响应cannot access \\whatever_server_you_typed.
这是 这是因为Map to Guest = Bad User
在 Linux 系统上不存在“Bad User”作为用户帐户,它在语法上也是无效的,因为它有一个空格。
Map to Guest = nobody
然而,使用nobody
有效的 Linux 帐户将导致 microsoft windows 提示输入用户名和密码,当 microsoft windows 的给定用户名不是运行 samba-server 的 Linux 系统上的用户名时,就会发生这种情况。
如果您选择下面的这种方法,Security = User
您可以使用我上面描述的方法来潜在地满足您的安全需求。否则,您将需要完成security = share
您最初要求做的事情 - 网络上的任何人都可以访问特定文件夹而无需提示输入密码。
为了安全选择是用户、共享、服务器和域。 samba 帮助文档将描述每个功能可用和不可用的功能。
我建议您撤消guest account = root
我没有在帮助文档中找到该选项,我认为它与 (就像该选项确实一样)guest account =
相同,并且出于明显的安全影响,您不希望将某些未知用户映射到根帐户。Map to Guest
Public
Guest OK = yes
答案2
这个视频对此进行了很好的解释。
https://www.youtube.com/watch?v=7Q0mnAT1MRg
我发现如果您备份旧的 smb.conf 文件并从头开始创建一个新文件,效果会更好。
转到 /etc/samba 文件夹。
sudo mv smb.conf smb.conf.bak
我们可以在 smb.conf 文件中创建一个[全局]设置,并为各个文件夹创建一个单独的文件shares.conf。
创建一个新的 smb.conf 文件。
sudo nano smb.conf
在 smb.conf 中:
[global]
server string = File server
workgroup = WORKGROUP
security = user
map to guest = Bad User
name resolve order = bcast host
include = /etc/samba/shares.conf
现在创建shares.conf 文件。在这里我将显示密码保护选项,因为您已经成功公开共享。
股票.conf:
[Private Share]
path=[give here the path to the folder to be shared]
force user = smbuser
force group = smbgroup
create mask = 0664
force create mode = 0664
directory mask = 0775
force directory mode = 0775
writable = yes
创建系统组smbuser。
sudo groupadd --system smbgroup
现在在smbgroup中创建一个用户smbuser,但不创建主目录,并且也拒绝登录系统的能力。
sudo useradd --system --no-create-home --group smbgroup -s /bin/false smbuser
更改要共享的文件夹的所有权。
sudo chown -R smbuser:smbuser [folder path]
授予写入权限
sudo chmod -R g+w [folder path]
将 samba 密码添加到 smbuser。这将是您必须在 Windows 中提供的密码,以便进行身份验证才能查看共享文件夹。
sudo smbpasswd -a smbuser
New SMB password:[password]
Retype new SMB password:[password]
现在重新启动 smbd。
sudo systemctl restart smbd
在windows中运行\\[ip address of samba system]
它会要求输入用户名和密码。用户名是smbuser
您提供的,密码是您提供的。
希望这有帮助。
答案3
您需要创建一个包含允许用户的组(例如“restrictedgroup”)并在 smb.conf 中指定:
有效用户 = @restrictedgroup
然后只有受限组中的用户才能访问该文件夹。