如何让 Samba 共享不要求输入密码

如何让 Samba 共享不要求输入密码

注:我大概已经阅读了 50 多页关于如何设置公共 Samba 共享的页面2年但对我来说什么都没用。我不知道我需要花多少时间阅读手册才能设置这些东西。

我需要/想要在我的家庭服务器上为两个工作站设置一个完全开放的公共文件共享。

设置如下:

服务器

  • Debian Wheezy
  • sudo smbd --version给我Version 3.6.6
  • 我想共享 2 个本地分区,由于年代久远且取自 Windows 计算机,因此格式化为 NTFS。我无法将它们格式化为 ext* FS,因为它们包含大量数据,我(暂时)无法将其移动到其他任何地方。
  • 由于缺乏原创性,该机器被命名为“homeserv”。

客户

  1. Debian 测试 (Jessie)
  2. Windows 7(2 台不同的机器)。事实上,我的机器是 Debian/Windows 双启动,而我妻子的机器只有 Windows。

经过提炼后的 smb.conf 如下所示(逐字,没有其他内容):

[global]
  workgroup = WORKGROUP
  security = user
  map to guest = Bad User

[disk1]
  comment = Disk 1 on 400GB HDD
  path = /media/disk1
  browsable = yes
  guest ok = yes
  read only = no
  create mask = 0755

[disk2]
  comment = Disk 2 on 400GB HDD
  path = /media/disk2
  browsable = yes
  guest ok = yes
  read only = no
  create mask = 0755

在 Debian 和 Windows 的两台客户端机器上,我都得到了相同的结果:登录/密码对话框。security = usermap to guest = Bad usersecurity = shareguest ok = yes等的组合都无济于事。

当我单击网络邻居中的共享计算机后,Windows 7 立即显示登录/密码对话框。Debiansmb://homeserv/中的文件路径(在任何文件浏览器中)显示了两个文件夹:disk1disk2,正如预期的那样,尝试打开它们会出现登录/密码对话框。

那么,我缺少的方案是什么,无需输入登录名/密码?这是可用性问题,我不会为文件垃圾场创建基于用户的身份验证。

答案1

好的,我自己找到了答案。

因为这是绝对不明显从文档和 HOWTO 等来看,这个东西要求输入密码的原因是它无法将访客用户映射到共享目录的所有者

我有 NTFS 分区,需要挂载 RW,因此我在我的分区中使用了以下设置/etc/fstab

/dev/sdb1  /media/disk1  ntfs defaults,noexec,noatime,relatime,utf8,uid=1000,gid=1000 0       2
/dev/sdb2  /media/disk2  ntfs defaults,noexec,noatime,relatime,utf8,uid=1000,gid=1000 0       2

最重要的配置部分是uidgid(可能只有uid,不知道)。它们设置为jonnie服务器上设置的用户的 UID 和 GID(显然不是 root)。因此,当 ntfs-3g 挂载这些磁盘时,所有内容都将归他所有。

之后,我将该用户添加到 Samba 注册表(或者可能创建了新的相同的用户,无所谓):

# smbpasswd -a jonnie

它要求输入密码,我输入了与主系统相同的密码。

之后,我已将force userforce group设置添加到smb.conf

[global]
  workgroup = WORKGROUP
  netbios name = HOMESERV
  security = user
  map to guest = Bad User

[disk1]
  comment = Disk 1 on 400GB HDD
  path = /media/disk1
  browsable = yes
  guest ok = yes
  read only = no
  create mask = 666
  directory mask = 777
  force user = jonnie
  force group = jonnie

[disk2]
  comment = Disk 2 on 400GB HDD
  path = /media/disk2
  browsable = yes
  guest ok = yes
  read only = no
  create mask = 666
  directory mask = 777
  force user = jonnie
  force group = jonnie

所以,最重要的与我相关的配置是force user

图片来源:Samba 指南

答案2

配置可以更短:

创建 unix 用户 jonnie

sudo useradd jonnie -s /usr/sbin/nologin

创建 smbuser

sudo smbpasswd -a jonnie

创建要共享的 Linux 目录

mkdir /mysmbshare

将目录的所有者更改为 jonnie

sudo chown jonnie /mysmbshare

smb配置文件

[global]
  workgroup = MyWorkGroup
  server string = Hello, use me
  security = user
  map to guest = Bad User
  guest account = jonnie
  passdb backend = tdbsam
  
[the_public_share]
   path = /mysmbshare
   writable = yes
   printable = no
   public = yes

所有文件均归 jonnie 所有,并且每个人都对这些文件拥有 rw 访问权限。

答案3

拥有开放 Samba 共享的快速而简单的方法是:

# ----------------------- Standalone Server Options ------------------------
#
# Scurity can be set to user, share(deprecated) or server(deprecated)
#
# Backend to store user information in. New installations should
# use either tdbsam or ldapsam. smbpasswd is available for backwards
# compatibility. tdbsam requires no further configuration.

        security = share
        passdb backend = tdbsam

并有这样的共享定义:

[export]
   comment = Data Export Directory
   path = /data/export
   read only = no
   public = yes
   browseable = yes
   writeable = yes
   create mask = 666
   directory mask = 777

重新启动守护进程。

对于 Windows 7 客户端,自 2014 年起,我需要设置域策略:始终对通信进行数字签名禁用。

答案4

这个对我有用。我相信你可以把大部分内容删除。我花了很多功夫才让它工作起来。目录上的文件权限当然也需要宽松,例如 777 等。然后如果你想要更安全的话,可以稍微修剪一下。我相信其中一些设置可能会被删除,它仍然可以工作。我在 Linux Mint 20 和 21、Linux Lite 6 和 Kali Linux(都是基于 Ubuntu)上使用过它。它对我来说总是很好用,当从 Windows 10 机器连接时,它不会提示进行身份验证。

我通常还会在我的 Linux 机器上安装 WSDD,以便 Windows 可以更轻松地找到它们。 https://github.com/christgau/wsdd 您通常可以通过 APT 获取它。

sudo apt install wsdd

干杯!

usershare owner only = false
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)

log file = /var/log/samba/log.%m
max log size = 1000
logging = file

panic action = /usr/share/samba/panic-action %d

server role = standalone server obey pam restrictions = yes

unix password sync = yes

passwd program = /usr/bin/passwd %u passwd chat = 
Enter\snew\s\spassword:* %n\n Retype\snew\s\spassword:* %n\n 
password\supdated\ssuccessfully .

pam password change = yes

map to guest = bad user
usershare allow guests = yes

[Your Share Name]
    comment = Whatever you want it to say
    path = /PathToSharedDirectory
    browsable = yes
    guest ok = yes
    read only = no
    create mask = 0777

相关内容