构建Samba文件共享服务器
Samba在Linux系统中中实现了SMB/CIFS网络协议,因此使得跨平台的文件共享变得更加容易,samban可以很好的解决Windows与Linux系统之间文件互访的问题
Samba服务的组成
Samba-3.0.23c-2.i386.rpm 服务器主程序
Samba-client-3.0.23c-2.i386.rpm 客户端程序
Samba-common-3.0.23c-2.i386.rpm 提供了服务器和客户端都需要的公共文件
Samba-swat--3.0.23c-2.i386.rpm 以web方式的管理工具
System-config-samba-1.2.39.el5.noarch.rpm 图形化管理
Samba服务器主要提供以下两个服务程序
1.smbd 为客户机提供服务器中的共享资源(目录和文件)的访问
2.nmbd 提供基于NetBIOS主机名称解析,为Windows网络中的主机进行解析
通过/etc/init.d/smb脚本可以控制samba服务的启动与终止。无需单独运行smbd或nmbd
注:以上图片上传到红联Linux系统教程频道中。
[global] 全局配置,对整个samba服务器有效
[homes] 用户共享目录设置:设置对应samba用户宿主目录的默认共享,即当用户访问服务器中与自己用户名同名的共享文件夹时,默认会映射到自己的宿主目录
[printers] 打印机共享设置:如果需要共享打印机,则在这部分配置
[myshare] 用户自定义的共享名,设置新的文件共享
smb.conf文件常用配置项含义
配置项 |
说明 |
workgoup |
设置服务器所在的工作组名,如:WORKGROUPWindows默认工作组名 |
server |
设置服务器说明文字,用于描述samba服务器 |
security |
设置服务器的安全级别,可设为四个值:share(可匿名访问)user(学要本地服务器验证用户名和密码)server(又另一台服务器验证用户名和密码)domain(有Windows域控制器验证用户名和密码) |
log |
设置samba日志文件,默认为/var/log/samba/%m.log 表示日志文件保存到/var/log/samba/目录下,按每个用户建立一个日志文件,%m变量表示客户主机名或IP 地址 |
max |
日志文件的最大容量默认为50,表示59KB |
comment |
设置对应共享目录的注释,说明信息 |
path |
设置对应共享目录在服务器中的路径 |
browseable |
设置共享目录在网上邻居中是否可见 |
guest |
是否允许所有人可以访问共享目录,与public项作用相当 |
writable |
设置共享目录是否可写,与read only相反 |
建立可匿名访问的共享文件夹
1.创建要发布为共享的目录(文件夹)
# mkdir /var/public/movies
2.将/var/public/movies 目录发布为共享文件夹,共享名为movie
# vi /etc/samba/smb.conf
[global]
workgroup = WORKGROUP 修改为与Windows主机同一工作组
security = share 安全级别改为share
[movie]
comment = public share with movie files
path = /var/public/movies
public = yes
read only = yes
3.重启samba服务并执行 netstat -anupt | grep mbd 严重samba服务监听状态
# service smb start
# netstat -anput | grep mbd
从上述结果可以看到。smbd服务程序监听TCP协议的139端口SMB、445端口CIFS。
nmbd服务监听UDP协议的137~138端口(NetBIOS)
建立带共享的文件验证
1.创建samba用户数据库(samba用户账户必须有对应的系统用户账户存在)
# usreadd wang
# smbpasswd -a wang
# smbpasswd -a root
smbpasswd 各选项作用:
-h 显示samba命令帮助信息
-a 添加指定的samba用户
-d 禁用指定的samba用户
-e 启用指定的samba用户
-x 删除指定的samba用户
基于Windows安全考虑。samba服务提供了用户名映射功能,(将不同的用户名对应为同一个samba账户,起到隐藏对应的系统用户账户的效果,减少密码穷举攻击的风险)
/etc/samba/smbusers
# vi /etc/samba/smbusers
wang = player
(将samba用户映射到名称player,在Windows下。两个用户名都可以访问共享目录)
# vi /etc/samba/smb.conf
username map = /etc/samba/smbusers
在[global]全局配置中知道名称映射文件
2.添加用户授权设置
共享目录用户授权主要由 “valid users” “write list” 配置项指定
同时要设置public = no
授权多个用户时以逗号或空格分开
授权一个用户组时使用@组名的形式
directory mask = 0744 当在共享目录中建立子目录的默认权限
creat mask = 0600 当在共享目录中建立子文件的默认权限
# vi /etc/samba/smb.conf
[global]
workgoup = WORKGOUP
security = user 将安全级别修改为user
[movie]
comment = public share with movie files
public = no 设置为非公开
valid users = wang,@root 允许wang用户和root组用户访问
write list = root 允许用户root有可写入的权限
directory mask = 0744
create mask =0600
3.添加客户段地址授权
# vi /etc/samba/smb.conf
hosts allow = 192.168.10 192.168.20 在全局部分添加[global]
在客户端访问共享文件夹
Windows
UNC路径或网上邻居
Linux
# smbclient -L 192.168.10.1 (指定samba服务器中的共享资源列表)
# smbclent -U wang //192.168.10.1/movies(以仿FTP客户端的方式登录FTP)
或
# mkdir /media/smbdir
# mount -o username=wang //192.168.10.1/movies /media/smbdir