受密码保护的 Samba 共享

受密码保护的 Samba 共享

我想要一些桑巴舞股。其中一些应该对每个人都可用(这已经有效),其中一些应该使用密码(和用户名)进行保护。对于受密码保护的文件夹,我创建了一个新用户,给了他一个 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 GuestPublicGuest 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

然后只有受限组中的用户才能访问该文件夹。

相关内容