环境说明与前提准备
系统环境:Windows XP SP3 (IP: 192.168.1.10),虚拟机下安装的 Fedora 8 i386 (IP: 192.168.1.12)。目标是让 Linux 和 Windows 之间通过 Samba 实现文件共享。
首先,确认 Fedora 上是否已经装好了 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-i386-DVD.iso 安装光盘中搞定。挂载光盘后进入 Packages 目录,用 rpm 批量安装 smb 相关的包即可:
[root@cisco /]# mount /dev/cdrom /mnt/cdrom
[root@cisco /]# cd /mnt/cdrom/Packages/
[root@cisco Packages]# rpm -ivh -aid smb*
这样一来,Samba 服务的基础就有了。
进入 Samba 配置目录
安装好后,先切换到 Samba 配置文件所在目录:
[root@cisco /]# cd /etc/samba/
[root@cisco samba]# ls
lmhosts smb.conf smbpasswd smbusers
这里 smb.conf 就是核心配置文件。另外需要注意:smbpasswd 文件在刚装好时并不存在,它用来存储用户账号和经过 MD5 加密后的密码。我们后边会手动创建它。
编辑 smb.conf —— 全局与共享设置
用 vi 编辑器打开 smb.conf:
[root@cisco samba]# vi smb.conf
以下是一套经典的基础配置。先看全局设置部分:
[global]
workgroup = MSHOME # 将 Linux 加入的工作组,这里设为 MSHOME(与 Windows 端一致)
server string = Samba # 服务器描述信息,随意填,方便识别
encrypt passwords = yes # 加密用户密码,更安全
public = yes # 允许公共访问?这里先设为 yes,后续可调整
smb passwd file = /etc/samba/smbpasswd # 账号密码存放路径
netbios name = mm's samba # 外部访问时显示的名称
log file = /var/log/samba/log.%m # 日志文件位置,按机器分割
max log size = 0 # 日志大小不做限制
security = user # 安全级别:user 模式(由本机 Samba 验证账户密码)
passdb backend = tdbsam
然后,定义我们要共享的目录 /opt。在配置文件末尾追加以下内容:
[rose]
comment = This is my samba server! # 共享描述,随便写
path = /opt # 共享路径
valid users = testuser # 允许访问的用户,这里指定 testuser
public = yes
writable = yes # 允许写入
保存退出(:wq!)。
启动 Samba 服务
配置搞定,先启动两个关键守护进程:
[root@cisco samba]# service smb start
Starting SMB services: [ OK ]
[root@cisco samba]# service nmb start
Starting NMB services: [ OK ]
如果提示 OK,说明启动成功。
添加共享用户 testuser
我们的共享目录只允许 testuser 访问,所以需要创建这个用户并添加到 Samba 账户数据库。
第一步,创建系统用户并设置密码:
[root@linux samba]# useradd testuser
[root@linux samba]# passwd testuser
Changing password for user testuser.
New password: (输入密码,至少6位)
Retype new password: (再次输入)
passwd: all authentication tokens updated successfully.
第二步,更新 /etc/samba/smbpasswd 文件。用 mksmbpasswd.sh 脚本从 passwd 文件生成条目:
[root@linux samba]# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
第三步,创建 Samba 专用账户:
[root@cisco samba]# smbpasswd -a testuser
New SMB password:
Retype new SMB password:
Added user testuser.
这样一来,testuser 就同时拥有了 Linux 系统账户和 Samba 访问权限。
重启服务并验证
为了让新配置和用户生效,重启一下 Samba 服务:
[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 ]
现在,可以分别在 Linux 和 Windows 两端进行测试。
在 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
--------- ---- -------
...
能看到 Windows 的共享列表,说明 Linux 能正常访问 Windows。(注:输出中的 session request 失败信息是因为主机名解析问题,不影响核心功能。)
在 Linux 下访问自己的 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 共享已经列出,说明配置完全正确。接下来,你可以在 Windows 的资源管理器里输入 \\192.168.1.12\rose,用 testuser 账号登录,就能直接读写 /opt 目录下的文件了。
整个流程走下来,Samba 的搭建和基本配置就算完成了。保持这个基础,后续还可以根据需要调整权限、添加更多共享目录,甚至切换安全等级。但有一点需要提醒:security = user 模式下,必须为每个远程访问用户单独创建 Samba 账户,这虽然多了一步操作,但在安全性上很有保障。
