最近在 Linux 环境下折腾了一下 Samba 服务器配置,把整个流程整理成笔记,方便日后参考,也希望能帮助到遇到类似需求的朋友。
先交代一下实验环境:主机是 Windows XP SP3,IP 地址 192.168.1.10;虚拟机内运行 Fedora 8 (i386),IP 地址 192.168.1.12。两台设备处于同一局域网段,相互之间可以正常 ping 通。
第一步:检查 Samba 是否已安装
使用以下命令查看系统中是否已经包含了 Samba 相关软件包:
[root@cisco samba]# rpm -qa | grep smb
如果输出内容类似于以下三行,说明 Samba 已经成功安装:
libsmbios-libs-0.13.10-1.fc8
libsmbios-bin-0.13.10-1.fc8
pam_smb-1.1.7-7.2.2
如果未检测到,可以借助 Fedora 8 的安装光盘进行安装。挂载光盘后进入 Packages 目录:
[root@cisco /]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@cisco /]# cd /mnt/cdrom/
[root@cisco cdrom]# ls
...(省略目录列表)
[root@cisco cdrom]# cd Packages/
[root@cisco Packages]# rpm -ivh -aid smb*
按照上述步骤即可完成安装。
第二步:进入 Samba 配置目录
安装完毕后,配置文件存放在 /etc/samba/ 路径下:
[root@cisco /]# cd /etc/samba/
[root@cisco samba]# ls
lmhosts smb.conf smbpasswd smbusers
最核心的配置文件是 smb.conf,所有共享参数都在这里定义。另外请留意 smbpasswd 文件——它用于保存用户账户及其经过 MD5 加密后的密码。刚安装好 Samba 时该文件默认不存在,需要手动创建,具体方法稍后介绍。
第三步:编辑 smb.conf
使用 vi 编辑器打开配置文件:
[root@cisco samba]# vi smb.conf
以下是我采用的一套通用配置(保留了原有的注释风格):
#======================= Global Settings =====================================
[global]
workgroup = MSHOME # 将 Linux 加入的工作组名称,这里使用 MSHOME
server string = Samba # 服务器描述信息,便于识别资源,可自由填写
encrypt passwords = yes # 对用户密码进行加密,确保安全性
public = yes # 共享对公共访问开放,没有系统账户的用户将基于客户账户属性接收访问
smb passwd file = /etc/samba/smbpasswd # 账号密码存放文件路径
netbios name = mm's samba # 外部访问时显示的名称
# --------------------------- Logging Options -----------------------------
log file = /var/log/samba/log.%m # 日志文件存放位置,%m 会被替换为机器名
max log size = 0 # 日志大小限制,0 表示不限制大小
# ----------------------- Standalone Server Options ------------------------
security = user # 共享安全级别
# Samba 共提供四种安全等级:
# share: 无需账户和密码即可登录
# user: 由提供服务的 Samba 服务器负责验证账户和密码(默认模式)
# server: 验证工作交给另一台 Windows 或 Samba 服务器完成
# domain: 指定 Windows 域控制器来验证账户和密码
passdb backend = tdbsam
以上是全局配置部分。假如我们需要共享 /opt/ 目录,还需要添加如下内容:
[rose]
comment = This is my samba server! # 共享说明,内容任意
path = /opt # 共享目录路径
valid users = testuser # 允许访问的用户,这里设置为 testuser
public = yes # 同上
writable = yes # 允许用户写入
保存并退出编辑器(执行 wq!)。
第四步:启动 SMB 与 NMB 服务
[root@cisco samba]# service smb start
Starting SMB services: [ OK ]
[root@cisco samba]# service nmb start
Starting NMB services: [ OK ]
第五步:添加允许访问共享的用户(testuser)
首先创建一个系统用户:
[root@linux samba]# useradd testuser # 创建名为 testuser 的用户 [root@linux samba]# passwd testuser # 为 testuser 设置密码 Changing password for user testuser. New password: # 密码长度至少六位,输入时不显示 BAD PASSWORD: it does not contain enough DIFFERENT characters Retype new password: # 再次输入以确认 passwd: all authentication tokens updated successfully更新
/etc/samba/smbpasswd文件:[root@linux samba]# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd注意:原始命令中包含路径笔误(
/etv/samba/),此处已按照正确路径修正。创建 Samba 专用账户:
[root@cisco samba]# smbpasswd -a testuser New SMB password: Retype new SMB password: Added user testuser.
第六步:重启 SMB 服务并进行测试
[root@cisco samba]# service smb restart
Shutting down SMB services: [ OK ]
Starting SMB services: [ OK ]
[root@cisco samba]# service nmb restart
Shutting down NMB services: [ OK ]
Starting NMB services: [ OK ]
接下来在 Windows XP 下验证配置是否生效。先在 Linux 端访问 Windows 的共享资源:
[root@cisco samba]# smbclient -L //192.168.1.10
Password:
Domain=[XPSP3] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
Sharename Type Comment
--------- ---- -------
Printer Adobe PDF Office Document Image Writer
session request to 192.168.1.10 failed (Called name not present)
session request to 192 failed (Called name not present)
Domain=[XPSP3] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
Server Comment
--------- -------
Workgroup Master
--------- -------
MSHOME
再访问本机 Samba 服务器:
[root@cisco samba]# smbclient -L //192.168.1.12
Password:
Anonymous login successful
Domain=[MSHOME] OS=[Unix] Server=[Samba 3.0.26a-6.fc8]
Sharename Type Comment
--------- ---- -------
homes Disk Home Directories
rose Disk This is my samba server!
test-1 Disk This is my samba server!
IPC$ IPC IPC Service (Samba)
Anonymous login successful
Domain=[MSHOME] OS=[Unix] Server=[Samba 3.0.26a-6.fc8]
Server Comment
--------- -------
MM'S SAMBA Samba
Workgroup Master
--------- -------
MSHOME MSHOME
可以看到,共享目录 rose 已经成功显示。至此,Samba 服务器基本搭建完成。在 Windows 端的“网上邻居”中应该也能找到该共享,只要输入正确的用户名和密码,即可正常访问。
