配置 Samba 文件服务器全攻略
1. 创建用户账户
要访问 Samba 共享,用户既需要在 Linux 文件系统上有访问权限,也需要在共享本身有访问权限。这类似于 Windows 服务器,用户需要 NTFS 权限和共享权限。由于 Windows 处理加密的方式与 Linux 处理权限的方式不兼容,仅拥有 Linux 用户账户无法从 Windows 工作站访问 Linux 目录,还需要 Windows 凭证。
在企业环境中,如果许多用户需要访问共享,仅创建 Linux 和 Samba 用户账户可能不是可行的解决方案,特别是在有多个带有 Samba 共享的服务器时。除了创建两个不同的用户账户(Linux 用户账户和 Samba 用户账户),还有其他一些选择:
-
设置 OpenLDAP 目录服务器
:可以创建在 Linux 和 Windows 中都有效的用户账户。
-
将 Samba 配置为 Windows NT 风格的域控制器
:允许集中管理用户,还能配置终端用户计算机进行域登录。
-
将 Samba 配置为 Active Directory 中的成员服务器
:可从 Active Directory 获取所有用户信息,但仍需设置 Linux 用户账户。
-
使用 Winbind 从 Active Directory 获取所有所需信息
:在主要使用 Active Directory 的环境中,运行 winbind 服务,对用户账户进行身份验证。
-
使用 security=server 选项
:配置一个 Samba 服务器存储用户账户,其他 Samba 服务器从该主服务器获取用户信息。
下面介绍创建 Linux 和 Samba 用户账户的具体步骤:
1.
创建 Linux 用户账户
:使用以下命令创建用户
linda
并确保她有主目录(在 SUSE 上需要使用
-m
选项,其他 Linux 发行版则不需要):
useradd -m linda
- 设置密码 :通常不需要为该用户账户设置 Linux 密码,因为 Samba 用户通常通过网络连接到共享,不会访问 Linux 计算机的控制台。如果 Samba 用户需要本地访问,可以为其设置 Linux 密码;如果仅在 Windows 计算机上使用该账户,则无需设置。
-
创建 Samba 用户账户
:使用
smbpasswd命令创建 Samba 用户账户:
smbpasswd -a linda
该命令会要求输入 Samba 用户的密码,此密码符合 Windows 通常用于密码存储的规则,并与用户账户一起存储在配置文件
/etc/samba/smbpasswd
中。以下是创建用户
linda
后该文件的内容示例:
nuuk:~ # cat /etc/samba/smbpasswd
# This file is the authentication source for Samba if 'passdb backend' is set
# to 'smbpasswd' and 'encrypt passwords' is 'Yes' in the [global] section of
# /etc/samba/smb.conf
#
# See section 'passdb backend' and 'encrypt passwords' in the manual page of
# smb.conf for more information.
linda:1001:F6E8482239815354AAD3B435B51404EE:55DB0294BC42D6E1B81AE2B5C7F294
3F:[U ]:LCT-49543651:
smbpasswd
命令还可用于管理用户账户,支持本地模式和远程模式。以下是本地模式下常用的参数:
| 参数 | 说明 |
| ---- | ---- |
| -a | 添加用户 |
| -d | 禁用用户账户,但不从配置中删除 |
| -e | 启用已禁用的用户账户 |
| -m | 创建机器账户,用于工作站需要向域进行身份验证的设置 |
| -x | 从
/etc/samba/smbpasswd
文件中删除用户账户 |
2. 启动 Samba 服务
创建 Samba 文件服务器所需的配置完成后,需要启动两个服务:
-
smbd 服务
:启动 Samba 文件服务。
-
nmbd 服务
:提供 NetBios 名称服务,仅在需要使用 NetBios 进行名称解析时启动。
在现代 Linux 发行版中,使用以下命令启动服务并确保在重启时自动激活:
systemctl start smb
systemctl enable smb
如果需要启动
nmb
命名服务,使用以下命令:
systemctl start nmb
systemctl enable nmb
3. smb.conf 中的附加参数
除了上述基本配置,
smb.conf
中还有数百个参数可用于调整和增强服务器。以下是一个示例
smb.conf
配置文件及其中参数的解释:
nuuk:/etc/samba # cat smb.conf
[global]
workgroup = WORKGROUP
printing = cups
printcap name = cups
printcap cache time = 750
cups options = raw
map to guest = Bad User
include = /etc/samba/dhcp.conf
logon path = \\%L\profiles\.msprofile
logon home = \\%L\%U\.9xprofile
logon drive = P:
usershare allow guests = Yes
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[profiles]
comment = Network Profiles Service
path = %H
read only = No
store dos attributes = Yes
create mask = 0600
directory mask = 0700
[users]
comment = All users
path = /home
read only = No
inherit acls = Yes
veto files = /aquota.user/groups/shares/
[share]
comment = sales share
path = /share
read only = No
inherit acls =yes
create mask = 0660
[groups]
comment = All groups
path = /home/groups
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @ntadmin root
force group = ntadmin
create mask = 0664
directory mask = 0775
以下是对配置文件中参数的详细解释:
| 参数 | 说明 |
| ---- | ---- |
| workgroup | 指定 Samba 服务器使用的工作组名称,在 Windows 对等网络中作为工作组名称,在使用域的环境中作为域名 |
| printing | 告诉 Samba 使用本地的 CUPS 解决方案处理打印 |
| printcap name | 在 CUPS 打印中,Samba 需要知道如何处理
/etc/printcap
文件,此参数设置为
cups
|
| cups options | 告诉 Samba 如何向 CUPS 打印机提供数据 |
| map to guest | 处理 Windows 环境中对来宾用户的请求,示例中设置为
Bad User
禁用了 Windows 来宾用户功能 |
| include | 读取额外配置文件的内容,避免主
smb.conf
文件过大 |
| logon path | 在域环境中,指定工作站可以找到系统登录信息的共享名称 |
| logon home | 在 Windows 9x 环境中,用户使用此参数查找主目录相关设置的位置 |
| logon drive | 指示 Windows 工作站用于映射包含主目录的共享的驱动器 |
| usershare allow guest | 指示是否允许来宾用户访问用户共享 |
| comment | 说明共享的用途,用户在浏览网络环境时会看到该值 |
| valid users | 指定允许访问共享的用户,可使用
@
符号引用组的所有成员 |
| browseable | 指示是否允许浏览共享内容,通常在主目录和与打印相关的共享中关闭 |
| read only | 设置共享的基本安全性,默认只读,设置为
no
允许写入访问 |
| inherit acls | 让 Samba 服务器与 Linux ACL 协作,设置为
yes
时,Samba 会遵循 ACL 并根据 ACL 设置创建新文件 |
| path | 必需参数,指定 Linux 文件系统上共享的路径 |
| store dos attributes | 若要存储 DOS 属性,需将此参数设置为
yes
,默认不存储 |
| create mask | 设置新文件的创建掩码,确定新文件的权限,若使用
inherit acls
则不应使用此参数 |
| directory mask | 与
create mask
类似,但作用于目录 |
| printable | 在打印机共享中需要此参数,允许 CUPS 打印子系统从该共享获取文件并打印 |
| write list | 包含对共享具有写入访问权限的用户列表,可与
valid users
参数结合使用以实现更严格的安全设置 |
| force group | 尝试将组所有者设置为指定的组,若用户不是该组成员,则将其默认主组设置为所有者 |
以下是配置 Samba 服务器的流程图:
graph LR
A[创建 Linux 用户账户] --> B[创建 Samba 用户账户]
B --> C[启动 Samba 服务]
C --> D[配置 smb.conf 参数]
4. 访问 Samba 文件服务器
完成上述配置后,Samba 文件服务器应该已经正常运行,可以进行测试。可以使用 Windows 工作站通过 UNC 命名连接到网络共享,例如,如果主机名为
nuuk
,共享名为
share
,则在 Windows 中尝试将网络驱动器映射为
\\nuuk\share
,Windows 会要求输入用户名和密码并连接到共享。
如果没有 Windows 工作站,也可以从 Linux 命令行连接到共享。有两种方法可以从命令行连接到 Linux 共享:
-
使用 smbclient 实用程序
:提供类似 FTP 的界面访问 Samba 共享文件系统,但共享与文件系统的集成不够平滑。
-
使用 mount 命令挂载共享
:将共享集成到 Linux 文件系统中。
在连接到共享之前,可以使用
smbclient
实用程序检查共享是否存在:
smbclient -L //servername
该命令会要求输入密码,可直接按回车键忽略,因为获取共享列表不需要密码。以下是使用示例 Samba 配置文件的机器上运行该命令的结果示例:
nuuk:/etc/samba # smbclient -L //localhost
Password:
Domain=[NUUK] OS=[Unix] Server=[Samba 3.0.28-0.5-1657-SUSE-CODE10]
Sharename Type Comment
--------- ---- -------
profiles
Disk Network Profiles Service
users
Disk All users
share
Disk sales share
groups
Disk All groups
print$
Disk Printer Drivers
IPC$
IPC
IPC Service (Samba 3.0.28-0.5-1657-SUSE-CODE10)
Domain=[NUUK] OS=[Unix] Server=[Samba 3.0.28-0.5-1657-SUSE-CODE10]
Server
Comment
---------
-------
Workgroup
Master
---------
-------
确认共享存在后,使用
mount
命令连接共享。首先创建一个用于挂载文件系统的目录,例如
/mnt/samba
:
mkdir /mnt/samba
然后使用
-t cifs
选项告诉
mount
命令连接到 Samba 共享,并通过
-o username=
选项传递用户名:
mount -t cifs -o username=your_username //servername/share /mnt/samba
不建议在命令行直接传递密码,因为这存在安全风险。
以下是从 Linux 命令行访问 Samba 共享的步骤列表:
1. 使用
smbclient -L //servername
检查共享是否存在。
2. 创建用于挂载的目录,如
mkdir /mnt/samba
。
3. 使用
mount
命令挂载共享,传递用户名。
通过以上步骤,你可以成功配置、启动并访问 Samba 文件服务器。
配置 Samba 文件服务器全攻略
5. 自动挂载 Samba 共享
为了在工作站启动时自动连接到 Samba 共享,可以将相关信息添加到
/etc/fstab
文件中。这样,每次启动工作站时,系统会自动挂载指定的 Samba 共享。
在
/etc/fstab
文件中添加条目时,需要指定共享的位置、挂载点、文件系统类型、挂载选项等信息。下面是一个示例:
//servername/share /mnt/samba cifs username=your_username,password=your_password,iocharset=utf8,sec=ntlmssp 0 0
-
//servername/share:Samba 共享的位置,其中servername是服务器的名称,share是共享的名称。 -
/mnt/samba:挂载点,即共享将被挂载到的本地目录。 -
cifs:文件系统类型,表示这是一个 CIFS(通用 Internet 文件系统)共享。 -
username=your_username,password=your_password:用户名和密码,用于身份验证。为了安全起见,不建议直接在fstab文件中明文存储密码,可以使用其他方法(如使用凭证文件)来存储密码。 -
iocharset=utf8:指定字符集为 UTF-8,以支持中文等非 ASCII 字符。 -
sec=ntlmssp:指定安全协议为 NTLMSSP,这是一种常用的 Windows 身份验证协议。 -
0 0:这两个数字分别表示是否进行转储(dump)和文件系统检查(fsck),一般设置为0 0表示不进行这些操作。
以下是添加自动挂载条目的步骤:
1. 打开
/etc/fstab
文件:
sudo nano /etc/fstab
- 在文件末尾添加上述示例条目,根据实际情况修改服务器名称、共享名称、用户名和密码等信息。
-
保存并关闭文件(按
Ctrl + X,然后按Y确认保存,最后按Enter)。 - 测试挂载配置:可以使用以下命令手动挂载共享,检查配置是否正确。
sudo mount -a
如果没有报错信息,则表示配置正确。
6. 常见问题及解决方法
在配置和使用 Samba 文件服务器的过程中,可能会遇到一些常见问题。以下是一些常见问题及相应的解决方法:
| 问题 | 现象 | 解决方法 |
|---|---|---|
| 无法访问共享 | 在 Windows 或 Linux 上尝试连接共享时失败 |
1. 检查 Samba 服务是否正常运行,使用
systemctl status smb
和
systemctl status nmb
命令查看服务状态。
2. 检查防火墙设置,确保允许 Samba 服务的端口(通常是 TCP 139 和 445)通过。 3. 检查用户账户和密码是否正确,确保用户具有访问共享的权限。 |
| 共享显示为只读 |
即使在
smb.conf
中设置了可写权限,仍然无法写入共享
|
1. 检查
smb.conf
中
read only
参数的设置,确保其值为
no
。
2. 检查 Linux 文件系统上共享目录的权限,确保 Samba 用户具有写入权限。 3. 检查 SELinux 或 AppArmor 等安全模块是否限制了 Samba 的写入操作,可以临时禁用这些安全模块进行测试。 |
| 无法看到共享 | 在网络中无法浏览到 Samba 共享 |
1. 检查
smb.conf
中
browseable
参数的设置,确保其值为
yes
。
2. 检查 NetBIOS 名称服务(
nmbd
服务)是否正常运行,确保可以使用 NetBIOS 进行名称解析。
3. 检查 Windows 客户端的网络设置,确保可以正常访问 Samba 服务器。 |
7. Samba 服务器的安全优化
为了确保 Samba 文件服务器的安全性,可以采取以下一些优化措施:
-
限制访问权限 :
-
使用
valid users和write list参数限制允许访问共享的用户和具有写入权限的用户。 -
避免使用默认的来宾用户(
map to guest = Bad User),防止未经授权的访问。
-
使用
-
更新和补丁管理 :
- 定期更新 Samba 软件到最新版本,以修复已知的安全漏洞。
- 保持操作系统的更新,确保系统的安全性。
-
使用安全协议 :
- 配置 Samba 使用安全的协议,如 SMB3,避免使用不安全的旧版本协议。
-
监控和审计 :
- 启用 Samba 的日志记录功能,记录用户的访问行为和操作,以便进行监控和审计。
- 定期检查日志文件,及时发现异常活动。
以下是 Samba 服务器安全优化的流程图:
graph LR
A[限制访问权限] --> B[更新和补丁管理]
B --> C[使用安全协议]
C --> D[监控和审计]
总结
通过以上步骤,你可以全面地配置、启动、访问和优化 Samba 文件服务器。从创建用户账户、启动服务、配置
smb.conf
参数,到访问共享、自动挂载和解决常见问题,以及进行安全优化,每个环节都至关重要。希望这些内容能帮助你顺利搭建和管理自己的 Samba 文件服务器,实现高效的文件共享和资源管理。
同时,在实际使用过程中,要根据具体的需求和环境进行灵活调整,不断优化服务器的性能和安全性。如果你在配置过程中遇到任何问题,可以参考上述常见问题及解决方法,或者查阅相关的文档和资料。祝你使用愉快!
超级会员免费看
64

被折叠的 条评论
为什么被折叠?



