红联Linux门户
Linux帮助

Linux(RHEL5)下构建Samba文件共享服务器

发布时间:2015-04-12 15:41:06来源:忘真楠作者:忘真楠

构建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


smb.conf 主配置文件
Linux(RHEL5)下构建Samba文件共享服务器

注:以上图片上传到红联Linux系统教程频道中。

[global]    全局配置,对整个samba服务器有效

[homes]   用户共享目录设置:设置对应samba用户宿主目录的默认共享,即当用户访问服务器中与自己用户名同名的共享文件夹时,默认会映射到自己的宿主目录

[printers]  打印机共享设置:如果需要共享打印机,则在这部分配置

[myshare]  用户自定义的共享名,设置新的文件共享


smb.conf文件常用配置项含义
 

配置项

说明

workgoup

设置服务器所在的工作组名,如:WORKGROUPWindows默认工作组名

server  string

设置服务器说明文字,用于描述samba服务器

security

设置服务器的安全级别,可设为四个值:share(可匿名访问)user(学要本地服务器验证用户名和密码)server(又另一台服务器验证用户名和密码)domain(有Windows域控制器验证用户名和密码)

log  file

设置samba日志文件,默认为/var/log/samba/%m.log 表示日志文件保存到/var/log/samba/目录下,按每个用户建立一个日志文件,%m变量表示客户主机名或IP 地址

max  log  size

日志文件的最大容量默认为50,表示59KB

comment

设置对应共享目录的注释,说明信息

path

设置对应共享目录在服务器中的路径

browseable

设置共享目录在网上邻居中是否可见

guest  ok

是否允许所有人可以访问共享目录,与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