Samba文件共享服务
一,Samba服务基础
在windows网络环境中,主机之间进行文件和打印共享是通过微软公司的SMB/CIFS网络协议实现的。
(1),Samba软件的组成
1,Samba软件包的组成
服务端软件“samba”
客户端软件“samba-client”
服务端和客户端程序的公共组件“samba-common”
Web接口的图形管理程序软件“samba-swat”
2,Sabma服务的程序组件
〖smbd〗
#负责为客户机提供服务器中的共享资源(目录和文件等)的访问
#负责监听TCP的协议的139端口(SMB协议),445端口(CIFS协议)
〖nmbd〗
#负责提供基于NetBios协议的主机名解析,以便为windows网络中的主机进行查询服务
#负责监听UDP协议的137-138端口(NetBios协议)
【启动服务】
#service smb start
#脚本文件:/etc/rc.d/init.d/smb
(2),主配置文件smb.conf
文件位置:/etc/samba/smb.conf
〖global〗全局配置:
这部分配置项的内容对整个samba服务器都有效
〖homes〗宿主目录共享设置:
设置Linux用户的默认共享,对应用户的宿主目录,当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录中
〖printers〗打印共享设置:
如果需要共享打印设备,可以在这部分进行配置
【Samba服务器的常见配置项及含认说明】
workgroup:设置服务器所在的工作组名称
server string:设置服务器的说明文字,用于描述samba服务器
security:设置服务器的安全级别,share(可匿名访问)、user(需要用户名及密码)
server(指定另一台服务器来验证用户名及密码)
domain(由windows域控制器验证用户名及密码)
log file:设置samba服务器的日志文件,默认保存在/var/log/samba/目录中
comment:设置对应共享目录的注释、说明信息
path:设置对应共享目录在服务器中的文件夹路径
browseable:用户的宿主目录,设置该目录在“网上邻居”中是否可见,“no”表示隐藏享目录
guest ok:与“public”作用相同,设置是否所有人都可以访问共享目录
writable:与“read only”作用相反,设置该共享目录是否可写
二,构建文件共享服务器
(1),可匿名访问的共享
#可匿名访问的共享适用于公开的资源分享,一般只建议提供只读访问
#配置文件“smb.conf”中调整:
a,可以将默认的安全级别修改为share
b,添加一段共享目录配置
(2),需用户验证的共享
1,建立Samba用户数据库
#Samba服务器使用独立的共享账号数据库文件,其中的账号名称必须有与它同名的系统用户相对应
#共享用户的密码是额外设置的,可以与系统用户的密码不一样
#Samba共享用户的账号数据库文件默认位于“/etc/samba/passdb.tdb”
【添加、编辑共享用户】
pdbedit -a -u 用户名 /添加用户为samba共享用户
-a:表示添加
-u:表示指定用户名称
pdbedit -l /列出所有samba用户
pdbedit -vl 用户名 /列出指定用户,输出详细信息
pdbedit -x -u 用户名 /删除指定samba用户
2,设置用户访问权限
#将“security”安全级别设为“user”
#用户授权设置由“valid users、write list”配置项指定
#授权多个共享用户时,以逗号或空格进行分隔
#授权组,可以使用“@组名”的格式
【案例:将本地目录/opt/mytools发布为共享目录,共享名为“tools”】
要求共享用户u1、u2能够访问,其中u2用户具有写入权限
第一步:创建共享用户u1、u2,确认共享目录
pdbedit -a -u u1
pdbedit -a -u u2
mkdir /opt/mytools
第二步:修改smb.conf配置文件,添加名为tools的共享目录配置段
vim /etc/samba/smb.conf
[tools]
path=/opt/mytools
public=no
read only=no
valid users=u1,u2
write list=u2
第三步,启动smb服务
Service smb restart
3,确定目录访问权限
第一步,chmod 777 /opt/mytools /先把本地目录权限放开
第二步,修改配置文件“smb.conf”
driectory mask=0755 /上传目录权限项
create mask=0644 /上传文件权限项
(3),用户映射及访问地址限制
1,共享账号映射(别名)
第一步,修改映射文件:/etc /smba/smbusers
格式:共享用户名=别名1 别名2 别名3…
如:root=administrator admin
第二步,修改主配置文件,在全局里添加选项
vim /etc/samba/smb.conf
[global]
username map=/etc/samba/smbusers
第三步,重新载入smb服务
Service smb reload
2,访问地址限制
#hosts allow:用于指定仅允许访问共享的客户机地址
#hosts deny:用于指定仅拒绝访问共享的客户机地址
#访问地址限制一般应用于[global]全局配置部分,也可以应用于某个具体的共享配置段部分
#限制对象可以是主机名,IP地址或网段地址(省去主机部分),多个地址之间以逗号或空格进行分隔
例如:[global
Hosts allow=192.168.1 173.17.
三,访问共享文件夹
(1),使用smbclient访问共享文件夹
需要安装samba-client软件包
1,查询目标主机的共享资源列表
smbclient -L 共享IP
例如: smbclient -L 192.168.1.1
2,登录并访问共享文件夹
Smbclient //主机地址/共享名
例如: smbclient //192.168.1.1/tools /匿名访问
Smbclient -u 用户名 //192.168.1.1/tools /用户验证
(2),使用mount挂载共享文件夹
mount -o username=用户名 //主机地址/共享名 /挂载点
例如: mount -o username=u1 //192.168.1.1/tools /opt