Samba文件共享服务
一 Samba服务介绍
Samba是著名的开源软件之一,它在linux上实现了微软的SMB/CIFS网络协议,能跨平台实现文件互访问题
1 Samba软件包构成
samba-3.0.33-3.28.el5 //服务端软件(默认安装)
samba-common-3.0.33-3.28.el5 //公共组件(默认安装)
samba-client-3.0.33-3.28.el5 //客户端软件(默认安装)
samba-swat-3.0.33-3.28.el5.i386.rpm //web图形管理软件
2 Samba服务器的主要程序
smbd:提供对服务器中文件、打印资源的共享访问
nmbd:提供基于NetBIOS主机名称的解析
3 Samba的服务脚本
/etc/init.d/smb
4 Samba的配置目录及文件
/etc/samba/
/etc/samba/smb.conf
配置文件检查工具:testparm
二 主配置文件smb.conf
1 配置文件默认共享
:vim /etc/samba/smb.conf
[global] //全局设置
workgroup = MYGROUP //所在工作组名称
server string = Samba Server Version %v //服务器描述信息
security = user //安全级别,可用值如下: share、user、server、domain
passdb backend = tdbsam //设置共享账户文件的类型
load printers = yes
cups options = raw
[homes] //宿主目录共享设置
comment = Home Directories //对共享目录的注释、说明信息
browseable = no //该共享目录在“网上邻居”中是否可见
writable = yes //是否可写,与read only的作用相反
[printers] //打印机共享设置
comment = All Printers
path = /var/spool/samba //共享目录在服务器中对应的实际路径
browseable = no
guest ok = no //是否允许所有人访问,等效于“public
writable = no
printable = yes
2 自定义共享目录
:vim /etc/samba/smb.conf
[global] //全局设置
workgroup = MYGROUP //所在工作组名称
server string = Samba Server Version %v //服务器描述信息
security = user //安全级别,可用值如下: share、user、server、domain
passdb backend = tdbsam //设置共享账户文件的类型
load printers = yes
cups options = raw
[homes] //宿主目录共享设置
comment = Home Directories //对共享目录的注释、说明信息
browseable = no //该共享目录在“网上邻居”中是否可见
writable = yes //是否可写,与read only的作用相反
[newname]
comment = RHEL 5.5 DVD directory.
path = /media/cdrom
public = yes //是否用户验证
read only = yes
三 构建文件共享服务器
1 安装samba软件
:yum install samba //安装
:rpm -qa samb* //查看
2 可匿名访问的共享
1)创建共享目录
:mkdir t227
2)修改smb.conf配置文件
:vim /etc/samba/smb.conf
[global]
security = share //允许匿名
[t227]
comment=dddddddddd
path=/t227
public=yes //不需要用户验证,所有人都可以访问
readonly=yes //只能读取不能写入
3)可上传的匿名共享
A) 给共享文件夹写入权限
:chmod o+rwx t227
B) 修改配置文件
:vim /etc/samba/smb.conf
[global]
security = share
[t227]
comment=dddddddddd
path=/t227
public=yes //无需用户验证
readonly=no //将只读禁止即可
3 需用户验证的共享
Samba使用独立的共享账户数据库文件,其中账户名称必须与它同名的系统用户名相对应,以便对读写权限进行控制,共享账户的密码可以与系统用户的密码不一样
1)创建共享账户
:useradd //创建对应系统账户
:pdbedit -a u1 //创建同名共享账户
:pdbedit -L //查看共享账户列表
:pdbedit -x u1 //删除共享账户
2)设置用户访问授权
A)新建共享目录 //注意不要将目录创建到root下了
:mkdir t227
B)修改配置文件
:vim /etc/samba/smb.conf
[global]
security = user
[t227]
comment=alll
path=/t227
public=no
readonly=no //可写入
valid users=lisi,zhangsan //指定访问的用户
write list =lisi //可上传用户
注:有时候在windows上登录时验证时间比较长,即使输入正确的密码也提示错误,只要耐心等待一会即可
C)确定用户访问权限
:chmod o+rw t227 //设置目录写入权限
D)设置上传文件和目录的默认权限
: vi /etc/samba/smb.conf
[tools]
……
directory mask = 0755
create mask = 0644
4 重启服务
:service smb reload
四 用户映射及访问地址限制
1 共享账号映射(别名)
:vim /etc/samba/smbusers
root = administrator admin //可以设置多个别名
nobody = guest pcguest smbguest
lisi = nimei qianqian
:vim /etc/samba/smb.conf //添加全局配置启用别名
username map=/etc/samba/smbusers
:service smb restart //重启服务
2 访问地址限制
一般用在全局配置[global]部分,也可以用于某个具体的共享配置
hosts allow配置项:仅允许特定的客户机
hosts deny配置项:仅拒绝特定的客户机
客户机地址表示形式:
以空格分隔多个地址
主机名或IP地址,例如: 192.168.168.11 或者 prtsvr
网络地址,例如:173.17. 或者 173.17.0.0/255.255.0.0
: vi /etc/samba/smb.conf
hosts allow = 192.168.4. 173.17.
五 访问共享文件夹
1 在linux客户机上的访问
1)查询目标主机上的共享资源列表
:smbclient -L 192.168.4.11 //无需输入密码,直接回车即可
登录并访问共享文件件:smbclient -U lisi //192.168.4.11/t227
Password:
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]
smb: \> pwd //查看当前路径
smb: \> ls //显示目录列表
smb: \> lcd /root //切换到本地下载目录
smb: \> cd t227 //切换到共享目录
smb: \> mget share* //下载share开头的文件到/root下
smb: \> quit //退出
使用mount挂载共享文件夹挂载后可直接查看共享文件内容
:mkdir /media/smbdir //创建挂载目录
:mount -o username=lisi //192.168.4.11/tools /media/smbdir/ //挂载
:mount | tail -1 //查看挂载状态
//192.168.4.11/tools on /media/smbdir type cifs (rw,mand)
2 windows客户机访问
方法:在运行里输入\\192.168.1.1即可访问
注:需要切换用户时在CMD里输入net use * /del
清除共享用户缓存,清不掉时多执行几次命令即可
六 swat 图像管理工具
1 swat介绍
SWAT是Samba的图形化管理工具。我们可以通过浏览器利用swat工具来设置samba
SWAT工具嵌套在xinetd超级守护进程中,要通过启用xinetd进程来启用swat。因此要先安装xinetd工具包,然后安装swat工具包。
2 编辑swat配置文件
因为swat是xinetd超级守护进程的一个子进程,所以swat配置文件在/etc/xinetd.d目录中
:vim /etc/xinetd.d/swat
service swat
{
port = 901 //tcp端口号,可修改
socket_type = stream
wait = no
only_from = 0.0.0.0 //指定来访IP地址,默认只能本机,修改为所有IP
user = root
server = /usr/sbin/swat
log_on_failure += USERID
disable = no //随xinetd一起启动
3 查看TCP端口号是否被添加进去
:cat /etc/services | grep 901
如果/etc/services文件中没有tcp901,那么就编辑该文件,添加“swat 901/tcp”即可
4 启动swat
因为swat是xinetd的子进程,所以只要启用了xinetd,那么swat也就会伴随xinetd启动
: service xinetd restart
5 防火墙设置
关闭防火墙或者开启swat相关端口。
【关闭防火墙】
[root@RHEL5 /]#service iptables stop
【开启swat901端口,直接写入INPUT链,重启iptables会丢失】
[root@RHEL5 /]#iptables -I INPUT -p tcp --dport 901 -j ACCEPT
【开启swat901端口,通过编辑“RH-Firewall-1-INPUT”自定义链来打开,配置不会丢失】
[root@RHEL5 /]#vi /etc/sysconfig/iptables
加入:-A RH-Firewall-1-INPUT -p tcp --dport 901 -j ACCEPT
【关闭SELinux】
[root@RHEL5 /]#vi /etc/sysconfig/selinux
设置“SELINUX=disabled”
6 使用web登入swat
电脑http://192.168.120.241:901
七 实验
作者:马向军 时间:2013-05-07
实验目的:构建samba文件共享服务器,模拟公司内部共享需求
实验要求:
1 公司需要一个所有员工都能访问,但只有读取权限的共享目录
2 公司需要一个管理员和技术部所有员工都能访问,但只有读取权限、禁止其他员工访问的共享目录
3 公司需要一个技术不所有员工可以读取,但只有管理员和项目组的所有员工可以写入的共享目录
实验环境:如图所示
实验步骤:
1,在服务器上安装samba服务
:yum install samba //安装
:rpm -qa samb* //查看
2,创建组、用户和共享账户
:groupadd jishu 创建技术组
:groupadd xiangmu 创建项目组
:useradd jishu1 创建技术组员工
:useradd xiangmu1 创建项目组员工
:pdbedit -a jishu1 添加共享账户jishu1
:pdbedit -a xiangmu1 添加共享账户xinagmu1
:gpasswd -a jishu1 jishu 将技术组员工加入基本组jishu
:gpasswd -a xiangmu1 xiangmu 将项目组员工加入基本组xiangmu
要求1
:mkdir public 创建目录
:vim /etc/samba/smb.conf 添加共享目录
[public]
comment=all
path=/public
public=yes 所有人都可以访问
readonly=yes 不能写入
:service smb restart 重启服务
要求2
:mkdir jishu
:pdbedit -a root 添加共享账户root
:vim /etc/samba/smbusers 为root用户设置别名
root = admin
:vim /etc/samba/smb.conf 配置共享目录
[jishu]
comment=jishu
path=/jishu
public=no //不公开
readonly=yes //不能写入
valid users=admin,@jishu //只admin和技术部员工能访问
要求3
:mkdir xiangmu
:vim /etc/samba/smb.conf 配置共享目录
[xiangmu]
comment=jishu
path=/jishu
public=no //不公开
readonly=no //可写入
valid users=admin,@xiangmu,@jishu //可访问列表
write list=admin,@xiangmu //可写入用户
:chown :xiangmu xiangmu //给共享目录设置属组
:chmod g+w xiangmu //设置属组可写
:service smb restart //重启服务