Product SiteDocumentation Site

11.5. 用 Samba 设置 Windows 共享

Samba 是 Linux 上处理 SMB 协议的一套工具(也被称为“CIFS”)。这个协议由 Windows 使用用于网络共享和共享打印机。
Samba 还可以用作 Windows 域控制器。这是一种出众的工具,来确保无缝整合 Linux 服务器和仍然运行 Windows 的办公桌面机器。

11.5.1. Samba 服务器

samba 软件包包括 Samba 4 的两个主要服务器,smbdnmbd

11.5.1.1. 使用 debconf 来配置

The package sets up a minimal configuration during the initial installation in /etc/samba/smb.conf by plainly copying /usr/share/samba/smb.conf. So you should really run dpkg-reconfigure samba-common to adapt it:
在首次安装时,唯一需要的信息是 Samba 服务器所属的工作组的名称(在我们的情况下是 FALCOTNET)。
在软件包(从旧的稳定 Debian 版本)更新的情况下,或者如果 SMB 服务器已经配置来使用 WINS 服务器(wins server),那么软件包还打算从 DHCP 守护进程提供的信息中识别 WINS 服务器。Falcot 公司的管理员拒绝这个选项,因为他们想要使用 Samba 服务器本身作为 WINS 服务器。

11.5.1.2. 手动配置

11.5.1.2.1. 更改为 smb.conf
Falcot 公司的要求需要在 /etc/samba/smb.conf 配置文件中修改其它选项。后面的节选概括地总结了在所做的更改,在 [global] 部分中生效。
[...]

[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = FALCOTNET

[...]

# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable its WINS Server
   wins support = yes 1

[...]

####### Authentication #######

# Server role. Defines in which mode Samba will operate. Possible
# values are "standalone server", "member server", "classic primary
# domain controller", "classic backup domain controller", "active
# directory domain controller".
#
# Most people will want "standalone server" or "member server".
# Running as "active directory domain controller" will require first
# running "samba-tool domain provision" to wipe databases and create a
# new domain.
   server role = standalone server

   obey pam restrictions = yes

[...]

# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server.
   security = user 2

[...]

1

Indicates that Samba should act as a Netbios name server (WINS) for the local network. This option had been removed from the default configuration in Buster and must be added manually if desired.

2

这是这个参数的默认值;然而由于它对 Samba配置至关重要,推荐显性地填写。每个用户在访问任何共享前必须认证。
11.5.1.2.2. 添加用户
每名 Samba 用户在服务器上需要账户;必须首先创建 Unix 账户,然后用户需要在 Samba 的数据库中注册。Unix 的步骤非常正常地完成(例如使用 adduser )。
将现有用户添加到 Samba 数据库中不过是运行 smbpasswd -a user 命令的事;这个命令交互地询问密码。
可以通过 smbpasswd -x user 命令来删除用户。Samba 账户还能够(通过 smbpasswd -d user)被临时禁止,并且后面(通过 smbpasswd -e user)再次启用。

11.5.2. Samba 客户端

Samba 的客户端特性允许 Linux 机器访问 Windows 共享和共享打印机。所需程序在 cifs-utilssmbclient 软件包中得到。

11.5.2.1. smbclient 程序

smbclient 程序需要 SMB 服务器。它接受 -U user 选项,用于在特定的身份下连接到服务器上。 smbclient //server/share 与命令行 FTP 客户端相似,以交互的方式访问共享。 smbclient -L server 列出服务器上所有可用(并且可见)的共享。

11.5.2.2. 挂载 Windows 共享

mount 命令允许将 Windows 共享挂载到 Linux 文件系统层次结构中(在cifs-utils 提供的 mount.cifs的帮助下)。

例 11.21. 挂载 Windows 共享

mount -t cifs //arrakis/shared /shared \
      -o credentials=/etc/smb-credentials
/etc/smb-credentials 文件(必须不能被用户读取)具有后面的格式:
username = user
password = password
可以在命令行指定其它选项;它们的完整列表可以在手册页面 mount.cifs(1) 中得到。特别是两个选项令人感兴趣:uidgid 允许文件的用户和用户组强制在挂载时得到,从而不限制对根的访问。
Windows 共享的挂载也可以在 /etc/fstab 中配置:
//server/shared /shared cifs credentials=/etc/smb-credentials
Unmounting an SMB/CIFS share is done with the standard umount command.

11.5.2.3. 在共享打印机上打印

CUPS 是从 Linux 工作站打印到 Windows 机器共享打印机的优雅解决方案。当安装 smbclient 时,CUPS 允许自动安装 Windows 共享打印机。
这里是所需的步骤:
  • 进入 CUPS 配置界面:http://localhost:631/admin
  • 点击“添加打印机”。
  • 选择打印机设备,选择“经由 SAMBA 的 Windows 打印机”。
  • 输入网络打印机的连接 URI。它看起来应该像这样:
    smb://user:password@server/printer.
  • 输入唯一识别这台打印机的名称。然后输入打印机的描述与位置。这些会是对终端用户显示的字符串,帮助他们识别打印机。
  • 指示了打印机的生产商/型号,或者直接提供网络打印机的描述文件(PPD)。
看,打印机工作了!